@feedmepos/mf-hrm-portal 2.3.0-dev.12 → 2.3.0-dev.14

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 (42) hide show
  1. package/dist/{ApprovalCodeList--NA0toYU.js → ApprovalCodeList-C9dauQ81.js} +4 -4
  2. package/dist/{AuditLogList-B-NaB6OX.js → AuditLogList-zW_N_ECT.js} +17 -18
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-AEr2bDPY.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DJuO1qPX.js} +2 -2
  4. package/dist/{EmployeeList-idO38m7y.js → EmployeeList-8jkHTd7q.js} +255 -267
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-CJc_g0tW.js} +6 -6
  6. package/dist/{GrantUserList-B1S7yDKu.js → GrantUserList-Dj55GA7O.js} +5 -5
  7. package/dist/{Main-mcCvBPvJ.js → Main-0TfvGJ4N.js} +5 -5
  8. package/dist/{Main-D5cWrqP3.js → Main-BQNkTyET.js} +9 -9
  9. package/dist/{Main-cdf9NV8P.js → Main-CuUG6svQ.js} +2 -2
  10. package/dist/{PermissionSetList-3_f6sJpK.js → PermissionSetList-BsLi-TOK.js} +5 -5
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Cmin3rlY.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-C2l8nWx2.js} +888 -888
  12. package/dist/{RoleList-ByQelhuG.js → RoleList-DLDcyVWT.js} +7 -7
  13. package/dist/{ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-e4YOu59G.js → ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CUXUPfRc.js} +190 -181
  14. package/dist/{ScheduleGeneralPage-TKWgkAoE.js → ScheduleGeneralPage-BhYI6O9g.js} +132 -133
  15. package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-6bTAsmpp.js → ScheduleModal.vue_vue_type_script_setup_true_lang-BLBLBtNG.js} +669 -646
  16. package/dist/{SchedulePage-BpvgQYqL.js → SchedulePage-DPU4taJt.js} +7416 -7360
  17. package/dist/{SchedulePositionPage-BjvKTHyY.js → SchedulePositionPage-Byt6nmUj.js} +82 -84
  18. package/dist/{SelectFilter-CG13h83-.js → SelectFilter-1fh00OZW.js} +1 -1
  19. package/dist/{TeamMemberList-CJzF0wNK.js → TeamMemberList-CyUX8Afk.js} +35 -36
  20. package/dist/{TimesheetList-CJcSs_B1.js → TimesheetList-Q4FeNgOT.js} +52 -53
  21. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-zttvxhi-.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-C3iU4Zmc.js} +2 -2
  22. package/dist/{app-DLiYhsK2.js → app-TuHQoM7K.js} +781 -741
  23. package/dist/app.js +1 -1
  24. package/dist/{dayjs.min-ar-wg1yi.js → dayjs.min-DXnA8GYn.js} +1 -1
  25. package/dist/{employee-CmUfaF0i.js → employee-Ctnil3cD.js} +3 -3
  26. package/dist/{iteration-uWvyRKkX.js → iteration-BxOzv27y.js} +1 -1
  27. package/dist/{lodash-BzVEbSHJ.js → lodash-CKT_RxJs.js} +1 -1
  28. package/dist/object-Dwyg2LgX.js +16 -0
  29. package/dist/{role-R2KDFlIY.js → role-CNEJPyaD.js} +1 -1
  30. package/dist/{rule-C6ELRd3E.js → rule-FbuHv6Gh.js} +2 -2
  31. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
  32. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -2
  33. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +3 -1
  34. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +2 -0
  35. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +3 -1
  36. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +1 -1
  37. package/dist/src/views/scheduling/data.d.ts +17 -0
  38. package/dist/style.css +1 -1
  39. package/dist/tsconfig.app.tsbuildinfo +1 -1
  40. package/dist/{useReportPermissions-B2U347Ey.js → useReportPermissions-lemBrd1S.js} +3 -3
  41. package/package.json +3 -3
  42. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
