1import{j as e,u as w,r as u}from"./index-DbENjIaX.js";import{u as v,i as N,j as y,k as C,m as D}from"./platformShellContext-6LVqbo4L.js";const P=({canManageDelegates:f,delegatesState:i,setDelegatesState:n,delegateDraft:c,setDelegateDraft:m,emailInputRef:b,onCreateDelegate:d,onDeleteDelegate:l,onUpdateDelegatePerm:p})=>e.jsxs("div",{className:"mt-6 rounded-lg border border-slate-200 bg-white p-4",children:[e.jsx("div",{className:"font-medium",children:"Délégués"}),f?e.jsxs(e.Fragment,{children:[e.jsxs("form",{onSubmit:d,className:"mt-3 space-y-3",children:[e.jsxs("label",{className:"text-sm",children:["Email",e.jsx("input",{ref:b??void 0,className:"mt-1 w-full rounded border border-slate-300 px-3 py-2 text-sm",value:c.email,onChange:s=>m(r=>({...r,email:s.target.value})),placeholder:"[email protected]",disabled:c.submitting})]}),e.jsx("div",{className:"grid grid-cols-1 gap-2 sm:grid-cols-2",children:[["can_create_workspaces","Créer des workspaces"],["can_archive_workspaces","Archiver des workspaces"],["can_delete_workspaces","Supprimer des workspaces"],["can_manage_workspace_admins","Gérer les SuperAdmins"],["can_manage_maintenance","Gérer la maintenance"],["can_manage_quotas","Gérer les quotas"],["can_manage_delegates","Gérer les délégués"]].map(([s,r])=>e.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[e.jsx("input",{type:"checkbox",checked:c.permissions[s],onChange:x=>m(g=>({...g,permissions:{...g.permissions,[s]:x.target.checked}})),disabled:c.submitting}),r]},s))}),e.jsx("div",{className:"flex items-center justify-end",children:e.jsx("button",{type:"submit",className:"rounded bg-[#545454] text-white px-3 py-2 text-sm disabled:opacity-50",disabled:c.submitting||c.email.trim().length<5,children:"Ajouter"})})]}),e.jsx("div",{className:"mt-4",children:i.kind==="loading"?e.jsx("div",{className:"text-sm text-slate-600",children:"Chargementâ¦"}):i.kind==="error"?e.jsx("div",{className:"rounded border border-rose-200 bg-rose-50 p-2 text-sm text-rose-900",children:i.message}):i.kind==="ready"?e.jsxs("div",{className:"space-y-2",children:[i.delegates.map(s=>e.jsxs("div",{className:"rounded border border-slate-200 bg-slate-50 p-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("div",{className:"text-sm font-medium text-slate-900",children:s.email||s.userId}),e.jsx("div",{className:"text-xs text-slate-500",children:s.createdAt?`Ajouté ${s.createdAt}`:"â"})]}),e.jsx("button",{type:"button",className:"shrink-0 rounded border border-rose-300 bg-rose-50 px-2 py-1 text-sm text-rose-900 hover:bg-rose-100",onClick:()=>void l(s.userId),children:"Supprimer"})]}),e.jsx("div",{className:"mt-3 grid grid-cols-1 gap-2 sm:grid-cols-2",children:[["can_create_workspaces","Créer des workspaces"],["can_archive_workspaces","Archiver des workspaces"],["can_delete_workspaces","Supprimer des workspaces"],["can_manage_workspace_admins","Gérer les SuperAdmins"],["can_manage_maintenance","Gérer la maintenance"],["can_manage_quotas","Gérer les quotas"],["can_manage_delegates","Gérer les délégués"]].map(([r,x])=>e.jsxs("label",{className:"flex items-center gap-2 text-sm",children:[e.jsx("input",{type:"checkbox",checked:!!s.permissions[r],onChange:g=>{const _={...s,permissions:{...s.permissions,[r]:g.target.checked}};n(h=>h.kind==="ready"?{kind:"ready",delegates:h.delegates.map(a=>a.userId===s.userId?_:a)}:h)}}),x]},r))}),e.jsx("div",{className:"mt-3 flex justify-end",children:e.jsx("button",{type:"button",className:"rounded border border-slate-300 bg-white px-3 py-2 text-sm hover:bg-slate-50",onClick:()=>void p(s.userId,s.permissions),children:"Enregistrer"})})]},s.userId)),i.delegates.length===0?e.jsx("div",{className:"text-sm text-slate-500",children:"Aucun délégué."}):null]}):e.jsx("div",{className:"text-sm text-slate-500",children:"Délégués non chargés."})})]}):e.jsx("div",{className:"mt-2 text-xs text-slate-500",children:"Vous nâavez pas la permission de gérer les délégués."})]}),j=()=>({can_read_workspaces:!0,can_create_workspaces:!1,can_archive_workspaces:!1,can_delete_workspaces:!1,can_manage_workspace_admins:!1,can_manage_delegates:!1,can_manage_maintenance:!1,can_manage_quotas:!1}),A=()=>{const{access:f,setHeader:i}=v(),n=!!f.permissions["delegates:manage"],[c]=w(),m=(c.get("q")||"").trim().toLowerCase(),b=u.useRef(null),[d,l]=u.useState({kind:"idle"}),[p,s]=u.useState({email:"",permissions:j(),submitting:!1}),r=u.useCallback(async()=>
1{if(n){l({kind:"loading"});try{const a=await N();l({kind:"ready",delegates:a.delegates})}catch(a){l({kind:"error",message:(a==null?void 0:a.message)||"Impossible de charger les délégués"})}}},[n]);u.useEffect(()=>{r()},[r]),u.useEffect(()=>{i({title:"Délégués",searchPlaceholder:"Rechercher un déléguéâ¦",actions:e.jsx("button",{type:"button",className:"rounded-xl bg-amber-400 px-3 py-2 text-sm font-medium text-slate-900 hover:bg-amber-300 disabled:opacity-50",disabled:!n,onClick:()=>{var a;return(a=b.current)==null?void 0:a.focus()},children:"Nouveau"})})},[n,i]);const x=u.useMemo(()=>d.kind!=="ready"?[]:m?d.delegates.filter(a=>{const o=String(a.email||"").toLowerCase(),t=String(a.userId||"").toLowerCase();return o.includes(m)||t.includes(m)}):d.delegates,[d,m]),g=async a=>{if(a.preventDefault(),!n)return;const o=p.email.trim();if(o){s(t=>({...t,submitting:!0}));try{await D({email:o,permissions:p.permissions}),s({email:"",permissions:j(),submitting:!1}),await r()}catch(t){s(k=>({...k,submitting:!1})),l({kind:"error",message:(t==null?void 0:t.message)||"Impossible de créer le délégué"})}}},_=async a=>{if(!(!n||!window.confirm("Supprimer ce délégué ?")))try{await C(a),await r()}catch(t){l({kind:"error",message:(t==null?void 0:t.message)||"Impossible de supprimer le délégué"})}},h=async(a,o)=>{if(n)try{await y({userId:a,permissions:o}),await r()}catch(t){l({kind:"error",message:(t==null?void 0:t.message)||"Impossible de mettre à jour les permissions"})}};return e.jsxs("div",{className:"max-w-5xl",children:[e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-white p-4",children:[e.jsx("div",{className:"text-sm font-semibold text-slate-900",children:"Délégués"}),e.jsx("div",{className:"mt-1 text-xs text-slate-500",children:"Permissions déléguées pour aider à gérer la plateforme."})]}),e.jsx(P,{canManageDelegates:n,delegatesState:d.kind==="ready"?{kind:"ready",delegates:x}:d,setDelegatesState:l,delegateDraft:p,setDelegateDraft:s,emailInputRef:b,onCreateDelegate:g,onDeleteDelegate:_,onUpdateDelegatePerm:h})]})};export{A as PlatformDelegatesPage};
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.