1import{a as $,u as S,j as e}from"./vendor-query-C3n6aBVz.js";import{R as ee}from"./resource-header-BJmpUFax.js";import{T as re,a as te,b as se,c as oe}from"./tabbed-show-layout-CSYq1hkc.js";import{Q as D,a2 as b,p as w,bd as ne,be as C,br as A,i as z,E as ae,d as ie,j as ce,bI as L,e as le,f as me,g as de,B as I,R as F,af as ue,c as B,by as pe,bg as je,bh as be,bi as fe,bl as v}from"./index-HlZn4L0Y.js";import{R as xe,A as ge}from"./reference-input-D35c6uTb.js";import{C as he,a as ve,d as Me,e as Ce}from"./create-dialog-BJeHlCPn.js";import{S as Ie}from"./form-BIUVjFTb.js";import{H as ye}from"./hidden-input-8fK--tT0.js";import{S as k,F as Re}from"./simple-form-Bs-BtXa1.js";import{u as H,U,P as _,a as Pe}from"./user-avatar-name-field-CtokUew6.js";import{j as Ee,f as q,a as d,a5 as K,E as y,s as V}from"./vendor-ra-6Wm6zczP.js";import{D as f}from"./data-table-Dkf09RvN.js";import{b as Oe,L as De}from"./list-BDr6AjD0.js";import{B as Ne}from"./badge-BhkJ4kRx.js";import{r as M}from"./vendor-react-B8sFgQWj.js";import{C as N}from"./confirm-CiDmreFl.js";import{c as Te,a as Se}from"./edit-dialog-hsnPcXON.js";import{u as we}from"./use-leave-project-CzJvxe1D.js";import{E as Ae}from"./ellipsis-CPABsJq5.js";import{P as ze}from"./pencil-DV1tW6nQ.js";import{T}from"./trash-CB1uOpLD.js";import"./vendor-recharts-DdT53m7E.js";import"./vendor-motion-v5gcm5ma.js";import"./textarea-B-Bs7x1c.js";import"./loading-button-Wac7hj2U.js";import"./index-CdIh_Gys.js";import"./select-OarYOxNR.js";import"./index-BdQq_4o_.js";import"./alert-I5KQefSe.js";import"./text-field-B0NN3cVN.js";import"./card-BeEU1ArI.js";import"./switch-CE73eRi1.js";import"./utils-DmTJc1PI.js";import"./chevron-left-Dm-eVsxP.js";import"./folder-open-DQy3P1Pl.js";import"./text-input-CY-sGBBe.js";import"./use-my-projects-JaGfox_G.js";function Le(t,r){return Ee("project-members",{filter:{projectId:t,noSortPagination:!0}},{...r,enabled:!!t&&r?.enabled!==!1,refetchOnMount:!1,refetchOnWindowFocus:!0,staleTime:D.normal,gcTime:D.slow})}function Q(){const t=$();return({projectId:r})=>{t.invalidateQueries({queryKey:["project-members","getList",{filter:{projectId:r}}]})}}function Fe(t){const r=q(),o=Q();return S({mutationFn:s=>r.addProjectMembers(s),...t,onSuccess:(...s)=>{const{projectId:a}=s[1];o({projectId:a}),t?.onSuccess?.(...s)}})}function Be(){const{data:t}=b(),r=d(),{data:o}=w(),{data:s}=H(o?.id);return!t?.id||!o?.id||!s||s.length===1?null:e.jsx(ne,{requiredActions:C.INVITE_MEMBERS,children:e.jsxs(he,{children:[e.jsx(ve,{translationKey:r("project.members.add")}),e.jsx(ke,{})]})})}function ke(){const{onOpenChange:t}=A(),{data:r}=b(),o=d(),{data:s}=w(),{data:a}=Le(r?.id),{data:n}=H(s?.id),{mutateAsync:i}=Fe({onSuccess:()=>{t(!1)}}),u=!n||n.length===1;if(!r?.id||!s?.id)return null;async function c(l){await i({projectId:r.id,members:[{userId:l.userId,roleId:l.roleId}]})}return e.jsx(Me,{className:z("max-w-[500px]"),children:u?e.jsx(Ue,{}):e.jsxs(e.Fragment,{children:[e.jsx(Ce,{title:o("project.members.addDialog.title"),description:o("project.members.addDialog.description")}),e.jsxs(k,{className:"mt-2",onSubmit:c,toolbar:e.jsx(Re,{children:e.jsx(Ie,{label:o("project.members.add")})}),children:[e.jsx(ye,{source:"projectId",defaultValue:r?.id}),e.jsx(xe,{source:"userId",reference:"organization-members",filter:{noSortPagination:!0,organizationId:s?.id},children:e.jsx(ge,{placeholder:o("project.members.selectMemberPlaceholder"),emptyText:o("project.members.selectMemberEmpty"),localFilter:(l,m)=>a?.length?m.filter(p=>!a?.some(g=>g.userId===p.userId)):m,inputText:l=>l.user.email,optionText:l=>e.jsx(U,{record:l.user}),label:o("project.members.selectMember"),optionValue:"user.id",isRequired:!0})}),e.jsx(_,{label:o("project.invitations.selectRole"),record:r,source:"roleId"})]}),e.jsx(He,{})]})})}function He(){const t=d(),r=K(),{onOpenChange:o}=A(),s=()=>{o(!1),r(F.settings.organization.members())};return e.jsxs("div",{className:"mt-2 flex flex-col gap-3 rounded-md border border-dashed p-4 sm:flex-row sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex flex-col gap-0.5",children:[e.jsx("p",{className:"text-sm font-medium",children:t("project.members.addDialog.inviteHint")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:t("project.members.addDialog.inviteHintDescription")})]}
1),e.jsx(I,{type:"button",variant:"outline",size:"sm",className:"shrink-0",onClick:s,children:t("project.members.addDialog.inviteHintAction")})]})}function Ue(){const t=d(),r=K();return e.jsxs(ae,{children:[e.jsxs(ie,{children:[e.jsx(ce,{variant:"icon",children:e.jsx(L,{})}),e.jsx(le,{children:t("project.members.noOrganizationMembers")}),e.jsx(me,{children:t("project.members.noOrganizationMembersDescription")})]}),e.jsx(de,{children:e.jsx(I,{variant:"default",onClick:()=>r(F.settings.organization.members()),children:t("project.members.addOrganizationMembers")})})]})}function _e(t){const r=y(),{source:o,projectId:s,record:a}=t,{data:n,isLoading:i,isFetching:u,isPending:c}=Pe({id:s});if(i||u||c)return e.jsx(ue,{className:"w-10 h-6"});if(!n)return null;const l=r?.[o],m=a??n.find(j=>j.id===l);return e.jsx(Ne,{variant:"default",className:"font-medium",children:m?.name})}function qe(t){const r=q(),o=Q();return S({mutationFn:r.removeProjectMember,...t,onSuccess:(...s)=>{const{projectId:a}=s[1];o({projectId:a}),t?.onSuccess?.(...s)}})}function Ke(t){const{project:r,disabled:o}=t,s=y(),{data:a}=B(),n=d(),i=V(),[u,c]=M.useState(!1),[l,m]=M.useState(!1),[j,p]=M.useState(!1),{hasAction:x}=pe(r?.id),g=x(C.KICK_MEMBERS),W=x(C.MANAGE_MEMBERS),{mutateAsync:G,isPending:R}=qe({onSuccess:()=>{i(n("project.member.removed"),{type:"success"}),c(!1)},onError:h=>{i(h?.message||n("project.member.removeError"),{type:"error"})}}),{mutateAsync:J,isPending:P}=we({onSuccess:()=>{i(n("project.leave.success"),{type:"success"}),m(!1)},onError:h=>{i(h?.message||n("project.leave.error"),{type:"error"})}});if(!s||!a)return null;const E=s.userId===a.id,Y=s.userId===r?.createdByUser?.id,O=s.userId!==r?.createdByUser?.id&&W;if(Y||!O&&!g&&!E)return null;const X=async()=>{await G({memberId:s.id,projectId:s.projectId})},Z=async()=>{await J({projectId:s.projectId})};return e.jsxs(e.Fragment,{children:[e.jsxs(je,{children:[e.jsx(be,{asChild:!0,children:e.jsx(I,{variant:"ghost",size:"sm",disabled:o||R||P,"aria-label":n("common.actions"),children:e.jsx(Ae,{className:"h-4 w-4"})})}),e.jsxs(fe,{align:"end",children:[O&&e.jsxs(v,{onClick:()=>p(!0),children:[e.jsx(ze,{className:"h-4 w-4 text-inherit"}),n("project.member.changeRole")]}),E?e.jsxs(v,{onClick:()=>m(!0),className:"text-destructive focus:text-destructive",children:[e.jsx(T,{className:"h-4 w-4 text-inherit"}),n("project.leave.label")]}):e.jsxs(v,{onClick:()=>c(!0),className:"text-destructive focus:text-destructive",children:[e.jsx(T,{className:"h-4 w-4 text-inherit"}),n("project.member.remove")]})]})]}),e.jsx(N,{isOpen:u,loading:R,title:n("project.member.removeConfirm.title"),content:e.jsx("p",{children:n("project.member.removeConfirm.description",{name:s.user?.username||"this member"})}),onConfirm:X,onClose:()=>c(!1),confirm:n("common.remove")}),e.jsx(N,{isOpen:l,loading:P,title:n("project.leave.confirm.title"),content:n("project.leave.confirm.description"),onConfirm:Z,onClose:()=>m(!1),confirm:n("project.leave.label")}),e.jsx(Ve,{open:j,project:r,onClose:()=>p(!1)})]})}function Ve(t){const{open:r,project:o,onClose:s}=t,a=d(),{data:n}=B(),i=y(),u=V();return!i||!o||!n?null:e.jsx(Te,{record:i,open:r,onOpenChange:c=>!c&&s(),children:e.jsx(Se,{resource:"project-members",id:i.id,title:a("project.member.changeRoleTitle"),description:a("project.member.changeRoleDescription"),actions:!1,redirectOnError:!1,redirect:!1,queryOptions:{enabled:!1,initialData:i},transform:c=>{const{id:l,createdAt:m,updatedAt:j,...p}=c;return{roleId:p.roleId}},mutationOptions:{onSuccess:()=>{u(a("project.member.changeRoleSuccess"))},onError:c=>{u(c?.message||a("project.member.changeRoleError"),{type:"error"})}},children:e.jsx(k,{defaultValues:{roleId:i.role.id},children:e.jsx(_,{label:a("project.member.changeRoleSelectRole"),record:o,source:"roleId"})})})})}function Qe(t){const{empty:r=e.jsx(Ge,{}),children:o,className:s,...a}=t,{data:n}=b();return n?.id?e.jsx(Oe,{title:!1,empty:r,...a,className:z("-mt-0",s),filter:{projectId:n.id,...a.filter,noSortPagination:!0},resource:"project-members",children:o}):null}function We(t){const{data:r}=b(),o=d();return r?.id?e.jsx("div",{className:"border rounded-lg",children:e.jsxs(f,{bulkActionButtons:!1,...t,children:[e.jsx(f.Col,{source:"user",label:o("project.members.columns.member"),render:s=>e.jsx(U,{record:s.user})}),e.jsx(f.Col,{source:"role",label:o("project.members.columns.role"),headerClassName:"text-end",cellClassName:"text-end",render:s=>e.jsx(_e,{source:"roleId",projectId:r.id,record:s.role})}
1),e.jsx(f.Col,{source:"actions",label:"",cellClassName:"text-right",children:e.jsx(Ke,{project:r})})]})}):null}function Ge(t){const r=d();return e.jsx(De,{icon:e.jsx(L,{}),title:t.title||r("project.members.empty.title"),description:t.description||r("project.members.empty.description"),...t})}function Sr(){const{data:t}=b(),r=d();return t?.id?e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsx(ee,{title:r("project.members.title")}),e.jsxs(re,{defaultValue:"members",syncWithLocation:!0,children:[e.jsxs("div",{className:"flex flex-row justify-between items-center w-full",children:[e.jsx(te,{variant:"flat",children:e.jsx(se,{value:"members",children:r("project.members.tab")})}),e.jsx(Be,{})]}),e.jsx(oe,{value:"members",index:!0,children:e.jsx(Qe,{children:e.jsx(We,{})})})]})]}):null}export{Sr as ProjectMembersPage};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.