@feedmepos/mf-hrm-portal 2.3.0-dev.17 → 2.3.0-dev.18

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 (48) hide show
  1. package/dist/{ApprovalCodeList-CQp5AXmP.js → ApprovalCodeList-B10IvyLu.js} +4 -4
  2. package/dist/{AuditLogList-CBOp_hDR.js → AuditLogList-BJ8GXIzu.js} +4 -4
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-_2_usHCJ.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DfXqKPnU.js} +2 -2
  4. package/dist/{EmployeeList-1vR0zMMp.js → EmployeeList-CNj262HG.js} +6 -6
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-NR_aWS7l.js → FormItem.vue_vue_type_script_setup_true_lang-BvSLGM1C.js} +1 -1
  6. package/dist/{GrantUserList-CmeAG1Gy.js → GrantUserList-R259wy0R.js} +5 -5
  7. package/dist/{Main-BUTiZtwj.js → Main-DLgW7BX_.js} +2 -2
  8. package/dist/{Main-DTAb8QWQ.js → Main-DZ5T4TP1.js} +9 -9
  9. package/dist/{Main-DLh6VmQX.js → Main-yUEWFlC3.js} +5 -5
  10. package/dist/{PermissionSetList-BtaX2k3V.js → PermissionSetList-Xrzkx52n.js} +5 -5
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-B6dR75q1.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BhR3MM-s.js} +732 -732
  12. package/dist/{RoleList-Qyyi7w2u.js → RoleList-RRDkrVmu.js} +7 -7
  13. package/dist/{ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-EPVMITc0.js → ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BhkmMQxt.js} +1 -1
  14. package/dist/{ScheduleGeneralPage-CjZ8OFnN.js → ScheduleGeneralPage-CfcIh0Fy.js} +2 -2
  15. package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-KOLBDv21.js → ScheduleModal.vue_vue_type_script_setup_true_lang-WYuVJxed.js} +211 -206
  16. package/dist/SchedulePage-CHu1VI-U.js +19201 -0
  17. package/dist/{SchedulePositionPage-Cu6rRBlZ.js → SchedulePositionPage-Dx2fZ1QI.js} +27 -27
  18. package/dist/{SelectFilter-D58Vrs_W.js → SelectFilter-DoeKbbjT.js} +1 -1
  19. package/dist/{TeamMemberList-CC_okKtX.js → TeamMemberList-CPpBsvi7.js} +7 -7
  20. package/dist/{TimesheetList-ULjiy1OT.js → TimesheetList-CWl2faUZ.js} +6 -6
  21. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-D9xXvYuA.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dc0_djRp.js} +2 -2
  22. package/dist/{app-COD0IHk1.js → app-COWpQb6i.js} +8 -8
  23. package/dist/app.js +1 -1
  24. package/dist/{dayjs.min-jNfjc_8X.js → dayjs.min-Dv2S110T.js} +1 -1
  25. package/dist/{employee-Db1gyZQZ.js → employee-Drs22uVf.js} +3 -3
  26. package/dist/{iteration-z1uPD-7T.js → iteration-B23jisFZ.js} +1 -1
  27. package/dist/{lodash-uwLYB3oL.js → lodash-CQM_jgZN.js} +1 -1
  28. package/dist/{role-BhO6Cl-l.js → role-k4mdt-op.js} +1 -1
  29. package/dist/{rule-BZ340_dr.js → rule-xOAXApqp.js} +2 -2
  30. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -2
  31. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -0
  32. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
  33. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
  34. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
  35. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -1
  36. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +1 -0
  37. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +2 -1
  38. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +14 -0
  39. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -1
  40. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +2 -1
  41. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +1 -0
  42. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
  43. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +6 -1
  44. package/dist/style.css +1 -1
  45. package/dist/tsconfig.app.tsbuildinfo +1 -1
  46. package/dist/{useReportPermissions-BjkeMcNA.js → useReportPermissions-BB4JiYDf.js} +3 -3
  47. package/package.json +1 -1
  48. package/dist/SchedulePage-BWpgAx3a.js +0 -18831
@@ -1,9 +1,9 @@
1
- import { defineComponent as M, ref as A, onMounted as S, computed as x, createElementBlock as i, openBlock as l, createElementVNode as o, createVNode as n, createStaticVNode as z, withCtx as d, unref as s, toDisplayString as c, createTextVNode as r, normalizeClass as h, createCommentVNode as E, withDirectives as P, withKeys as k, vModelText as V, Fragment as w, renderList as F, withModifiers as g } from "vue";
1
+ import { defineComponent as M, ref as A, onMounted as F, computed as S, createElementBlock as i, openBlock as l, createElementVNode as o, createVNode as n, createStaticVNode as x, withCtx as d, unref as s, toDisplayString as c, createTextVNode as r, normalizeClass as h, createCommentVNode as z, withDirectives as E, withKeys as k, vModelText as P, Fragment as C, renderList as V, withModifiers as g } from "vue";
2
2
  import { useRouter as B } from "vue-router";
3
3
  import { useSnackbar as I } from "@feedmepos/ui-library";
