mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
2 lines
7.9 KiB
JavaScript
2 lines
7.9 KiB
JavaScript
import{i as Q,u as W,y as V,d as P,g as N,c as Y}from"./main.366b2ac6.js";import{g as U,u as Z,am as A,r as d,o as u,s as R,w as n,y as o,b as i,v as $,x as b,A as M,i as z,k as j,m as O,n as G,p as ee,q as te,t as m,c as S,H as X,F as q,z as J,B as se,a5 as ae}from"./vendor.e9042f2c.js";const oe={props:{row:{type:Object,default:null},table:{type:Object,default:null},loadData:{type:Function,default:null}},setup(C){const p=C,e=Q();W();const{t:f}=U(),g=V(),k=Z(),_=P(),I=N();A("utils");async function c(h){Promise.all([await g.fetchAbilities(),await g.fetchRole(h)]).then(()=>{I.openModal({title:f("settings.roles.edit_role"),componentName:"RolesModal",size:"lg",refreshData:p.loadData})})}async function D(h){e.openDialog({title:f("general.are_you_sure"),message:f("settings.roles.confirm_delete"),yesLabel:f("general.ok"),noLabel:f("general.cancel"),variant:"danger",hideNoButton:!1,size:"lg"}).then(async r=>{r&&await g.deleteRole(h).then(v=>{v.data&&p.loadData&&p.loadData()})})}return(h,r)=>{const v=d("BaseIcon"),y=d("BaseButton"),t=d("BaseDropdownItem"),a=d("BaseDropdown");return u(),R(a,null,{activator:n(()=>[o(k).name==="roles.view"?(u(),R(y,{key:0,variant:"primary"},{default:n(()=>[i(v,{name:"DotsHorizontalIcon",class:"h-5 text-white"})]),_:1})):(u(),R(v,{key:1,name:"DotsHorizontalIcon",class:"h-5 text-gray-500"}))]),default:n(()=>[o(_).currentUser.is_owner?(u(),R(t,{key:0,onClick:r[0]||(r[0]=l=>c(C.row.id))},{default:n(()=>[i(v,{name:"PencilIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),$(" "+b(h.$t("general.edit")),1)]),_:1})):M("",!0),o(_).currentUser.is_owner?(u(),R(t,{key:1,onClick:r[1]||(r[1]=l=>D(C.row.id))},{default:n(()=>[i(v,{name:"TrashIcon",class:"w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"}),$(" "+b(h.$t("general.delete")),1)]),_:1})):M("",!0)]),_:1})}}},ne={class:"flex justify-between w-full"},le=["onSubmit"],ie={class:"px-4 md:px-8 py-4 md:py-6"},re={class:"flex justify-between"},de={class:"text-sm not-italic font-medium text-primary-800 px-4 md:px-8 py-1.5"},ce=m("span",{class:"text-sm text-red-500"}," *",-1),ue={class:"text-sm not-italic font-medium text-gray-300 px-4 md:px-8 py-1.5"},me=$(" / "),pe={class:"border-t border-gray-200 py-3"},fe={class:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 px-8 sm:px-8"},be={class:"text-sm text-gray-500 border-b border-gray-200 pb-1 mb-2"},ge={key:0,class:"block mt-0.5 text-sm text-red-500"},_e={class:"z-0 flex justify-end p-4 border-t border-solid border--200 border-modal-bg"},ye={setup(C){const p=N(),e=V(),{t:f}=U();let g=z(!1),k=z(!1);const _=j(()=>p.active&&p.componentName==="RolesModal"),I=j(()=>({name:{required:O.withMessage(f("validation.required"),G),minLength:O.withMessage(f("validation.name_min_length",{count:3}),ee(3))},abilities:{required:O.withMessage(f("validation.at_least_one_ability"),G)}})),c=te(I,j(()=>e.currentRole));async function D(){if(c.value.$touch(),c.value.$invalid)return!0;try{const t=e.isEdit?e.updateRole:e.addRole;g.value=!0,await t(e.currentRole),g.value=!1,p.refreshData&&p.refreshData(),y()}catch{return g.value=!1,!0}}function h(t){var l,s;if(!e.currentRole.abilities.find(B=>B.ability===t.ability)&&((l=t==null?void 0:t.depends_on)==null?void 0:l.length)){v(t);return}(s=t==null?void 0:t.depends_on)==null||s.forEach(B=>{Object.keys(e.abilitiesList).forEach(L=>{e.abilitiesList[L].forEach(w=>{B===w.ability&&(w.disabled=!0,e.currentRole.abilities.find(x=>x.ability===B)||e.currentRole.abilities.push(w))})})})}function r(t){let a=[];Object.keys(e.abilitiesList).forEach(l=>{e.abilitiesList[l].forEach(s=>{(s==null?void 0:s.depends_on)&&(a=[...a,...s.depends_on])})}),Object.keys(e.abilitiesList).forEach(l=>{e.abilitiesList[l].forEach(s=>{a.includes(s.ability)&&(t?s.disabled=!0:s.disabled=!1),e.currentRole.abilities.push(s)})}),t||(e.currentRole.abilities=[])}function v(t){t.depends_on.forEach(a=>{Object.keys(e.abilitiesList).forEach(l=>{e.abilitiesList[l].forEach(s=>{let B=e.currentRole.abilities.find(L=>{var w;return(w=L.depends_on)==null?void 0:w.includes(s.ability)});a===s.ability&&!B&&(s.disabled=!1)})})})}function y(){p.closeModal(),setTimeout(()=>{e.currentRole={id:null,name:"",abilities:[]},Object.keys(e.abilitiesList).forEach(t=>{e.abilitiesList[t].forEach(a=>{a.disabled=!1})}),c.value.$reset()},300)}return(t,a)=>{const l=d("BaseIcon"),s=d("BaseInput"),B=d("BaseInputGroup"),L=d("BaseCheckbox"),w=d("BaseButton"),T=d("BaseModal");return u(),R(T,{show:o(_),onClose:y},{header:n(()=>[m("div",ne,[$(b(o(p).title)+" ",1),i(l,{name:"XIcon",class:"w-6 h-6 text-gray-500 cursor-pointer",onClick:y})])]),default:n(()=>[m("form",{onSubmit:se(D,["prevent"])},[m("div",ie,[i(B,{label:t.$t("settings.roles.name"),class:"mt-3",error:o(c).name.$error&&o(c).name.$errors[0].$message,required:"","content-loading":o(k)},{default:n(()=>[i(s,{modelValue:o(e).currentRole.name,"onUpdate:modelValue":a[0]||(a[0]=x=>o(e).currentRole.name=x),invalid:o(c).name.$error,type:"text","content-loading":o(k),onInput:a[1]||(a[1]=x=>o(c).name.$touch())},null,8,["modelValue","invalid","content-loading"])]),_:1},8,["label","error","content-loading"])]),m("div",re,[m("h6",de,[$(b(t.$tc("settings.roles.permission",2))+" ",1),ce]),m("div",ue,[m("a",{class:"cursor-pointer text-primary-400",onClick:a[2]||(a[2]=x=>r(!0))},b(t.$t("settings.roles.select_all")),1),me,m("a",{class:"cursor-pointer text-primary-400",onClick:a[3]||(a[3]=x=>r(!1))},b(t.$t("settings.roles.none")),1)])]),m("div",pe,[m("div",fe,[(u(!0),S(q,null,X(o(e).abilitiesList,(x,F)=>(u(),S("div",{key:F,class:"flex flex-col space-y-1"},[m("p",be,b(F),1),(u(!0),S(q,null,X(x,(E,K)=>(u(),S("div",{key:K,class:"flex"},[i(L,{modelValue:o(e).currentRole.abilities,"onUpdate:modelValue":[a[4]||(a[4]=H=>o(e).currentRole.abilities=H),H=>h(E)],"set-initial-value":!0,variant:"primary",disabled:E.disabled,label:E.name,value:E},null,8,["modelValue","disabled","label","value","onUpdate:modelValue"])]))),128))]))),128)),o(c).abilities.$error?(u(),S("span",ge,b(o(c).abilities.$errors[0].$message),1)):M("",!0)])]),m("div",_e,[i(w,{class:"mr-3 text-sm",variant:"primary-outline",type:"button",onClick:y},{default:n(()=>[$(b(t.$t("general.cancel")),1)]),_:1}),i(w,{loading:o(g),disabled:o(g),variant:"primary",type:"submit"},{left:n(x=>[i(l,{name:"SaveIcon",class:J(x.class)},null,8,["class"])]),default:n(()=>[$(" "+b(o(e).isEdit?t.$t("general.update"):t.$t("general.save")),1)]),_:1},8,["loading","disabled"])])],40,le)]),_:1},8,["show"])}}},Be={setup(C){const p=N(),e=V(),f=P(),g=Y(),{t:k}=U(),_=z(null),I=j(()=>[{key:"name",label:k("settings.roles.role_name"),thClass:"extra",tdClass:"font-medium text-gray-900"},{key:"created_at",label:k("settings.roles.added_on"),tdClass:"font-medium text-gray-900"},{key:"actions",label:"",tdClass:"text-right text-sm font-medium",sortable:!1}]);async function c({page:r,filter:v,sort:y}){let t={orderByField:y.fieldName||"created_at",orderBy:y.order||"desc",company_id:g.selectedCompany.id};return{data:(await e.fetchRoles(t)).data.data}}async function D(){_.value&&_.value.refresh()}async function h(){await e.fetchAbilities(),p.openModal({title:k("settings.roles.add_role"),componentName:"RolesModal",size:"lg",refreshData:_.value&&_.value.refresh})}return(r,v)=>{const y=d("BaseIcon"),t=d("BaseButton"),a=d("BaseTable"),l=d("BaseSettingCard");return u(),S(q,null,[i(ye),i(l,{title:r.$t("settings.roles.title"),description:r.$t("settings.roles.description")},ae({default:n(()=>[i(a,{ref:(s,B)=>{B.table=s,_.value=s},data:c,columns:o(I),class:"mt-14"},{"cell-created_at":n(({row:s})=>[$(b(s.data.formatted_created_at),1)]),"cell-actions":n(({row:s})=>[o(f).currentUser.is_owner&&s.data.name!=="super admin"?(u(),R(oe,{key:0,row:s.data,table:_.value,"load-data":D},null,8,["row","table"])):M("",!0)]),_:1},8,["columns"])]),_:2},[o(f).currentUser.is_owner?{name:"action",fn:n(()=>[i(t,{variant:"primary-outline",onClick:h},{left:n(s=>[i(y,{name:"PlusIcon",class:J(s.class)},null,8,["class"])]),default:n(()=>[$(" "+b(r.$t("settings.roles.add_new_role")),1)]),_:1})])}:void 0]),1032,["title","description"])],64)}}};export{Be as default};
|