package/dist/app.js CHANGED
@@ -1,4 +1,4 @@
1
- import { h as e, i as r, r as o } from "./app-DLiYhsK2.js";
1
+ import { j as e, i as r, r as o } from "./app-TuHQoM7K.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-DLiYhsK2.js";
1
+ import { h as Q, g as K } from "./app-TuHQoM7K.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-ar-wg1yi.js";
1
+ import { d as g } from "./dayjs.min-DXnA8GYn.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-uWvyRKkX.js";
4
+ import { s as E } from "./iteration-BxOzv27y.js";
5
5
  import { b as l, g as f, u as I } from "./restaurant-BbYRA_IT.js";
6
6
  import { i as v } from "./utils-BZkjJbju.js";
7
- import { u as P } from "./role-R2KDFlIY.js";
7
+ import { u as P } from "./role-CNEJPyaD.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-DLiYhsK2.js";
1
+ import { g as B } from "./app-TuHQoM7K.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-DLiYhsK2.js";
1
+ import { g as jt } from "./app-TuHQoM7K.js";
2
2
  var Jr = { exports: {} };
3
3
  /**
4
4
  * @license
@@ -0,0 +1,16 @@
1
+ import { toRaw as n } from "vue";
2
+ function t(r) {
3
+ return JSON.parse(JSON.stringify(r));
4
+ }
5
+ function o(r) {
6
+ if (typeof structuredClone > "u")
7
+ return t(r);
8
+ try {
9
+ return structuredClone(n(r));
10
+ } catch {
11
+ return t(r);
12
+ }
13
+ }
14
+ export {
15
+ o as c
16
+ };
@@ -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-uWvyRKkX.js";
4
+ import { s as v } from "./iteration-BxOzv27y.js";
5
5
  import { g as f, b as p, u as I } from "./restaurant-BbYRA_IT.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-uWvyRKkX.js";
2
- import { e as O, b as V, c as _, v as F, n as h, O as ee, D as M } from "./app-DLiYhsK2.js";
1
+ import { s as W, c as q, e as y } from "./iteration-BxOzv27y.js";
2
+ import { f as O, c as V, d as _, v as F, n as h, O as ee, D as M } from "./app-TuHQoM7K.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-BbYRA_IT.js";
5
5
  import { defineStore as z, storeToRefs as K } from "pinia";
@@ -23,7 +23,8 @@ export interface TeamRow {
23
23
  picked: boolean;
24
24
  /** '' means "Any position" — a person with none. */
25
25
  position: string;
26
- second: string;
26
+ /** Additional positions this employee also covers. */
27
+ second: string[];
27
28
  employment: TeamEmployment;
28
29
  maxHours: string;
29
30
  rate: string;
@@ -8,6 +8,8 @@ export type RemyDemandScope = {
8
8
  } | {
9
9
  mode: 'weekdays';
10
10
  };
11
- /** The sentence prefilled into the host Remy panel. Names the outlet the way a manager knows it;
12
- * Remy resolves it to an id itself (hrm_find_outlet), so no identifier appears in the text. */
11
+ /** The text prefilled into the host Remy panel. It points at the two inputs Remy's HRM skill
12
+ * handles (an attached roster image, or demand described in words); the bullets are example
13
+ * guidance the user replaces. Names the outlet the way a manager knows it; Remy resolves it to
14
+ * an id itself (hrm_find_outlet), so no outlet id appears in the text. */
13
15
  export declare function remyDemandPrompt(outletName: string, scope: RemyDemandScope): string;
@@ -41,7 +41,9 @@ export declare function useScheduleCostRail(board: ScheduleBoardApi, proposalAt?
41
41
  weeklyCost: import("vue").ComputedRef<number>;
42
42
  otHours: import("vue").ComputedRef<number>;
43
43
  monthlyOtUsed: import("vue").ComputedRef<number>;
44
- monthlyOtCapHours: number;
44
+ monthlyOtCapHours: import("vue").ComputedRef<number | null>;
45
+ monthlyOtProgress: import("vue").ComputedRef<number>;
46
+ monthlyOtHigh: import("vue").ComputedRef<boolean>;
45
47
  bySection: import("vue").ComputedRef<ScheduleSectionCost[]>;
46
48
  otRisk: import("vue").ComputedRef<ScheduleOtRisk[]>;
47
49
  };
