@feedmepos/mf-hrm-portal 2.0.17-dev.3 → 2.0.17-dev.4

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.
Files changed (51) hide show
  1. package/dist/{AuditLogList-C6qAeY5g.js → AuditLogList-CV82_8fj.js} +350 -324
  2. package/dist/EmployeeList-dE0So94R.js +736 -0
  3. package/dist/FormSection.vue_vue_type_script_setup_true_lang-BVb8c4YU.js +71 -0
  4. package/dist/HorizontalSplitter-o860F4xM.js +12 -0
  5. package/dist/{Main-Dkr5lzbv.js → Main-BAx-c_oZ.js} +9 -9
  6. package/dist/{Main-BNXKItvX.js → Main-CfAQYaaW.js} +14 -16
  7. package/dist/{Main--tejoyEP.js → Main-CyReTP3K.js} +8 -8
  8. package/dist/PermissionSetList-DmsJnW2i.js +341 -0
  9. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BbcY9q1x.js +3480 -0
  10. package/dist/RoleList-CKB8L-BW.js +530 -0
  11. package/dist/TeamMemberList-CszlbmAX.js +1108 -0
  12. package/dist/{TimesheetList-D-3k0Uad.js → TimesheetList-NRUfSiYL.js} +6 -6
  13. package/dist/{app-BjXuSCis.js → app-B0bANDrM.js} +1891 -1404
  14. package/dist/app.js +1 -1
  15. package/dist/{dayjs.min-z-vrgFCL.js → dayjs.min-DdUO0d-2.js} +1 -1
  16. package/dist/{employee-DAqAMupR.js → employee-DJDUT0Wj.js} +3 -3
  17. package/dist/{iteration-Cp1eSTJA.js → iteration-DqYIXL4P.js} +1 -1
  18. package/dist/{lodash-CXLZQQp8.js → lodash-BBQT31li.js} +1 -1
  19. package/dist/rule-T7VKkRdN.js +996 -0
  20. package/dist/src/api/report-query/index.d.ts +2 -2
  21. package/dist/src/components/CheckboxInput.vue.d.ts +1 -1
  22. package/dist/src/components/CollapsibleWrapper.vue.d.ts +0 -2
  23. package/dist/src/composables/useBasePermission.d.ts +1 -1
  24. package/dist/src/views/hr/locales/index.d.ts +172 -16
  25. package/dist/src/views/team/components/BasePermission.vue.d.ts +6 -2
  26. package/dist/src/views/team/components/PosRolePermission.vue.d.ts +2 -2
  27. package/dist/src/views/team/locales/index.d.ts +312 -32
  28. package/dist/src/views/team/member/AddMemberForm.vue.d.ts +3 -5
  29. package/dist/style.css +1 -1
  30. package/dist/{timesheet-BlPhOifI.js → timesheet-DjtuB4we.js} +2 -2
  31. package/dist/tsconfig.app.tsbuildinfo +1 -1
  32. package/dist/{useAppStore-BVnrWyPF.js → useAppStore-CBb-dugK.js} +1 -1
  33. package/dist/useDebounce-B8ZPVS5C.js +15 -0
  34. package/dist/useDiscardConfirm-BHni0LNu.js +28 -0
  35. package/dist/{useLoading-7ia-Bps7.js → useLoading-BCOj8y-t.js} +1 -1
  36. package/dist/useReportPermissions-DyzhBpi8.js +70 -0
  37. package/dist/useSearch-B6WK1LBB.js +15 -0
  38. package/package.json +2 -2
  39. package/dist/CollapsibleWrapper.vue_vue_type_script_setup_true_lang-BLJlmPVa.js +0 -58
  40. package/dist/EmployeeList-COtXtTqG.js +0 -827
  41. package/dist/FormItem.vue_vue_type_script_setup_true_lang-CoorkndT.js +0 -34
  42. package/dist/FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js +0 -49
  43. package/dist/PermissionSetList-B_Sdvbu7.js +0 -340
  44. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BBsaxaXu.js +0 -3439
  45. package/dist/RoleList-SZCgvYvC.js +0 -543
  46. package/dist/TeamMemberList-Dk5HeFfQ.js +0 -1008
  47. package/dist/rule-vBxopbM_.js +0 -990
  48. package/dist/team-CnQ_rIx2.js +0 -33
  49. package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
  50. package/dist/useReportPermissions-C8HMek35.js +0 -60
  51. package/dist/useSearch-BAPEUu1R.js +0 -15
