1import{e as ne,s as le,A as me,N as oe,O as ie,j as v,w as e,f as _,o as i,k as Y,b as s,a as n,d as r,t as c,c as f,x as ce,y,u as pe,z as _e,i as K,h as G,n as W,F as b,r as $}from"./D2aBaYCh.js";import{_ as fe,b as ve,c as ge,a as be,d as ye}from"./CV80t7uv.js";import{_ as xe}from"./hLujHJJh.js";import{_ as Z}from"./_TeY7avl.js";import{_ as $e}from"./1vL5Og7n.js";import{_ as he}from"./BFRx4GjS.js";import{_ as we}from"./DSago7zB.js";import{_ as ke}from"./XUMAnCCm.js";import{c as Ce,_ as Pe,a as Ve,b as Re}from"./D4iHDzWN.js";import{_ as Te,a as je,b as Se,c as ze,d as Fe}from"./Bb_cvoc-.js";import{_ as Ae}from"./BJUmFXsF.js";import{_ as Ne,a as Be,b as Ue,c as qe,d as Ee,e as He}from"./BDnxoV0s.js";import{u as De}from"./BE1u7KBh.js";import{C as ae}from"./CQuTLo_P.js";import"./_lQnYn91.js";import"./BSVju-9X.js";import"./BPAl-OSZ.js";import"./N9UflkqM.js";import"./8gyaHsCQ.js";import"./FUKBWQwh.js";import"./DKZOPE58.js";import"./CHIgUVhi.js";import"./ChOKVcqp.js";import"./ChviPwxD.js";import"./BJ7eJWA3.js";import"./DrevJgg3.js";import"./vi2mB--f.js";import"./D3VWVCOu.js";import"./Dujokckg.js";import"./CHs1IB-k.js";import"./DJl8XXE2.js";import"./DvgU3qHA.js";import"./B7iN_SNJ.js";import"./B-DFnFy7.js";import"./C-E83dC9.js";import"./DhenvKde.js";import"./CjlqfVHq.js";const Oe={key:0,class:"mt-1 text-sm text-red-500"},Je=ne({__name:"RolePermissionForm",props:{open:{type:Boolean},mode:{},data:{}},emits:["close"],setup(ee,{emit:C}){const o=ee,A=C,{$api:w}=le(),T=me(),d=oe({name:"",errors:{name:""},processing:!1});ie(()=>o.open,P=>{P&&(d.name=o.data?.name??"",d.errors.name=null)});const h=()=>o.mode==="role"?o.data?.id?{url:`/api/roles/${o.data.id}`,method:"put"}:{url:"/api/roles",method:"post"}:o.data?.id?{url:`/api/permissions/${o.data.id}`,method:"put"}:{url:"/api/permissions",method:"post"},u=async()=>{d.processing=!0,d.errors.name=null;const{url:P,method:m}=h();try{await w.request({url:P,method:m,data:{name:d.name}}),await T.invalidateQueries({queryKey:["roles-permissions-meta"]}),A("close"),y.success(o.data?.id?`${o.mode} berhasil diperbarui!`:`${o.mode} berhasil dibuat!`)}catch(k){const x=k?.response?.data?.errors;x?.name?.[0]?d.errors.name=x.name[0]:y.error("Terjadi kesalahan, silakan coba lagi")}finally{d.processing=!1}};return(P,m)=>(i(),v(_(ye),{open:o.open,"onUpdate:open":m[2]||(m[2]=k=>A("close"))},{default:e(()=>[o.open?(i(),v(_(fe),{key:0},{default:e(()=>[s(_(be),null,{default:e(()=>[s(_(ve),null,{default:e(()=>[r(c(o.data?.id?`Edit ${o.mode}`:`Create ${o.mode}`),1)]),_:1}),s(_(ge),null,{default:e(()=>[r(c(o.data?.id?`Edit the ${o.mode} details below.`:`Fill out the form to create a new ${o.mode}.`),1)]),_:1})]),_:1}),n("form",{onSubmit:ce(u,["prevent"]),class:"space-y-4"},[n("div",null,[s(_(he),{for:"name"},{default:e(()=>[r(c(`${o.mode} Name`),1)]),_:1}),s(_($e),{id:"name",modelValue:d.name,"onUpdate:modelValue":m[0]||(m[0]=k=>d.name=k),class:"mt-3",placeholder:"Enter name"},null,8,["modelValue"]),d.errors.name?(i(),f("div",Oe,c(d.errors.name),1)):Y("",!0)]),s(_(xe),null,{default:e(()=>[s(_(Z),{type:"button",variant:"outline",onClick:m[1]||(m[1]=k=>A("close"))},{default:e(()=>[...m[3]||(m[3]=[r(" Cancel ",-1)])]),_:1}),s(_(Z),{type:"submit",disabled:d.processing},{default:e(()=>[r(c(d.processing?"Saving...":"Save"),1)]),_:1},8,["disabled"])]),_:1})],32)]),_:1})):Y("",!0)]),_:1},8,["open"]))}}),Le=Object.assign(Je,{__name:"CustomDashboardAdminRolePermissionForm"}),Me={class:"w-full pb-6"},Qe={class:"relative flex justify-between"},Ie={class:"flex items-center justify-end gap-2"},Ke={class:"rounded-md border p-4"},Ge={class:"w-full space-y-4"},We={class:"flex items-center justify-between gap-2"},Xe={class:"flex gap-2"},Ye={class:"flex gap-2"},Ze={class:"hidden items-center gap-2 lg:flex"},es={class:"overflow-x-auto rounded-lg border"},ss={class:"relative inline-flex cursor-pointer items-center"},ts=["checked","onChange"],as={class:"w-full pb-6"},ns={class:"rounded-md border p-4"},ls={class:"w-full space-y-4"},os={class:"flex items-center justify-between gap-2"},is={class:"flex gap-2"},rs={class:"flex items-center gap-2"},ds={class:"overflow-x-auto rounded-lg border"},us={class:"w-full pb-6"},ms={class:"rounded-md border p-4"},cs={class:"w-full space-y-4"},ps={class:"flex items-center justify-between gap-2"},_s={class:"flex gap-2"},fs={class:"flex items-center gap-2"},vs={class:"overflow-x-auto rounded-lg border"},X="bg-gray-200 text-gray-600 border border-gray-300 data-[state=active]:bg-gray-600 data-[state=active]:text-white",st=ne({__name:"index",setup(ee){De("Roles & Permissions","Ringkasan singkat akun dan aktivitas.");const{$api:C}
1=le();pe({title:"Roles & Permissions"});const{data:o,isLoading:A}=_e({queryKey:["roles-permissions-meta"],queryFn:async()=>(await C.get("/api/roles-permissions")).data.data,staleTime:1e3*60*10}),w=K(()=>o.value?.roles??[]),T=K(()=>o.value?.permissions??[]),d=G({}),h=G("");ie(o,l=>{l&&(d.value=JSON.parse(JSON.stringify(l.rolePermissions||{})),!h.value&&l.roles?.length&&(h.value=l.roles[0]?.name??""))},{immediate:!0});const u=oe({role_id:null,permissions:[],type:"",id:null}),P=K(()=>{const l={};for(const t of T.value??[]){const V=(t.name??"").split(".");if(V.length<2)continue;const[g,p]=V;l[g]||(l[g]=[]),l[g].includes(p)||l[g].push(p)}return l}),m={superadmin:{class:"bg-red-600/10 text-red-600 data-[state=active]:bg-red-600 data-[state=active]:text-white"},company:{class:"bg-green-600/10 text-green-600 data-[state=active]:bg-green-600 data-[state=active]:text-white"},freelancer:{class:"bg-amber-500/10 text-amber-600 data-[state=active]:bg-amber-500 data-[state=active]:text-white"},moderator:{class:"bg-sky-600/10 text-sky-600 data-[state=active]:bg-sky-600 data-[state=active]:text-white"}},k=async(l,t,V)=>{const g=`${t}.${V}`;let p=d.value[l.name]||[];const j=[...p];p.includes(g)?p=p.filter(S=>S!==g):p.push(g),d.value[l.name]=p;try{await C.post("/api/role-permissions/update",{role_id:l.id,permissions:p}),y.success("Permissions updated",{description:`Role ${l.name} updated successfully`,action:{label:"Undo",onClick:async()=>{try{d.value[l.name]=j,await C.post("/api/role-permissions/update",{role_id:l.id,permissions:j}),y.success("Changes undone")}catch{y.error("Failed to undo changes")}}}})}catch{d.value[l.name]=j,y.error("Failed to update permissions",{description:"Please try again later"})}},x=G({open:!1,mode:"role",data:null}),se=l=>{x.value={open:!0,mode:l,data:null}},te=(l,t)=>{x.value={open:!0,mode:l,data:t}},re=async()=>{if(!u.type||!u.id){y.error("Pilih type dan item yang ingin dihapus");return}y.warning("Are you sure?",{description:`Hapus ${u.type} ini permanen.`,action:{label:"Delete",onClick:async()=>{try{await C.delete("/api/role-permissions",{data:{type:u.type,id:u.id}}),y.success(`${u.type} berhasil dihapus`),u.type="",u.id=null,await o.value}catch{y.error("Failed to delete")}}}})};return(l,t)=>{const V=Le,g=we,p=ke,j=Ve,S=Pe,E=Se,H=je,N=Fe,D=Ae,O=ze,J=Te,z=Z,B=qe,R=Ue,L=Be,U=He,M=Ee,Q=Ne,de=Re,ue=Ce;return i(),f(b,null,[s(V,{open:x.value.open,mode:x.value.mode,data:x.value.data,onClose:t[0]||(t[0]=a=>x.value.open=!1)},null,8,["open","mode","data"]),n("div",Me,[n("div",Qe,[n("div",null,[s(g,{title:"Roles & Permissions",description:"Manage your roles and permission settings"})]),n("div",Ie,[t[7]||(t[7]=n("div",{class:"flex items-center gap-2"},[n("span",{class:"text-sm"},"Anda sedang melihat Tabs:")],-1)),s(p,{class:W(["rounded-md px-2 capitalize",m[h.value]?.class||X])},{default:e(()=>[r(c(h.value),1)]),_:1},8,["class"])])]),n("div",Ke,[s(ue,{modelValue:h.value,"onUpdate:modelValue":t[4]||(t[4]=a=>h.value=a),"default-value":w.value[0]?.name,class:"w-full"},{default:e(()=>[n("div",Ge,[n("div",We,[n("div",Xe,[s(S,{class:"gap-1"},{default:e(()=>[(i(!0),f(b,null,$(w.value,a=>(i(),v(j,{key:a.id,value:a.name,class:W(["space-x-2 capitalize",m[a.name]?.class||X])},{default:e(()=>[r(c(a.name),1)]),_:2},1032,["value","class"]))),128))]),_:1})]),n("div",Ye,[n("div",Ze,[s(J,{modelValue:u.type,"onUpdate:modelValue":t[1]||(t[1]=a=>u.type=a)},{default:e(()=>[s(H,{class:"h-8! w-45 text-sm"},{default:e(()=>[s(E,{placeholder:"-- Pilih Type --"})]),_:1}),s(O,null,{default:e(()=>[s(D,null,{default:e(()=>[s(N,{value:"role"},{default:e(()=>[...t[8]||(t[8]=[r("Role",-1)])]),_:1}),s(N,{value:"permission"},{default:e(()=>[...t[9]||(t[9]=[r("Permission",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),u.type==="role"?(i(),v(J,{key:0,modelValue:u.id,"onUpdate:modelValue":t[2]||(t[2]=a=>u.id=a)},{default:e(()=>[s(H,{class:"h-8! w-50 text-sm"},{default:e(()=>[s(E,{placeholder:"-- Pilih Role --"})]),_:1}),s(O,null,{default:e(()=>[s(D,null,{default:e(()=>[(i(!0),f(b,null,$(w.value,a=>(i(),v(N,{key:a.id,value:a.id},{default:e(()=>[r(c(a.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"])):u.type==="permission"?(i(),v(J,{key:1,modelValue:u.id,"onUpdate:modelValue":t[3]||(t[3]=a=>u.id=a)},{default:e(()=>[s(H,{class:"h-8! w-50 text-sm"},{default:e(()=>[s(E,{placeholder:"-- Pilih Permission --"})]),_:1}),s(O,null,{default:e(()=>[s(D,null,{default:e(()=>[(i(!0),f(b,null,$(T.value,a=>(i(),v(N,{key:a.id,value:a.id},{default:e(()=>[r(c(a.name),1)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1},8,["modelValue"])):Y("",!0),s(z,{variant:"destructive",size:"sm",disabled:!u.type||!u.id,onClick:re},{default:e(()=>[...t[10]||(t[10]=[r(" Delete ",-1)])]),_:1},8,["disabled"])])])]),(i(!0),f(b,null,$(w.value,a=>(i(),v(de,{key:a.id,value:a.name,class:"mt-4"},{default:e(()=>[n("div",es,[s(Q,{class:"w-full border-collapse text-sm"},{default:e(()=>[s(L,null,{default:e(()=>[s(R,null,{default:e(()=>[s(B,{class:"bg-section-jobster p-2 text-left font-semibold"},{default:e(()=>[...t[11]||(t[11]=[r(" Roles & Permissions ",-1)])]),_:1}),(i(),f(b,null,$(["create","edit","delete","view"],F=>s(B,{key:F,class:"bg-section-jobster p-2 text-center font-semibold capitalize"},{default:e(()=>[r(c(F),1)]),_:2},1024)),64))]),_:1})]),_:1}),s(M,null,{default:e(()=>[(i(!0),f(b,null,$(P.value,(F,q)=>(i(),v(R,{key:q},{default:e(()=>[s(U,{class:"capitalize font-medium"},{default:e(()=>[r(c(q),1)]),_:2},1024),(i(),f(b,null,$(["create","edit","delete","view"],I=>s(U,{key:I,class:"text-center"},{default:e(()=>[n("label",ss,[n("input",{type:"checkbox",class:"peer sr-only",checked:d.value[a.name]?.includes(`${q}.${I}`),onChange:gs=>k(a,q,I)},null,40,ts),t[12]||(t[12]=n("div",{class:"h-4 w-7 rounded-full bg-gray-300 transition-colors peer-checked:bg-green-600"},null,-1)),t[13]||(t[13]=n("span",{class:"absolute left-0.5 top-0.5 h-3 w-3 rounded-full bg-white shadow-md transition-transform duration-200 peer-checked:translate-x-3"},null,-1))])]),_:2},1024)),64))]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)])]),_:2},1032,["value"]))),128))])]),_:1},8,["modelValue","default-value"])])]),n("div",as,[n("div",ns,[n("div",ls,[n("div",os,[t[15]||(t[15]=n("div",{class:"flex gap-2"},[n("h2",{class:"text-lg font-semibold"},"editPermissions")],-1)),n("div",is,[n("div",rs,[s(z,{onClick:t[5]||(t[5]=a=>se("permission")),size:"sm",class:"items-center"},{default:e(()=>[s(_(ae),{class:"mr-2 h-4 w-4"}),t[14]||(t[14]=r(" Add Permission ",-1))]),_:1})])])]),n("div",ds,[s(Q,null,{default:e(()=>[s(L,null,{default:e(()=>[s(R,{class:"items-center"},{default:e(()=>[s(B,{class:"bg-section-jobster"},{default:e(()=>[...t[16]||(t[16]=[r("Permissions",-1)])]),_:1})]),_:1})]),_:1}),s(M,null,{default:e(()=>[s(R,null,{default:e(()=>[(i(!0),f(b,null,$(T.value,a=>(i(),v(U,{key:a.id,class:"mt-1! inline-flex items-center px-1"},{default:e(()=>[s(z,{size:"sm",variant:"outline",onClick:F=>te("permission",a)},{default:e(()=>[r(c(a.name??""),1)]),_:2},1032,["onClick"])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})])])])]),n("div",us,[n("div",ms,[n("div",cs,[n("div",ps,[t[18]||(t[18]=n("div",{class:"flex gap-2"},[n("h2",{class:"text-lg font-semibold"},"editRoles")],-1)),n("div",_s,[n("div",fs,[s(z,{onClick:t[6]||(t[6]=a=>se("role")),size:"sm",class:"items-center"},{default:e(()=>[s(_(ae),{class:"mr-2 h-4 w-4"}),t[17]||(t[17]=r(" Add Role ",-1))]),_:1})])])]),n("div",vs,[s(Q,null,{default:e(()=>[s(L,null,{default:e(()=>[s(R,{class:"items-center"},{default:e(()=>[s(B,{class:"bg-section-jobster"},{default:e(()=>[...t[19]||(t[19]=[r("Roles",-1)])]),_:1})]),_:1})]),_:1}),s(M,null,{default:e(()=>[s(R,null,{default:e(()=>[(i(!0),f(b,null,$(w.value,a=>(i(),v(U,{key:a.id,class:"mt-1! inline-flex items-center px-1"},{default:e(()=>[s(z,{size:"sm",class:W(["h-8!",m[a.name]?.class||X]),variant:"ghost",onClick:F=>te("role",a)},{default:e(()=>[r(c(a.name??""),1)]),_:2},1032,["class","onClick"])]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})])])])])],64)}}});
1export{st 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.