@feedmepos/mf-hrm-portal 2.3.2-dev.2 → 2.3.2-dev.3

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 (99) hide show
  1. package/dist/{ApprovalCodeList-sHnINTik.js → ApprovalCodeList-D3U4nvlF.js} +15 -14
  2. package/dist/{AuditLogList-C9C2emU9.js → AuditLogList-qGCW7tf0.js} +13 -13
  3. package/dist/ConditionBuilderForm.vue_vue_type_script_setup_true_lang-B0VcRYUg.js +438 -0
  4. package/dist/EmployeeList-Bd73xDCX.js +776 -0
  5. package/dist/FormItem.vue_vue_type_script_setup_true_lang-cLEnrtC6.js +45 -0
  6. package/dist/FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js +49 -0
  7. package/dist/{GrantUserList-LWpqhl-5.js → GrantUserList-C71pal0N.js} +16 -15
  8. package/dist/{Main-PBJjfzBg.js → Main-BWJPyEU1.js} +5 -5
  9. package/dist/{Main-BWKb-QIE.js → Main-CCdTWngg.js} +11 -11
  10. package/dist/Main-DGf0bQvy.js +96 -0
  11. package/dist/PasscodePinField.vue_vue_type_script_setup_true_lang-CqG0v0Sz.js +243 -0
  12. package/dist/{PermissionSetList-D2qZVlF4.js → PermissionSetList-BS-oBunI.js} +46 -45
  13. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CkOAT-oX.js +4167 -0
  14. package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js +35 -0
  15. package/dist/RoleList-B_7UnVNb.js +740 -0
  16. package/dist/{ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Cs0rhCa3.js → ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BXihM4sl.js} +1 -1
  17. package/dist/{ScheduleGeneralPage-C4J6jYtG.js → ScheduleGeneralPage-DpNvWNGs.js} +2 -2
  18. package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-3UqO6uPu.js → ScheduleModal.vue_vue_type_script_setup_true_lang-DIYLOF9N.js} +186 -187
  19. package/dist/{SchedulePage-ICzggri0.js → SchedulePage-QW-cYvu2.js} +13 -13
  20. package/dist/{SchedulePositionPage-BshUCd_C.js → SchedulePositionPage-BtFfVo2N.js} +3 -3
  21. package/dist/{SelectFilter-D9T0nFvG.js → SelectFilter-BXeVKgHN.js} +1 -1
  22. package/dist/TeamMemberList-DoisBYnk.js +1154 -0
  23. package/dist/{TimesheetList-nxhr0EWj.js → TimesheetList-D-bESKe5.js} +9 -9
  24. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BLqgALLe.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-D0zAVqCa.js} +3 -3
  25. package/dist/{app-n6d4AmtP.js → app-D-MUq9Ab.js} +3429 -6368
  26. package/dist/app.js +3 -3
  27. package/dist/{approval-code-1j1OoXt1.js → approval-code-BXUiojPH.js} +1 -1
  28. package/dist/{dayjs.min-DdNivv4b.js → dayjs.min-BZ1pM-6M.js} +34 -34
  29. package/dist/{employee-BlfleiCU.js → employee-HQEU8fjb.js} +47 -48
  30. package/dist/{grant-user-BmTyexk3.js → grant-user-CBJ3gEgW.js} +1 -1
  31. package/dist/{iteration-y_jodvfN.js → iteration-ogxW2-Tv.js} +1 -1
  32. package/dist/{lodash-B2eWEGH4.js → lodash-Def4gaas.js} +1 -1
  33. package/dist/restaurant-D2mfKHaH.js +1880 -0
  34. package/dist/{role-DfZi7Ssk.js → role-JDoDFVd9.js} +4 -5
  35. package/dist/{rule-ChmhcGgA.js → rule-DPtqlnz-.js} +100 -105
  36. package/dist/src/components/CollapsibleWrapper.vue.d.ts +3 -11
  37. package/dist/src/helpers/string.d.ts +1 -10
  38. package/dist/src/router/shared.d.ts +1 -3
  39. package/dist/src/stores/restaurant.d.ts +7 -7
  40. package/dist/src/stores/team.d.ts +0 -30
  41. package/dist/src/types/team.d.ts +1 -17
  42. package/dist/src/views/hr/locales/index.d.ts +4 -24
  43. package/dist/src/views/hr/role/RoleForm.vue.d.ts +2 -29
  44. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +1 -1
  45. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +1 -1
  46. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -1
  47. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +1 -1
  48. package/dist/src/views/team/components/BasePermission.vue.d.ts +0 -11
  49. package/dist/src/views/team/components/ConditionPermission.vue.d.ts +0 -11
  50. package/dist/src/views/team/components/PortalPermissionEditor.vue.d.ts +0 -21
  51. package/dist/src/views/team/components/PosRolePermission.vue.d.ts +0 -11
  52. package/dist/src/views/team/locales/index.d.ts +0 -716
  53. package/dist/src/views/team/member/AddMemberForm.vue.d.ts +3 -48
  54. package/dist/src/views/team/{components/MemberStatusBadge.vue.d.ts → member/MemberInfo.vue.d.ts} +2 -2
  55. package/dist/src/views/team/member/TeamMemberList.vue.d.ts +0 -1
  56. package/dist/string-VNuQNweN.js +15 -0
  57. package/dist/style.css +1 -1
  58. package/dist/tsconfig.app.tsbuildinfo +1 -1
  59. package/dist/{useAppStore-BPARQyvJ.js → useAppStore-DZCdxlCd.js} +1 -1
  60. package/dist/{useLoading-iPESFb6R.js → useLoading-Nygx2zn8.js} +1 -1
  61. package/dist/{useReportPermissions-By-BoJZb.js → useReportPermissions-CxV7Dz1B.js} +5 -5
  62. package/package.json +2 -2
  63. package/dist/ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BbsPesWY.js +0 -459
  64. package/dist/EmployeeList-D4oy5hXz.js +0 -896
  65. package/dist/FormSection.vue_vue_type_script_setup_true_lang-Cl053Tg1.js +0 -90
  66. package/dist/Main-CVGiOYpC.js +0 -101
  67. package/dist/MyPosProfile-BQCBFMFw.js +0 -301
  68. package/dist/PasscodePinField.vue_vue_type_script_setup_true_lang-TXPEqa46.js +0 -126
  69. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-ZSREAS1r.js +0 -4243
  70. package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DRGTxOMW.js +0 -1831
  71. package/dist/RoleForm.vue_vue_type_script_setup_true_lang-DFDTw0lj.js +0 -547
  72. package/dist/RoleList-DG0crFzW.js +0 -274
  73. package/dist/TeamMemberList-C970Iqlj.js +0 -2086
  74. package/dist/member-grant-CzZUdO_s.js +0 -55
  75. package/dist/restaurant-Dl6yx37M.js +0 -51
  76. package/dist/src/api/my-pos-profile/index.d.ts +0 -5
  77. package/dist/src/api/sso-provider/index.d.ts +0 -5
  78. package/dist/src/api/staff-invite/index.d.ts +0 -16
  79. package/dist/src/components/form/SegmentedTabs.vue.d.ts +0 -23
  80. package/dist/src/composables/useMenuAccess.d.ts +0 -56
  81. package/dist/src/composables/useSsoProviders.d.ts +0 -19
  82. package/dist/src/composables/useStaffInviteProviders.d.ts +0 -8
  83. package/dist/src/helpers/member-grant.d.ts +0 -36
  84. package/dist/src/helpers/my-pos-profile.d.ts +0 -37
  85. package/dist/src/helpers/pos-assignment-rows.d.ts +0 -28
  86. package/dist/src/helpers/staff-invite.d.ts +0 -54
  87. package/dist/src/router/menu-access-guard.d.ts +0 -17
  88. package/dist/src/types/my-pos-profile.d.ts +0 -25
  89. package/dist/src/types/sso-provider.d.ts +0 -10
  90. package/dist/src/types/staff-invite.d.ts +0 -100
  91. package/dist/src/views/my-pos-profile/MyPosProfile.vue.d.ts +0 -2
  92. package/dist/src/views/my-pos-profile/components/PasscodeChangedDialog.vue.d.ts +0 -4
  93. package/dist/src/views/my-pos-profile/locales/index.d.ts +0 -200
  94. package/dist/src/views/team/components/MemberGrantFields.vue.d.ts +0 -51
  95. package/dist/src/views/team/components/PosAssignmentRows.vue.d.ts +0 -44
  96. package/dist/src/views/team/member/ExistingMemberNotice.vue.d.ts +0 -11
  97. package/dist/src/views/team/member/MemberDetailsCard.vue.d.ts +0 -35
  98. package/dist/src/views/team/member/MemberHeaderCard.vue.d.ts +0 -19
  99. package/dist/string-DZQ1uNjn.js +0 -22
