@tachybase/plugin-department 1.3.16 → 1.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.js +3 -3
- package/dist/externalVersion.js +7 -7
- package/dist/index.js +4 -4
- package/package.json +9 -9
package/dist/client/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
(function(P,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("@tachybase/schema"),require("react"),require("antd"),require("@ant-design/icons"),require("@tachybase/module-acl/client")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","react/jsx-runtime","@tachybase/schema","react","antd","@ant-design/icons","@tachybase/module-acl/client"],n):(P=typeof globalThis!="undefined"?globalThis:P||self,n(P["@tachybase/plugin-department"]={},P["@tachybase/client"],P.jsxRuntime,P["@tachybase/schema"],P.react,P.antd,P["@ant-design/icons"],P["@tachybase/module-acl"]))})(this,function(P,n,s,w,d,A,z,U){"use strict";var St=Object.defineProperty,wt=Object.defineProperties;var Ft=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var Pt=Object.prototype.hasOwnProperty,Tt=Object.prototype.propertyIsEnumerable;var de=(P,n,s)=>n in P?St(P,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):P[n]=s,f=(P,n)=>{for(var s in n||(n={}))Pt.call(n,s)&&de(P,s,n[s]);if(le)for(var s of le(n))Tt.call(n,s)&&de(P,s,n[s]);return P},S=(P,n)=>wt(P,Ft(n));var I=(P,n,s)=>new Promise((w,d)=>{var A=B=>{try{U(s.next(B))}catch(K){d(K)}},z=B=>{try{U(s.throw(B))}catch(K){d(K)}},U=B=>B.done?w(B.value):Promise.resolve(B.value).then(A,z);U((s=s.apply(P,n)).next())});const B="department",K=()=>{const{i18n:e}=n.useApp();return{t:(o,r={})=>e.t(o,f({ns:B},r))}},L=e=>n.tval(e,{ns:B}),H=w.connect(()=>{const{t:e}=K();return s.jsx("div",{style:{color:"#ccc"},children:e("This field is currently not supported for use in form blocks.")})},w.mapReadPretty(n.AssociationField.ReadPretty)),oe=d.createContext({user:{},department:{},setShowChildren:()=>{}}),ue=oe.Provider;function V(){return d.useContext(oe)}const me=({children:e})=>{const[t,o]=d.useState(null),[r,a]=d.useState(null),[c,p]=d.useState(!1),i=n.useRequest({resource:"users",action:"list",params:{appends:["departments","departments.parent(recursively=true)","mainDepartment","mainDepartment.parent(recursively=true)"],filter:r?{"departments.id":r.id,showChildren:c}:{},pageSize:50}},{manual:!0,refreshDeps:[r]}),u=n.useRequest({resource:"departments",action:"list",params:{pagination:!1,filter:{parentId:null}}}),l={user:t,setUser:o,department:r,setDepartment:a,showChildren:c,setShowChildren:p,usersResource:{service:i},departmentsResource:{service:u}};return s.jsx(ue,{value:l,children:e})},J=()=>{var a,c;const e=n.useCollection(),t=n.useFilterFieldOptions(e.fields),o=n.useResourceActionContext();return n.useFilterFieldProps({options:t,params:((c=(a=o.state)==null?void 0:a.params)==null?void 0:c[0])||o.params,service:o})},xe=e=>{const{label:t}=e||{},[o,r]=d.useState([]),[a,c]=d.useState({}),[p,i]=d.useState([]),[u,l]=d.useState([]),y=d.useCallback(C=>{const v={},x=D=>{let k=D?f({},D):null;for(;k;){const O=k.parentId||"root";v[0]?v[O].childrenMap[k.id]=k:v[O]=S(f({},k.parent||{id:O}),{childrenMap:{[k.id]:k}}),k=k.parent}},m=D=>{const k={};D.children&&D.children.length&&D.children.forEach(O=>{k[O.id]=O,m(O)}),v[D.id]=S(f({},D),{childrenMap:k})};return C&&C.length&&C.forEach(D=>{x(D),m(D)}),v},[]),g=d.useCallback(C=>{const v=x=>{var m;return!C[x]||C[x].isLeaf?null:Object.values(((m=C[x])==null?void 0:m.childrenMap)||{}).map(D=>S(f({},D),{title:t?d.createElement(t,{node:D}):D.title,children:v(D.id)}))};return v("root")},[]),h=d.useCallback(C=>{const v=y(C);c(v);const x=g(v)||[];r(x)},[r,y,g]),b=(C,v)=>{const x=y(v),m=f(f({},x),a);return v.forEach(D=>{m[C].childrenMap[D.id]=D}),c(m),g(m)},F=d.useCallback(C=>{if(!a[C])return[];const v=[];return v.push(...Object.keys(a[C].childrenMap).map(x=>Number(x))),Object.keys(a[C].childrenMap).forEach(x=>{v.push(...F(x))}),v},[a]);return{initData:h,treeData:o,setTreeData:r,nodeMap:a,updateTreeData:b,constructTreeData:g,getChildrenIds:F,loadedKeys:u,setLoadedKeys:l,expandedKeys:p,setExpandedKeys:i}},_=e=>{const{resource:t="departments",resourceOf:o,params:r={}}=e||{},a=n.useAPIClient().resource(t,o),c=xe(e),{setTreeData:p,updateTreeData:i,initData:u}=c,l=b=>I(this,[b],function*({key:g,children:h}){var C;if(h!=null&&h.length)return;const{data:F}=yield a.list(S(f({},r),{pagination:!1,appends:["parent(recursively=true)"],filter:{parentId:g}}));(C=F==null?void 0:F.data)!=null&&C.length&&p(i(g,F==null?void 0:F.data))}),y=g=>I(this,null,function*(){const{data:h}=yield a.list(S(f({},r),{pagination:!1,filter:{title:{$includes:g}},appends:["parent(recursively=true)"],pageSize:100}));u(h==null?void 0:h.data)});return S(f({},c),{loadData:l,getByKeyword:y})},j=e=>{const t=e.title,o=e.parent;return o?j(o)+"/"+t:t},ne=e=>{const t=w.useField(),[o,r]=d.useState({label:null,value:null}),{treeData:a,initData:c,getByKeyword:p,loadData:i,loadedKeys:u,setLoadedKeys:l,originData:y}=e,g=h=>I(this,null,function*(){if(!h){c(y);return}yield p(h)});return d.useEffect(()=>{c(y)},[y,c]),d.useEffect(()=>{if(!t.value){r({label:null,value:null});return}r({label:j(t.value)||t.value.label,value:t.value.id})},[t.value]),s.jsx(A.TreeSelect,{value:o,onSelect:(h,b)=>{t.setValue(b)},onChange:h=>{h||t.setValue(null)},treeData:a,treeLoadedKeys:u,onTreeLoad:h=>l(h),loadData:h=>i({key:h.id,children:h.children}),fieldNames:{value:"id"},showSearch:!0,allowClear:!0,treeNodeFilterProp:"title",onSearch:g,labelInValue:!0})},ye=()=>{const e=_(),{departmentsResource:t}=V(),{service:o}=t||{},{data:r}=o||{};return s.jsx(ne,S(f({},e),{originData:r==null?void 0:r.data}))},he=()=>{const e=_(),{setTreeData:t,getChildrenIds:o}=e,r=n.useRecord(),{departmentsResource:a}=V(),{service:{data:c}}=a||{};return d.useEffect(()=>{if(!r.id)return;const p=o(r.id);p.push(r.id),t(i=>{const u=l=>l.map(y=>(p.includes(y.id)&&(y.disabled=!0),y.children&&(y.children=u(y.children)),y));return u(i)})},[t,r.id,o]),s.jsx(ne,f({},S(f({},e),{originData:c==null?void 0:c.data})))},re=d.createContext({}),fe=re.Provider;function W(){return d.useContext(re)}const ve=()=>({type:"void",properties:{newDepartment:{type:"void",title:L("New department"),"x-component":"Action","x-component-props":{type:"text",icon:"PlusOutlined",style:{width:"100%",textAlign:"left"}},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form",title:L("New department"),properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem",required:!0},parent:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.parent","x-component-props":{component:"DepartmentSelect"}},roles:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.roles"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useCreateDepartment }}"}}}}}}}}}}),ge=()=>{const e=ve();return s.jsx(n.SchemaComponent,{schema:e})},De=e=>{const{field:t,record:o,children:r}=e;return s.jsx(n.ResourceActionProvider,{collection:"users",request:{resource:`departments/${o.id}/members`,action:"list",params:{filter:t.value.length?{id:{$notIn:t.value.map(a=>a.id)}}:{}}},children:r})},Ce={type:"void",properties:{drawer:{title:'{{t("Select Owners")}}',"x-component":"Action.Drawer",properties:{resource:{type:"void","x-decorator":"FormItem","x-component":"RequestProvider",properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{username:{$includes:""}},{nickname:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"}}},table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox",onChange:"{{ handleSelect }}"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{username:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{username:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},nickname:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{nickname:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},phone:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{phone:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},email:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{email:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},confirm:{title:'{{t("Confirm")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useSelectOwners }}"}}}}}}}},be=e=>{const{record:t,field:o,handleSelect:r,useSelectOwners:a}=e,c=({children:p})=>s.jsx(De,{field:o,record:t,children:p});return s.jsx(n.SchemaComponent,{schema:Ce,components:{RequestProvider:c},scope:{department:t,handleSelect:r,useSelectOwners:a}})},Ae=()=>{const[e,t]=d.useState(!1),o=n.useRecord(),r=w.useField(),[a,c]=d.useState([]),p=d.useRef([]),i=(l,y)=>{p.current=y},u=()=>{const{setVisible:l}=n.useActionContext();return{run(){const y=r.value||[];r.setValue([...y,...p.current]),p.current=[],l(!1)}}};return d.useEffect(()=>{if(r.value){const l=r.value.map(y=>({value:y.id,label:y.nickname||y.username}));c(l)}},[r.value]),s.jsxs(n.ActionContextProvider,{value:{visible:e,setVisible:t},children:[s.jsx(A.Select,{open:!1,mode:"multiple",value:a,labelInValue:!0,onChange:l=>{if(l){const y=l.map(({label:g,value:h})=>({id:h,nickname:g}));r.setValue(y)}else{r.setValue([]);return}},onDropdownVisibleChange:l=>t(l)}),s.jsx(be,{record:o,field:r,handleSelect:i,useSelectOwners:u})]})},Se=n.createStyles(({css:e})=>({searchDropdown:e`
|
|
1
|
+
(function(P,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("@tachybase/schema"),require("react"),require("antd"),require("@ant-design/icons"),require("@tachybase/module-acl/client")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","react/jsx-runtime","@tachybase/schema","react","antd","@ant-design/icons","@tachybase/module-acl/client"],n):(P=typeof globalThis!="undefined"?globalThis:P||self,n(P["@tachybase/plugin-department"]={},P["@tachybase/client"],P.jsxRuntime,P["@tachybase/schema"],P.react,P.antd,P["@ant-design/icons"],P["@tachybase/module-acl"]))})(this,function(P,n,s,w,d,A,z,U){"use strict";var St=Object.defineProperty,wt=Object.defineProperties;var Ft=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var Pt=Object.prototype.hasOwnProperty,Tt=Object.prototype.propertyIsEnumerable;var de=(P,n,s)=>n in P?St(P,n,{enumerable:!0,configurable:!0,writable:!0,value:s}):P[n]=s,f=(P,n)=>{for(var s in n||(n={}))Pt.call(n,s)&&de(P,s,n[s]);if(le)for(var s of le(n))Tt.call(n,s)&&de(P,s,n[s]);return P},S=(P,n)=>wt(P,Ft(n));var I=(P,n,s)=>new Promise((w,d)=>{var A=B=>{try{U(s.next(B))}catch(K){d(K)}},z=B=>{try{U(s.throw(B))}catch(K){d(K)}},U=B=>B.done?w(B.value):Promise.resolve(B.value).then(A,z);U((s=s.apply(P,n)).next())});const B="department",K=()=>{const{i18n:e}=n.useApp();return{t:(o,r={})=>e.t(o,f({ns:B},r))}},L=e=>n.tval(e,{ns:B}),H=w.connect(()=>{const{t:e}=K();return s.jsx("div",{style:{color:"#ccc"},children:e("This field is currently not supported for use in form blocks.")})},w.mapReadPretty(n.AssociationField.ReadPretty)),oe=d.createContext({user:{},department:{},setShowChildren:()=>{}}),ue=oe.Provider;function V(){return d.useContext(oe)}const me=({children:e})=>{const[t,o]=d.useState(null),[r,a]=d.useState(null),[c,p]=d.useState(!1),i=n.useRequest({resource:"users",action:"list",params:{appends:["departments","departments.parent(recursively=true)","mainDepartment","mainDepartment.parent(recursively=true)"],filter:r?{"departments.id":r.id,showChildren:c}:{},pageSize:50}},{manual:!0,refreshDeps:[r]}),u=n.useRequest({resource:"departments",action:"list",params:{pagination:!1,filter:{parentId:null}}}),l={user:t,setUser:o,department:r,setDepartment:a,showChildren:c,setShowChildren:p,usersResource:{service:i},departmentsResource:{service:u}};return s.jsx(ue,{value:l,children:e})},J=()=>{var a,c;const e=n.useCollection(),t=n.useFilterFieldOptions(e.fields),o=n.useResourceActionContext();return n.useFilterFieldProps({options:t,params:((c=(a=o.state)==null?void 0:a.params)==null?void 0:c[0])||o.params,service:o})},xe=e=>{const{label:t}=e||{},[o,r]=d.useState([]),[a,c]=d.useState({}),[p,i]=d.useState([]),[u,l]=d.useState([]),y=d.useCallback(C=>{const v={},x=D=>{let k=D?f({},D):null;for(;k;){const O=k.parentId||"root";v[0]?v[O].childrenMap[k.id]=k:v[O]=S(f({},k.parent||{id:O}),{childrenMap:{[k.id]:k}}),k=k.parent}},m=D=>{const k={};D.children&&D.children.length&&D.children.forEach(O=>{k[O.id]=O,m(O)}),v[D.id]=S(f({},D),{childrenMap:k})};return C&&C.length&&C.forEach(D=>{x(D),m(D)}),v},[]),g=d.useCallback(C=>{const v=x=>{var m;return!C[x]||C[x].isLeaf?null:Object.values(((m=C[x])==null?void 0:m.childrenMap)||{}).map(D=>S(f({},D),{title:t?d.createElement(t,{node:D}):D.title,children:v(D.id)}))};return v("root")},[]),h=d.useCallback(C=>{const v=y(C);c(v);const x=g(v)||[];r(x)},[r,y,g]),b=(C,v)=>{const x=y(v),m=f(f({},x),a);return v.forEach(D=>{m[C].childrenMap[D.id]=D}),c(m),g(m)},F=d.useCallback(C=>{if(!a[C])return[];const v=[];return v.push(...Object.keys(a[C].childrenMap).map(x=>Number(x))),Object.keys(a[C].childrenMap).forEach(x=>{v.push(...F(x))}),v},[a]);return{initData:h,treeData:o,setTreeData:r,nodeMap:a,updateTreeData:b,constructTreeData:g,getChildrenIds:F,loadedKeys:u,setLoadedKeys:l,expandedKeys:p,setExpandedKeys:i}},_=e=>{const{resource:t="departments",resourceOf:o,params:r={}}=e||{},a=n.useAPIClient().resource(t,o),c=xe(e),{setTreeData:p,updateTreeData:i,initData:u}=c,l=b=>I(null,[b],function*({key:g,children:h}){var C;if(h!=null&&h.length)return;const{data:F}=yield a.list(S(f({},r),{pagination:!1,appends:["parent(recursively=true)"],filter:{parentId:g}}));(C=F==null?void 0:F.data)!=null&&C.length&&p(i(g,F==null?void 0:F.data))}),y=g=>I(null,null,function*(){const{data:h}=yield a.list(S(f({},r),{pagination:!1,filter:{title:{$includes:g}},appends:["parent(recursively=true)"],pageSize:100}));u(h==null?void 0:h.data)});return S(f({},c),{loadData:l,getByKeyword:y})},j=e=>{const t=e.title,o=e.parent;return o?j(o)+"/"+t:t},ne=e=>{const t=w.useField(),[o,r]=d.useState({label:null,value:null}),{treeData:a,initData:c,getByKeyword:p,loadData:i,loadedKeys:u,setLoadedKeys:l,originData:y}=e,g=h=>I(null,null,function*(){if(!h){c(y);return}yield p(h)});return d.useEffect(()=>{c(y)},[y,c]),d.useEffect(()=>{if(!t.value){r({label:null,value:null});return}r({label:j(t.value)||t.value.label,value:t.value.id})},[t.value]),s.jsx(A.TreeSelect,{value:o,onSelect:(h,b)=>{t.setValue(b)},onChange:h=>{h||t.setValue(null)},treeData:a,treeLoadedKeys:u,onTreeLoad:h=>l(h),loadData:h=>i({key:h.id,children:h.children}),fieldNames:{value:"id"},showSearch:!0,allowClear:!0,treeNodeFilterProp:"title",onSearch:g,labelInValue:!0})},ye=()=>{const e=_(),{departmentsResource:t}=V(),{service:o}=t||{},{data:r}=o||{};return s.jsx(ne,S(f({},e),{originData:r==null?void 0:r.data}))},he=()=>{const e=_(),{setTreeData:t,getChildrenIds:o}=e,r=n.useRecord(),{departmentsResource:a}=V(),{service:{data:c}}=a||{};return d.useEffect(()=>{if(!r.id)return;const p=o(r.id);p.push(r.id),t(i=>{const u=l=>l.map(y=>(p.includes(y.id)&&(y.disabled=!0),y.children&&(y.children=u(y.children)),y));return u(i)})},[t,r.id,o]),s.jsx(ne,f({},S(f({},e),{originData:c==null?void 0:c.data})))},re=d.createContext({}),fe=re.Provider;function W(){return d.useContext(re)}const ve=()=>({type:"void",properties:{newDepartment:{type:"void",title:L("New department"),"x-component":"Action","x-component-props":{type:"text",icon:"PlusOutlined",style:{width:"100%",textAlign:"left"}},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form",title:L("New department"),properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem",required:!0},parent:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.parent","x-component-props":{component:"DepartmentSelect"}},roles:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.roles"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useCreateDepartment }}"}}}}}}}}}}),ge=()=>{const e=ve();return s.jsx(n.SchemaComponent,{schema:e})},De=e=>{const{field:t,record:o,children:r}=e;return s.jsx(n.ResourceActionProvider,{collection:"users",request:{resource:`departments/${o.id}/members`,action:"list",params:{filter:t.value.length?{id:{$notIn:t.value.map(a=>a.id)}}:{}}},children:r})},Ce={type:"void",properties:{drawer:{title:'{{t("Select Owners")}}',"x-component":"Action.Drawer",properties:{resource:{type:"void","x-decorator":"FormItem","x-component":"RequestProvider",properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{username:{$includes:""}},{nickname:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"}}},table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox",onChange:"{{ handleSelect }}"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{username:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{username:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},nickname:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{nickname:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},phone:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{phone:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},email:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{email:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},confirm:{title:'{{t("Confirm")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useSelectOwners }}"}}}}}}}},be=e=>{const{record:t,field:o,handleSelect:r,useSelectOwners:a}=e,c=({children:p})=>s.jsx(De,{field:o,record:t,children:p});return s.jsx(n.SchemaComponent,{schema:Ce,components:{RequestProvider:c},scope:{department:t,handleSelect:r,useSelectOwners:a}})},Ae=()=>{const[e,t]=d.useState(!1),o=n.useRecord(),r=w.useField(),[a,c]=d.useState([]),p=d.useRef([]),i=(l,y)=>{p.current=y},u=()=>{const{setVisible:l}=n.useActionContext();return{run(){const y=r.value||[];r.setValue([...y,...p.current]),p.current=[],l(!1)}}};return d.useEffect(()=>{if(r.value){const l=r.value.map(y=>({value:y.id,label:y.nickname||y.username}));c(l)}},[r.value]),s.jsxs(n.ActionContextProvider,{value:{visible:e,setVisible:t},children:[s.jsx(A.Select,{open:!1,mode:"multiple",value:a,labelInValue:!0,onChange:l=>{if(l){const y=l.map(({label:g,value:h})=>({id:h,nickname:g}));r.setValue(y)}else{r.setValue([]);return}},onDropdownVisibleChange:l=>t(l)}),s.jsx(be,{record:o,field:r,handleSelect:i,useSelectOwners:u})]})},Se=n.createStyles(({css:e})=>({searchDropdown:e`
|
|
2
2
|
.ant-dropdown-menu {
|
|
3
3
|
max-height: 500px;
|
|
4
4
|
overflow-y: scroll;
|
|
5
5
|
}
|
|
6
|
-
`})),we=()=>{const{t:e}=K(),{token:t}=A.theme.useToken(),{styles:o}=Se(),r=10,a=n.useAPIClient(),{setDepartment:c,setUser:p}=V(),[i,u]=d.useState(!1),[l,y]=d.useState(""),[g,h]=d.useState([]),[b,F]=d.useState([]),[C,v]=d.useState(!0),[x,m]=d.useState(!0),D=n.useRequest(T=>a.resource("departments").aggregateSearch(T).then(M=>{var $;return($=M==null?void 0:M.data)==null?void 0:$.data}),{manual:!0,onSuccess:(T,M)=>{const{values:$}=M[0]||{},{type:G}=$||{};T&&((!G||G==="user"&&T.users.length<r)&&v(!1),(!G||G==="department"&&T.departments.length<r)&&m(!1),h(te=>[...te,...T.users]),F(te=>[...te,...T.departments]))}}),{run:k}=D,O=T=>{y(T),h([]),F([]),v(!0),m(!0),T&&(k({values:{keyword:T,limit:r}}),u(!0))},E=T=>{T.target.value||(p(null),y(""),u(!1),D.mutate({}),h([]),F([]))},q=T=>{const M=T.title,$=T.parent;return $?q($)+" / "+M:M},N=T=>s.jsx(A.Button,{type:"link",style:{padding:"0 8px"},onClick:M=>{u(!0),k({values:f({keyword:l,limit:r},T)})},children:e("Load more")}),ee=()=>{const T=[];return!g.length&&!b.length?[{key:"0",label:s.jsx(A.Empty,{description:e("No results"),image:A.Empty.PRESENTED_IMAGE_SIMPLE}),disabled:!0}]:(g.length&&(T.push({key:"0",type:"group",label:e("Users"),children:g.map(M=>({key:M.username,label:s.jsxs("div",{onClick:()=>{},children:[s.jsx("div",{children:M.nickname||M.username}),",",s.jsx("div",{style:{fontSize:t.fontSizeSM,color:t.colorTextDescription},children:`${M.username}${M.phone?" | "+M.phone:""}${M.email?" | "+M.email:""}`})]})}))}),C&&T.push({type:"group",key:"0-loadMore",label:s.jsx(N,{type:"user",last:g[g.length-1].id})})),b.length&&(T.push({key:"1",type:"group",label:e("Departments"),children:b.map(M=>({key:M.id,label:s.jsx("div",{onClick:()=>{c(M)},children:q(M)})}))}),x&&T.push({type:"group",key:"1-loadMore",label:s.jsx(N,{type:"department",last:b[b.length-1].id})})),T)};return s.jsx(A.Dropdown,{menu:{items:ee()},overlayClassName:o.searchDropdown,trigger:["click"],open:i,onOpenChange:T=>u(T),children:s.jsx(A.Input.Search,{allowClear:!0,onClick:()=>{l||u(!1)},onFocus:()=>c(null),onSearch:O,onChange:E,placeholder:e("Search for departments, users"),style:{marginBottom:"20px"}})})},Fe={type:"object",properties:{[w.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(e){const t=n.useAPIClient(),o=n.useActionContext(),r=n.useRecord(),a=n.useRequest(()=>t.resource("departments").get({filterByTk:r.id,appends:["parent(recursively=true)","roles","owners"]}).then(c=>c==null?void 0:c.data),S(f({},e),{manual:!0}));return d.useEffect(()=>{o.visible&&a.run()},[o.visible]),a}},title:'{{t("Edit department")}}',properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},parent:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.parent","x-component-props":{component:"SuperiorDepartmentSelect"}},roles:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.roles"},owners:{title:'{{t("Owners")}}',"x-component":"DepartmentOwnersField","x-decorator":"FormItem"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useUpdateDepartment }}"}}}}}}}},Pe={type:"object",properties:{[w.uid()]:{title:'{{t("New sub department")}}',type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(e){const t=n.useActionContext(),o=n.useRecord();return n.useRequest(()=>Promise.resolve({data:{parent:f({},o)}}),S(f({},e),{refreshDeps:[t.visible]}))}},properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},parent:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.parent","x-component-props":{component:"DepartmentSelect"}},roles:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.roles"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useCreateDepartment }}"}}}}}}}},Q=()=>{const{data:e,loading:t}=n.useResourceActionContext(),{department:o,setDepartment:r,setUser:a}=V(),{treeData:c,nodeMap:p,loadData:i,loadedKeys:u,setLoadedKeys:l,initData:y,expandedKeys:g,setExpandedKeys:h}=W(),b=v=>I(
|
|
6
|
+
`})),we=()=>{const{t:e}=K(),{token:t}=A.theme.useToken(),{styles:o}=Se(),r=10,a=n.useAPIClient(),{setDepartment:c,setUser:p}=V(),[i,u]=d.useState(!1),[l,y]=d.useState(""),[g,h]=d.useState([]),[b,F]=d.useState([]),[C,v]=d.useState(!0),[x,m]=d.useState(!0),D=n.useRequest(T=>a.resource("departments").aggregateSearch(T).then(M=>{var $;return($=M==null?void 0:M.data)==null?void 0:$.data}),{manual:!0,onSuccess:(T,M)=>{const{values:$}=M[0]||{},{type:G}=$||{};T&&((!G||G==="user"&&T.users.length<r)&&v(!1),(!G||G==="department"&&T.departments.length<r)&&m(!1),h(te=>[...te,...T.users]),F(te=>[...te,...T.departments]))}}),{run:k}=D,O=T=>{y(T),h([]),F([]),v(!0),m(!0),T&&(k({values:{keyword:T,limit:r}}),u(!0))},E=T=>{T.target.value||(p(null),y(""),u(!1),D.mutate({}),h([]),F([]))},q=T=>{const M=T.title,$=T.parent;return $?q($)+" / "+M:M},N=T=>s.jsx(A.Button,{type:"link",style:{padding:"0 8px"},onClick:M=>{u(!0),k({values:f({keyword:l,limit:r},T)})},children:e("Load more")}),ee=()=>{const T=[];return!g.length&&!b.length?[{key:"0",label:s.jsx(A.Empty,{description:e("No results"),image:A.Empty.PRESENTED_IMAGE_SIMPLE}),disabled:!0}]:(g.length&&(T.push({key:"0",type:"group",label:e("Users"),children:g.map(M=>({key:M.username,label:s.jsxs("div",{onClick:()=>{},children:[s.jsx("div",{children:M.nickname||M.username}),",",s.jsx("div",{style:{fontSize:t.fontSizeSM,color:t.colorTextDescription},children:`${M.username}${M.phone?" | "+M.phone:""}${M.email?" | "+M.email:""}`})]})}))}),C&&T.push({type:"group",key:"0-loadMore",label:s.jsx(N,{type:"user",last:g[g.length-1].id})})),b.length&&(T.push({key:"1",type:"group",label:e("Departments"),children:b.map(M=>({key:M.id,label:s.jsx("div",{onClick:()=>{c(M)},children:q(M)})}))}),x&&T.push({type:"group",key:"1-loadMore",label:s.jsx(N,{type:"department",last:b[b.length-1].id})})),T)};return s.jsx(A.Dropdown,{menu:{items:ee()},overlayClassName:o.searchDropdown,trigger:["click"],open:i,onOpenChange:T=>u(T),children:s.jsx(A.Input.Search,{allowClear:!0,onClick:()=>{l||u(!1)},onFocus:()=>c(null),onSearch:O,onChange:E,placeholder:e("Search for departments, users"),style:{marginBottom:"20px"}})})},Fe={type:"object",properties:{[w.uid()]:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(e){const t=n.useAPIClient(),o=n.useActionContext(),r=n.useRecord(),a=n.useRequest(()=>t.resource("departments").get({filterByTk:r.id,appends:["parent(recursively=true)","roles","owners"]}).then(c=>c==null?void 0:c.data),S(f({},e),{manual:!0}));return d.useEffect(()=>{o.visible&&a.run()},[o.visible]),a}},title:'{{t("Edit department")}}',properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},parent:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.parent","x-component-props":{component:"SuperiorDepartmentSelect"}},roles:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.roles"},owners:{title:'{{t("Owners")}}',"x-component":"DepartmentOwnersField","x-decorator":"FormItem"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useUpdateDepartment }}"}}}}}}}},Pe={type:"object",properties:{[w.uid()]:{title:'{{t("New sub department")}}',type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues(e){const t=n.useActionContext(),o=n.useRecord();return n.useRequest(()=>Promise.resolve({data:{parent:f({},o)}}),S(f({},e),{refreshDeps:[t.visible]}))}},properties:{title:{"x-component":"CollectionField","x-decorator":"FormItem"},parent:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.parent","x-component-props":{component:"DepartmentSelect"}},roles:{"x-component":"CollectionField","x-decorator":"FormItem","x-collection-field":"departments.roles"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useCreateDepartment }}"}}}}}}}},Q=()=>{const{data:e,loading:t}=n.useResourceActionContext(),{department:o,setDepartment:r,setUser:a}=V(),{treeData:c,nodeMap:p,loadData:i,loadedKeys:u,setLoadedKeys:l,initData:y,expandedKeys:g,setExpandedKeys:h}=W(),b=v=>I(null,null,function*(){if(!v.length)return;const x=p[v[0]];r(x),a(null)}),F=v=>{h(v)},C=v=>{l(v)};return d.useEffect(()=>{y(e==null?void 0:e.data)},[e,y,t]),d.useEffect(()=>{if(!o)return;const v=m=>m.parent?[m.parent.id,...v(m.parent)]:[],x=v(o);h(m=>Array.from(new Set([...m,...x])))},[o,h]),s.jsx("div",{className:n.css`
|
|
7
7
|
height: 57vh;
|
|
8
8
|
overflow: auto;
|
|
9
9
|
.ant-tree-node-content-wrapper {
|
|
10
10
|
overflow: hidden;
|
|
11
11
|
}
|
|
12
|
-
`,children:c!=null&&c.length?s.jsx(A.Tree.DirectoryTree,{loadData:i,treeData:c,loadedKeys:u,onSelect:b,selectedKeys:[o==null?void 0:o.id],onExpand:F,onLoad:C,expandedKeys:g,expandAction:!1,showIcon:!1,fieldNames:{key:"id"}}):s.jsx(A.Empty,{image:A.Empty.PRESENTED_IMAGE_SIMPLE})})},Te=({node:e,setVisible:t,setDrawer:o})=>{const{t:r}=K(),{refreshAsync:a}=n.useResourceActionContext(),{setLoadedKeys:c,expandedKeys:p,setExpandedKeys:i}=W(),{modal:u,message:l}=A.App.useApp(),y=n.useAPIClient(),g=()=>{u.confirm({title:r("Delete department"),content:r("Are you sure you want to delete it?"),onOk:()=>I(this,null,function*(){yield y.resource("departments").destroy({filterByTk:e.id}),l.success(r("Deleted successfully")),i(C=>C.filter(v=>v!==e.id));const F=[...p];c([]),i([]),yield a(),i(F)})})},h=F=>{o({schema:F,node:e}),t(!0)},b=({key:F,domeEvent:C})=>{switch(C==null||C.stopPropagation(),F){case"new-sub":h(Pe);break;case"edit":h(Fe);break;case"delete":g()}};return s.jsxs("div",{style:{display:"flex",justifyContent:"space-between",overflow:"hidden"},children:[s.jsx("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.title}),s.jsx(A.Dropdown,{menu:{items:[{label:r("New sub department"),key:"new-sub"},{label:r("Edit department"),key:"edit"},{label:r("Delete department"),key:"delete"}],onClick:b},children:s.jsx("div",{style:{marginLeft:"15px"},children:s.jsx(z.MoreOutlined,{})})})]})};Q.Item=Te;const Ie=()=>{const e=w.useForm(),t=w.useField(),{setVisible:o}=n.useActionContext(),{refreshAsync:r}=n.useResourceActionContext(),a=n.useAPIClient(),{expandedKeys:c,setLoadedKeys:p,setExpandedKeys:i}=W();return{run(){return I(this,null,function*(){try{yield e.submit(),t.data=t.data||{},t.data.loading=!0,yield a.resource("departments").create({values:e.values}),o(!1),yield e.reset(),t.data.loading=!1;const l=[...c];p([]),i([]),yield r(),i(l)}catch(l){t.data&&(t.data.loading=!1)}})}}},ke=()=>{const e=w.useField(),t=w.useForm(),{setVisible:o}=n.useActionContext(),{refreshAsync:r}=n.useResourceActionContext(),a=n.useAPIClient(),{id:c}=n.useRecord(),{expandedKeys:p,setLoadedKeys:i,setExpandedKeys:u}=W(),{department:l,setDepartment:y}=V();return{run(){return I(this,null,function*(){yield t.submit(),e.data=e.data||{},e.data.loading=!0;try{yield a.resource("departments").update({filterByTk:c,values:t.values}),y(f({department:l},t.values)),o(!1),yield t.reset();const h=[...p];i([]),u([]),yield r(),u(h)}catch(h){console.log(h)}finally{e.data.loading=!1}})}}},Me=()=>{const{t:e}=K(),[t,o]=d.useState(!1),[r,a]=d.useState({}),{department:c,setDepartment:p}=V(),{token:i}=A.theme.useToken(),l=_({label:({node:g})=>s.jsx(Q.Item,{node:g,setVisible:o,setDrawer:a})}),y=r.schema||{};return s.jsx(n.SchemaComponentOptions,{scope:{useCreateDepartment:Ie,useUpdateDepartment:ke},children:s.jsxs(fe,{value:l,children:[s.jsxs(A.Row,{children:[s.jsx(we,{}),s.jsx(A.Button,{type:"text",icon:s.jsx(z.UserOutlined,{}),style:{textAlign:"left",marginBottom:"5px",background:c?"":i.colorBgTextHover},onClick:()=>{p(null)},block:!0,children:e("All users")}),s.jsx(ge,{})]}),s.jsx(A.Divider,{style:{margin:"12px 0"}}),s.jsx(Q,{}),s.jsx(n.ActionContextProvider,{value:{visible:t,setVisible:o},children:s.jsx(n.RecordProvider,{record:r.node||{},children:s.jsx(n.SchemaComponent,{schema:y,components:{DepartmentOwnersField:Ae}})})})]})})},Ke={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form",title:'{{t("Add members")}}',properties:{resource:{type:"void","x-decorator":"FormItem","x-component":"ResourceActionProvider","x-component-props":{collection:"users",request:{resource:"users",action:"listExcludeDept",params:{departmentId:"{{ department?.id }}"}}},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{username:{$includes:""}},{nickname:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"}}},table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox",onChange:"{{ handleSelect }}"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{username:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{username:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},nickname:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{nickname:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},phone:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{phone:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},email:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{email:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useAddMembersAction }}"}}}}}}}};function Oe(){const{department:e}=V(),{refresh:t}=n.useResourceActionContext(),o=d.useRef([]),r=n.useAPIClient();return{department:e,useAddMembersAction:()=>({run(){return I(this,null,function*(){const i=o.current;i!=null&&i.length&&(yield r.resource("departments.members",e.id).add({values:i}),o.current=[],t())})}}),handleSelect:p=>{o.current=p}}}const Ee=()=>{const{department:e,useAddMembersAction:t,handleSelect:o}=Oe();return s.jsx(n.SchemaComponent,{schema:Ke,scope:{useAddMembersAction:t,department:e,handleSelect:o}})},Ve=()=>{const{setDepartment:e}=V(),o=w.useField().value||[],r=o.reduce((a,c)=>(a[c.id]=c,a),{});return s.jsx(n.EllipsisWithTooltip,{ellipsis:!0,children:o.map((a,c)=>s.jsxs("span",{children:[s.jsx("a",{onClick:p=>{p.preventDefault(),e(r[a.id])},children:j(a)}),c!==o.length-1?s.jsx("span",{style:{marginRight:4,color:"#aaa"},children:","}):""]},c))})},Ne=(e,t,o)=>{const r=t?{}:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},showChildren:{type:"boolean","x-component":"Select",enum:[{label:L("Only display direct members of the department"),value:!1},{label:L("Show all members"),value:!0}],"x-component-props":{defaultValue:!1,onChange:o},"x-align":"left"},actions:{type:"void","x-component":"MemberActions"}}}},a=e?{isOwner:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column","x-component-props":{style:{minWidth:100}},title:L("Owner"),properties:{isOwner:{type:"boolean","x-component":"IsOwnerField"}}}}:{},c=e?{remove:{type:"void","x-component":"RowRemoveAction"}}:{};return{type:"void",properties:S(f({},r),{table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},useDataSource:"{{ useMembersDataSource }}",pagination:{showTotal:"{{ useShowTotal }}"}},properties:S(f({nickname:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{nickname:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},username:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{username:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},departments:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{departments:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},mainDepartment:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{mainDepartment:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}},a),{phone:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{phone:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},email:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{email:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:f({update:{type:"void",title:'{{t("Configure")}}',"x-component":"Action.Link","x-component-props":{type:"primary"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"FormV2",title:'{{t("Configure")}}',properties:{departments:{title:'{{t("Departments")}}',"x-decorator":"FormItem","x-component":"UserDepartmentsField"}}}}}},c)}}}})}})}},qe=()=>{var o;const{department:e}=V(),t=(o=n.useRecord().departments)==null?void 0:o.find(r=>(r==null?void 0:r.id)===(e==null?void 0:e.id));return s.jsx(n.Checkbox.ReadPretty,{value:t==null?void 0:t.departmentsUsers.isOwner})},Ue={type:"void","x-component":"Space",properties:{remove:{type:"void",title:'{{t("Remove")}}',"x-component":"Action","x-component-props":{icon:"UserDeleteOutlined",confirm:{title:"{{t('Remove members')}}",content:"{{t('Are you sure you want to remove these members?')}}"},style:{marginRight:8},useAction:"{{ useBulkRemoveMembersAction }}"}},refresh:{type:"void",title:'{{ t("Refresh") }}',"x-component":"Action","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined",style:{marginRight:8}}},create:{type:"void",title:L("Add members"),"x-component":"Action","x-component-props":{type:"primary",icon:"UserAddOutlined"},properties:{drawer:{type:"void","x-component":"AddMembers"}}}}};function Be(){const e=n.useResourceActionContext();return{onClick(){return I(this,null,function*(){var o;(o=e==null?void 0:e.refresh)==null||o.call(e)})}}}const Le=e=>{const{department:t}=e;return t?s.jsx(n.SchemaComponent,{scope:{useRefreshActionProps:Be},schema:Ue}):null},$e={type:"void",properties:{remove:{title:'{{ t("Remove") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Remove member')}}",content:"{{t('Are you sure you want to remove it?')}}"},useAction:"{{ useRemoveMemberAction }}"}}}},ze=()=>{const e=n.useAPIClient(),{department:t}=V(),{id:o}=n.useRecord(),{refresh:r}=n.useResourceActionContext();return{run(){return I(this,null,function*(){yield e.resource("departments.members",t.id).remove({values:[o]}),r()})}}},je=e=>{const{t}=K(),{department:o}=e;return o?s.jsx(n.SchemaComponent,{schema:$e,scope:{t,useRemoveMemberAction:ze}}):null},_e=()=>{const{t:e}=K(),{message:t}=A.App.useApp(),o=n.useAPIClient(),{state:r,setState:a,refresh:c}=n.useResourceActionContext(),{department:p}=V();return{run(){return I(this,null,function*(){const u=r==null?void 0:r.selectedRowKeys;if(!(u!=null&&u.length)){t.warning(e("Please select members"));return}yield o.resource("departments.members",p.id).remove({values:u}),a({selectedRowKeys:[]}),c()})}}},We=e=>{const{user:t}=V(),o=n.useResourceActionContext(),{onSuccess:r}=e;return d.useEffect(()=>{if(t){e==null||e.onSuccess({data:[t]});return}o.loading||r==null||r(o.data)},[t,o.loading]),o},Ge=()=>{var r;const e=n.useResourceActionContext(),{data:t}=e,{t:o}=K();return o("Total {{count}} members",{count:(r=t==null?void 0:t.meta)==null?void 0:r.count})},He=e=>{const{useDataSource:t}=e;return{type:"void",properties:{[w.uid()]:{type:"void","x-component":"RequestProvider","x-component-props":{useDataSource:t},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{title:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"}}},departments:{type:"array","x-component":"InternalDepartmentTable","x-component-props":{useDisabled:"{{ useDisabled }}"}}}}}}},se=d.createContext({}),Je=se.Provider;function ae(){return d.useContext(se)}const Qe=()=>({disabled:()=>!1}),Xe=({useDisabled:e=Qe})=>{const{t}=K(),o=n.useResourceActionContext(),{run:r,data:a,loading:c,defaultRequest:p}=o,{resource:i,resourceOf:u,params:l}=p||{},{treeData:y,initData:g,loadData:h}=_({resource:i,resourceOf:u,params:l}),b=w.useField(),{disabled:F}=e(),{hasFilter:C,expandedKeys:v,setExpandedKeys:x}=ae();d.useEffect(()=>{C||g(a==null?void 0:a.data)},[a,g,c,C]);const{count:m,page:D,pageSize:k}=(a==null?void 0:a.meta)||{},O={defaultPageSize:l==null?void 0:l.pageSize,total:m,current:D,pageSize:k};return s.jsx(A.Table,{rowKey:"id",columns:[{dataIndex:"title",title:t("Department name"),render:(E,q)=>C?j(q):E}],rowSelection:{selectedRowKeys:((b==null?void 0:b.value)||[]).map(E=>E.id),onChange:(E,q)=>{var N;return(N=b==null?void 0:b.setValue)==null?void 0:N.call(b,q)},getCheckboxProps:()=>({disabled:F()})},pagination:S(f({},O),{showSizeChanger:!0,onChange(E,q){var N;r(S(f({},((N=o==null?void 0:o.params)==null?void 0:N[0])||{}),{page:E,pageSize:q}))}}),dataSource:C?(a==null?void 0:a.data)||[]:y,expandable:{onExpand:(E,q)=>{const N=q;h({key:N.id,children:N.children})},expandedRowKeys:v,onExpandedRowsChange:E=>x(E)}})},X={name:"departments",fields:[{interface:"id",type:"bigInt",name:"id",primaryKey:!0,autoIncrement:!0,uiSchema:{type:"id",title:'{{t("ID")}}'}},{interface:"input",type:"string",name:"title",uiSchema:{type:"string",title:'{{t("Department name")}}',"x-component":"Input",required:!0}},{interface:"m2o",type:"belongsTo",name:"parent",collectionName:"departments",foreignKey:"parentId",target:"departments",targetKey:"id",treeParent:!0,uiSchema:{title:'{{t("Superior department")}}',"x-component":"DepartmentSelect"}},{interface:"m2m",type:"belongsToMany",name:"roles",target:"roles",collectionName:"departments",through:"departmentsRoles",foreignKey:"departmentId",otherKey:"roleName",targetKey:"name",sourceKey:"id",uiSchema:{title:'{{t("Roles")}}',"x-component":"AssociationField","x-component-props":{multiple:!0,fieldNames:{label:"title",value:"name"}}}},{interface:"m2m",type:"belongsToMany",name:"owners",collectionName:"departments",target:"users",through:"departmentsUsers",foreignKey:"departmentId",otherKey:"userId",targetKey:"id",sourceKey:"id",scope:{isOwner:!0},uiSchema:{title:'{{t("Owners")}}',"x-component":"AssociationField","x-component-props":{multiple:!0,fieldNames:{label:"nickname",value:"id"}}}}]},Ye=e=>{const[t,o]=d.useState([]),[r,a]=d.useState(!1),{useDataSource:c}=e,p=c({manual:!0});return d.useEffect(()=>{p.run({filter:{parentId:null},pageSize:10})},[]),s.jsx(n.ResourceActionContext.Provider,{value:p,children:s.jsx(n.CollectionProvider_deprecated,{collection:X,children:s.jsx(Je,{value:{expandedKeys:t,setExpandedKeys:o,hasFilter:r,setHasFilter:a},children:e.children})})})},Ze=()=>{const{setHasFilter:e,setExpandedKeys:t}=ae(),{t:o}=K(),r=d.useContext(n.CollectionContext),a=n.useFilterFieldOptions(r.fields),c=n.useResourceActionContext(),{run:p,defaultRequest:i}=c,u=w.useField(),{params:l}=i||{};return{options:a,onSubmit:y=>I(this,null,function*(){const g=l.filter,h=n.removeNullCondition(y==null?void 0:y.filter);p(S(f({},l),{page:1,pageSize:10,filter:n.mergeFilter([h,g])}));const b=(h==null?void 0:h.$and)||(h==null?void 0:h.$or);b!=null&&b.length?(u.title=o("{{count}} filter items",{count:(b==null?void 0:b.length)||0}),e(!0)):(u.title=o("Filter"),e(!1))}),onReset(){p(S(f({},l),{filter:S(f({},(l==null?void 0:l.filter)||{}),{parentId:null}),page:1,pageSize:10})),u.title=o("Filter"),e(!1),t([])}}},ce=({useDataSource:e,useDisabled:t})=>{const o=He({useDataSource:e});return s.jsx(n.SchemaComponent,{schema:o,components:{RequestProvider:Ye,InternalDepartmentTable:Xe},scope:{useDisabled:t,useFilterActionProps:Ze}})},Re=e=>{const t={resource:"departments",action:"list",params:{appends:["parent(recursively=true)"],sort:["createdAt"]}},o=n.useRequest(t,e);return S(f({},o),{defaultRequest:t})},et={type:"void",properties:{drawer:{title:'{{t("Select Departments")}}',"x-decorator":"Form","x-component":"Action.Drawer",properties:{table:{type:"void","x-decorator":"FormItem","x-component":"DepartmentTable","x-component-props":{useDataSource:"{{ useDataSource }}",useDisabled:"{{ useDisabled }}"}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},confirm:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useAddDepartments }}"}}}}}}}},tt=e=>{const{t}=K(),{user:o,useAddDepartments:r,useDisabled:a}=e;return s.jsx(n.SchemaComponent,{schema:et,components:{DepartmentTable:ce},scope:{t,user:o,useDataSource:Re,useAddDepartments:r,useDisabled:a}},2)},ot=()=>{const{modal:e,message:t}=A.App.useApp(),o=n.useAPIClient(),{t:r}=K(),[a,c]=d.useState(!1),p=n.useRecord(),i=w.useField(),{refresh:u}=n.useResourceActionContext(),l=(x=[])=>x.map(m=>{var D,k;return S(f({},m),{title:j(m),isMain:(D=m.departmentsUsers)==null?void 0:D.isMain,isOwner:(k=m.departmentsUsers)==null?void 0:k.isOwner})});n.useRequest(()=>o.resource("users.departments",p.id).list({appends:["parent(recursively=true)"],pagination:!1}).then(x=>{var D;const m=l((D=x==null?void 0:x.data)==null?void 0:D.data);i.setValue(m)}),{ready:p.id});const y=()=>{const x=n.useAPIClient(),m=w.useForm(),{departments:D}=m.values||{};return{run(){return I(this,null,function*(){yield x.resource("users.departments",p.id).add({values:D.map(O=>O.id)}),m.reset(),i.setValue([...i.value,...D.map((O,E)=>S(f({},O),{isMain:E===0&&i.value.length===0,title:j(O)}))]),c(!1),u()})}}},g=x=>{e.confirm({title:r("Remove department"),content:r("Are you sure you want to remove it?"),onOk:()=>I(this,null,function*(){yield o.resource("users.departments",p.id).remove({values:[x.id]}),t.success(r("Deleted successfully")),i.setValue(i.value.filter(m=>m.id!==x.id).map((m,D)=>S(f({},m),{isMain:x.isMain&&D===0||m.isMain}))),u()})})},h=x=>I(this,null,function*(){yield o.resource("users").setMainDepartment({values:{userId:p.id,departmentId:x.id}}),t.success(r("Set successfully")),i.setValue(i.value.map(m=>S(f({},m),{isMain:m.id===x.id}))),u()}),b=x=>I(this,null,function*(){yield o.resource("departments").setOwner({values:{userId:p.id,departmentId:x.id}}),t.success(r("Set successfully")),i.setValue(i.value.map(m=>S(f({},m),{isOwner:m.id===x.id?!0:m.isOwner}))),u()}),F=x=>I(this,null,function*(){yield o.resource("departments").removeOwner({values:{userId:p.id,departmentId:x.id}}),t.success(r("Set successfully")),i.setValue(i.value.map(m=>S(f({},m),{isOwner:m.id===x.id?!1:m.isOwner}))),u()}),C=(x,m)=>{switch(x){case"setMain":h(m);break;case"setOwner":b(m);break;case"removeOwner":F(m);break;case"remove":g(m)}},v=()=>({disabled:x=>x&&i.value.some(m=>m.id===x.id)});return s.jsxs(n.ActionContextProvider,{value:{visible:a,setVisible:c},children:[s.jsxs(d.Fragment,{children:[((i==null?void 0:i.value)||[]).map(x=>s.jsxs(A.Tag,{style:{padding:"5px 8px",background:"transparent",marginBottom:"5px"},children:[s.jsx("span",{style:{marginRight:"5px"},children:x.title}),x.isMain?s.jsx(A.Tag,{color:"processing",bordered:!1,children:r("Main")}):"",s.jsx(A.Dropdown,{menu:{items:[...x.isMain?[]:[{key:"setMain",label:r("Set as main department")}],{key:"remove",label:r("Remove")}],onClick:({key:m})=>C(m,x)},children:s.jsxs("div",{style:{float:"right"},children:[" ",s.jsx(z.MoreOutlined,{})]})})]},x.id)),s.jsx(A.Button,{icon:s.jsx(z.PlusOutlined,{}),onClick:()=>c(!0)},1)]}),s.jsx(tt,{user:p,useAddDepartments:y,useDisabled:v})]})},nt=()=>{var g;const{t:e}=K(),{department:t,user:o,setShowChildren:r,showChildren:a}=V(),{data:c,setState:p,refresh:i}=n.useResourceActionContext(),u=()=>s.jsx(Le,{department:t}),l=()=>s.jsx(je,{department:t}),y=d.useMemo(()=>Ne(t,o,r),[t==null?void 0:t.id,o,r]);return d.useEffect(()=>{p==null||p({selectedRowKeys:[]})},[c,p]),d.useEffect(()=>{i==null||i()},[t==null?void 0:t.id,o,a]),s.jsxs(s.Fragment,{children:[s.jsx("h2",{children:e(o?"Search results":(g=t==null?void 0:t.title)!=null?g:"All users")}),s.jsx(n.SchemaComponent,{schema:y,components:{MemberActions:u,AddMembers:Ee,RowRemoveAction:l,DepartmentField:Ve,IsOwnerField:qe,UserDepartmentsField:ot},scope:{useBulkRemoveMembersAction:_e,useMembersDataSource:We,useShowTotal:Ge,useFilterActionProps:J}})]})},rt=({children:e})=>{const t=V(),{departmentsResource:o}=t,{service:r}=o||{};return s.jsx(n.ResourceActionContext.Provider,{value:f({},r),children:s.jsx(n.CollectionProvider_deprecated,{collection:X,children:e})})},st={name:"users",fields:[{interface:"id",type:"bigInt",name:"id",primaryKey:!0,autoIncrement:!0,allowNull:!1,uiSchema:{type:"number",title:'{{t("ID")}}',"x-component":"InputNumber","x-read-pretty":!0}},{interface:"input",type:"string",name:"nickname",uiSchema:{type:"string",title:'{{t("Nickname")}}',"x-component":"Input"}},{interface:"input",type:"string",name:"username",unique:!0,uiSchema:{type:"string",title:'{{t("Username")}}',"x-component":"Input","x-validator":{username:!0},required:!0}},{interface:"email",type:"string",name:"email",unique:!0,uiSchema:{type:"string",title:'{{t("Email")}}',"x-component":"Input","x-validator":"email",required:!0}},{interface:"phone",type:"string",name:"phone",unique:!0,uiSchema:{type:"string",title:'{{t("Phone")}}',"x-component":"Input","x-validator":"phone",required:!0}},{interface:"m2m",type:"belongsToMany",name:"roles",target:"roles",foreignKey:"userId",otherKey:"roleName",onDelete:"CASCADE",sourceKey:"id",targetKey:"name",through:"rolesUsers",uiSchema:{type:"array",title:'{{t("Roles")}}',"x-component":"AssociationField","x-component-props":{multiple:!0,fieldNames:{label:"title",value:"name"}}}},{interface:"m2m",type:"belongsToMany",name:"departments",target:"departments",foreignKey:"userId",otherKey:"departmentId",onDelete:"CASCADE",sourceKey:"id",targetKey:"id",through:"departmentsUsers",uiSchema:{type:"array",title:'{{t("Departments")}}',"x-component":"DepartmentField"}},{interface:"m2m",type:"belongsToMany",name:"mainDepartment",target:"departments",foreignKey:"userId",otherKey:"departmentId",onDelete:"CASCADE",sourceKey:"id",targetKey:"id",through:"departmentsUsers",throughScope:{isMain:!0},uiSchema:{type:"array",title:'{{t("Main department")}}',"x-component":"DepartmentField"}}]},at=({children:e})=>{const{usersResource:t}=V(),{service:o}=t||{};return s.jsx(n.ResourceActionContext.Provider,{value:f({},o),children:s.jsx(n.CollectionProvider_deprecated,{collection:st,children:e})})},ct=()=>s.jsx(n.SchemaComponentOptions,{components:{SuperiorDepartmentSelect:he,DepartmentSelect:ye},scope:{useFilterActionProps:J},children:s.jsxs(A.Row,{gutter:48,style:{flexWrap:"nowrap"},children:[s.jsx(A.Col,{span:6,style:{borderRight:"1px solid #eee",minWidth:"300px"},children:s.jsx(rt,{children:s.jsx(Me,{})})}),s.jsx(A.Col,{flex:"auto",style:{overflow:"hidden"},children:s.jsx(at,{children:s.jsx(nt,{})})})]})}),it={type:"void",properties:{[w.uid()]:{type:"void","x-decorator":"CardItem","x-component":"DepartmentManagement"}}},pt=()=>s.jsx(n.SchemaComponent,{schema:it,components:{DepartmentManagement:ct}}),lt=()=>{const e=n.useSchemaComponentContext();return s.jsx(n.SchemaComponentContext.Provider,{value:S(f({},e),{designable:!1}),children:s.jsx(me,{children:s.jsx(pt,{})})})};class dt extends n.Plugin{load(){return I(this,null,function*(){this.app.systemSettingsManager.add("id-auth.departments",{icon:"ApartmentOutlined",title:L("Departments"),sort:2,aclSnippet:"pm.departments",Component:lt})})}}const ut=()=>({type:"void",properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{[w.uid()]:{type:"void",title:'{{ t("Filter") }}',"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},actions:{type:"void","x-component":"Space",properties:{remove:{type:"void",title:'{{t("Remove")}}',"x-component":"Action","x-component-props":{icon:"MinusOutlined",confirm:{title:"{{t('Remove')}}",content:"{{t('Are you sure you want to remove these departments?')}}"},style:{marginRight:8},useAction:"{{ useBulkRemoveDepartments }}"}},create:{type:"void",title:'{{t("Add departments")}}',"x-component":"Action","x-component-props":{type:"primary",icon:"PlusOutlined"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"FormV2",title:'{{t("Add departments")}}',properties:{table:{type:"void","x-decorator":"FormItem","x-component":"DepartmentTable","x-component-props":{useDataSource:"{{ useDataSource }}",useDisabled:"{{ useDisabled }}"}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useAddDepartments }}"}}}}}}}}}}}},table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{title:{type:"void",title:'{{t("Department name")}}',"x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{title:{type:"string","x-component":"DepartmentTitle"}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{remove:{type:"void",title:'{{ t("Remove") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Remove department')}}",content:"{{t('Are you sure you want to remove it?')}}"},useAction:"{{ useRemoveDepartment }}"}}}}}}}}}}),mt=()=>{const e=n.useRecord(),t=ie(e);return s.jsx(s.Fragment,{children:t})};function ie(e){const{title:t,parent:o}=e;return o?ie(o)+" /"+t:t}const xt=()=>{const{role:e}=d.useContext(U.RolesManagerContext),t=n.useAPIClient(),o=w.useForm(),{setVisible:r}=n.useActionContext(),{refresh:a}=n.useResourceActionContext(),{departments:c}=o.values||{};return{run(){return I(this,null,function*(){yield t.resource("roles.departments",e.name).add({values:c.map(u=>u.id)}),o.reset(),r(!1),a()})}}},yt=()=>{const e=n.useAPIClient(),{t}=K(),{message:o}=A.App.useApp(),{state:r,setState:a,refresh:c}=n.useResourceActionContext(),{role:p}=d.useContext(U.RolesManagerContext);return{run(){return I(this,null,function*(){const u=r==null?void 0:r.selectedRowKeys;if(!(u!=null&&u.length)){o.warning(t("Please select departments"));return}yield e.resource(`roles/${p==null?void 0:p.name}/departments`).remove({values:u}),a==null||a({selectedRowKeys:[]}),c()})}}},ht=e=>{const t={resource:"departments",action:"list",params:{appends:["roles","parent(recursively=true)"],sort:["createdAt"]}},o=n.useRequest(t,e);return S(f({},o),{defaultRequest:t})},ft=()=>{const{role:e}=d.useContext(U.RolesManagerContext);return{disabled:t=>{var o;return(o=t==null?void 0:t.roles)==null?void 0:o.some(r=>r.name===(e==null?void 0:e.name))}}},vt=()=>{const e=n.useAPIClient(),{role:t}=d.useContext(U.RolesManagerContext),o=n.useRecord(),{refresh:r}=n.useResourceActionContext();return{run(){return I(this,null,function*(){yield e.resource(`roles/${t==null?void 0:t.name}/departments`).remove({values:[o.id]}),r()})}}},gt=()=>{const{role:e}=d.useContext(U.RolesManagerContext),{t}=K(),o=n.useRequest({resource:`roles/${e==null?void 0:e.name}/departments`,action:"list",params:{appends:["parent","parent.parent(recursively=true)"]}},{ready:!!e,refreshDeps:[e]}),r=d.useMemo(()=>ut(),[e]);return s.jsx(n.ResourceActionContext.Provider,{value:o,children:s.jsx(n.CollectionProvider_deprecated,{collection:X,children:s.jsx(n.SchemaComponent,{schema:r,components:{DepartmentTable:ce,DepartmentTitle:mt},scope:{useFilterActionProps:J,useRemoveDepartment:vt,useBulkRemoveDepartments:yt,useDataSource:ht,useDisabled:ft,useAddDepartments:xt,t}})})})};class Dt extends n.Plugin{load(){return I(this,null,function*(){this.app.pm.get(U).rolesManager.add("departments",{title:L("Departments"),Component:gt})})}}const Y={name:"enableLink",type:"switch",useVisible(){return w.useField().readPretty},useComponentProps(){var p;const{t:e}=K(),t=w.useField(),{fieldSchema:o}=n.useColumnSchema(),r=w.useFieldSchema(),a=o||r,{dn:c}=n.useDesignable();return{title:e("Enable link"),checked:((p=a["x-component-props"])==null?void 0:p.enableLink)!==!1,onChange(i){a["x-component-props"]=S(f({},a==null?void 0:a["x-component-props"]),{enableLink:i}),t.componentProps.enableLink=i,c.emit("patch",{schema:{"x-uid":a["x-uid"],"x-component-props":f({},a==null?void 0:a["x-component-props"])}}),c.refresh()}}}},Z={name:"fieldComponent",type:"select",useComponentProps(){const{t:e}=K(),t=w.useField(),{fieldSchema:o,collectionField:r}=n.useColumnSchema(),a=w.useFieldSchema(),c=o||a,p=n.useFieldModeOptions({fieldSchema:o,collectionField:r}),{dn:i}=n.useDesignable();return{title:e("Field component"),options:p,value:"Select",onChange(u){const l={"x-uid":c["x-uid"]};c["x-component-props"]=c["x-component-props"]||{},c["x-component-props"].mode=u,l["x-component-props"]=c["x-component-props"],t.componentProps=t.componentProps||{},t.componentProps.mode=u,i.emit("patch",{schema:l}),i.refresh()}}}},R={name:"titleField",type:"select",useComponentProps(){var g,h,b,F;const{t:e}=K(),t=w.useField(),{dn:o}=n.useDesignable(),r=n.useTitleFieldOptions(),{fieldSchema:a,collectionField:c}=n.useColumnSchema(),p=w.useFieldSchema(),i=a||p,u=n.useCollectionField(),l=c||u,y=((g=t==null?void 0:t.componentProps)==null?void 0:g.fieldNames)||((h=i==null?void 0:i["x-component-props"])==null?void 0:h.fieldNames)||((F=(b=l==null?void 0:l.uiSchema)==null?void 0:b["x-component-props"])==null?void 0:F.fieldNames);return{title:e("Title field"),options:r,value:y==null?void 0:y.label,onChange(C){var D,k,O,E,q,N;const v={"x-uid":i["x-uid"]},x=S(f(f({},(k=(D=l==null?void 0:l.uiSchema)==null?void 0:D["x-component-props"])==null?void 0:k.fieldNames),(O=i==null?void 0:i["x-component-props"])==null?void 0:O.fieldNames),{label:C});i["x-component-props"]=i["x-component-props"]||{},i["x-component-props"].fieldNames=x,v["x-component-props"]=i["x-component-props"],t.componentProps.fieldNames=(E=i["x-component-props"])==null?void 0:E.fieldNames;const m=(N=t.path)==null?void 0:N.splice(((q=t.path)==null?void 0:q.length)-1,1);t.form.query(`${m.concat("*."+i.name)}`).forEach(ee=>{ee.componentProps.fieldNames=x.label}),o.emit("patch",{schema:v}),o.refresh()}}}},Ct=new n.SchemaSettings({name:"fieldSettings:component:DepartmentOwnersField",items:[Z,R,Y]}),bt=new n.SchemaSettings({name:"fieldSettings:component:UserDepartmentsField",items:[Z,R,Y]}),At=new n.SchemaSettings({name:"fieldSettings:component:UserMainDepartmentField",items:[Z,R,Y]});class pe extends n.Plugin{afterAdd(){return I(this,null,function*(){this.pm.add(dt),this.pm.add(Dt)})}load(){return I(this,null,function*(){this.app.addComponents({UserDepartmentsField:H,UserMainDepartmentField:H,DepartmentOwnersField:H}),this.app.schemaSettingsManager.add(bt),this.app.schemaSettingsManager.add(At),this.app.schemaSettingsManager.add(Ct)})}}P.DepartmentsPlugin=pe,P.default=pe,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
12
|
+
`,children:c!=null&&c.length?s.jsx(A.Tree.DirectoryTree,{loadData:i,treeData:c,loadedKeys:u,onSelect:b,selectedKeys:[o==null?void 0:o.id],onExpand:F,onLoad:C,expandedKeys:g,expandAction:!1,showIcon:!1,fieldNames:{key:"id"}}):s.jsx(A.Empty,{image:A.Empty.PRESENTED_IMAGE_SIMPLE})})},Te=({node:e,setVisible:t,setDrawer:o})=>{const{t:r}=K(),{refreshAsync:a}=n.useResourceActionContext(),{setLoadedKeys:c,expandedKeys:p,setExpandedKeys:i}=W(),{modal:u,message:l}=A.App.useApp(),y=n.useAPIClient(),g=()=>{u.confirm({title:r("Delete department"),content:r("Are you sure you want to delete it?"),onOk:()=>I(null,null,function*(){yield y.resource("departments").destroy({filterByTk:e.id}),l.success(r("Deleted successfully")),i(C=>C.filter(v=>v!==e.id));const F=[...p];c([]),i([]),yield a(),i(F)})})},h=F=>{o({schema:F,node:e}),t(!0)},b=({key:F,domeEvent:C})=>{switch(C==null||C.stopPropagation(),F){case"new-sub":h(Pe);break;case"edit":h(Fe);break;case"delete":g()}};return s.jsxs("div",{style:{display:"flex",justifyContent:"space-between",overflow:"hidden"},children:[s.jsx("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.title}),s.jsx(A.Dropdown,{menu:{items:[{label:r("New sub department"),key:"new-sub"},{label:r("Edit department"),key:"edit"},{label:r("Delete department"),key:"delete"}],onClick:b},children:s.jsx("div",{style:{marginLeft:"15px"},children:s.jsx(z.MoreOutlined,{})})})]})};Q.Item=Te;const Ie=()=>{const e=w.useForm(),t=w.useField(),{setVisible:o}=n.useActionContext(),{refreshAsync:r}=n.useResourceActionContext(),a=n.useAPIClient(),{expandedKeys:c,setLoadedKeys:p,setExpandedKeys:i}=W();return{run(){return I(this,null,function*(){try{yield e.submit(),t.data=t.data||{},t.data.loading=!0,yield a.resource("departments").create({values:e.values}),o(!1),yield e.reset(),t.data.loading=!1;const l=[...c];p([]),i([]),yield r(),i(l)}catch(l){t.data&&(t.data.loading=!1)}})}}},ke=()=>{const e=w.useField(),t=w.useForm(),{setVisible:o}=n.useActionContext(),{refreshAsync:r}=n.useResourceActionContext(),a=n.useAPIClient(),{id:c}=n.useRecord(),{expandedKeys:p,setLoadedKeys:i,setExpandedKeys:u}=W(),{department:l,setDepartment:y}=V();return{run(){return I(this,null,function*(){yield t.submit(),e.data=e.data||{},e.data.loading=!0;try{yield a.resource("departments").update({filterByTk:c,values:t.values}),y(f({department:l},t.values)),o(!1),yield t.reset();const h=[...p];i([]),u([]),yield r(),u(h)}catch(h){console.log(h)}finally{e.data.loading=!1}})}}},Me=()=>{const{t:e}=K(),[t,o]=d.useState(!1),[r,a]=d.useState({}),{department:c,setDepartment:p}=V(),{token:i}=A.theme.useToken(),l=_({label:({node:g})=>s.jsx(Q.Item,{node:g,setVisible:o,setDrawer:a})}),y=r.schema||{};return s.jsx(n.SchemaComponentOptions,{scope:{useCreateDepartment:Ie,useUpdateDepartment:ke},children:s.jsxs(fe,{value:l,children:[s.jsxs(A.Row,{children:[s.jsx(we,{}),s.jsx(A.Button,{type:"text",icon:s.jsx(z.UserOutlined,{}),style:{textAlign:"left",marginBottom:"5px",background:c?"":i.colorBgTextHover},onClick:()=>{p(null)},block:!0,children:e("All users")}),s.jsx(ge,{})]}),s.jsx(A.Divider,{style:{margin:"12px 0"}}),s.jsx(Q,{}),s.jsx(n.ActionContextProvider,{value:{visible:t,setVisible:o},children:s.jsx(n.RecordProvider,{record:r.node||{},children:s.jsx(n.SchemaComponent,{schema:y,components:{DepartmentOwnersField:Ae}})})})]})})},Ke={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form",title:'{{t("Add members")}}',properties:{resource:{type:"void","x-decorator":"FormItem","x-component":"ResourceActionProvider","x-component-props":{collection:"users",request:{resource:"users",action:"listExcludeDept",params:{departmentId:"{{ department?.id }}"}}},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{username:{$includes:""}},{nickname:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"}}},table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox",onChange:"{{ handleSelect }}"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{username:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{username:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},nickname:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{nickname:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},phone:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{phone:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},email:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{email:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}}}}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useAddMembersAction }}"}}}}}}}};function Oe(){const{department:e}=V(),{refresh:t}=n.useResourceActionContext(),o=d.useRef([]),r=n.useAPIClient();return{department:e,useAddMembersAction:()=>({run(){return I(this,null,function*(){const i=o.current;i!=null&&i.length&&(yield r.resource("departments.members",e.id).add({values:i}),o.current=[],t())})}}),handleSelect:p=>{o.current=p}}}const Ee=()=>{const{department:e,useAddMembersAction:t,handleSelect:o}=Oe();return s.jsx(n.SchemaComponent,{schema:Ke,scope:{useAddMembersAction:t,department:e,handleSelect:o}})},Ve=()=>{const{setDepartment:e}=V(),o=w.useField().value||[],r=o.reduce((a,c)=>(a[c.id]=c,a),{});return s.jsx(n.EllipsisWithTooltip,{ellipsis:!0,children:o.map((a,c)=>s.jsxs("span",{children:[s.jsx("a",{onClick:p=>{p.preventDefault(),e(r[a.id])},children:j(a)}),c!==o.length-1?s.jsx("span",{style:{marginRight:4,color:"#aaa"},children:","}):""]},c))})},Ne=(e,t,o)=>{const r=t?{}:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},showChildren:{type:"boolean","x-component":"Select",enum:[{label:L("Only display direct members of the department"),value:!1},{label:L("Show all members"),value:!0}],"x-component-props":{defaultValue:!1,onChange:o},"x-align":"left"},actions:{type:"void","x-component":"MemberActions"}}}},a=e?{isOwner:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column","x-component-props":{style:{minWidth:100}},title:L("Owner"),properties:{isOwner:{type:"boolean","x-component":"IsOwnerField"}}}}:{},c=e?{remove:{type:"void","x-component":"RowRemoveAction"}}:{};return{type:"void",properties:S(f({},r),{table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},useDataSource:"{{ useMembersDataSource }}",pagination:{showTotal:"{{ useShowTotal }}"}},properties:S(f({nickname:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{nickname:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},username:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{username:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},departments:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{departments:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},mainDepartment:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{mainDepartment:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}}},a),{phone:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{phone:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},email:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{email:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:f({update:{type:"void",title:'{{t("Configure")}}',"x-component":"Action.Link","x-component-props":{type:"primary"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"FormV2",title:'{{t("Configure")}}',properties:{departments:{title:'{{t("Departments")}}',"x-decorator":"FormItem","x-component":"UserDepartmentsField"}}}}}},c)}}}})}})}},qe=()=>{var o;const{department:e}=V(),t=(o=n.useRecord().departments)==null?void 0:o.find(r=>(r==null?void 0:r.id)===(e==null?void 0:e.id));return s.jsx(n.Checkbox.ReadPretty,{value:t==null?void 0:t.departmentsUsers.isOwner})},Ue={type:"void","x-component":"Space",properties:{remove:{type:"void",title:'{{t("Remove")}}',"x-component":"Action","x-component-props":{icon:"UserDeleteOutlined",confirm:{title:"{{t('Remove members')}}",content:"{{t('Are you sure you want to remove these members?')}}"},style:{marginRight:8},useAction:"{{ useBulkRemoveMembersAction }}"}},refresh:{type:"void",title:'{{ t("Refresh") }}',"x-component":"Action","x-use-component-props":"useRefreshActionProps","x-component-props":{icon:"ReloadOutlined",style:{marginRight:8}}},create:{type:"void",title:L("Add members"),"x-component":"Action","x-component-props":{type:"primary",icon:"UserAddOutlined"},properties:{drawer:{type:"void","x-component":"AddMembers"}}}}};function Be(){const e=n.useResourceActionContext();return{onClick(){return I(this,null,function*(){var o;(o=e==null?void 0:e.refresh)==null||o.call(e)})}}}const Le=e=>{const{department:t}=e;return t?s.jsx(n.SchemaComponent,{scope:{useRefreshActionProps:Be},schema:Ue}):null},$e={type:"void",properties:{remove:{title:'{{ t("Remove") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Remove member')}}",content:"{{t('Are you sure you want to remove it?')}}"},useAction:"{{ useRemoveMemberAction }}"}}}},ze=()=>{const e=n.useAPIClient(),{department:t}=V(),{id:o}=n.useRecord(),{refresh:r}=n.useResourceActionContext();return{run(){return I(this,null,function*(){yield e.resource("departments.members",t.id).remove({values:[o]}),r()})}}},je=e=>{const{t}=K(),{department:o}=e;return o?s.jsx(n.SchemaComponent,{schema:$e,scope:{t,useRemoveMemberAction:ze}}):null},_e=()=>{const{t:e}=K(),{message:t}=A.App.useApp(),o=n.useAPIClient(),{state:r,setState:a,refresh:c}=n.useResourceActionContext(),{department:p}=V();return{run(){return I(this,null,function*(){const u=r==null?void 0:r.selectedRowKeys;if(!(u!=null&&u.length)){t.warning(e("Please select members"));return}yield o.resource("departments.members",p.id).remove({values:u}),a({selectedRowKeys:[]}),c()})}}},We=e=>{const{user:t}=V(),o=n.useResourceActionContext(),{onSuccess:r}=e;return d.useEffect(()=>{if(t){e==null||e.onSuccess({data:[t]});return}o.loading||r==null||r(o.data)},[t,o.loading]),o},Ge=()=>{var r;const e=n.useResourceActionContext(),{data:t}=e,{t:o}=K();return o("Total {{count}} members",{count:(r=t==null?void 0:t.meta)==null?void 0:r.count})},He=e=>{const{useDataSource:t}=e;return{type:"void",properties:{[w.uid()]:{type:"void","x-component":"RequestProvider","x-component-props":{useDataSource:t},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{filter:{type:"void",title:'{{ t("Filter") }}',default:{$and:[{title:{$includes:""}}]},"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"}}},departments:{type:"array","x-component":"InternalDepartmentTable","x-component-props":{useDisabled:"{{ useDisabled }}"}}}}}}},se=d.createContext({}),Je=se.Provider;function ae(){return d.useContext(se)}const Qe=()=>({disabled:()=>!1}),Xe=({useDisabled:e=Qe})=>{const{t}=K(),o=n.useResourceActionContext(),{run:r,data:a,loading:c,defaultRequest:p}=o,{resource:i,resourceOf:u,params:l}=p||{},{treeData:y,initData:g,loadData:h}=_({resource:i,resourceOf:u,params:l}),b=w.useField(),{disabled:F}=e(),{hasFilter:C,expandedKeys:v,setExpandedKeys:x}=ae();d.useEffect(()=>{C||g(a==null?void 0:a.data)},[a,g,c,C]);const{count:m,page:D,pageSize:k}=(a==null?void 0:a.meta)||{},O={defaultPageSize:l==null?void 0:l.pageSize,total:m,current:D,pageSize:k};return s.jsx(A.Table,{rowKey:"id",columns:[{dataIndex:"title",title:t("Department name"),render:(E,q)=>C?j(q):E}],rowSelection:{selectedRowKeys:((b==null?void 0:b.value)||[]).map(E=>E.id),onChange:(E,q)=>{var N;return(N=b==null?void 0:b.setValue)==null?void 0:N.call(b,q)},getCheckboxProps:()=>({disabled:F()})},pagination:S(f({},O),{showSizeChanger:!0,onChange(E,q){var N;r(S(f({},((N=o==null?void 0:o.params)==null?void 0:N[0])||{}),{page:E,pageSize:q}))}}),dataSource:C?(a==null?void 0:a.data)||[]:y,expandable:{onExpand:(E,q)=>{const N=q;h({key:N.id,children:N.children})},expandedRowKeys:v,onExpandedRowsChange:E=>x(E)}})},X={name:"departments",fields:[{interface:"id",type:"bigInt",name:"id",primaryKey:!0,autoIncrement:!0,uiSchema:{type:"id",title:'{{t("ID")}}'}},{interface:"input",type:"string",name:"title",uiSchema:{type:"string",title:'{{t("Department name")}}',"x-component":"Input",required:!0}},{interface:"m2o",type:"belongsTo",name:"parent",collectionName:"departments",foreignKey:"parentId",target:"departments",targetKey:"id",treeParent:!0,uiSchema:{title:'{{t("Superior department")}}',"x-component":"DepartmentSelect"}},{interface:"m2m",type:"belongsToMany",name:"roles",target:"roles",collectionName:"departments",through:"departmentsRoles",foreignKey:"departmentId",otherKey:"roleName",targetKey:"name",sourceKey:"id",uiSchema:{title:'{{t("Roles")}}',"x-component":"AssociationField","x-component-props":{multiple:!0,fieldNames:{label:"title",value:"name"}}}},{interface:"m2m",type:"belongsToMany",name:"owners",collectionName:"departments",target:"users",through:"departmentsUsers",foreignKey:"departmentId",otherKey:"userId",targetKey:"id",sourceKey:"id",scope:{isOwner:!0},uiSchema:{title:'{{t("Owners")}}',"x-component":"AssociationField","x-component-props":{multiple:!0,fieldNames:{label:"nickname",value:"id"}}}}]},Ye=e=>{const[t,o]=d.useState([]),[r,a]=d.useState(!1),{useDataSource:c}=e,p=c({manual:!0});return d.useEffect(()=>{p.run({filter:{parentId:null},pageSize:10})},[]),s.jsx(n.ResourceActionContext.Provider,{value:p,children:s.jsx(n.CollectionProvider_deprecated,{collection:X,children:s.jsx(Je,{value:{expandedKeys:t,setExpandedKeys:o,hasFilter:r,setHasFilter:a},children:e.children})})})},Ze=()=>{const{setHasFilter:e,setExpandedKeys:t}=ae(),{t:o}=K(),r=d.useContext(n.CollectionContext),a=n.useFilterFieldOptions(r.fields),c=n.useResourceActionContext(),{run:p,defaultRequest:i}=c,u=w.useField(),{params:l}=i||{};return{options:a,onSubmit:y=>I(null,null,function*(){const g=l.filter,h=n.removeNullCondition(y==null?void 0:y.filter);p(S(f({},l),{page:1,pageSize:10,filter:n.mergeFilter([h,g])}));const b=(h==null?void 0:h.$and)||(h==null?void 0:h.$or);b!=null&&b.length?(u.title=o("{{count}} filter items",{count:(b==null?void 0:b.length)||0}),e(!0)):(u.title=o("Filter"),e(!1))}),onReset(){p(S(f({},l),{filter:S(f({},(l==null?void 0:l.filter)||{}),{parentId:null}),page:1,pageSize:10})),u.title=o("Filter"),e(!1),t([])}}},ce=({useDataSource:e,useDisabled:t})=>{const o=He({useDataSource:e});return s.jsx(n.SchemaComponent,{schema:o,components:{RequestProvider:Ye,InternalDepartmentTable:Xe},scope:{useDisabled:t,useFilterActionProps:Ze}})},Re=e=>{const t={resource:"departments",action:"list",params:{appends:["parent(recursively=true)"],sort:["createdAt"]}},o=n.useRequest(t,e);return S(f({},o),{defaultRequest:t})},et={type:"void",properties:{drawer:{title:'{{t("Select Departments")}}',"x-decorator":"Form","x-component":"Action.Drawer",properties:{table:{type:"void","x-decorator":"FormItem","x-component":"DepartmentTable","x-component-props":{useDataSource:"{{ useDataSource }}",useDisabled:"{{ useDisabled }}"}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},confirm:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useAddDepartments }}"}}}}}}}},tt=e=>{const{t}=K(),{user:o,useAddDepartments:r,useDisabled:a}=e;return s.jsx(n.SchemaComponent,{schema:et,components:{DepartmentTable:ce},scope:{t,user:o,useDataSource:Re,useAddDepartments:r,useDisabled:a}},2)},ot=()=>{const{modal:e,message:t}=A.App.useApp(),o=n.useAPIClient(),{t:r}=K(),[a,c]=d.useState(!1),p=n.useRecord(),i=w.useField(),{refresh:u}=n.useResourceActionContext(),l=(x=[])=>x.map(m=>{var D,k;return S(f({},m),{title:j(m),isMain:(D=m.departmentsUsers)==null?void 0:D.isMain,isOwner:(k=m.departmentsUsers)==null?void 0:k.isOwner})});n.useRequest(()=>o.resource("users.departments",p.id).list({appends:["parent(recursively=true)"],pagination:!1}).then(x=>{var D;const m=l((D=x==null?void 0:x.data)==null?void 0:D.data);i.setValue(m)}),{ready:p.id});const y=()=>{const x=n.useAPIClient(),m=w.useForm(),{departments:D}=m.values||{};return{run(){return I(this,null,function*(){yield x.resource("users.departments",p.id).add({values:D.map(O=>O.id)}),m.reset(),i.setValue([...i.value,...D.map((O,E)=>S(f({},O),{isMain:E===0&&i.value.length===0,title:j(O)}))]),c(!1),u()})}}},g=x=>{e.confirm({title:r("Remove department"),content:r("Are you sure you want to remove it?"),onOk:()=>I(null,null,function*(){yield o.resource("users.departments",p.id).remove({values:[x.id]}),t.success(r("Deleted successfully")),i.setValue(i.value.filter(m=>m.id!==x.id).map((m,D)=>S(f({},m),{isMain:x.isMain&&D===0||m.isMain}))),u()})})},h=x=>I(null,null,function*(){yield o.resource("users").setMainDepartment({values:{userId:p.id,departmentId:x.id}}),t.success(r("Set successfully")),i.setValue(i.value.map(m=>S(f({},m),{isMain:m.id===x.id}))),u()}),b=x=>I(null,null,function*(){yield o.resource("departments").setOwner({values:{userId:p.id,departmentId:x.id}}),t.success(r("Set successfully")),i.setValue(i.value.map(m=>S(f({},m),{isOwner:m.id===x.id?!0:m.isOwner}))),u()}),F=x=>I(null,null,function*(){yield o.resource("departments").removeOwner({values:{userId:p.id,departmentId:x.id}}),t.success(r("Set successfully")),i.setValue(i.value.map(m=>S(f({},m),{isOwner:m.id===x.id?!1:m.isOwner}))),u()}),C=(x,m)=>{switch(x){case"setMain":h(m);break;case"setOwner":b(m);break;case"removeOwner":F(m);break;case"remove":g(m)}},v=()=>({disabled:x=>x&&i.value.some(m=>m.id===x.id)});return s.jsxs(n.ActionContextProvider,{value:{visible:a,setVisible:c},children:[s.jsxs(d.Fragment,{children:[((i==null?void 0:i.value)||[]).map(x=>s.jsxs(A.Tag,{style:{padding:"5px 8px",background:"transparent",marginBottom:"5px"},children:[s.jsx("span",{style:{marginRight:"5px"},children:x.title}),x.isMain?s.jsx(A.Tag,{color:"processing",bordered:!1,children:r("Main")}):"",s.jsx(A.Dropdown,{menu:{items:[...x.isMain?[]:[{key:"setMain",label:r("Set as main department")}],{key:"remove",label:r("Remove")}],onClick:({key:m})=>C(m,x)},children:s.jsxs("div",{style:{float:"right"},children:[" ",s.jsx(z.MoreOutlined,{})]})})]},x.id)),s.jsx(A.Button,{icon:s.jsx(z.PlusOutlined,{}),onClick:()=>c(!0)},1)]}),s.jsx(tt,{user:p,useAddDepartments:y,useDisabled:v})]})},nt=()=>{var g;const{t:e}=K(),{department:t,user:o,setShowChildren:r,showChildren:a}=V(),{data:c,setState:p,refresh:i}=n.useResourceActionContext(),u=()=>s.jsx(Le,{department:t}),l=()=>s.jsx(je,{department:t}),y=d.useMemo(()=>Ne(t,o,r),[t==null?void 0:t.id,o,r]);return d.useEffect(()=>{p==null||p({selectedRowKeys:[]})},[c,p]),d.useEffect(()=>{i==null||i()},[t==null?void 0:t.id,o,a]),s.jsxs(s.Fragment,{children:[s.jsx("h2",{children:e(o?"Search results":(g=t==null?void 0:t.title)!=null?g:"All users")}),s.jsx(n.SchemaComponent,{schema:y,components:{MemberActions:u,AddMembers:Ee,RowRemoveAction:l,DepartmentField:Ve,IsOwnerField:qe,UserDepartmentsField:ot},scope:{useBulkRemoveMembersAction:_e,useMembersDataSource:We,useShowTotal:Ge,useFilterActionProps:J}})]})},rt=({children:e})=>{const t=V(),{departmentsResource:o}=t,{service:r}=o||{};return s.jsx(n.ResourceActionContext.Provider,{value:f({},r),children:s.jsx(n.CollectionProvider_deprecated,{collection:X,children:e})})},st={name:"users",fields:[{interface:"id",type:"bigInt",name:"id",primaryKey:!0,autoIncrement:!0,allowNull:!1,uiSchema:{type:"number",title:'{{t("ID")}}',"x-component":"InputNumber","x-read-pretty":!0}},{interface:"input",type:"string",name:"nickname",uiSchema:{type:"string",title:'{{t("Nickname")}}',"x-component":"Input"}},{interface:"input",type:"string",name:"username",unique:!0,uiSchema:{type:"string",title:'{{t("Username")}}',"x-component":"Input","x-validator":{username:!0},required:!0}},{interface:"email",type:"string",name:"email",unique:!0,uiSchema:{type:"string",title:'{{t("Email")}}',"x-component":"Input","x-validator":"email",required:!0}},{interface:"phone",type:"string",name:"phone",unique:!0,uiSchema:{type:"string",title:'{{t("Phone")}}',"x-component":"Input","x-validator":"phone",required:!0}},{interface:"m2m",type:"belongsToMany",name:"roles",target:"roles",foreignKey:"userId",otherKey:"roleName",onDelete:"CASCADE",sourceKey:"id",targetKey:"name",through:"rolesUsers",uiSchema:{type:"array",title:'{{t("Roles")}}',"x-component":"AssociationField","x-component-props":{multiple:!0,fieldNames:{label:"title",value:"name"}}}},{interface:"m2m",type:"belongsToMany",name:"departments",target:"departments",foreignKey:"userId",otherKey:"departmentId",onDelete:"CASCADE",sourceKey:"id",targetKey:"id",through:"departmentsUsers",uiSchema:{type:"array",title:'{{t("Departments")}}',"x-component":"DepartmentField"}},{interface:"m2m",type:"belongsToMany",name:"mainDepartment",target:"departments",foreignKey:"userId",otherKey:"departmentId",onDelete:"CASCADE",sourceKey:"id",targetKey:"id",through:"departmentsUsers",throughScope:{isMain:!0},uiSchema:{type:"array",title:'{{t("Main department")}}',"x-component":"DepartmentField"}}]},at=({children:e})=>{const{usersResource:t}=V(),{service:o}=t||{};return s.jsx(n.ResourceActionContext.Provider,{value:f({},o),children:s.jsx(n.CollectionProvider_deprecated,{collection:st,children:e})})},ct=()=>s.jsx(n.SchemaComponentOptions,{components:{SuperiorDepartmentSelect:he,DepartmentSelect:ye},scope:{useFilterActionProps:J},children:s.jsxs(A.Row,{gutter:48,style:{flexWrap:"nowrap"},children:[s.jsx(A.Col,{span:6,style:{borderRight:"1px solid #eee",minWidth:"300px"},children:s.jsx(rt,{children:s.jsx(Me,{})})}),s.jsx(A.Col,{flex:"auto",style:{overflow:"hidden"},children:s.jsx(at,{children:s.jsx(nt,{})})})]})}),it={type:"void",properties:{[w.uid()]:{type:"void","x-decorator":"CardItem","x-component":"DepartmentManagement"}}},pt=()=>s.jsx(n.SchemaComponent,{schema:it,components:{DepartmentManagement:ct}}),lt=()=>{const e=n.useSchemaComponentContext();return s.jsx(n.SchemaComponentContext.Provider,{value:S(f({},e),{designable:!1}),children:s.jsx(me,{children:s.jsx(pt,{})})})};class dt extends n.Plugin{load(){return I(this,null,function*(){this.app.systemSettingsManager.add("id-auth.departments",{icon:"ApartmentOutlined",title:L("Departments"),sort:2,aclSnippet:"pm.departments",Component:lt})})}}const ut=()=>({type:"void",properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{[w.uid()]:{type:"void",title:'{{ t("Filter") }}',"x-action":"filter","x-component":"Filter.Action","x-use-component-props":"useFilterActionProps","x-component-props":{icon:"FilterOutlined"},"x-align":"left"},actions:{type:"void","x-component":"Space",properties:{remove:{type:"void",title:'{{t("Remove")}}',"x-component":"Action","x-component-props":{icon:"MinusOutlined",confirm:{title:"{{t('Remove')}}",content:"{{t('Are you sure you want to remove these departments?')}}"},style:{marginRight:8},useAction:"{{ useBulkRemoveDepartments }}"}},create:{type:"void",title:'{{t("Add departments")}}',"x-component":"Action","x-component-props":{type:"primary",icon:"PlusOutlined"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"FormV2",title:'{{t("Add departments")}}',properties:{table:{type:"void","x-decorator":"FormItem","x-component":"DepartmentTable","x-component-props":{useDataSource:"{{ useDataSource }}",useDisabled:"{{ useDisabled }}"}},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useAddDepartments }}"}}}}}}}}}}}},table:{type:"void","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}"},properties:{title:{type:"void",title:'{{t("Department name")}}',"x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{title:{type:"string","x-component":"DepartmentTitle"}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{remove:{type:"void",title:'{{ t("Remove") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Remove department')}}",content:"{{t('Are you sure you want to remove it?')}}"},useAction:"{{ useRemoveDepartment }}"}}}}}}}}}}),mt=()=>{const e=n.useRecord(),t=ie(e);return s.jsx(s.Fragment,{children:t})};function ie(e){const{title:t,parent:o}=e;return o?ie(o)+" /"+t:t}const xt=()=>{const{role:e}=d.useContext(U.RolesManagerContext),t=n.useAPIClient(),o=w.useForm(),{setVisible:r}=n.useActionContext(),{refresh:a}=n.useResourceActionContext(),{departments:c}=o.values||{};return{run(){return I(this,null,function*(){yield t.resource("roles.departments",e.name).add({values:c.map(u=>u.id)}),o.reset(),r(!1),a()})}}},yt=()=>{const e=n.useAPIClient(),{t}=K(),{message:o}=A.App.useApp(),{state:r,setState:a,refresh:c}=n.useResourceActionContext(),{role:p}=d.useContext(U.RolesManagerContext);return{run(){return I(this,null,function*(){const u=r==null?void 0:r.selectedRowKeys;if(!(u!=null&&u.length)){o.warning(t("Please select departments"));return}yield e.resource(`roles/${p==null?void 0:p.name}/departments`).remove({values:u}),a==null||a({selectedRowKeys:[]}),c()})}}},ht=e=>{const t={resource:"departments",action:"list",params:{appends:["roles","parent(recursively=true)"],sort:["createdAt"]}},o=n.useRequest(t,e);return S(f({},o),{defaultRequest:t})},ft=()=>{const{role:e}=d.useContext(U.RolesManagerContext);return{disabled:t=>{var o;return(o=t==null?void 0:t.roles)==null?void 0:o.some(r=>r.name===(e==null?void 0:e.name))}}},vt=()=>{const e=n.useAPIClient(),{role:t}=d.useContext(U.RolesManagerContext),o=n.useRecord(),{refresh:r}=n.useResourceActionContext();return{run(){return I(this,null,function*(){yield e.resource(`roles/${t==null?void 0:t.name}/departments`).remove({values:[o.id]}),r()})}}},gt=()=>{const{role:e}=d.useContext(U.RolesManagerContext),{t}=K(),o=n.useRequest({resource:`roles/${e==null?void 0:e.name}/departments`,action:"list",params:{appends:["parent","parent.parent(recursively=true)"]}},{ready:!!e,refreshDeps:[e]}),r=d.useMemo(()=>ut(),[e]);return s.jsx(n.ResourceActionContext.Provider,{value:o,children:s.jsx(n.CollectionProvider_deprecated,{collection:X,children:s.jsx(n.SchemaComponent,{schema:r,components:{DepartmentTable:ce,DepartmentTitle:mt},scope:{useFilterActionProps:J,useRemoveDepartment:vt,useBulkRemoveDepartments:yt,useDataSource:ht,useDisabled:ft,useAddDepartments:xt,t}})})})};class Dt extends n.Plugin{load(){return I(this,null,function*(){this.app.pm.get(U).rolesManager.add("departments",{title:L("Departments"),Component:gt})})}}const Y={name:"enableLink",type:"switch",useVisible(){return w.useField().readPretty},useComponentProps(){var p;const{t:e}=K(),t=w.useField(),{fieldSchema:o}=n.useColumnSchema(),r=w.useFieldSchema(),a=o||r,{dn:c}=n.useDesignable();return{title:e("Enable link"),checked:((p=a["x-component-props"])==null?void 0:p.enableLink)!==!1,onChange(i){a["x-component-props"]=S(f({},a==null?void 0:a["x-component-props"]),{enableLink:i}),t.componentProps.enableLink=i,c.emit("patch",{schema:{"x-uid":a["x-uid"],"x-component-props":f({},a==null?void 0:a["x-component-props"])}}),c.refresh()}}}},Z={name:"fieldComponent",type:"select",useComponentProps(){const{t:e}=K(),t=w.useField(),{fieldSchema:o,collectionField:r}=n.useColumnSchema(),a=w.useFieldSchema(),c=o||a,p=n.useFieldModeOptions({fieldSchema:o,collectionField:r}),{dn:i}=n.useDesignable();return{title:e("Field component"),options:p,value:"Select",onChange(u){const l={"x-uid":c["x-uid"]};c["x-component-props"]=c["x-component-props"]||{},c["x-component-props"].mode=u,l["x-component-props"]=c["x-component-props"],t.componentProps=t.componentProps||{},t.componentProps.mode=u,i.emit("patch",{schema:l}),i.refresh()}}}},R={name:"titleField",type:"select",useComponentProps(){var g,h,b,F;const{t:e}=K(),t=w.useField(),{dn:o}=n.useDesignable(),r=n.useTitleFieldOptions(),{fieldSchema:a,collectionField:c}=n.useColumnSchema(),p=w.useFieldSchema(),i=a||p,u=n.useCollectionField(),l=c||u,y=((g=t==null?void 0:t.componentProps)==null?void 0:g.fieldNames)||((h=i==null?void 0:i["x-component-props"])==null?void 0:h.fieldNames)||((F=(b=l==null?void 0:l.uiSchema)==null?void 0:b["x-component-props"])==null?void 0:F.fieldNames);return{title:e("Title field"),options:r,value:y==null?void 0:y.label,onChange(C){var D,k,O,E,q,N;const v={"x-uid":i["x-uid"]},x=S(f(f({},(k=(D=l==null?void 0:l.uiSchema)==null?void 0:D["x-component-props"])==null?void 0:k.fieldNames),(O=i==null?void 0:i["x-component-props"])==null?void 0:O.fieldNames),{label:C});i["x-component-props"]=i["x-component-props"]||{},i["x-component-props"].fieldNames=x,v["x-component-props"]=i["x-component-props"],t.componentProps.fieldNames=(E=i["x-component-props"])==null?void 0:E.fieldNames;const m=(N=t.path)==null?void 0:N.splice(((q=t.path)==null?void 0:q.length)-1,1);t.form.query(`${m.concat("*."+i.name)}`).forEach(ee=>{ee.componentProps.fieldNames=x.label}),o.emit("patch",{schema:v}),o.refresh()}}}},Ct=new n.SchemaSettings({name:"fieldSettings:component:DepartmentOwnersField",items:[Z,R,Y]}),bt=new n.SchemaSettings({name:"fieldSettings:component:UserDepartmentsField",items:[Z,R,Y]}),At=new n.SchemaSettings({name:"fieldSettings:component:UserMainDepartmentField",items:[Z,R,Y]});class pe extends n.Plugin{afterAdd(){return I(this,null,function*(){this.pm.add(dt),this.pm.add(Dt)})}load(){return I(this,null,function*(){this.app.addComponents({UserDepartmentsField:H,UserMainDepartmentField:H,DepartmentOwnersField:H}),this.app.schemaSettingsManager.add(bt),this.app.schemaSettingsManager.add(At),this.app.schemaSettingsManager.add(Ct)})}}P.DepartmentsPlugin=pe,P.default=pe,Object.defineProperties(P,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
package/dist/externalVersion.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module.exports = {
|
|
2
|
-
"@tachybase/client": "1.3.
|
|
3
|
-
"@tachybase/module-collection": "1.3.
|
|
4
|
-
"@tachybase/server": "1.3.
|
|
5
|
-
"@tachybase/schema": "1.3.
|
|
2
|
+
"@tachybase/client": "1.3.17",
|
|
3
|
+
"@tachybase/module-collection": "1.3.17",
|
|
4
|
+
"@tachybase/server": "1.3.17",
|
|
5
|
+
"@tachybase/schema": "1.3.17",
|
|
6
6
|
"react": "18.3.1",
|
|
7
7
|
"antd": "5.22.5",
|
|
8
|
-
"@tachybase/module-acl": "1.3.
|
|
9
|
-
"@tachybase/actions": "1.3.
|
|
10
|
-
"@tachybase/database": "1.3.
|
|
8
|
+
"@tachybase/module-acl": "1.3.17",
|
|
9
|
+
"@tachybase/actions": "1.3.17",
|
|
10
|
+
"@tachybase/database": "1.3.17",
|
|
11
11
|
"lodash": "4.17.21",
|
|
12
12
|
"ahooks": "3.8.4",
|
|
13
13
|
"@ant-design/icons": "5.3.7"
|
package/dist/index.js
CHANGED
|
@@ -26,12 +26,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var index_exports = {};
|
|
30
|
+
__export(index_exports, {
|
|
31
31
|
default: () => import_server.default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
__reExport(
|
|
33
|
+
module.exports = __toCommonJS(index_exports);
|
|
34
|
+
__reExport(index_exports, require("./server"), module.exports);
|
|
35
35
|
var import_server = __toESM(require("./server"));
|
|
36
36
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
37
|
0 && (module.exports = {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tachybase/plugin-department",
|
|
3
3
|
"displayName": "Department",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.17",
|
|
5
5
|
"description": "Organize users into a hierarchical tree structure of departments, and assign roles to departments as well.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"Users & permissions"
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"antd": "5.22.5",
|
|
16
16
|
"lodash": "4.17.21",
|
|
17
17
|
"react": "^18.3.1",
|
|
18
|
-
"@tachybase/schema": "1.3.
|
|
18
|
+
"@tachybase/schema": "1.3.17"
|
|
19
19
|
},
|
|
20
20
|
"peerDependencies": {
|
|
21
|
-
"@tachybase/actions": "1.3.
|
|
22
|
-
"@tachybase/
|
|
23
|
-
"@tachybase/
|
|
24
|
-
"@tachybase/
|
|
25
|
-
"@tachybase/
|
|
26
|
-
"@tachybase/
|
|
27
|
-
"@tachybase/
|
|
21
|
+
"@tachybase/actions": "1.3.17",
|
|
22
|
+
"@tachybase/database": "1.3.17",
|
|
23
|
+
"@tachybase/client": "1.3.17",
|
|
24
|
+
"@tachybase/schema": "1.3.17",
|
|
25
|
+
"@tachybase/server": "1.3.17",
|
|
26
|
+
"@tachybase/module-collection": "1.3.17",
|
|
27
|
+
"@tachybase/module-acl": "1.3.17"
|
|
28
28
|
},
|
|
29
29
|
"description.zh-CN": "将用户划分在树状的部门里,也可以给部门分配角色",
|
|
30
30
|
"displayName.zh-CN": "部门"
|