@@ -0,0 +1,71 @@
1
+ import { defineComponent as i, createElementBlock as s, openBlock as o, createElementVNode as l, renderSlot as n, createCommentVNode as c, toDisplayString as a, normalizeClass as d, createVNode as m, withCtx as f } from "vue";
2
+ const p = { class: "space-y-8" }, y = { class: "flex items-center justify-between" }, h = { class: "space-y-8" }, u = { class: "fm-typo-en-body-lg-600" }, _ = {
3
+ key: 0,
4
+ class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
5
+ }, w = /* @__PURE__ */ i({
6
+ __name: "FormItem",
7
+ props: {
8
+ label: {},
9
+ description: {}
10
+ },
11
+ setup(e) {
12
+ return (t, r) => (o(), s("div", p, [
13
+ l("div", y, [
14
+ l("div", h, [
15
+ l("p", u, a(e.label), 1),
16
+ e.description ? (o(), s("p", _, a(e.description), 1)) : c("", !0)
17
+ ]),
18
+ n(t.$slots, "append")
19
+ ]),
20
+ n(t.$slots, "default")
21
+ ]));
22
+ }
23
+ }), b = /* @__PURE__ */ i({
24
+ __name: "FormColumn",
25
+ props: {
26
+ shrinkable: { type: Boolean }
27
+ },
28
+ setup(e) {
29
+ return (t, r) => (o(), s("div", {
30
+ class: d(["flex-1 flex flex-col space-y-24", { "min-h-0": e.shrinkable }])
31
+ }, [
32
+ n(t.$slots, "default")
33
+ ], 2));
34
+ }
35
+ }), k = {
36
+ key: 0,
37
+ class: "flex flex-row justify-between items-center"
38
+ }, $ = { class: "space-y-4" }, x = { class: "fm-typo-en-title-sm-600" }, v = {
39
+ key: 0,
40
+ class: "fm-typo-en-body-md-400 text-fm-color-typo-secondary"
41
+ }, B = /* @__PURE__ */ i({
42
+ __name: "FormSection",
43
+ props: {
44
+ title: {},
45
+ subTitle: {},
46
+ shrinkable: { type: Boolean }
47
+ },
48
+ setup(e) {
49
+ return (t, r) => (o(), s("div", {
50
+ class: d(["flex flex-col space-y-16", { "min-h-0": e.shrinkable }])
51
+ }, [
52
+ e.title ? (o(), s("div", k, [
53
+ l("div", $, [
54
+ l("p", x, a(e.title), 1),
55
+ e.subTitle ? (o(), s("p", v, a(e.subTitle), 1)) : c("", !0)
56
+ ]),
57
+ n(t.$slots, "append-title")
58
+ ])) : c("", !0),
59
+ m(b, { shrinkable: e.shrinkable }, {
60
+ default: f(() => [
61
+ n(t.$slots, "default")
62
+ ]),
63
+ _: 3
64
+ }, 8, ["shrinkable"])
65
+ ], 2));
66
+ }
67
+ });
68
+ export {
69
+ B as _,
70
+ w as a
71
+ };
@@ -0,0 +1,12 @@
1
+ import { createElementBlock as e, openBlock as o, createElementVNode as t } from "vue";
2
+ import { _ as l } from "./SelectFilter-DUj7GBtT.js";
3
+ const n = {};
4
+ function c(s, r) {
5
+ return o(), e("div", null, [...r[0] || (r[0] = [
6
+ t("div", { class: "h-px w-full bg-fm-color-neutral-gray-100" }, null, -1)
7
+ ])]);
8
+ }
9
+ const i = /* @__PURE__ */ l(n, [["render", c]]);
10
+ export {
11
+ i as H
12
+ };
@@ -3,18 +3,18 @@ import { useRouter as lf, useRoute as of } from "vue-router";
3
3
  import { useCoreStore as cf, useI18n as hf } from "@feedmepos/mf-common";