4
- import { R as L, a as O } from "./app-COD0IHk1.js";
5
- import { av as R, aw as K, ag as T, ar as u, as as U } from "./ScheduleModal.vue_vue_type_script_setup_true_lang-KOLBDv21.js";
6
- import { u as W, a as j, _ as q } from "./ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-EPVMITc0.js";
4
+ import { R as L, a as O } from "./app-COWpQb6i.js";
5
+ import { av as R, aw as K, ag as T, ar as u, as as U } from "./ScheduleModal.vue_vue_type_script_setup_true_lang-WYuVJxed.js";
6
+ import { u as W, a as j, _ as q } from "./ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BhkmMQxt.js";
7
7
  const H = { class: "main" }, G = {
8
8
  id: "viewPositions",
9
9
  class: "view"
@@ -24,20 +24,20 @@ const H = { class: "main" }, G = {
24
24
  setup(fe) {
25
25
  const y = A(null);
26
26
  R(y);
27
- const _ = B(), C = I(), b = (p, e = "info") => C.open({ message: p, type: e }), t = W({ notify: b }), v = K(), f = j(void 0, { notify: b });
28
- S(async () => {
27
+ const w = B(), _ = I(), b = (m, e = "info") => _.open({ message: m, type: e }), t = W({ notify: b }), v = K(), f = j(void 0, { notify: b });
28
+ F(async () => {
29
29
  await v.resolve() && await T(/* @__PURE__ */ new Date());
30
30
  });
31
- const D = x(
31
+ const $ = S(
32
32
  () => v.options.value.length ? v.options.value : [{ value: "", label: "No outlet selected", disabled: !0 }]
33
33
  );
34
- function $(p) {
35
- v.switchTo(p, /* @__PURE__ */ new Date());
34
+ function D(m) {
35
+ v.switchTo(m, /* @__PURE__ */ new Date());
36
36
  }
37
37
  function N() {
38
- _.push({ name: L.SCHEDULE });
38
+ w.push({ name: L.SCHEDULE });
39
39
  }
40
- return (p, e) => (l(), i("div", {
40
+ return (m, e) => (l(), i("div", {
41
41
  ref_key: "rootEl",
42
42
  ref: y,
43
43
  class: "sch"
@@ -72,7 +72,7 @@ const H = { class: "main" }, G = {
72
72
  ])]),
73
73
  _: 1
74
74
  }),
75
- e[9] || (e[9] = z('<div class="sp-title-row" data-v-9fa5fc95><div class="sp-title" data-v-9fa5fc95>Position</div><span class="page-tags" data-v-9fa5fc95><span class="sch-badge page-tag-premium" data-color="brand" data-v-9fa5fc95>Premium</span><span class="sch-badge" data-color="info" data-v-9fa5fc95>Free until 31 Dec 2026</span></span></div><div class="sp-sub" data-v-9fa5fc95>What your employees can do — the same catalogue across every outlet.</div>', 2)),
75
+ e[9] || (e[9] = x('<div class="sp-title-row" data-v-77f876af><div class="sp-title" data-v-77f876af>Position</div><span class="page-tags" data-v-77f876af><span class="sch-badge page-tag-premium" data-color="brand" data-v-77f876af>Premium</span><span class="sch-badge" data-color="info" data-v-77f876af>Free until 31 Dec 2026</span></span></div><div class="sp-sub" data-v-77f876af>What your employees can do — the same catalogue across every outlet.</div>', 2)),
76
76
  o("div", Q, [
77
77
  e[8] || (e[8] = o("span", { class: "outlet-bar-lbl" }, "Outlet", -1)),
78
78
  n(U, {
@@ -81,8 +81,8 @@ const H = { class: "main" }, G = {
81
81
  searchable: "",
82
82
  title: "Which outlet's roster the staff counts below are read from",
83
83
  "model-value": s(v).outletId.value,
84
- options: D.value,
85
- "onUpdate:modelValue": $
84
+ options: $.value,
85
+ "onUpdate:modelValue": D
86
86
  }, null, 8, ["model-value", "options"])
87
87
  ])
88
88
  ]),
@@ -117,7 +117,7 @@ const H = { class: "main" }, G = {
117
117
  ])])) : (l(), i("div", ae, [
118
118
  s(t).isAdding.value ? (l(), i("div", ne, [
119
119
  o("div", ie, [
120
- P(o("input", {
120
+ E(o("input", {
121
121
  "onUpdate:modelValue": e[1] || (e[1] = (a) => s(t).newName.value = a),
122
122
  type: "text",
123
123
  class: "cfg-name-input",
@@ -128,7 +128,7 @@ const H = { class: "main" }, G = {
128
128
  e[3] || (e[3] = k((a) => s(t).cancelAdd(), ["esc"]))
129
129
  ]
130
130
  }, null, 544), [
131
- [V, s(t).newName.value]
131
+ [P, s(t).newName.value]
132
132
  ])
133
133
  ]),
134
134
  n(u, {
@@ -157,24 +157,24 @@ const H = { class: "main" }, G = {
157
157
  ])]),
158
158
  _: 1
159
159
  }, 8, ["disabled"])
160
- ])) : E("", !0),
161
- (l(!0), i(w, null, F(s(t).positions.value, (a) => (l(), i("div", {
160
+ ])) : z("", !0),
161
+ (l(!0), i(C, null, V(s(t).positions.value, (a) => (l(), i("div", {
162
162
  key: a.id,
163
163
  class: h(["cfg-row", { "is-clickable": s(t).pendingDeleteId.value !== a.id }]),
164
- onClick: (m) => s(t).pendingDeleteId.value !== a.id && s(f).openEdit(a.id, a.name)
164
+ onClick: (p) => s(t).pendingDeleteId.value !== a.id && s(f).openEdit(a.id, a.name)
165
165
  }, [
166
166
  o("div", de, [
167
167
  o("div", re, c(a.name), 1)
168
168
  ]),
169
169
  s(t).pendingDeleteId.value === a.id ? (l(), i("div", ue, [
170
- o("span", ce, c(s(t).usageCountFor(a.id) ? `Remove from ${s(t).usageCountFor(a.id)} staff?` : "Delete?"), 1),
170
+ o("span", ce, c(s(t).usageCountFor(a.id) ? `Remove from ${s(t).usageCountFor(a.id)} employee${s(t).usageCountFor(a.id) === 1 ? "" : "s"}?` : "Delete?"), 1),
171
171
  n(u, {
172
172
  hierarchy: "danger",
173
173
  size: "sm",
174
174
  class: "cfg-yes",
175
175
  type: "button",
176
176
  disabled: s(t).saving.value,
177
- onClick: g((m) => s(t).confirmDelete(a.id), ["stop"])
177
+ onClick: g((p) => s(t).confirmDelete(a.id), ["stop"])
178
178
  }, {
179
179
  default: d(() => [
180
180
  r(c(s(t).saving.value ? "Deleting…" : "Delete"), 1)
@@ -187,23 +187,23 @@ const H = { class: "main" }, G = {
187
187
  class: "cfg-no",
188
188
  type: "button",
189
189
  disabled: s(t).saving.value,
190
- onClick: e[6] || (e[6] = g((m) => s(t).cancelDelete(), ["stop"]))
190
+ onClick: e[6] || (e[6] = g((p) => s(t).cancelDelete(), ["stop"]))
191
191
  }, {
192
192
  default: d(() => [...e[15] || (e[15] = [
193
193
  r(" Keep ", -1)
194
194
  ])]),
195
195
  _: 1
196
196
  }, 8, ["disabled"])
197
- ])) : (l(), i(w, { key: 1 }, [
197
+ ])) : (l(), i(C, { key: 1 }, [
198
198
  o("span", {
199
199
  class: h(["cfg-used", { none: !s(t).usageCountFor(a.id) }])
200
- }, c(s(t).usageCountFor(a.id) ? `${s(t).usageCountFor(a.id)} staff` : "unused"), 3),
200
+ }, c(s(t).usageCountFor(a.id) ? `${s(t).usageCountFor(a.id)} employee${s(t).usageCountFor(a.id) === 1 ? "" : "s"}` : "unused"), 3),
201
201
  n(u, {
202
202
  hierarchy: "secondary",
203
203
  size: "sm",
204
204
  class: "cfg-btn",
205
205
  type: "button",
206
- onClick: g((m) => s(f).openEdit(a.id, a.name), ["stop"])
206
+ onClick: g((p) => s(f).openEdit(a.id, a.name), ["stop"])
207
207
  }, {
208
208
  default: d(() => [...e[16] || (e[16] = [
209
209
  r(" Edit ", -1)
@@ -217,7 +217,7 @@ const H = { class: "main" }, G = {
217
217
  class: "cfg-del",
218
218
  type: "button",
219
219
  "aria-label": `Delete ${a.name}`,
220
- onClick: g((m) => s(t).askDelete(a.id), ["stop"])
220
+ onClick: g((p) => s(t).askDelete(a.id), ["stop"])
221
221
  }, {
222
222
  default: d(() => [...e[17] || (e[17] = [
223
223
  o("svg", {
@@ -256,7 +256,7 @@ const H = { class: "main" }, G = {
256
256
  n(q, { modal: s(f) }, null, 8, ["modal"])
257
257
  ], 512));
258
258
  }
259
- }), ke = /* @__PURE__ */ O(ve, [["__scopeId", "data-v-9fa5fc95"]]);
259
+ }), ke = /* @__PURE__ */ O(ve, [["__scopeId", "data-v-77f876af"]]);
260
260
  export {
261
261
  ke as default
262
262
  };
@@ -1,7 +1,7 @@
1
1
  import { ref as $, computed as v, defineComponent as X, watch as Y, nextTick as Z, resolveComponent as F, createElementBlock as d, openBlock as c, createElementVNode as A, createVNode as b, renderSlot as z, withCtx as O, createCommentVNode as x, normalizeStyle as ee, Fragment as S, createBlock as T, unref as k, renderList as R, toDisplayString as N, normalizeClass as le, withModifiers as te } from "vue";
2
2
  import "@feedmepos/ui-library";
3
3
  /* empty css */
4
- import { a as ae } from "./app-COD0IHk1.js";
4
+ import { a as ae } from "./app-COWpQb6i.js";
5
5
  function ue(r, u, _ = r) {
6
6
  const t = $(!0), C = v(() => {
7
7
  if (!t.value && !u.value)
@@ -2,22 +2,22 @@ import { defineComponent as we, resolveComponent as F, createElementBlock as L,
2
2
  import { useI18n as Ve, useCoreStore as Ze } from "@feedmepos/mf-common";
3
3
  import { useSnackbar as Le, useDialog as Qe, useBreakpoints as Ye, components as Oe } from "@feedmepos/ui-library";
4
4
  import { u as ps } from "./useDebounce-B8ZPVS5C.js";
5
- import { S as ye } from "./SelectFilter-D58Vrs_W.js";
6
- import { a as vs, v as Te, m as fs, O as bs, _ as hs, b as ys } from "./app-COD0IHk1.js";
5
+ import { S as ye } from "./SelectFilter-DoeKbbjT.js";
6
+ import { a as vs, v as Te, m as fs, O as bs, _ as hs, b as ys } from "./app-COWpQb6i.js";
7
7
  import { _ as gs } from "./ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js";
8
8
  import { _ as _s } from "./TableEmptyState.vue_vue_type_script_setup_true_lang-IfAZmWr0.js";
9
9
  import { s as Us, _ as Ss, a as xs, b as Fs, c as Ps } from "./PasscodePinField.vue_vue_type_script_setup_true_lang-CqG0v0Sz.js";
10
10
  import { u as He } from "./useLoading-Nygx2zn8.js";
11
11
  import { u as Is } from "./useDiscardConfirm-CzZSPyvh.js";
12
12
  import { n as es } from "./string-VNuQNweN.js";
13
- import { l as Pe } from "./lodash-uwLYB3oL.js";
14
- import { c as he } from "./iteration-z1uPD-7T.js";
15
- import { t as _e, u as ss, c as Ae, b as qe, m as $e, d as ts, p as Ge, i as ws, j as Ke, k as Vs, l as ks, n as Rs, o as Cs, q as $s } from "./rule-BZ340_dr.js";
16
- import { u as as } from "./role-BhO6Cl-l.js";
13
+ import { l as Pe } from "./lodash-CQM_jgZN.js";
14
+ import { c as he } from "./iteration-B23jisFZ.js";
15
+ import { t as _e, u as ss, c as Ae, b as qe, m as $e, d as ts, p as Ge, i as ws, j as Ke, k as Vs, l as ks, n as Rs, o as Cs, q as $s } from "./rule-xOAXApqp.js";
16
+ import { u as as } from "./role-k4mdt-op.js";
17
17
  import { u as ls, i as Ms } from "./PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js";
18
18
  import "./useAppStore-DZCdxlCd.js";
19
19
  import { g as ze, b as We, u as os } from "./restaurant-D2mfKHaH.js";
20
- import { _ as Ns } from "./PortalPermissionEditor.vue_vue_type_script_setup_true_lang-B6dR75q1.js";
20
+ import { _ as Ns } from "./PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BhR3MM-s.js";
21
21
  var Ue = /* @__PURE__ */ ((o) => (o.Update = "Update", o.Remove = "Remove", o))(Ue || {});
22
22
  const Ie = "__unassigned__";
23
23
  function Je(o) {
@@ -1,17 +1,17 @@
1
1
  import { ref as d, computed as g, defineComponent as pe, onMounted as fe, watch as Z, resolveComponent as u, createElementBlock as P, openBlock as E, Fragment as ee, createVNode as l, createElementVNode as i, unref as n, withCtx as b, createCommentVNode as ve, toDisplayString as O, createTextVNode as he, isRef as ge, renderList as we, createBlock as te, nextTick as ye } from "vue";
2
- import { d as v } from "./dayjs.min-jNfjc_8X.js";
2
+ import { d as v } from "./dayjs.min-Dv2S110T.js";
3
3
  import { useI18n as _e } from "@feedmepos/mf-common";
4
4
  import { useSnackbar as be, components as xe } from "@feedmepos/ui-library";
5
- import { S as De } from "./SelectFilter-D58Vrs_W.js";
6
- import { _ as Se, a as Ve } from "./app-COD0IHk1.js";
5
+ import { S as De } from "./SelectFilter-DoeKbbjT.js";
6
+ import { _ as Se, a as Ve } from "./app-COWpQb6i.js";
7
7
  import { _ as ke } from "./TableEmptyState.vue_vue_type_script_setup_true_lang-IfAZmWr0.js";
8
8
  import { u as Ce } from "./useLoading-Nygx2zn8.js";
9
- import { g as Fe, s as Ye } from "./iteration-z1uPD-7T.js";
9
+ import { g as Fe, s as Ye } from "./iteration-B23jisFZ.js";
10
10
  import { f as Le } from "./utils-BZkjJbju.js";
11
11
  import { n as Me } from "./string-VNuQNweN.js";
12
- import { u as Te } from "./employee-Db1gyZQZ.js";
12
+ import { u as Te } from "./employee-Drs22uVf.js";
13
13
  import { u as Ie } from "./restaurant-D2mfKHaH.js";
14
- import { u as Re } from "./TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-D9xXvYuA.js";
14
+ import { u as Re } from "./TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dc0_djRp.js";
15
15
  function $e(x, a) {
16
16
  return ["years", "months"].find((S) => {
17
17
  const V = x.startOf(S), p = x.endOf(S);
@@ -1,8 +1,8 @@
1
- import { d as i } from "./dayjs.min-jNfjc_8X.js";
1
+ import { d as i } from "./dayjs.min-Dv2S110T.js";
2
2
  import { defineStore as p, storeToRefs as T } from "pinia";
3
3
  import { ref as l } from "vue";
4
4
  import { b as c, g as y } from "./restaurant-D2mfKHaH.js";
5
- import { s as S } from "./iteration-z1uPD-7T.js";
5
+ import { s as S } from "./iteration-B23jisFZ.js";
6
6
  import { i as f, f as g } from "./utils-BZkjJbju.js";
7
7
  const u = {
8
8
  async readTimesheets(t, e) {
@@ -10115,16 +10115,16 @@ const _e = (e) => ({
10115
10115
  }
10116
10116
  ]
10117
10117
  }
10118
- }), jc = ot(pe(() => import("./Main-DTAb8QWQ.js"))), Ec = ot(pe(() => import("./Main-DLh6VmQX.js"))), Pc = ot(
10119
- pe(() => import("./AuditLogList-CBOp_hDR.js"))
10120
- ), Oc = ot(pe(() => import("./Main-BUTiZtwj.js"))), Gc = pe(() => import("./ApprovalCodeList-CQp5AXmP.js")), Yc = pe(() => import("./GrantUserList-CmeAG1Gy.js")), Vc = pe(() => import("./EmployeeList-1vR0zMMp.js")), Fc = pe(() => import("./RoleList-Qyyi7w2u.js")), Sc = pe(() => import("./TimesheetList-ULjiy1OT.js")), Tc = pe(() => import("./TeamMemberList-CC_okKtX.js")), kc = pe(
10121
- () => import("./PermissionSetList-BtaX2k3V.js")
10118
+ }), jc = ot(pe(() => import("./Main-DZ5T4TP1.js"))), Ec = ot(pe(() => import("./Main-yUEWFlC3.js"))), Pc = ot(
10119
+ pe(() => import("./AuditLogList-BJ8GXIzu.js"))
10120
+ ), Oc = ot(pe(() => import("./Main-DLgW7BX_.js"))), Gc = pe(() => import("./ApprovalCodeList-B10IvyLu.js")), Yc = pe(() => import("./GrantUserList-R259wy0R.js")), Vc = pe(() => import("./EmployeeList-CNj262HG.js")), Fc = pe(() => import("./RoleList-RRDkrVmu.js")), Sc = pe(() => import("./TimesheetList-CWl2faUZ.js")), Tc = pe(() => import("./TeamMemberList-CPpBsvi7.js")), kc = pe(
10121
+ () => import("./PermissionSetList-Xrzkx52n.js")
10122
10122
  ), Rc = Ws(
10123
- ot(pe(() => import("./SchedulePage-BWpgAx3a.js")))
10123
+ ot(pe(() => import("./SchedulePage-CHu1VI-U.js")))
10124
10124
  ), Nc = Ws(
10125
- ot(pe(() => import("./SchedulePositionPage-Cu6rRBlZ.js")))
10125
+ ot(pe(() => import("./SchedulePositionPage-Dx2fZ1QI.js")))
10126
10126
  ), Hc = Ws(
10127
- ot(pe(() => import("./ScheduleGeneralPage-CjZ8OFnN.js")))
10127
+ ot(pe(() => import("./ScheduleGeneralPage-CfcIh0Fy.js")))
10128
10128
  ), lu = [
10129
10129
  {
10130
10130
  path: "/",
@@ -11183,7 +11183,7 @@ const cu = /* @__PURE__ */ nt({
11183
11183
  };
11184
11184
  }
11185
11185
  });
11186
- var xs = { name: "@feedmepos/mf-hrm-portal", version: "2.3.0-dev.17", mode: "fmmf" };
11186
+ var xs = { name: "@feedmepos/mf-hrm-portal", version: "2.3.0-dev.18", mode: "fmmf" };
11187
11187
  console.log(
11188
11188
  `%c${xs.name}%c v${xs.version} %c${xs.mode}`,
11189
11189
  "background:#1f1f1f;color:#fff;padding:2px 6px;border-radius:3px 0 0 3px",
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { j as e, i as r, r as o } from "./app-COD0IHk1.js";
1
+ import { j as e, i as r, r as o } from "./app-COWpQb6i.js";
2
2
  export {
3
3
  e as FmApp,
4
4
  r as i18nMessages,
@@ -1,4 +1,4 @@
1
- import { g as Q, f as K } from "./app-COD0IHk1.js";
1
+ import { g as Q, f as K } from "./app-COWpQb6i.js";
2
2
  var E = { exports: {} };
3
3
  (function(V, X) {
4
4
  (function(W, k) {
@@ -1,10 +1,10 @@
1
- import { d as g } from "./dayjs.min-jNfjc_8X.js";
1
+ import { d as g } from "./dayjs.min-Dv2S110T.js";
2
2
  import { defineStore as $, storeToRefs as x } from "pinia";
3
3
  import { ref as m } from "vue";
4
- import { s as E } from "./iteration-z1uPD-7T.js";
4
+ import { s as E } from "./iteration-B23jisFZ.js";
5
5
  import { b as l, g as f, u as I } from "./restaurant-D2mfKHaH.js";
6
6
  import { i as v } from "./utils-BZkjJbju.js";
7
- import { u as P } from "./role-BhO6Cl-l.js";
7
+ import { u as P } from "./role-k4mdt-op.js";
8
8
  const o = {
9
9
  async readEmployees() {
10
10
  return f(await l().get("/pos-users"));
@@ -1,4 +1,4 @@
1
- import { f as B } from "./app-COD0IHk1.js";
1
+ import { f as B } from "./app-COWpQb6i.js";
2
2
  var ma = {}, Zt = {}, l = {}, ji = {}, Ei = {}, Ii = {}, Dn = {};
3
3
  (function(e) {
4
4
  Object.defineProperty(e, "__esModule", { value: !0 }), e.getParsedType = e.ZodParsedType = e.util = void 0;
@@ -1,4 +1,4 @@
1
- import { f as jt } from "./app-COD0IHk1.js";
1
+ import { f as jt } from "./app-COWpQb6i.js";
2
2
  var Jr = { exports: {} };
3
3
  /**
4
4
  * @license
@@ -1,7 +1,7 @@
1
1
  import { defineStore as x, storeToRefs as b } from "pinia";
2
2
  import { ref as w } from "vue";
3
3
  import { useCoreStore as B } from "@feedmepos/mf-common";
4
- import { s as v } from "./iteration-z1uPD-7T.js";
4
+ import { s as v } from "./iteration-B23jisFZ.js";
5
5
  import { g as f, b as p, u as I } from "./restaurant-D2mfKHaH.js";
6
6
  const R = {
7
7
  async readRoles() {
@@ -1,5 +1,5 @@
1
- import { s as W, c as q, e as y } from "./iteration-z1uPD-7T.js";
2
- import { h as O, c as V, d as _, v as F, n as h, O as ee, D as M } from "./app-COD0IHk1.js";
1
+ import { s as W, c as q, e as y } from "./iteration-B23jisFZ.js";
2
+ import { h as O, c as V, d as _, v as F, n as h, O as ee, D as M } from "./app-COWpQb6i.js";
3
3
  import { s as se } from "./utils-BZkjJbju.js";
4
4
  import { g, b as v, q as x, u as te } from "./restaurant-D2mfKHaH.js";
5
5
  import { defineStore as z, storeToRefs as K } from "pinia";
@@ -21,9 +21,10 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
21
21
  segFocus: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
22
22
  openDemandSheet: (dayIdx: number) => any;
23
23
  openNewShift: (dayIdx: number, position: string) => any;
24
+ openPositionDrop: (dayIdx: number, position: string) => any;
24
25
  addPosition: () => any;
25
26
  scheduleByPerson: () => any;
26
- openSwap: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number) => any;
27
+ openSwap: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number, targetSlotIndex: number) => any;
27
28
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
28
29
  onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
29
30
  onSegEnter?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
@@ -32,8 +33,9 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
32
33
  onSegFocus?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
33
34
  onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
34
35
  onOpenNewShift?: ((dayIdx: number, position: string) => any) | undefined;
36
+ onOpenPositionDrop?: ((dayIdx: number, position: string) => any) | undefined;
35
37
  onAddPosition?: (() => any) | undefined;
36
38
  onScheduleByPerson?: (() => any) | undefined;
37
- onOpenSwap?: ((fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number) => any) | undefined;
39
+ onOpenSwap?: ((fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number, targetSlotIndex: number) => any) | undefined;
38
40
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
39
41
  export default _default;
@@ -11,6 +11,7 @@ type __VLS_Props = {
11
11
  demandRow: ScheduleDemandRowApi;
12
12
  onEditShift: (...args: any[]) => void;
13
13
  onOpenNewShift: (...args: any[]) => void;
14
+ onOpenPositionDrop: (...args: any[]) => void;
14
15
  onOpenDemandSheet: (...args: any[]) => void;
15
16
  onSegEnter: (...args: any[]) => void;
16
17
  onSegLeave: (...args: any[]) => void;
@@ -5,6 +5,7 @@ import type { useScheduleStatsRow } from '../composables/useScheduleStatsRow';
5
5
  import type { ScheduleDayTimelineApi } from '../composables/useScheduleDayTimeline';
6
6
  import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
7
7
  import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
8
+ import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
8
9
  type ScheduleLegendApi = ReturnType<typeof useScheduleLegend>;
9
10
  type ScheduleStatsRowApi = ReturnType<typeof useScheduleStatsRow>;
10
11
  type __VLS_Props = {
@@ -15,6 +16,10 @@ type __VLS_Props = {
15
16
  dayTimeline: ScheduleDayTimelineApi;
16
17
  roster: ScheduleRosterApi;
17
18
  areaDragDrop: ScheduleAreaDragDropApi;
19
+ shiftDragDrop: ScheduleDragDropApi;
20
+ onDropEmployee: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
21
+ onDropPosition: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
22
+ onDropPositionCell: (position: string, event: DragEvent) => void;
18
23
  mode: 'employee' | 'area';
19
24
  onScroll: (delta: number) => void;
20
25
  onComingSoon: () => void;
@@ -2,11 +2,16 @@ import type { ScheduleDayTimelineApi } from '../composables/useScheduleDayTimeli
2
2
  import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
3
3
  import type { ScheduleViewMode } from '../composables/useScheduleFilterBar';
4
4
  import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
5
+ import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
5
6
  type __VLS_Props = {
6
7
  timeline: ScheduleDayTimelineApi;
7
8
  roster: ScheduleRosterApi;
8
9
  mode: ScheduleViewMode;
9
10
  dragDrop?: ScheduleAreaDragDropApi;
11
+ shiftDragDrop?: ScheduleDragDropApi;
12
+ onDropEmployee?: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
13
+ onDropPosition?: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
14
+ onDropPositionCell?: (position: string, event: DragEvent) => void;
10
15
  };
11
16
  declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
17
  export default _default;
@@ -12,6 +12,9 @@ export declare function timeRangeBreakOf(sl: WorkSlot): {
12
12
  startTime: string;
13
13
  endTime: string;
14
14
  } | null;
15
+ /** The two visible paid periods around a custom clock-window break. Shared by Weekly cards and
16
+ * Daily timeline bars so the split wording cannot drift between views. */
17
+ export declare function splitTimeLabels(sl: WorkSlot): [string, string] | null;
15
18
  /** Same face as `t12`, but never drops the minutes — two ranges stacked on a split card need
16
19
  * to line up at a glance, and "10am" next to "10:30am" reads as two different units. */
17
20
  export declare function t12Full(hhmm: string): string;
@@ -2,7 +2,6 @@ import type { ScheduleBoardApi } from './useScheduleBoard';
2
2
  /** Dragging a person from the staff rail onto a position/day cell opens a normal assigned shift. */
3
3
  export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, handlers: {
4
4
  onCreateShift: (empId: number, dayIdx: number, position: string) => void;
5
- onNotQualified: (empName: string, position: string) => void;
6
5
  }): {
7
6
  draggingEmpId: import("vue").Ref<number | null, number | null>;
8
7
  startRailDrag: (empId: number) => void;
@@ -239,6 +239,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
239
239
  back: () => void;
240
240
  generate: () => Promise<void>;
241
241
  reviewMode: import("vue").ComputedRef<boolean>;
242
+ hasPendingChanges: import("vue").ComputedRef<boolean>;
242
243
  proposals: import("vue").ComputedRef<{
243
244
  id: number;
244
245
  empId: number;
@@ -593,8 +593,9 @@ export declare function useScheduleBoard(handlers?: {
593
593
  clearEmployeeShifts: (empId: number) => {
594
594
  shifts: number;
595
595
  };
596
- moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string) => boolean;
596
+ moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string, allowLocked?: boolean) => boolean;
597
597
  swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
598
+ swapPositions: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
598
599
  clearShiftsInRange: (options?: {
599
600
  persist?: boolean;
600
601
  }) => {
@@ -2,14 +2,19 @@ import type { ScheduleBoardApi } from './useScheduleBoard';
2
2
  import type { ScheduleRosterApi } from './useScheduleRoster';
3
3
  import type { ScheduleAreaBoardApi } from './useScheduleAreaBoard';
4
4
  import type { ScheduleDemandApi } from './useScheduleDemand';
5
+ import { type ScheduleEmployeeLoad } from './useScheduleEmployeeIdentity';
5
6
  declare function minToHHMM(m: number): string;
6
7
  export interface ScheduleTimelineBar {
7
8
  key: string;
9
+ start: number;
10
+ end: number;
8
11
  left: number;
9
12
  width: number;
10
13
  cls: string;
11
14
  label: string;
15
+ labels?: string[];
12
16
  sub?: string;
17
+ conflict?: boolean;
13
18
  title: string;
14
19
  brk?: {
15
20
  left: number;
@@ -17,6 +22,8 @@ export interface ScheduleTimelineBar {
17
22
  };
18
23
  laneTop?: number;
19
24
  laneHeight?: number;
25
+ employeeId?: number;
26
+ slotIndex?: number;
20
27
  onClick?: () => void;
21
28
  }
22
29
  export interface ScheduleTimelineRow {
@@ -27,6 +34,7 @@ export interface ScheduleTimelineRow {
27
34
  avatarInitials?: string;
28
35
  avatarColor?: string;
29
36
  employeeId?: number;
37
+ employeeLoad?: ScheduleEmployeeLoad;
30
38
  roleLabel?: string;
31
39
  hoursLabel?: string;
32
40
  hoursPct?: number;
@@ -34,6 +42,11 @@ export interface ScheduleTimelineRow {
34
42
  name: string;
35
43
  sub: string;
36
44
  bars: ScheduleTimelineBar[];
45
+ pastDay?: boolean;
46
+ lockedDay?: boolean;
47
+ closedDay?: boolean;
48
+ availabilityDay?: boolean;
49
+ availabilityLabel?: string;
37
50
  minHeight?: number;
38
51
  emptyText?: string;
39
52
  onTrackClick?: (anchor: HTMLElement) => void;
@@ -49,6 +62,7 @@ export interface ScheduleHourCell {
49
62
  }
50
63
  export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster: ScheduleRosterApi, areaBoard: ScheduleAreaBoardApi, demand: ScheduleDemandApi, handlers: {
51
64
  onAddShift: (empId: number, dayIdx: number, anchor: HTMLElement) => void;
65
+ onAddPositionShift: (dayIdx: number, position: string, anchor: HTMLElement) => void;
52
66
  onEditShift: (empId: number, dayIdx: number) => void;
53
67
  onEditLeave: (empId: number, dayIdx: number) => void;
54
68
  onOpenDemand: (dayIdx: number) => void;
@@ -50,6 +50,6 @@ export declare function useScheduleDragDrop(board: ScheduleBoardApi): {
50
50
  setDragHover: (empId: number, dayIdx: number, onCard: boolean, slotIndex: number | null) => void;
51
51
  clearDragHover: (empId: number, dayIdx: number) => void;
52
52
  dropOnCell: (targetEmpId: number, targetDayIdx: number) => void;
53
- dropOnPosition: (targetDayIdx: number, targetPosition: string) => void;
53
+ dropOnPosition: (targetDayIdx: number, targetPosition: string, allowLocked?: boolean) => void;
54
54
  };
55
55
  export type ScheduleDragDropApi = ReturnType<typeof useScheduleDragDrop>;
@@ -597,8 +597,9 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
597
597
  clearEmployeeShifts: (empId: number) => {
598
598
  shifts: number;
599
599
  };
600
- moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string) => boolean;
600
+ moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string, allowLocked?: boolean) => boolean;
601
601
  swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
602
+ swapPositions: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
602
603
  clearShiftsInRange: (options?: {
603
604
  persist?: boolean;
604
605
  }) => {
@@ -20,5 +20,6 @@ export declare function useScheduleOutlet(): {
20
20
  resolve: () => Promise<string>;
21
21
  resolveOutlet: () => Promise<string>;
22
22
  switchTo: (restaurantId: string, weekStart: Date) => Promise<boolean>;
23
+ setBeforeSwitch: (handler: (restaurantId: string) => boolean | Promise<boolean>) => void;
23
24
  };
24
25
  export type ScheduleOutletApi = ReturnType<typeof useScheduleOutlet>;
@@ -13,6 +13,8 @@ interface UseSchedulePageCellDropOptions {
13
13
  notify: (message: string, type: 'error') => void;
14
14
  }
15
15
  export declare function useSchedulePageCellDrop(options: UseSchedulePageCellDropOptions): {
16
- onCellDrop: (empId: number, dayIdx: number, event: DragEvent) => void;
16
+ onCellDrop: (empId: number, dayIdx: number, event: DragEvent, targetSlotIndex?: number, kind?: "employee" | "position") => void;
17
+ confirmPositionSwap: (toEmpId: number, toDayIdx: number, onConfirm: () => void) => void;
18
+ confirmPositionDrop: (targetDayIdx: number, onConfirm: () => void) => void;
17
19
  };
18
20
  export {};
@@ -29,7 +29,10 @@ export interface ScheduleSwapState {
29
29
  preset: {
30
30
  empId: number;
31
31
  dayIdx: number;
32
+ slotIndex?: number;
32
33
  } | null;
34
+ /** Area/Position view exchanges roles; employee view exchanges shift ownership. */
35
+ kind: 'employee' | 'position';
33
36
  }
34
37
  /** The shift card's "⋯" menu (Change employee / Swap shifts / Edit / Remove), plus the two
35
38
  * dialogs it opens that the rest of Phase 1 didn't need: handing a shift to somebody else,
@@ -217,7 +220,9 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
217
220
  preset: {
218
221
  empId: number;
219
222
  dayIdx: number;
223
+ slotIndex?: number | undefined;
220
224
  } | null;
225
+ kind: "employee" | "position";
221
226
  };
222
227
  swapSlot: import("vue").ComputedRef<import("../types").WorkSlot[]>;
223
228
  swapCandidates: import("vue").ComputedRef<{
@@ -232,7 +237,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
232
237
  slot: import("../types").WorkSlot[];
233
238
  soft: string | null;
234
239
  } | null>;
235
- openSwap: (empId: number, dayIdx: number, preset?: ScheduleSwapState["preset"], slotIndex?: number, slotCount?: number) => void;
240
+ openSwap: (empId: number, dayIdx: number, preset?: ScheduleSwapState["preset"], slotIndex?: number, slotCount?: number, kind?: ScheduleSwapState["kind"]) => void;
236
241
  closeSwap: () => void;
237
242
  confirmSwap: (toEmpId: number, toDayIdx: number) => void;
238
243
  removeShift: (empId: number, dayIdx: number, slotIndex?: number) => void;