@@ -1,14 +1,15 @@
1
1
  import { defineComponent as re, ref as K, computed as g, resolveComponent as b, createBlock as O, openBlock as _, withCtx as $, createElementVNode as s, createElementBlock as S, createCommentVNode as Y, toDisplayString as C, unref as a, Fragment as H, renderList as te, createVNode as c, renderSlot as xe, isRef as ue, withModifiers as de, createTextVNode as be, normalizeClass as ke, h as x } from "vue";
2
- import { d as Ve } from "./dayjs.min-DdNivv4b.js";
2
+ import { d as Ve } from "./dayjs.min-BZ1pM-6M.js";
3
3
  import { useI18n as ne } from "@feedmepos/mf-common";
4
4
  import { useSnackbar as ie, components as z, useDialog as we, useBreakpoints as Fe, FmButtonVariant as se } from "@feedmepos/ui-library";
5
- import { S as q } from "./SelectFilter-D9T0nFvG.js";
6
- import { _ as $e } from "./app-n6d4AmtP.js";
7
- import { _ as Se, a as pe, u as Ae, H as Pe } from "./FormSection.vue_vue_type_script_setup_true_lang-Cl053Tg1.js";
8
- import { _ as Be } from "./index.vue_vue_type_script_setup_true_lang-BVVwfd7B.js";
9
- import { u as ve } from "./useLoading-iPESFb6R.js";
10
- import { u as fe } from "./approval-code-1j1OoXt1.js";
11
- import { u as ce } from "./restaurant-Dl6yx37M.js";
5
+ import { S as q } from "./SelectFilter-BXeVKgHN.js";
6
+ import { _ as $e } from "./app-D-MUq9Ab.js";
7
+ import { _ as pe, u as Se, H as Ae } from "./FormItem.vue_vue_type_script_setup_true_lang-cLEnrtC6.js";
8
+ import { _ as Pe } from "./index.vue_vue_type_script_setup_true_lang-BVVwfd7B.js";
9
+ import { u as ve } from "./useLoading-Nygx2zn8.js";
10
+ import { u as fe } from "./approval-code-BXUiojPH.js";
11
+ import { u as ce } from "./restaurant-D2mfKHaH.js";
12
+ import { _ as Be } from "./FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js";
12
13
  function Ie(d) {
13
14
  var e;
14
15
  const r = (e = d.conditions) == null ? void 0 : e.adjustment;
@@ -263,7 +264,7 @@ const je = { class: "pr-24" }, De = { class: "fm-typo-en-title-md-600" }, Re = {
263
264
  ]),