4
4
  import { _ as uf } from "./ResponsiveFabButton.vue_vue_type_script_setup_true_lang-Cn-3MRBO.js";
5
5
  import { _ as vf } from "./PageLayout.vue_vue_type_script_setup_true_lang-HKK4cbW8.js";
6
- import { u as pf } from "./useAppStore-BVnrWyPF.js";
6
+ import { u as pf } from "./useAppStore-CBb-dugK.js";
7
7
  import "@feedmepos/ui-library";
8
8
  /* empty css */
9
- import "./employee-DAqAMupR.js";
10
- import "./lodash-CXLZQQp8.js";
11
- import "./iteration-Cp1eSTJA.js";
9
+ import "./employee-DJDUT0Wj.js";
10
+ import "./lodash-BBQT31li.js";
11
+ import "./iteration-DqYIXL4P.js";
12
12
  /* empty css */
13
- import { R as vt } from "./app-BjXuSCis.js";
14
- import "./rule-vBxopbM_.js";
15
- import "./useReportPermissions-C8HMek35.js";
16
- import "./dayjs.min-z-vrgFCL.js";
17
- import "./timesheet-BlPhOifI.js";
13
+ import { R as vt } from "./app-B0bANDrM.js";
14
+ import "./rule-T7VKkRdN.js";
15
+ import "./useReportPermissions-DyzhBpi8.js";
16
+ import "./dayjs.min-DdUO0d-2.js";
17
+ import "./timesheet-DjtuB4we.js";
18
18
  var In = {};
19
19
  /*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */
20
20
  var Zt = {};
@@ -4,20 +4,18 @@ import { useI18n as N } from "@feedmepos/mf-common";
4
4
  import { _ as g } from "./ResponsiveFabButton.vue_vue_type_script_setup_true_lang-Cn-3MRBO.js";
5
5
  import { _ as h } from "./PageLayout.vue_vue_type_script_setup_true_lang-HKK4cbW8.js";
6
6
  import "@feedmepos/ui-library";
7
- import "./rule-vBxopbM_.js";
8
- import "./lodash-CXLZQQp8.js";
9
- import "./iteration-Cp1eSTJA.js";
10
- import "./useAppStore-BVnrWyPF.js";
11
- import { R as v } from "./app-BjXuSCis.js";
7
+ import "./rule-T7VKkRdN.js";
8
+ import "./iteration-DqYIXL4P.js";
9
+ import { R as v } from "./app-B0bANDrM.js";
10
+ import "./useAppStore-CBb-dugK.js";
12
11
  /* empty css */