@@ -181,6 +181,8 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
181
181
  seedEmployees: (missingOnly?: boolean) => void;
182
182
  pickAll: (checked: boolean) => void;
183
183
  setPosition: (empId: number, value: string) => void;
184
+ removePositionFromRows: (position: string) => void;
185
+ toggleSecond: (empId: number, position: string) => void;
184
186
  setEmployment: (empId: number, kind: TeamEmployment) => void;
185
187
  setHours: (empId: number, value: string) => void;
186
188
  setRate: (empId: number, value: string) => void;
@@ -644,7 +644,7 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
644
644
  namedTotal: (range: import("./onboarding-types").ScheduleOnboardingRange) => number;
645
645
  copyDay: (mode: "all" | "wk" | "we") => void;
646
646
  addPositionNamed: (name?: string) => void;
647
- removePosition: (id: string) => void;
647
+ removePosition: (id: string) => Promise<void>;
648
648
  reviewRows: import("vue").ComputedRef<ReviewRow[]>;
649
649
  goTo: (target: ScheduleOnboardingStep) => void;
650
650
  avail: Record<number, import("./onboarding-types").AvailRow>;
@@ -824,6 +824,8 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
824
824
  teamSomePicked: import("vue").ComputedRef<boolean>;
825
825
  pickAll: (checked: boolean) => void;
826
826
  setPosition: (empId: number, value: string) => void;
827
+ removePositionFromRows: (position: string) => void;
828
+ toggleSecond: (empId: number, position: string) => void;
827
829
  setEmployment: (empId: number, kind: import("./onboarding-types").TeamEmployment) => void;
828
830
  setHours: (empId: number, value: string) => void;
829
831
  setRate: (empId: number, value: string) => void;
@@ -7,7 +7,7 @@ import type { ScheduleSelectOption } from '../components/ScheduleSelect.vue';
7
7
  * can carry the user's pick across a refresh. Only when nothing was ever picked here does the
8
8
  * shell's selection decide, so arriving from elsewhere in the portal lands on the outlet that
9
9
  * was already being looked at. Failing that it falls back to the first outlet in the business,
10
- * which is better than an empty board.
10
+ * which is better than an empty board. The picker offers only restaurants the user can manage.
11
11
  *
12
12
  * Switching from the picker saves the pick and writes the new id back into `?restaurantId=` too,
13
13
  * via `router.replace`, not a navigation, so it does not reload the page or add a history entry.
@@ -25,6 +25,23 @@ export declare function positionIdOf(name: string): string | undefined;
25
25
  /** The selector shape every position-carrying save request wants — `undefined` for a blank
26
26
  * name (the field itself has nothing to name), a resolved id alongside the name otherwise. */
27
27
  export declare function positionSelectorOf(name: string | undefined, positionId?: string): FdtoSchedulePositionSelectorReq | undefined;
28
+ /** Position IDs are authoritative after a rename. Keep the stored name only as a fallback for
29
+ * archived or legacy references that cannot be resolved back to the active catalogue. */
30
+ export declare function positionNameOf(position: {
31
+ positionId?: string | null;
32
+ positionName: string;
33
+ } | null | undefined, catalogue?: readonly {
34
+ id: string;
35
+ name: string;
36
+ }[]): string | undefined;
37
+ /** Resolves a position only when it still exists in the active catalogue. */
38
+ export declare function activePositionNameOf(position: {
39
+ positionId?: string | null;
40
+ positionName: string;
41
+ } | null | undefined, catalogue?: readonly {
42
+ id: string;
43
+ name: string;
44
+ }[]): string | undefined;
28
45
  /** A saved position reference can outlive its catalogue entry after a soft delete. */
29
46
  export declare function isArchivedPosition(name: string | undefined, positionId?: string): boolean;
30
47
  /** Which coverage positions a station label counts toward. Positions ARE the roles in this