264
265
  default: $(() => [
265
266
  s("div", He, [
266
- c(Se, {
267
+ c(Be, {
267
268
  title: a(i)("approvalCode.form.section")
268
269
  }, {
269
270
  default: $(() => [
@@ -381,7 +382,7 @@ const je = { class: "pr-24" }, De = { class: "fm-typo-en-title-md-600" }, Re = {
381
382
  class: "text-xs"
382
383
  }, Ct = {
383
384
  class: "flex flex-col gap-4"
384
- }, me = 10, gt = 2, Bt = /* @__PURE__ */ re({
385
+ }, me = 10, gt = 2, It = /* @__PURE__ */ re({
385
386
  __name: "ApprovalCodeList",
386
387
  setup(d, {
387
388
  expose: r
@@ -396,7 +397,7 @@ const je = { class: "pr-24" }, De = { class: "fm-typo-en-title-md-600" }, Re = {
396
397
  }))), M = g(() => w.approvalCodes), {
397
398
  searchKey: p,
398
399
  filter: B
399
- } = Ae(), I = g(() => {
400
+ } = Se(), I = g(() => {
400
401
  const t = {};
401
402
  return i.value.forEach((o) => {
402
403
  t[o._id] = o.profile.name;
@@ -646,7 +647,7 @@ const je = { class: "pr-24" }, De = { class: "fm-typo-en-title-md-600" }, Re = {
646
647
  "onUpdate:modelValue": o[5] || (o[5] = (l) => ue(p) ? p.value = l : null),
647
648
  autofocus: "",
648
649
  placeholder: a(e)("approvalCode.search.placeholder")
649
- }, null, 8, ["modelValue", "placeholder"])]), c(Pe), s("div", rt, [c(q, {
650
+ }, null, 8, ["modelValue", "placeholder"])]), c(Ae), s("div", rt, [c(q, {
650
651
  modelValue: V.value,
651
652
  "onUpdate:modelValue": o[6] || (o[6] = (l) => V.value = l),
652
653
  multiple: "",
@@ -714,7 +715,7 @@ const je = { class: "pr-24" }, De = { class: "fm-typo-en-title-md-600" }, Re = {
714
715
  _: 1
715
716
  })])]),
716
717
  _: 1
717
- })) : (_(), O(a(Be), {
718
+ })) : (_(), O(a(Pe), {
718
719
  key: 1,
719
720
  title: a(e)("approvalCode.noData.title"),
720
721
  subtitle: a(e)("approvalCode.noData.subtitle")
@@ -723,5 +724,5 @@ const je = { class: "pr-24" }, De = { class: "fm-typo-en-title-md-600" }, Re = {
723
724
  }
724
725
  });
725
726
  export {
726
- Bt as default
727
+ It as default
727
728
  };
@@ -1,16 +1,16 @@
1
1
  import { defineComponent as Vt, ref as S, computed as I, onMounted as Eo, onBeforeUnmount as No, watch as ie, resolveComponent as N, createElementBlock as v, openBlock as f, createBlock as Oe, createCommentVNode as F, createElementVNode as a, Fragment as z, renderList as ce, withCtx as Y, createVNode as g, toDisplayString as l, unref as u, nextTick as Ro, onUnmounted as Uo, createTextVNode as Ae, normalizeClass as Ko } from "vue";
2
- import { d as O } from "./dayjs.min-DdNivv4b.js";
2
+ import { d as O } from "./dayjs.min-BZ1pM-6M.js";
3
3
  import { defineStore as Bo, storeToRefs as Yo } from "pinia";
4
4
  import { useI18n as $t, useCoreStore as zo } from "@feedmepos/mf-common";
5
- import { g as st, b as at, B as Ft, _ as qo, a as Jo } from "./app-n6d4AmtP.js";
5
+ import { B as Ft, _ as qo, a as Jo } from "./app-D-MUq9Ab.js";
6
6
  import { components as ve } from "@feedmepos/ui-library";
7
- import { S as Fe } from "./SelectFilter-D9T0nFvG.js";
8
- import { _ as Ho } from "./PageLayout.vue_vue_type_script_setup_true_lang-HKK4cbW8.js";
9
- import { _ as Wo } from "./TableEmptyState.vue_vue_type_script_setup_true_lang-IfAZmWr0.js";
10
- import { t as Go, p as Mt } from "./rule-ChmhcGgA.js";
11
- import { u as Xo } from "./restaurant-Dl6yx37M.js";
7
+ import { g as st, b as at, u as Ho } from "./restaurant-D2mfKHaH.js";
8
+ import { S as Fe } from "./SelectFilter-BXeVKgHN.js";
9
+ import { _ as Wo } from "./PageLayout.vue_vue_type_script_setup_true_lang-HKK4cbW8.js";
10
+ import { _ as Go } from "./TableEmptyState.vue_vue_type_script_setup_true_lang-IfAZmWr0.js";
11
+ import { t as Xo, p as Mt } from "./rule-DPtqlnz-.js";
12
12
  import { u as Qo } from "./useDebounce-B8ZPVS5C.js";
13
- import { n as Zo } from "./string-DZQ1uNjn.js";
13
+ import { n as Zo } from "./string-VNuQNweN.js";
14
14
  const es = {
15
15
  order: "Order",
16
16
  refund: "Refund",
@@ -21,7 +21,7 @@ const es = {
21
21
  delivery: "Delivery",
22
22
  counterRecord: "Counter",
23
23
  counter: "Counter",
24
- restaurantSetting: "Restaurant settings",
24
+ setting: "Settings",
25
25
  display: "Display",
26
26
  printer: "Printer",
27
27
  table: "Table",
@@ -261,7 +261,7 @@ const es = {
261
261
  if (!(!y && t.value.length > 0))
262
262
  try {
263
263
  o.value = !0;
264
- const A = await Go.readTeamMembers();
264
+ const A = await Xo.readTeamMembers();
265
265
  t.value = A.sort((C, i) => C.doc.isOwner ? -1 : C.name.localeCompare(i.name)), n.value = !0;
266
266
  } finally {
267
267
  o.value = !1;
@@ -801,7 +801,7 @@ const Ss = {
801
801
  const {
802
802
  t: o,
803
803
  te: n
804
- } = $t(), r = zo(), d = ls(), h = Xo(), {
804
+ } = $t(), r = zo(), d = ls(), h = Ho(), {
805
805
  restaurants: b
806
806
  } = Yo(h), y = S(!1), A = S(!1), C = S([]), i = S(null), V = S(!1), R = S({}), m = S(null), w = S(!1);
807
807
  async function j(e) {
@@ -1722,7 +1722,7 @@ const Ss = {
1722
1722
  deep: !0
1723
1723
  }), (e, s) => {
1724
1724
  const c = N("FmSpacer"), x = N("FmButton"), L = N("FmMenuItem"), M = N("FmMenu"), E = N("FmChip"), re = N("FmDateRangePicker"), Re = N("FmSearch"), ke = N("FmTable"), Ue = N("FmIcon"), tt = N("FmTooltip"), we = N("FmSideSheet");
1725
- return f(), v(z, null, [g(Ho, {
1725
+ return f(), v(z, null, [g(Wo, {
1726
1726
  heading: u(o)("auditLog.title")
1727
1727
  }, {
1728
1728
  "append-heading": Y(() => [g(c), g(x, {
@@ -1821,7 +1821,7 @@ const Ss = {
1821
1821
  class: "ml-auto w-[280px]",
1822
1822
  placeholder: u(o)("auditLog.search.placeholder")
1823
1823
  }, null, 8, ["modelValue", "placeholder"])])]), g(qo, null, {
1824
- default: Y(() => [a("div", js, [g(Wo, {
1824
+ default: Y(() => [a("div", js, [g(Go, {
1825
1825
  "is-loading": y.value,
1826
1826
  "is-empty": C.value.length === 0,
1827
1827
  title: u(o)("auditLog.noData.title"),
@@ -0,0 +1,438 @@
1
+ import { defineComponent as M, ref as S, onMounted as ae, nextTick as le, onUnmounted as ue, resolveComponent as F, createElementBlock as p, openBlock as s, Fragment as C, createElementVNode as U, renderSlot as _, createCommentVNode as w, toDisplayString as J, createVNode as E, normalizeStyle as re, watch as X, defineAsyncComponent as se, computed as z, renderList as T, createBlock as h, withCtx as H, unref as x, resolveDynamicComponent as ie, normalizeClass as de } from "vue";
2
+ import { useI18n as q, useCoreStore as me } from "@feedmepos/mf-common";
3
+ import { e as j, G as ce, U as L } from "./app-D-MUq9Ab.js";
4
+ import { l as fe } from "./lodash-Def4gaas.js";
5
+ const ye = { class: "flex items-center" }, be = {
6
+ key: 0,
7
+ class: "ml-8 fm-typo-en-body-sm-400 text-fm-color-typo-secondary"
8
+ }, ve = { class: "ml-auto" }, Be = /* @__PURE__ */ M({
9
+ __name: "CollapsibleWrapper",
10
+ props: {
11
+ title: { default: "" },
12
+ subtitle: { default: "" },
13
+ initiallyCollapsed: { type: Boolean, default: !1 }
14
+ },
15
+ setup(t) {
16
+ const a = S(t.initiallyCollapsed), c = S(), f = S(0);
17
+ let m;
18
+ function g() {
19
+ a.value = !a.value;
20
+ }
21
+ function d() {
22
+ c.value && (f.value = c.value.scrollHeight);
23
+ }
24
+ return ae(async () => {
25
+ await le(), c.value && (m = new ResizeObserver(() => {
26
+ d();
27
+ }), m.observe(c.value));
28
+ }), ue(() => {
29
+ m == null || m.disconnect();
30
+ }), (b, r) => {
31
+ const y = F("FmButton");
32
+ return s(), p(C, null, [
33
+ U("div", { onClick: g }, [
34
+ U("div", ye, [
35
+ _(b.$slots, "title"),
36
+ a.value && t.subtitle ? (s(), p("span", be, J(t.subtitle), 1)) : w("", !0),
37
+ U("div", ve, [
38
+ E(y, {
39
+ icon: a.value ? "keyboard_arrow_down" : "keyboard_arrow_up",
40
+ "text-color": "neutral-gray-400",
41
+ variant: "tertiary",
42
+ size: "md"
43
+ }, null, 8, ["icon"])
44
+ ])
45
+ ])
46
+ ]),
47
+ U("div", {
48
+ ref_key: "contentRef",
49
+ ref: c,
50
+ class: "transition-all duration-300 ease-in-out overflow-hidden",
51
+ style: re({ maxHeight: a.value ? "0" : f.value + "px" })
52
+ }, [
53
+ _(b.$slots, "default")
54
+ ], 4)
55
+ ], 64);
56
+ };
57
+ }
58
+ });
59
+ function I(t) {
60
+ return `${t.subject}::${t.builderKey}`;
61
+ }
62
+ function Oe(t) {
63
+ const u = S(/* @__PURE__ */ new Map());
64
+ function a(r, y) {
65
+ const k = new Map(u.value);
66
+ k.set(I(r), y), u.value = k;
67
+ }
68
+ function c(r) {
69
+ return u.value.get(I(r));
70
+ }
71
+ function f(r) {
72
+ for (const y of u.value.keys())
73
+ if (y.startsWith(`${r}::`)) return !0;
74
+ return !1;
75
+ }
76
+ function m(r) {
77
+ const y = /* @__PURE__ */ new Map();
78
+ for (const [k, A] of u.value.entries())
79
+ k.startsWith(`${r}::`) && y.set(k, A);
80
+ return y;
81
+ }
82
+ function g(r) {
83
+ const y = new Map(u.value);
84
+ for (const k of Array.from(y.keys()))
85
+ k.startsWith(`${r}::`) && y.delete(k);
86
+ u.value = y;
87
+ }
88
+ function d() {
89
+ u.value = /* @__PURE__ */ new Map();
90
+ }
91
+ function b(r) {
92
+ const y = new Map(u.value);
93
+ y.delete(I(r)), u.value = y;
94
+ }
95
+ return t && X(
96
+ t,
97
+ () => {
98
+ d();
99
+ },
100
+ { deep: !0 }
101
+ ), {
102
+ drafts: u,
103
+ setDraft: a,
104
+ getDraft: c,
105
+ hasDraftsForSubject: f,
106
+ getDraftsForSubject: m,
107
+ clearDraftsForSubject: g,
108
+ clearAllDrafts: d,
109
+ clearDraft: b
110
+ };
111
+ }
112
+ const pe = {}, W = /* @__PURE__ */ new Map();
113
+ function ke(t) {
114
+ const u = W.get(t);
115
+ if (u) return u;
116
+ const a = pe[t];
117
+ if (!a) return;
118
+ const c = se(a);
119
+ return W.set(t, c), c;
120
+ }
121
+ function he(t, u) {
122
+ return !fe.isEqual(t, u);
123
+ }
124
+ const Ve = { class: "flex flex-col gap-8" }, Fe = { class: "flex flex-col gap-4" }, ge = "condition-form-select-menu", Z = 120, Ce = 220, De = /* @__PURE__ */ M({
125
+ __name: "ConditionFormRenderer",
126
+ props: {
127
+ config: {},
128
+ modelValue: {},
129
+ disabled: { type: Boolean, default: !1 },
130
+ optionProviders: { default: () => ({}) }
131
+ },
132
+ emits: ["update:modelValue"],
133
+ setup(t, { emit: u }) {
134
+ const a = t, c = u, { t: f } = q(), m = me(), g = z(() => j(a.config, a.modelValue));
135
+ let d = a.modelValue;
136
+ X(
137
+ () => a.modelValue,
138
+ (e) => {
139
+ d = e;
140
+ }
141
+ );
142
+ function b(e) {
143
+ return "static" in e ? e.static.map((n) => ({ value: n.value, label: f(n.labelKey) })) : a.optionProviders[e.provider] ?? [];
144
+ }
145
+ function r(e, n) {
146
+ const l = y(
147
+ ce(a.config, { ...a.modelValue, [e]: n })
148
+ );
149
+ he(l, d) && (d = l, c("update:modelValue", l));
150
+ }
151
+ function y(e) {
152
+ const n = { ...e };
153
+ for (const l of j(a.config, n))
154
+ l.kind === "date" && !n[l.key] && (n[l.key] = P(Y()));
155
+ return n;
156
+ }
157
+ function k() {
158
+ const e = m.currentBusiness.value;
159
+ if (e != null && e.timezone) return e.timezone;
160
+ if (e != null && e.timeZone) return e.timeZone;
161
+ const n = (e == null ? void 0 : e.country) ?? (m.currentCountry.value instanceof Object ? m.currentCountry.value.code : m.currentCountry.value);
162
+ return A(n);
163
+ }
164
+ function A(e) {
165
+ switch ((e || "").toUpperCase()) {
166
+ case "MY":
167
+ return "Asia/Kuala_Lumpur";
168
+ case "SG":
169
+ return "Asia/Singapore";
170
+ case "TH":
171
+ return "Asia/Bangkok";
172
+ case "ID":
173
+ return "Asia/Jakarta";
174
+ case "MO":
175
+ return "Asia/Macau";
176
+ case "BN":
177
+ return "Asia/Brunei";
178
+ case "PK":
179
+ return "Asia/Karachi";
180
+ case "MV":
181
+ return "Indian/Maldives";
182
+ case "VN":
183
+ return "Asia/Ho_Chi_Minh";
184
+ case "JP":
185
+ return "Asia/Tokyo";
186
+ case "AU":
187
+ return "Australia/Sydney";
188
+ case "AE":
189
+ return "Asia/Dubai";
190
+ case "UK":
191
+ return "Europe/London";
192
+ default:
193
+ return Intl.DateTimeFormat().resolvedOptions().timeZone;
194
+ }
195
+ }
196
+ function K(e, n) {
197
+ const l = new Intl.DateTimeFormat("en-CA", {
198
+ timeZone: n,
199
+ year: "numeric",
200
+ month: "2-digit",
201
+ day: "2-digit",
202
+ hour: "2-digit",
203
+ minute: "2-digit",
204
+ second: "2-digit",
205
+ hourCycle: "h23"
206
+ }).formatToParts(e), v = Object.fromEntries(
207
+ l.filter((V) => V.type !== "literal").map((V) => [V.type, V.value])
208
+ );
209
+ return {
210
+ year: Number(v.year),
211
+ month: Number(v.month),
212
+ day: Number(v.day),
213
+ hour: Number(v.hour),
214
+ minute: Number(v.minute),
215
+ second: Number(v.second)
216
+ };
217
+ }
218
+ function R(e, n) {
219
+ try {
220
+ const l = K(n, e);
221
+ return (Date.UTC(
222
+ l.year,
223
+ l.month - 1,
224
+ l.day,
225
+ l.hour,
226
+ l.minute,
227
+ l.second
228
+ ) - n.getTime()) / 6e4;
229
+ } catch {
230
+ return 0;
231
+ }
232
+ }
233
+ function P(e) {
234
+ const [n, l, v] = e.split("-").map(Number);
235
+ if (!n || !l || !v) return "";
236
+ const V = k(), D = new Date(Date.UTC(n, l - 1, v, 0, 0, 0, 0)), O = R(V, D), N = new Date(D.getTime() - O * 6e4), $ = R(V, N);
237
+ return new Date(D.getTime() - $ * 6e4).toISOString();
238
+ }
239
+ function G(e) {
240
+ const n = new Date(e);
241
+ if (Number.isNaN(n.getTime())) return "";
242
+ try {
243
+ const l = K(n, k());
244
+ return `${String(l.year).padStart(4, "0")}-${String(l.month).padStart(2, "0")}-${String(l.day).padStart(2, "0")}`;
245
+ } catch {
246
+ return e.slice(0, 10);
247
+ }
248
+ }
249
+ function Y() {
250
+ return G((/* @__PURE__ */ new Date()).toISOString());
251
+ }
252
+ function B(e) {
253
+ return "options" in e ? b(e.options) : [];
254
+ }
255
+ function Q(e) {
256
+ const n = a.modelValue[e];
257
+ return n == null ? "" : String(n);
258
+ }
259
+ function ee(e) {
260
+ const n = a.modelValue[e];
261
+ return typeof n != "string" || !n ? "" : G(n);
262
+ }
263
+ function te(e, n) {
264
+ r(e, n ? P(n) : "");
265
+ }
266
+ function ne(e, n) {
267
+ let l = Math.floor(Number(n) || (e.min ?? 0));
268
+ e.min !== void 0 && (l = Math.max(e.min, l)), e.max !== void 0 && (l = Math.min(e.max, l)), r(e.key, l);
269
+ }
270
+ return (e, n) => {
271
+ const l = F("FmRadio"), v = F("FmRadioGroup"), V = F("FmSelect"), D = F("FmTextField"), O = F("FmDatePicker"), N = F("FmCheckbox"), $ = F("FmFormGroup");
272
+ return s(), p("div", Ve, [
273
+ (s(!0), p(C, null, T(g.value, (o) => (s(), p(C, {
274
+ key: o.key
275
+ }, [
276
+ o.kind === "radio" ? (s(), h(v, {
277
+ key: 0,
278
+ "model-value": t.modelValue[o.key],
279
+ disabled: t.disabled,
280
+ "onUpdate:modelValue": (i) => r(o.key, i)
281
+ }, {
282
+ default: H(() => [
283
+ (s(!0), p(C, null, T(B(o), (i) => (s(), h(l, {
284
+ key: i.value,
285
+ value: i.value,
286
+ label: i.label
287
+ }, null, 8, ["value", "label"]))), 128))
288
+ ]),
289
+ _: 2
290
+ }, 1032, ["model-value", "disabled", "onUpdate:modelValue"])) : o.kind === "select" ? (s(), h(V, {
291
+ key: 1,
292
+ "model-value": t.modelValue[o.key],
293
+ label: x(f)(o.labelKey),
294
+ items: B(o),
295
+ "menu-id": ge,
296
+ "menu-z-index": Z,
297
+ "max-height": Ce,
298
+ "shift-menu": "",
299
+ placement: "bottom-start",
300
+ disabled: t.disabled,
301
+ "onUpdate:modelValue": (i) => r(o.key, i)
302
+ }, null, 8, ["model-value", "label", "items", "disabled", "onUpdate:modelValue"])) : o.kind === "number" ? (s(), h(D, {
303
+ key: 2,
304
+ "model-value": Q(o.key),
305
+ type: "number",
306
+ class: "!w-[120px] ml-32",
307
+ label: x(f)(o.labelKey),
308
+ disabled: t.disabled,
309
+ "onUpdate:modelValue": (i) => ne(o, i)
310
+ }, null, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])) : o.kind === "text" ? (s(), h(D, {
311
+ key: 3,
312
+ "model-value": t.modelValue[o.key] ?? "",
313
+ label: x(f)(o.labelKey),
314
+ disabled: t.disabled,
315
+ "onUpdate:modelValue": (i) => r(o.key, i)
316
+ }, null, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])) : o.kind === "date" ? (s(), h(O, {
317
+ key: 4,
318
+ "model-value": ee(o.key),
319
+ label: x(f)(o.labelKey),
320
+ "z-index": Z,
321
+ disabled: t.disabled,
322
+ "onUpdate:modelValue": (i) => te(o.key, i)
323
+ }, null, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])) : o.kind === "switch" ? (s(), h(N, {
324
+ key: 5,
325
+ "model-value": !!t.modelValue[o.key],
326
+ value: !0,
327
+ label: x(f)(o.labelKey),
328
+ disabled: t.disabled,
329
+ "onUpdate:modelValue": (i) => r(o.key, i)
330
+ }, null, 8, ["model-value", "label", "disabled", "onUpdate:modelValue"])) : o.kind === "multiselect" ? (s(), h($, {
331
+ key: 6,
332
+ "model-value": t.modelValue[o.key] ?? [],
333
+ "onUpdate:modelValue": (i) => r(o.key, i)
334
+ }, {
335
+ default: H(() => [
336
+ U("div", Fe, [
337
+ (s(!0), p(C, null, T(B(o), (i) => (s(), h(N, {
338
+ key: i.value,
339
+ "model-value": t.modelValue[o.key] ?? [],
340
+ value: i.value,
341
+ label: i.label,
342
+ disabled: t.disabled,
343
+ "onUpdate:modelValue": (oe) => r(o.key, oe)
344
+ }, null, 8, ["model-value", "value", "label", "disabled", "onUpdate:modelValue"]))), 128))
345
+ ])
346
+ ]),
347
+ _: 2
348
+ }, 1032, ["model-value", "onUpdate:modelValue"])) : w("", !0)
349
+ ], 64))), 128))
350
+ ]);
351
+ };
352
+ }
353
+ }), xe = /* @__PURE__ */ M({
354
+ __name: "ConditionFormHost",
355
+ props: {
356
+ builder: {},
357
+ modelValue: {},
358
+ disable: { type: Boolean, default: !1 },
359
+ optionProviders: { default: () => ({}) }
360
+ },
361
+ emits: ["update:modelValue"],
362
+ setup(t, { emit: u }) {
363
+ const a = t, c = u, f = z(
364
+ () => a.builder.form && L(a.builder.form) ? a.builder.form : void 0
365
+ ), m = z(
366
+ () => a.builder.form && !L(a.builder.form) ? ke(a.builder.form.component) : void 0
367
+ );
368
+ return (g, d) => f.value ? (s(), h(De, {
369
+ key: 0,
370
+ config: f.value,
371
+ "model-value": t.modelValue ?? f.value.defaults,
372
+ disabled: t.disable,
373
+ "option-providers": t.optionProviders,
374
+ "onUpdate:modelValue": d[0] || (d[0] = (b) => c("update:modelValue", b))
375
+ }, null, 8, ["config", "model-value", "disabled", "option-providers"])) : m.value ? (s(), h(ie(m.value), {
376
+ key: 1,
377
+ "model-value": t.modelValue,
378
+ disable: t.disable,
379
+ "onUpdate:modelValue": d[1] || (d[1] = (b) => c("update:modelValue", b))
380
+ }, null, 8, ["model-value", "disable"])) : w("", !0);
381
+ }
382
+ }), Ue = {
383
+ key: 0,
384
+ class: "fm-typo-en-title-sm-600"
385
+ }, we = {
386
+ key: 0,
387
+ class: "h-px w-full bg-fm-color-neutral-gray-200"
388
+ }, Ne = { class: "flex justify-end pt-8" }, $e = /* @__PURE__ */ M({
389
+ __name: "ConditionBuilderForm",
390
+ props: {
391
+ builders: {},
392
+ formValueFor: {},
393
+ hasChanges: { type: Boolean },
394
+ title: { default: "" },
395
+ disable: { type: Boolean, default: !1 },
396
+ fullWidth: { type: Boolean, default: !1 }
397
+ },
398
+ emits: ["update-form", "apply"],
399
+ setup(t, { emit: u }) {
400
+ const a = u, { t: c } = q();
401
+ return (f, m) => {
402
+ const g = F("FmButton");
403
+ return s(), p("div", {
404
+ class: de(["flex flex-col gap-12 p-16", t.fullWidth ? "w-full" : "w-[320px]"])
405
+ }, [
406
+ t.title ? (s(), p("p", Ue, J(t.title), 1)) : w("", !0),
407
+ (s(!0), p(C, null, T(t.builders, (d, b) => (s(), p(C, {
408
+ key: d.builderKey
409
+ }, [
410
+ b > 0 ? (s(), p("div", we)) : w("", !0),
411
+ _(f.$slots, "section", { builder: d }, () => [
412
+ E(xe, {
413
+ builder: d,
414
+ "model-value": t.formValueFor(d),
415
+ disable: t.disable,
416
+ "onUpdate:modelValue": (r) => a("update-form", { builder: d, form: r })
417
+ }, null, 8, ["builder", "model-value", "disable", "onUpdate:modelValue"])
418
+ ])
419
+ ], 64))), 128)),
420
+ U("div", Ne, [
421
+ E(g, {
422
+ label: x(c)("team.memberForm.permissions.conditionApply"),
423
+ size: "md",
424
+ variant: "primary",
425
+ disabled: t.disable || !t.hasChanges,
426
+ onClick: m[0] || (m[0] = (d) => a("apply"))
427
+ }, null, 8, ["label", "disabled"])
428
+ ])
429
+ ], 2);
430
+ };
431
+ }
432
+ });
433
+ export {
434
+ Be as _,
435
+ $e as a,
436
+ xe as b,
437
+ Oe as u
438
+ };