13
- /* empty css */
14
- import "./team-CnQ_rIx2.js";
15
- const w = { class: "space-y-24" }, Q = /* @__PURE__ */ V({
12
+ /* empty css */
13
+ const w = { class: "space-y-24" }, K = /* @__PURE__ */ V({
16
14
  __name: "Main",
17
15
  setup(x) {
18
16
  const { t: a } = N(), f = k(), R = F(), _ = u(), b = u(), t = u("member");
19
17
  R.name === v.TEAM_ROLE ? t.value = "role" : t.value = "member";
20
- const r = B(() => n.value.find((e) => e.value === t.value) || n.value[0]);
18
+ const l = B(() => n.value.find((e) => e.value === t.value) || n.value[0]);
21
19
  A(t, (e) => {
22
20
  e === "member" ? f.replace({ name: v.TEAM_MEMBER }) : e === "role" && f.replace({ name: v.TEAM_ROLE });
23
21
  });
@@ -41,20 +39,20 @@ const w = { class: "space-y-24" }, Q = /* @__PURE__ */ V({
41
39
  }
42
40
  }
43
41
  ]);
44
- return (e, l) => {
42
+ return (e, r) => {
45
43
  const L = i("FmSpacer"), E = i("FmTabs"), M = i("RouterView");
46
44
  return c(), s(h, {
47
- heading: r.value.label
45
+ heading: l.value.label
48
46
  }, {
49
47
  "append-heading": p(() => {
50
48
  var o;
51
49
  return [
52
50
  d(L),
53
- (o = r.value) != null && o.createButtonLabel ? (c(), s(g, {
51
+ (o = l.value) != null && o.createButtonLabel ? (c(), s(g, {
54
52
  key: 0,
55
53
  icon: "add",
56
- label: r.value.createButtonLabel,
57
- onClick: l[0] || (l[0] = (m) => r.value.createButtonAction())
54
+ label: l.value.createButtonLabel,
55
+ onClick: r[0] || (r[0] = (m) => l.value.createButtonAction())
58
56
  }, null, 8, ["label"])) : S("", !0)
59
57
  ];
60
58
  }),
@@ -62,7 +60,7 @@ const w = { class: "space-y-24" }, Q = /* @__PURE__ */ V({
62
60
  C("div", w, [
63
61
  d(E, {
64
62
  modelValue: t.value,
65
- "onUpdate:modelValue": l[1] || (l[1] = (o) => t.value = o),
63
+ "onUpdate:modelValue": r[1] || (r[1] = (o) => t.value = o),
66
64
  items: n.value
67
65
  }, null, 8, ["modelValue", "items"]),
68
66
  d(M, null, {
@@ -83,5 +81,5 @@ const w = { class: "space-y-24" }, Q = /* @__PURE__ */ V({
83
81
  }
84
82
  });
85
83
  export {
86
- Q as default
84
+ K as default
87
85
  };
@@ -1,17 +1,17 @@
1
1
  import { ref as S, defineComponent as J, computed as F, watch as ce, resolveComponent as h, createElementBlock as D, openBlock as I, Fragment as W, renderSlot as ge, createVNode as n, unref as s, withCtx as x, createElementVNode as l, toDisplayString as k, createBlock as K, isRef as ae, renderList as fe, createCommentVNode as ve, withModifiers as se, createTextVNode as re, normalizeClass as _e, h as _ } from "vue";
2
2
  import { useCoreStore as Q, useI18n as X, RestaurantSelector as oe } from "@feedmepos/mf-common";
3
3
  import { _ as ye } from "./PageLayout.vue_vue_type_script_setup_true_lang-HKK4cbW8.js";
4
- import { u as Y } from "./useAppStore-BVnrWyPF.js";
4
+ import { u as Y } from "./useAppStore-CBb-dugK.js";
5
5
  import { defineStore as Ue } from "pinia";
6
- import { g as z, a as he, b as O } from "./iteration-Cp1eSTJA.js";
6
+ import { g as z, a as he, b as O } from "./iteration-DqYIXL4P.js";
7
7
  import { useSnackbar as ie, components as E, useDialog as xe, useBreakpoints as be, FmButtonVariant as q } from "@feedmepos/ui-library";
8
8
  import { S as ne } from "./SelectFilter-DUj7GBtT.js";
9
- import { _ as we } from "./app-BjXuSCis.js";
10
- import { _ as le, H as ke } from "./FormItem.vue_vue_type_script_setup_true_lang-CoorkndT.js";
9
+ import { _ as we } from "./app-B0bANDrM.js";
10
+ import { H as ke } from "./HorizontalSplitter-o860F4xM.js";
11
11
  import { _ as Ve } from "./index.vue_vue_type_script_setup_true_lang-Vc5ARO29.js";
12
- import { u as Fe } from "./useSearch-BAPEUu1R.js";
13
- import { u as ue } from "./useLoading-7ia-Bps7.js";
14
- import { _ as Ie } from "./FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js";
12
+ import { u as Fe } from "./useSearch-B6WK1LBB.js";
13
+ import { u as ue } from "./useLoading-BCOj8y-t.js";
14
+ import { _ as Ie, a as le } from "./FormSection.vue_vue_type_script_setup_true_lang-BVb8c4YU.js";
15
15
  const H = {
16
16
  async getGrantUsers() {
17
17
  return z(await O("grant").get(""));
@@ -247,7 +247,7 @@ const H = {
247
247
  } = Y(), r = F(() => b.grantUsers), {
248
248
  searchKey: c,
249
249
  filter: i
250
- } = Fe(), w = F(() => {
250
+ } = Fe(""), w = F(() => {
251
251
  var t;
252
252
  return (t = r.value) == null ? void 0 : t.filter((e) => {
253
253
  const v = !U.value || U.value.includes(e.restaurantId), T = !B.value || B.value.includes(e.status), A = C.value[e.restaurantId] || "", j = V.value[e.roleId] || "";
@@ -0,0 +1,341 @@
1
+ import { defineComponent as M, computed as S, resolveComponent as d, createElementBlock as $, openBlock as g, createElementVNode as x, createVNode as m, toDisplayString as L, unref as c, withCtx as P, createTextVNode as oe, Fragment as H, renderList as ne, ref as _, watch as ie, createBlock as q, nextTick as ae, onMounted as re, h as z } from "vue";
2
+ import { useI18n as K, useCoreStore as le } from "@feedmepos/mf-common";
3
+ import { useSnackbar as Q, useDialog as me, useBreakpoints as ce, components as ue, FmButtonColorThemeVariant as de, FmButtonVariant as pe } from "@feedmepos/ui-library";
4
+ import { _ as fe } from "./index.vue_vue_type_script_setup_true_lang-Vc5ARO29.js";
5
+ import { d as G, q as ve, u as Y, c as Z, p as J, i as Se, b as be, m as N, k as _e, l as he, s as Pe, n as ge } from "./rule-T7VKkRdN.js";
6
+ import { A as ye } from "./iteration-DqYIXL4P.js";
7
+ import { u as Fe } from "./useLoading-BCOj8y-t.js";
8
+ import { d as X } from "./app-B0bANDrM.js";
9
+ import { a as Ve } from "./PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BbcY9q1x.js";
10
+ const we = { class: "flex flex-row items-center gap-8" }, xe = /* @__PURE__ */ M({
11
+ __name: "PermissionWithTooltip",
12
+ props: {
13
+ modelValue: {
14
+ type: Array,
15
+ required: !0
16
+ }
17
+ },
18
+ setup(E) {
19
+ const { customReportPermissions: R } = G(), t = E, i = S(() => ve(t.modelValue, R.value)), { t: a } = K();
20
+ return (k, C) => {
21
+ const h = d("FmIcon"), y = d("FmTooltip");
22
+ return g(), $("div", we, [
23
+ x("span", null, L(c(a)("team.labels.allowed", { count: i.value.length })), 1),
24
+ m(y, {
25
+ variant: "plain",
26
+ placement: "top"
27
+ }, {
28
+ content: P(() => [
29
+ x("div", null, [
30
+ oe(L(c(a)("team.labels.permission")) + " ", 1),
31
+ (g(!0), $(H, null, ne(i.value, (l, r) => (g(), $("div", {
32
+ key: `${l}-${r}`
33
+ }, " - " + L(l), 1))), 128))
34
+ ])
35
+ ]),
36
+ default: P(() => [
37
+ m(h, {
38
+ name: "info",
39
+ class: "cursor-pointer text-fm-color-neutral-gray-300"
40
+ })
41
+ ]),
42
+ _: 1
43
+ })
44
+ ]);
45
+ };
46
+ }
47
+ }), Re = { class: "fm-typo-en-title-md-600" }, ke = { class: "flex items-center justify-start gap-8" }, Ce = /* @__PURE__ */ M({
48
+ __name: "PermissionSetForm",
49
+ props: {
50
+ modelValue: {
51
+ type: Object,
52
+ default: () => ({})
53
+ }
54
+ },
55
+ setup(E, { expose: R }) {
56
+ const t = E, { t: i } = K(), a = _(!1), k = S(() => {
57
+ var e;
58
+ return (e = t.modelValue) != null && e.id ? i("permissionSet.form.update.title") : i("permissionSet.form.create.title");
59
+ }), C = _(), h = Q(), y = Fe(h), l = Y(), r = _({ ...t.modelValue }), p = _([]), f = _([]), A = [(e) => !!e || i("permissionSet.form.nameRequired")], D = S(() => {
60
+ var e;
61
+ return (e = t.modelValue) != null && e.id ? i("permissionSet.form.update.confirmButtonLabel") : i("permissionSet.form.create.confirmButtonLabel");
62
+ }), U = S(
63
+ () => l.permissionSets.value.filter((e) => {
64
+ var s;
65
+ return e.id !== ((s = t.modelValue) == null ? void 0 : s.id);
66
+ }).map((e) => ({ label: e.name, value: e.id }))
67
+ ), F = S(
68
+ () => Z(p.value, l.permissionSets.value)
69
+ ), {
70
+ fetchCustomReportPermissions: W,
71
+ customReportPermissions: n,
72
+ isLoaded: o
73
+ } = G(), u = new Set(
74
+ J.filter((e) => e.subject.startsWith(Se)).map((e) => e.subject)
75
+ ), I = S(() => {
76
+ const e = new Set(u);
77
+ for (const s of n.value) e.add(s.subject);
78
+ return e;
79
+ }), O = S(() => {
80
+ const e = /* @__PURE__ */ new Set();
81
+ for (const s of J)
82
+ s.category === X.reports && e.add(s.subject);
83
+ for (const s of n.value)
84
+ s.category === X.reports && e.add(s.subject);
85
+ return e;
86
+ });
87
+ async function T() {
88
+ var s, v;
89
+ await ae(), a.value = !a.value, r.value = { ...t.modelValue }, p.value = ((s = t.modelValue) == null ? void 0 : s.permissionSetIds) ?? [];
90
+ const e = ((v = t.modelValue) == null ? void 0 : v.permissions) ?? [];
91
+ f.value = be(
92
+ N(F.value),
93
+ e
94
+ );
95
+ }
96
+ ie(a, async (e) => {
97
+ e && await W();
98
+ });
99
+ function ee() {
100
+ const e = N(F.value), s = o.value ? I.value : u, v = _e(f.value, s), V = he(v, O.value), w = Pe(V);
101
+ return ge(e, w);
102
+ }
103
+ function se() {
104
+ f.value = N(F.value);
105
+ }
106
+ async function te() {
107
+ var v, V;
108
+ const e = await ((v = C.value) == null ? void 0 : v.validateInputsWithoutSubmit()), s = (V = le().currentBusiness.value) == null ? void 0 : V.id;
109
+ !(e != null && e.length) && s && y.minor(async () => {
110
+ var j;
111
+ const w = ee();
112
+ if ((j = t.modelValue) != null && j.id) {
113
+ const B = {
114
+ name: r.value.name,
115
+ permissions: w,
116
+ permissionSetIds: p.value,
117
+ businessId: r.value.businessId
118
+ };
119
+ await l.updatePermissionSet(t.modelValue.id, B);
120
+ } else {
121
+ const B = {
122
+ name: r.value.name,
123
+ businessId: s,
124
+ permissions: w,
125
+ permissionSetIds: p.value
126
+ };
127
+ await l.createPermissionSet(B);
128
+ }
129
+ a.value = !1;
130
+ });
131
+ }
132
+ return R({
133
+ trigger: T
134
+ }), (e, s) => {
135
+ const v = d("FmTextField"), V = d("FmSelect"), w = d("FmForm"), j = d("FmButton"), B = d("FmSideSheet");
136
+ return g(), q(B, {
137
+ modelValue: a.value,
138
+ "onUpdate:modelValue": s[4] || (s[4] = (b) => a.value = b),
139
+ "max-width": 560,
140
+ "dismiss-away": ""
141
+ }, {
142
+ "side-sheet-header": P(() => [
143
+ x("p", Re, L(k.value), 1)
144
+ ]),
145
+ "side-sheet-footer": P(() => [
146
+ x("div", ke, [
147
+ m(j, {
148
+ label: D.value,
149
+ size: "md",
150
+ variant: "primary",
151
+ type: "submit",
152
+ onClick: te
153
+ }, null, 8, ["label"]),
154
+ m(j, {
155
+ label: c(i)("common.cancel"),
156
+ size: "md",
157
+ variant: "secondary",
158
+ onClick: s[3] || (s[3] = (b) => a.value = !1)
159
+ }, null, 8, ["label"])
160
+ ])
161
+ ]),
162
+ default: P(() => [
163
+ m(w, {
164
+ ref_key: "formRef",
165
+ ref: C
166
+ }, {
167
+ default: P(() => [
168
+ m(v, {
169
+ modelValue: r.value.name,
170
+ "onUpdate:modelValue": s[0] || (s[0] = (b) => r.value.name = b),
171
+ label: c(i)("permissionSet.form.name"),
172
+ placeholder: c(i)("permissionSet.form.namePlaceholder"),
173
+ rules: A
174
+ }, null, 8, ["modelValue", "label", "placeholder"]),
175
+ m(V, {
176
+ modelValue: p.value,
177
+ "onUpdate:modelValue": [
178
+ s[1] || (s[1] = (b) => p.value = b),
179
+ se
180
+ ],
181
+ multiselect: "",
182
+ searchable: "",
183
+ "search-debounce": 300,
184
+ items: U.value,
185
+ label: c(i)("permissionSet.form.includedSets"),
186
+ placeholder: c(i)("permissionSet.form.includedSetsPlaceholder"),
187
+ class: "mt-16"
188
+ }, null, 8, ["modelValue", "items", "label", "placeholder"]),
189
+ m(Ve, {
190
+ modelValue: f.value,
191
+ "onUpdate:modelValue": s[2] || (s[2] = (b) => f.value = b),
192
+ "inherit-permissions": F.value,
193
+ class: "mt-24"
194
+ }, null, 8, ["modelValue", "inherit-permissions"])
195
+ ]),
196
+ _: 1
197
+ }, 512)
198
+ ]),
199
+ _: 1
200
+ }, 8, ["modelValue"]);
201
+ };
202
+ }
203
+ }), Ie = { class: "space-y-8" }, Te = { class: "flex justify-end xs:px-16" }, We = /* @__PURE__ */ M({
204
+ __name: "PermissionSetList",
205
+ setup(E, { expose: R }) {
206
+ const { t } = K(), { fetchCustomReportPermissions: i } = G(), a = Q(), k = me(), { breakpoints: C } = ce(), h = _(""), y = S(() => {
207
+ var n;
208
+ return (n = p.value) == null ? void 0 : n.filter((o) => {
209
+ const u = h.value.toLowerCase();
210
+ return o.name.toLowerCase().includes(u);
211
+ });
212
+ }), l = _(), r = Y(), p = S(
213
+ () => r.permissionSets.value
214
+ ), f = _();
215
+ async function A() {
216
+ await r.readPermissionSets();
217
+ }
218
+ function D(n) {
219
+ var o;
220
+ f.value = n, (o = l.value) == null || o.trigger();
221
+ }
222
+ const U = [
223
+ {
224
+ accessorKey: "name",
225
+ header: () => t("permissionSet.table.columns.name")
226
+ },
227
+ {
228
+ accessorKey: "permission",
229
+ header: () => t("permissionSet.table.columns.permissions"),
230
+ enableSorting: !1,
231
+ cell(n) {
232
+ const o = n.row.original, u = Z(
233
+ [o.id],
234
+ r.permissionSets.value
235
+ ), I = N(u);
236
+ return z(xe, { modelValue: I });
237
+ }
238
+ },
239
+ {
240
+ id: "action",
241
+ meta: {
242
+ cellClass: "pl-16",
243
+ headerContentClass: "-mx-16"
244
+ },
245
+ cell(n) {
246
+ return z("div", { class: "w-full flex justify-end items-center" }, [
247
+ z(ue.FmButton, {
248
+ prependIcon: "delete",
249
+ variant: pe.Tertiary,
250
+ textColor: de.NeutralGray400,
251
+ class: "flex flex-end",
252
+ onClick: (o) => {
253
+ o.stopPropagation(), W(n.row.original);
254
+ }
255
+ })
256
+ ]);
257
+ },
258
+ enableSorting: !1
259
+ }
260
+ ];
261
+ function F() {
262
+ var n;
263
+ f.value = void 0, (n = l.value) == null || n.trigger();
264
+ }
265
+ async function W(n) {
266
+ k.open({
267
+ title: t("permissionSet.form.delete.title"),
268
+ message: t("permissionSet.form.delete.confirmationMessage", { permissionSetName: n.name }),
269
+ minWidth: C.value.lg ? 588 : 0,
270
+ primaryActions: {
271
+ text: t("common.remove"),
272
+ close: !1,
273
+ variant: "destructive"
274
+ },
275
+ secondaryActions: { text: t("common.cancel"), close: !0 }
276
+ }).onPrimary(async () => {
277
+ try {
278
+ await r.deletePermissionSet(n.id), a.open({
279
+ message: t("permissionSet.form.delete.successMessage", { permissionSetName: n.name }),
280
+ type: "success"
281
+ });
282
+ } catch (o) {
283
+ const u = o instanceof ye && o.status === 409 ? o.message.includes("referenced by") ? t("permissionSet.form.delete.setReferencedConflictError", {
284
+ permissionSetName: n.name
285
+ }) : t("permissionSet.form.delete.conflictError", { permissionSetName: n.name }) : o instanceof Error ? o.message : `${o}`;
286
+ a.open({ message: u, type: "error" });
287
+ }
288
+ k.close();
289
+ });
290
+ }
291
+ return re(() => {
292
+ A(), i();
293
+ }), R({
294
+ create: F
295
+ }), (n, o) => {
296
+ const u = d("FmSearch"), I = d("FmTable"), O = d("FullWrapper");
297
+ return g(), $(H, null, [
298
+ m(Ce, {
299
+ ref_key: "permissionSetFormRef",
300
+ ref: l,
301
+ "model-value": f.value
302
+ }, null, 8, ["model-value"]),
303
+ x("div", Ie, [
304
+ x("div", Te, [
305
+ m(u, {
306
+ modelValue: h.value,
307
+ "onUpdate:modelValue": o[0] || (o[0] = (T) => h.value = T),
308
+ class: "w-[320px] xs:w-full",
309
+ autofocus: "",
310
+ placeholder: c(t)("permissionSet.search.placeholder")
311
+ }, null, 8, ["modelValue", "placeholder"])
312
+ ]),
313
+ p.value.length > 0 ? (g(), q(O, {
314
+ key: 0,
315
+ class: "overflow-auto"
316
+ }, {
317
+ default: P(() => [
318
+ m(I, {
319
+ "column-defs": U,
320
+ "row-data": y.value,
321
+ "page-size": y.value.length,
322
+ "pin-header-row": "",
323
+ "hide-footer": "",
324
+ "shrink-at": !1,
325
+ onRowClick: o[1] || (o[1] = (T) => D(T.original))
326
+ }, null, 8, ["row-data", "page-size"])
327
+ ]),
328
+ _: 1
329
+ })) : (g(), q(c(fe), {
330
+ key: 1,
331
+ title: c(t)("permissionSet.noData.title"),
332
+ subtitle: c(t)("permissionSet.noData.subtitle")
333
+ }, null, 8, ["title", "subtitle"]))
334
+ ])
335
+ ], 64);
336
+ };
337
+ }
338
+ });
339
+ export {
340
+ We as default
341
+ };