PageSourceSearch

https://www.fsjes-umi.ac.ma/build/assets/Index-CVY8rovS.js

js fsjes-umi.ac.ma collected 2026-10-07 17:30:47 UTC 9,246 bytes, 1 lines download raw bytes

1import{u as W,r as i,l as X,d as Y,c as _,o as f,f as l,a as s,w as o,s as U,k as d,F,h as D,j as I,t as n}from"./app-C5tBqdOy.js";import{P as Z}from"./PageHeader-zEsZEras.js";import{_ as x}from"./AdminButton-Bxfszd9C.js";import{_ as P}from"./AdminTextField-CQSkpPv8.js";import{_ as N}from"./AdminSelect-DUFm0S8x.js";import{_ as ee}from"./AdminTable-DoN30a5i.js";import{_ as te}from"./AdminBadge-DRj9wXbA.js";import{_ as R}from"./AdminToggle-B1-RwON7.js";import{_ as se}from"./AdminModal-DVzMhuU1.js";import{_ as ae}from"./AdminPagination-Bn4GkrqL.js";import{_ as le}from"./AdminEmptyState-CMMBzj7j.js";import{l as oe,t as ie,a as ne,u as ue,b as re,d as de}from"./members-Xc5DOBAT.js";import{u as pe}from"./useAdminToast-nqTJN-8H.js";import"./usePopover-BW68ddYn.js";import"./http-BbXTuv6R.js";import"./csrf-DE4nagIp.js";const ce={class:"mb-6 grid gap-4 md:grid-cols-2 xl:grid-cols-5"},me={class:"mb-6 rounded-2xl border border-slate-200 bg-white p-4"},_e={class:"px-6 py-4"},fe={class:"h-10 w-10 overflow-hidden rounded-full bg-slate-100"},ve=["src"],xe={class:"px-6 py-4"},ge={class:"px-6 py-4 font-medium text-slate-800"},ye={class:"space-y-1"},he=["dir"],be={key:0,class:"block text-xs font-medium text-slate-500",dir:"rtl"},Ve={class:"px-6 py-4"},Me={class:"px-6 py-4"},ke={class:"px-6 py-4"},we=["dir"],Ce={class:"px-6 py-4"},Ae=["dir"],Se={class:"px-6 py-4"},je=["value","disabled","onChange"],$e=["value"],Fe={class:"px-6 py-4"},Ie=["dir"],Pe={class:"px-6 py-4"},Te={class:"px-6 py-4"},ze={class:"px-6 py-4 text-right"},Ue={class:"flex justify-end gap-2"},De={class:"mt-6"},Ne={class:"text-sm text-slate-600"},Re={class:"font-semibold"},qe={key:0,class:"mt-2 text-xs text-rose-600"},Be={class:"flex justify-end gap-2"},ot={__name:"Index",setup(Ge){const T=W(),S=i([]),p=i({current_page:1,last_page:1,per_page:10,total:0}),h=i(""),b=i(""),V=i(""),M=i(""),k=i(""),w=i(!1),g=i({}),v=i(null),j=i(!1),c=i(""),C=i(!1),{addToast:r}=pe(),q=[{value:"",label:"Tous"},{value:"1",label:"Actifs"},{value:"0",label:"Inactifs"}],B=[{value:"",label:"Tous"},{value:"F",label:"F"},{value:"M",label:"M"}],G=[{value:"",label:"-"},{value:"F",label:"F"},{value:"M",label:"M"}];async function m(a=1){w.value=!0;try{const t=await oe({search:h.value,is_active:b.value,role:V.value,grade:M.value,sexe:k.value,page:a});S.value=t?.data??[],p.value=t?.meta??p.value}catch{r({type:"error",message:"Impossible de charger les membres."})}finally{w.value=!1}}function O(a){v.value=a,c.value=""}function $(){v.value=null,c.value=""}async function E(){if(v.value){j.value=!0,c.value="";try{await de(v.value.id),$(),m(p.value.current_page),r({type:"success",message:"Membre supprimé."})}catch(a){a?.response?.status===409&&(c.value=a?.response?.data?.message||"Cannot delete: member is already used."),r({type:"error",message:c.value||"Suppression impossible."})}finally{j.value=!1}}}async function H(a){try{await re(a.id),m(p.value.current_page),r({type:"success",message:"Statut mis à jour."})}catch{r({type:"error",message:"Mise à jour impossible."})}}async function L(a){try{await ne(a.id),m(p.value.current_page),r({type:"success",message:"Image publique mise à jour."})}catch{r({type:"error",message:"Mise à jour impossible."})}}async function J(a){const t=!!a,e=C.value;C.value=t;try{await ie(t?1:0),m(p.value.current_page),r({type:"success",message:"Mise à jour globale effectuée."})}catch{C.value=e,r({type:"error",message:"Mise à jour impossible."})}}function K(a,t={}){return{first_name:a.first_name||"",last_name:a.last_name||"",first_name_ar:a.first_name_ar||"",last_name_ar:a.last_name_ar||"",email:a.email||"",phone:a.phone||"",role:a.role||"",grade:a.grade||"",sexe:a.sexe||"",department:a.department||"",is_active:!!a.is_active,use_default_public_image:!!a.use_default_public_image,...t}}async function Q(a,t){const e=a.sexe||"",u=t||"";if(e!==u){a.sexe=u,g.value={...g.value,[a.id]:!0};try{const y=await ue(a.id,K(a,{sexe:u||null}));y?.data&&Object.assign(a,y.data),r({type:"success",message:"Sexe mis à jour."})}catch{a.sexe=e,r({type:"error",message:"Mise à jour impossible."})}finally{const y={...g.value};delete y[a.id],g.value=y}}}function A(a=""){return/[\u0600-\u06FF]/.test(String(a))}let z;return X([h,b,V,M,k],()=>{clearTimeout(z),z=setTimeout(()=>m(1),300)}),Y(()=>{m()}),(a,t)=>(f(),_(F,null,[l(Z,null,{title:o(()=>[...t[6]||(t[6]=[d("Membres",-1)])]),subtitle:o(()=>[...t[7]||(t[7]=[d("Gérez les membres.",-1)])]),actions:o(()=>[l(x,{onClick:t[0]||(t[0]=e=>U(T).push("/admin/membres/create"))},{default:o(()=>[...t[8]||(t[8]=[d(" Nouveau membre ",-1)])]),_:1})]),_:1}),s("div",ce,[l(P,{modelValue:h.value,"onUpdate:modelValue":t[1]||(t[1]=e=>h.value=e),label:"Recherche",placeholder:"Nom, nom AR, email, rôle, grade"},null,8,["modelValue"]),l(N,{modelValue:b.value,"onUpdate:modelValue":t[2]||(t[2]=e=>b.value=e),label:"Actif",options:q},null,8,["modelValue"]),l(P,{modelValue:V.value,"onUpdate:modelValue":t[3]||(t[3]=e=>V.value=e),label:"Rôle",placeholder:"Rôle"},null,8,["modelValue"]),l(P,{modelValue:M.value,"onUpdate:modelValue":t[4]||(t[4]=e=>M.value=e),label:"Grade",placeholder:"Grade"},null,8,["modelValue"]),l(N,{modelValue:k.value,"onUpdate:modelValue":t[5]||(t[5]=e=>k.value=e),label:"Sexe",options:B},null,8,["modelValue"])]),s("div",me,[l(R,{"model-value":C.value,label:"Photo publique par défaut (tous les membres)",hint:"Active : image publique par défaut. Désactive : image propre au membre.","onUpdate:modelValue":J},null,8,["model-value"])]),l(ee,{"is-empty":!w.value&&S.value.length===0},{head:o(()=>[...t[9]||(t[9]=[s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Photo",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"}," Photo publique ",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"}," Nom complet ",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Email",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Téléphone",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Rôle",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Grade",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Sexe",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"}," Département ",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Actif",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase"},"Updated",-1),s("th",{class:"px-6 py-3 text-xs font-semibold uppercase text-right"}," Actions ",-1)])]),body:o(()=>[(f(!0),_(F,null,D(S.value,e=>(f(),_("tr",{key:e.id,class:"text-slate-600"},[s("td",_e,[s("div",fe,[e.image_url?(f(),_("img",{key:0,src:e.image_url,alt:"",class:"h-full w-full object-cover"},null,8,ve)):I("",!0)])]),s("td",xe,[l(R,{"model-value":!!e.use_default_public_image,"onUpdate:modelValue":()=>L(e)},null,8,["model-value","onUpdate:modelValue"])]),s("td",ge,[s("div",ye,[s("span",{class:"block",dir:A(e.full_name)?"rtl":"ltr"},n(e.full_name||"-"),9,he),e.full_name_ar&&e.full_name_ar!==e.full_name?(f(),_("span",be,n(e.full_name_ar),1)):I("",!0)])]),s("td",Ve,n(e.email||"-"),1),s("td",Me,n(e.phone||"-"),1),s("td",ke,[s("span",{dir:A(e.role)?"rtl":"ltr"},n(e.role||"-"),9,we)]),s("td",Ce,[s("span",{dir:A(e.grade)?"rtl":"ltr"},n(e.grade||"-"),9,Ae)]),s("td",Se,[s("select",{value:e.sexe||"",class:"min-w-[4.5rem] rounded-xl border border-slate-200 bg-white px-3 py-2 text-sm font-semibold text-slate-700 shadow-sm outline-none transition focus:ring-2 focus:ring-fsjes-primary/30 disabled:cursor-not-allowed disabled:bg-slate-100",disabled:!!g.value[e.id],onChange:u=>Q(e,u.target.value)},[(f(),_(F,null,D(G,u=>s("option",{key:u.value||"empty",value:u.value},n(u.label),9,$e)),64))],40,je)]),s("td",Fe,[s("span",{dir:A(e.department)?"rtl":"ltr"},n(e.department||"-"),9,Ie)]),s("td",Pe,[l(te,{variant:e.is_active?"success":"danger"},{default:o(()=>[d(n(e.is_active?"Actif":"Inactif"),1)]),_:2},1032,["variant"])]),s("td",Te,n(e.updated_at?e.updated_at.split("T")[0]:"-"),1),s("td",ze,[s("div",Ue,[l(x,{variant:"secondary",size:"sm",onClick:u=>U(T).push(`/admin/membres/${e.id}/edit`)},{default:o(()=>[...t[10]||(t[10]=[d(" Modifier ",-1)])]),_:1},8,["onClick"]),l(x,{variant:"ghost",size:"sm",onClick:u=>H(e)},{default:o(()=>[d(n(e.is_active?"Désactiver":"Activer"),1)]),_:2},1032,["onClick"]),l(x,{variant:"danger",size:"sm",onClick:u=>O(e)},{default:o(()=>[...t[11]||(t[11]=[d(" Supprimer ",-1)])]),_:1},8,["onClick"])])])]))),128))]),empty:o(()=>[l(le,{title:w.value?"Chargement...":"Aucun membre trouvé.",description:"Essayez un autre filtre ou créez un membre."},null,8,["title"])]),_:1},8,["is-empty"]),s("div",De,[l(ae,{meta:p.value,onChange:m},null,8,["meta"])]),l(se,{open:!!v.value,title:"Supprimer le membre",size:"sm",onClose:$},{footer:o(()=>[s("div",Be,[l(x,{variant:"ghost",size:"sm",onClick:$},{default:o(()=>[...t[14]||(t[14]=[d(" Annuler ",-1)])]),_:1}),l(x,{variant:"danger",size:"sm",loading:j.value,onClick:E},{default:o(()=>[...t[15]||(t[15]=[d(" Supprimer ",-1)])]),_:1},8,["loading"])])]),default:o(()=>[s("p",Ne,[t[12]||(t[12]=d(" Voulez-vous vraiment supprimer ",-1)),s("span",Re,n(v.value?.full_name||"-"),1),t[13]||(t[13]=d(" ? ",-1))]),c.value?(f(),_("p",qe,n(c.value),1)):I("",!0)]),_:1},8,["open"])],64))}};export{ot as default};

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.