@feedmepos/mf-hrm-portal 2.3.0-dev → 2.3.0-dev.11

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 (160) hide show
  1. package/dist/{ApprovalCodeList-cG0zmQVJ.js → ApprovalCodeList-Ce9BWzt9.js} +5 -5
  2. package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-Cw7WN8K4.js} +4 -4
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BuofBFPC.js} +2 -2
  4. package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-B8qWPNvj.js} +25 -24
  5. package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-CgigJIPF.js} +6 -6
  6. package/dist/{Main-DFwdAWqn.js → Main-BfoVdxlY.js} +8 -8
  7. package/dist/{Main-B2r59IOW.js → Main-Cg2vC_cj.js} +5 -5
  8. package/dist/{Main-DkLBemi7.js → Main-D26pgKy1.js} +11 -11
  9. package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-CbtDiF4k.js} +19 -18
  10. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DW1oBTbb.js +4167 -0
  11. package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-BVz6q3HE.js} +1 -1
  12. package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
  13. package/dist/{RoleList-DHO4JRKF.js → RoleList-D0I8mbyI.js} +21 -20
  14. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Ctwukt6o.js +492 -0
  15. package/dist/ScheduleGeneralPage-Kv4pnxCL.js +778 -0
  16. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-CSA0aaqJ.js +2285 -0
  17. package/dist/SchedulePage-BMWd0bod.js +17942 -0
  18. package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-5Xvx6Dk5.js} +66 -65
  19. package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-Bh7i5l16.js} +24 -23
  20. package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-BJKU-hnk.js} +7 -7
  21. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-MMWnb9bj.js} +3 -3
  22. package/dist/{app-CmBSTvaI.js → app-BDJ5qxhF.js} +678 -594
  23. package/dist/app.js +1 -1
  24. package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
  25. package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-BWM0vY4w.js} +1 -1
  26. package/dist/{employee-DQcHjoij.js → employee-bBSuAJUr.js} +29 -28
  27. package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
  28. package/dist/{iteration-BlavheWG.js → iteration-Dg7VAkAn.js} +1 -1
  29. package/dist/{lodash-QerqayrJ.js → lodash-BknY3p4o.js} +1 -1
  30. package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
  31. package/dist/{role-RM2YLO7n.js → role-BJnJnNd_.js} +2 -2
  32. package/dist/{rule-DjlvYIuP.js → rule-BEuOY7Wf.js} +3 -3
  33. package/dist/src/api/schedule/index.d.ts +8 -1
  34. package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
  35. package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
  36. package/dist/src/types/employee.d.ts +1 -0
  37. package/dist/src/types/schedule.d.ts +3 -4
  38. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
  39. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +23 -0
  40. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
  41. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
  42. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
  43. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +32 -0
  44. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
  45. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
  46. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
  47. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
  48. package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
  49. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +2 -1
  50. package/dist/src/views/scheduling/components/{ScheduleShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +7 -2
  51. package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
  52. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
  53. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
  54. package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
  55. package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
  56. package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
  57. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
  58. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
  59. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
  60. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
  61. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
  62. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
  63. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
  64. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +17 -1
  65. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
  66. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
  67. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
  68. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -12
  69. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
  70. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
  71. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
  72. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
  73. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +5 -1
  74. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
  75. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
  76. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
  77. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  78. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
  79. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
  80. package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
  81. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
  82. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +15 -0
  83. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +35 -21
  84. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
  85. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
  86. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
  87. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -3
  88. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +52 -11
  89. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
  90. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
  91. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -2
  92. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
  93. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +7 -24
  94. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +26 -5
  95. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +16 -0
  96. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
  97. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +27 -0
  98. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
  99. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
  100. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
  101. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
  102. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +29 -0
  103. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +20 -0
  104. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
  105. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +5 -6
  106. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
  107. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
  108. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +206 -0
  109. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
  110. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
  111. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +313 -529
  112. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
  113. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
  114. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
  115. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
  116. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -7
  117. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
  118. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +4 -1
  119. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +4 -2
  120. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +9 -1
  121. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
  122. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +32 -4
  123. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +8 -25
  124. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +19 -3
  125. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
  126. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
  127. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +31 -9
  128. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
  129. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
  130. package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
  131. package/dist/src/views/scheduling/data.d.ts +16 -7
  132. package/dist/src/views/scheduling/locales/index.d.ts +80 -0
  133. package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
  134. package/dist/src/views/scheduling/schedule-state.d.ts +104 -16
  135. package/dist/src/views/scheduling/schedule-store.d.ts +30 -6
  136. package/dist/src/views/scheduling/types.d.ts +29 -5
  137. package/dist/style.css +1 -1
  138. package/dist/tsconfig.app.tsbuildinfo +1 -1
  139. package/dist/{useAppStore-d_nHyK5u.js → useAppStore-BoLkvkE2.js} +1 -1
  140. package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
  141. package/dist/{useLoading-JFoghhRz.js → useLoading-Ch1AUYT1.js} +1 -1
  142. package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-D8hJ5W0t.js} +3 -3
  143. package/package.json +2 -1
  144. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +0 -4167
  145. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
  146. package/dist/ScheduleGeneralPage-WlBM8bxV.js +0 -629
  147. package/dist/SchedulePage-Nm0krGVU.js +0 -17056
  148. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
  149. package/dist/src/components/layout/withShell.d.ts +0 -14
  150. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
  151. package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
  152. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
  153. package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
  154. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
  155. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -122
  156. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
  157. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
  158. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
  159. package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
  160. /package/dist/src/{components/layout/AppSidebar.vue.d.ts → views/scheduling/components/SchedulePublishShareArt.vue.d.ts} +0 -0
@@ -1,19 +1,25 @@
1
1
  import type { ScheduleBoardApi } from './useScheduleBoard';
2
2
  import type { ScheduleDemandApi } from './useScheduleDemand';
3
- import { type ScheduleBreakChoice, type ScheduleShiftSegment } from './schedule-shift-time';
3
+ import { type ScheduleShiftSegment } from './schedule-shift-time';
4
4
  export type { ScheduleBreakChoice, ScheduleShiftSegment } from './schedule-shift-time';
5
5
  export interface ScheduleHeadcountRole {
6
6
  position: string;
7
7
  count: number;
8
8
  sen: '' | 'senior' | 'junior';
9
9
  }
10
+ export interface ScheduleWarningPart {
11
+ text: string;
12
+ emphasis?: boolean;
13
+ }
10
14
  /** The unified shift popover — ported from the mockup's single `.shift-pop`, which answers
11
15
  * both "who is on this shift" and "what does this shift need" from one form. Picking a real
12
16
  * person in the `who` select turns it into an assignment; leaving it on "Empty shift" turns
13
17
  * it into open demand. Opened three ways: for an employee's cell (assign/edit), for a brand
14
18
  * new open shift (multi-position headcount authoring), or to edit one existing open-shift
15
19
  * record (single position, like an assigned shift's "Position needed" row). */
16
- export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand: ScheduleDemandApi): {
20
+ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand: ScheduleDemandApi, options?: {
21
+ onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
22
+ }): {
17
23
  open: import("vue").Ref<boolean, boolean>;
18
24
  dayIdx: import("vue").Ref<number | null, number | null>;
19
25
  empId: import("vue").Ref<number | null, number | null>;
@@ -29,6 +35,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
29
35
  end: string;
30
36
  }[]>;
31
37
  role: import("vue").Ref<string, string>;
38
+ positionId: import("vue").Ref<string | undefined, string | undefined>;
32
39
  required: import("vue").Ref<number, number>;
33
40
  sen: import("vue").Ref<"" | "senior" | "junior", "" | "senior" | "junior">;
34
41
  empType: import("vue").Ref<"" | "full" | "part", "" | "full" | "part">;
@@ -36,7 +43,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
36
43
  position: string;
37
44
  count: number;
38
45
  sen: "" | "senior" | "junior";
39
- }[], ScheduleHeadcountRole[] | {
46
+ }[], import("./useScheduleShiftDraft").ScheduleHeadcountRole[] | {
40
47
  position: string;
41
48
  count: number;
42
49
  sen: "" | "senior" | "junior";
@@ -56,13 +63,14 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
56
63
  };
57
64
  beforeSegs: import("../types").CoverageSegment[];
58
65
  afterSegs: import("../types").CoverageSegment[];
59
- axis: import("./useScheduleDemand").ScheduleCoverageAxis;
66
+ axis: import("./schedule-demand-domain").ScheduleCoverageAxis;
60
67
  } | null>;
61
68
  requiresAssignment: import("vue").ComputedRef<boolean>;
62
69
  saveDisabled: import("vue").ComputedRef<boolean>;
63
- saveTitle: import("vue").ComputedRef<"" | "Choose who covers it — this shift is answering a staffing gap, and a shift with nobody on it leaves that gap exactly as it is">;
70
+ dailyLimitExceeded: import("vue").ComputedRef<boolean>;
71
+ saveTitle: import("vue").ComputedRef<string>;
64
72
  saveLabel: import("vue").ComputedRef<"Create & assign" | "Save">;
65
- breakChoice: import("vue").Ref<ScheduleBreakChoice, ScheduleBreakChoice>;
73
+ breakChoice: import("vue").Ref<import("./schedule-shift-time").ScheduleBreakChoice, import("./schedule-shift-time").ScheduleBreakChoice>;
66
74
  breakCustomMins: import("vue").Ref<number, number>;
67
75
  breakCustomUnit: import("vue").Ref<"mins" | "hrs", "mins" | "hrs">;
68
76
  breakMode: import("vue").Ref<"time" | "duration", "time" | "duration">;
@@ -77,6 +85,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
77
85
  positionOptions: import("vue").ComputedRef<string[]>;
78
86
  whoOptions: import("vue").ComputedRef<{
79
87
  id: number;
88
+ sourceId: string;
80
89
  name: string;
81
90
  employmentType: "FULLTIME" | "PARTTIME";
82
91
  role: string;
@@ -87,10 +96,12 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
87
96
  contractHours?: number | undefined;
88
97
  rate: number;
89
98
  positions: string[];
99
+ archivedPositions?: string[] | undefined;
90
100
  shifts: ({
91
101
  start: string;
92
102
  end: string;
93
103
  role: string;
104
+ positionId?: string | undefined;
94
105
  status: import("../types").ShiftStatus;
95
106
  clock?: {
96
107
  in: string | null;
@@ -112,6 +123,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
112
123
  breakPayType: "PAID" | "UNPAID";
113
124
  })[] | undefined;
114
125
  assignmentId?: string | undefined;
126
+ updatedAt?: string | undefined;
115
127
  splitGroupId?: string | undefined;
116
128
  } | {
117
129
  timeOff: "approved" | "pending";
@@ -138,6 +150,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
138
150
  start: string;
139
151
  end: string;
140
152
  role: string;
153
+ positionId?: string | undefined;
141
154
  status: import("../types").ShiftStatus;
142
155
  clock?: {
143
156
  in: string | null;
@@ -159,6 +172,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
159
172
  breakPayType: "PAID" | "UNPAID";
160
173
  })[] | undefined;
161
174
  assignmentId?: string | undefined;
175
+ updatedAt?: string | undefined;
162
176
  splitGroupId?: string | undefined;
163
177
  }[] | null)[];
164
178
  remarks: {
@@ -175,9 +189,16 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
175
189
  payBasis?: "hourly" | "monthly" | undefined;
176
190
  payAmount?: number | undefined;
177
191
  maxHours?: number | undefined;
178
- maxOtHours?: number | undefined;
179
192
  minHours?: number | undefined;
180
- otAfterDaily?: number | undefined;
193
+ minHoursPerDay?: number | undefined;
194
+ workingHours?: {
195
+ minHoursPerDay: number | null;
196
+ maxHoursPerDay: number | null;
197
+ maxHoursPerWeek: number | null;
198
+ } | undefined;
199
+ overtime?: {
200
+ maxHoursPerMonth: number | null;
201
+ } | undefined;
181
202
  preferences?: string[] | undefined;
182
203
  seniority?: "senior" | "junior" | "" | undefined;
183
204
  availDays?: boolean[] | undefined;
@@ -186,6 +207,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
186
207
  to: string;
187
208
  }[] | undefined;
188
209
  passcode?: string | undefined;
210
+ code?: string | undefined;
189
211
  masterUser?: boolean | undefined;
190
212
  }[]>;
191
213
  isAssigned: import("vue").ComputedRef<boolean>;
@@ -195,7 +217,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
195
217
  isSingleOpenRecord: import("vue").ComputedRef<boolean>;
196
218
  totalHours: import("vue").ComputedRef<number>;
197
219
  totalLabel: import("vue").ComputedRef<string>;
198
- warnings: import("vue").ComputedRef<string[]>;
220
+ warnings: import("vue").ComputedRef<ScheduleWarningPart[][]>;
199
221
  openForEmployee: (forEmpId: number, day: number, roleHint?: string, hours?: ScheduleShiftSegment, slotIndex?: number) => void;
200
222
  openForNewOpenShift: (day: number, roleHint?: string, hours?: ScheduleShiftSegment) => void;
201
223
  openForEditOpenShift: (openShiftId: number) => void;
@@ -8,7 +8,10 @@ import type { useScheduleLegend } from './useScheduleLegend';
8
8
  * the reference's renderedDays()-scoped totals. The 7-day RULES.salesForecast/SALES_CURVE
9
9
  * baseline underneath it stays weekly regardless — only the on-screen total and the
10
10
  * redistribution on edit are span-scoped. */
11
- export declare function useScheduleStatsRow(board: ScheduleBoardApi, costRail: ScheduleCostRailApi, legend: ReturnType<typeof useScheduleLegend>): {
11
+ export declare function useScheduleStatsRow(board: ScheduleBoardApi, costRail: ScheduleCostRailApi, legend: ReturnType<typeof useScheduleLegend>, handlers?: {
12
+ onPersistError?: (message: string) => void;
13
+ onPersistSuccess?: (message: string) => void;
14
+ }): {
12
15
  open: import("vue").Ref<boolean, boolean>;
13
16
  toggle: () => void;
14
17
  forecast: import("vue").Ref<number, number>;
@@ -1,3 +1,4 @@
1
+ import { type Ref } from 'vue';
1
2
  import type { ScheduleBoardApi } from './useScheduleBoard';
2
3
  import type { ScheduleDemandRowApi } from './useScheduleDemandRow';
3
4
  import type { ScheduleDemandSheetApi } from './useScheduleDemandSheet';
@@ -7,6 +8,7 @@ import type { SchedulePublishApi } from './useSchedulePublish';
7
8
  import type { ScheduleExportApi } from './useScheduleExport';
8
9
  import type { IntroRecapRow } from './onboarding-types';
9
10
  interface TourDeps {
11
+ rootEl: Ref<HTMLElement | null>;
10
12
  board: ScheduleBoardApi;
11
13
  demandRow: ScheduleDemandRowApi;
12
14
  demandSheet: ScheduleDemandSheetApi;
@@ -22,9 +24,9 @@ interface TourDeps {
22
24
  * popover. No Back button, matching the source: the only way on is Next or Skip. */
23
25
  export declare function useScheduleTour(deps: TourDeps): {
24
26
  coach: {
25
- open: import("vue").Ref<boolean, boolean>;
26
- placing: import("vue").Ref<boolean, boolean>;
27
- tip: import("vue").Ref<{
27
+ open: Ref<boolean, boolean>;
28
+ placing: Ref<boolean, boolean>;
29
+ tip: Ref<{
28
30
  title: string;
29
31
  body: string;
30
32
  count?: string | undefined;
@@ -85,7 +87,7 @@ export declare function useScheduleTour(deps: TourDeps): {
85
87
  skip: () => void;
86
88
  };
87
89
  start: () => void;
88
- allSetOpen: import("vue").Ref<boolean, boolean>;
90
+ allSetOpen: Ref<boolean, boolean>;
89
91
  allSetRecap: import("vue").ComputedRef<IntroRecapRow[]>;
90
92
  closeAllSet: () => void;
91
93
  };
@@ -0,0 +1,24 @@
1
+ import type { PayRate } from '../types';
2
+ export interface CountryScheduleRules {
3
+ countryCode: string;
4
+ timezone: string;
5
+ payRate: PayRate;
6
+ overtime: {
7
+ maxHoursPerMonth: number | null;
8
+ };
9
+ workingHours: {
10
+ minHoursPerDay: number | null;
11
+ maxHoursPerDay: number | null;
12
+ maxHoursPerWeek: number | null;
13
+ };
14
+ recurringPublicHolidays: Array<{
15
+ month: number;
16
+ day: number;
17
+ name: string;
18
+ }>;
19
+ publicHolidays: Record<string, Record<string, string>>;
20
+ }
21
+ export declare function normalizeCountryCode(country: unknown): string;
22
+ export declare function getCountryScheduleRules(country?: unknown): CountryScheduleRules;
23
+ export declare function holidayNameForDate(rules: CountryScheduleRules, date: string): string | null;
24
+ export declare const SUPPORTED_SCHEDULE_COUNTRIES: string[];
@@ -7,7 +7,10 @@ export declare const ALL_STATIONS = "All Stations";
7
7
  /** Employment seniority is a closed set in the model, not something an outlet configures. */
8
8
  export declare const SENIORITY_OPTIONS: Array<'senior' | 'junior'>;
9
9
  /** The one section every board has. Scheduling sections are not a Mongo concept yet, so the
10
- * whole roster sits in this bucket and its `roles` list stays empty. */
10
+ * whole roster sits in this bucket and its `roles` list stays empty. Labelled "Assigned" rather
11
+ * than the id's own `UNASSIGNED` — this is where every shift's actual cost lives (the cost rail
12
+ * is the only place this label shows), and "Unassigned" read like a warning that nobody was
13
+ * covering those hours rather than just "not sorted into a work area yet". */
11
14
  export declare const SECTIONS: Section[];
12
15
  /** The position catalogue, from the Positions collection. Name-only: this is read as plain
13
16
  * strings everywhere on this board (dropdown options, coverage-matrix keys, role lookups), and
@@ -21,7 +24,9 @@ export declare const SECTIONS: Section[];
21
24
  export declare function positionIdOf(name: string): string | undefined;
22
25
  /** The selector shape every position-carrying save request wants — `undefined` for a blank
23
26
  * name (the field itself has nothing to name), a resolved id alongside the name otherwise. */
24
- export declare function positionSelectorOf(name: string | undefined): FdtoSchedulePositionSelectorReq | undefined;
27
+ export declare function positionSelectorOf(name: string | undefined, positionId?: string): FdtoSchedulePositionSelectorReq | undefined;
28
+ /** A saved position reference can outlive its catalogue entry after a soft delete. */
29
+ export declare function isArchivedPosition(name: string | undefined, positionId?: string): boolean;
25
30
  /** Which coverage positions a station label counts toward. Positions ARE the roles in this
26
31
  * model — a shift records the position it is for — so nothing needs translating and this stays
27
32
  * empty, which makes `positionKeyOf()` pass a role through unchanged. */
@@ -41,13 +46,13 @@ export declare function positionSelectorOf(name: string | undefined): FdtoSchedu
41
46
  * no real forecast to shape: a curve invented here would make one day look busier than another
42
47
  * for no reason anybody could point at. */
43
48
  export declare const SALES_CURVE: number[];
44
- /** Scheduling configuration, from two places and no others: `payRate` is the whole content of
45
- * the ScheduleSettings document, and the trading window comes from the outlet's own Restaurants
46
- * profile (see `restaurantProfile` on the DTO).
49
+ /** Scheduling configuration, from two places and no others: pay rates, setup state, and the
50
+ * monthly OT cap come from the ScheduleSettings document, and the trading window comes from the
51
+ * outlet's own Restaurants profile (see `restaurantProfile` on the DTO).
47
52
  *
48
53
  * The fields with no Mongo source stay zero rather than being guessed: `coverage` (per-template
49
- * headcount matrices), `salesForecast`, `labourTarget`, `budget`, the OT caps and the
50
- * notification channels. Nothing on screen derived from them is a figure this file made up.
54
+ * headcount matrices), `salesForecast`, `labourTarget`, `budget`, and notification channels.
55
+ * Nothing on screen derived from them is a figure this file made up.
51
56
  *
52
57
  * `openFrom`/`openTo` are the one pair that must never be blank — they are the axis every
53
58
  * coverage bar, day timeline and shift form is drawn against, and there is no such thing as a
@@ -63,6 +68,8 @@ export declare function gridDayIdx(dayOfWeek: number): number;
63
68
  export declare function jsDayOfWeek(gridIdx: number): number;
64
69
  export declare function employeeIdOf(num: number): string | undefined;
65
70
  export declare function employeeNumberOf(employeeId: string): number;
71
+ /** Stable identity for change tracking. Keep the numeric id only for legacy board lookups. */
72
+ export declare function employeeKeyOf(employee: Pick<Employee, 'sourceId' | 'id'>): string;
66
73
  /** The outlets a person is rostered at, by name, from the POS roster's `restaurantRole`. */
67
74
  /** The outlet being scheduled goes first in a list of locations; the rest keep their order. */
68
75
  export declare function currentLocationFirst(locations: string[]): string[];
@@ -82,6 +89,7 @@ export declare function scheduleDemand(): {
82
89
  n: number;
83
90
  roles: Array<{
84
91
  position: string;
92
+ positionId?: string;
85
93
  n: number;
86
94
  }>;
87
95
  }>>;
@@ -91,6 +99,7 @@ export declare function scheduleDemand(): {
91
99
  n: number;
92
100
  roles: Array<{
93
101
  position: string;
102
+ positionId?: string;
94
103
  n: number;
95
104
  }>;
96
105
  }>>;
@@ -49,6 +49,7 @@ export declare const i18nMessages: {
49
49
  status: {
50
50
  draft: string;
51
51
  published: string;
52
+ locked: string;
52
53
  };
53
54
  staffRail: {
54
55
  title: string;
@@ -149,6 +150,25 @@ export declare const i18nMessages: {
149
150
  thisWeek: string;
150
151
  nextWeek: string;
151
152
  };
153
+ common: {
154
+ anyPosition: string;
155
+ none: string;
156
+ leaveAsIs: string;
157
+ monthly: string;
158
+ hourly: string;
159
+ everyone: string;
160
+ fullTime: string;
161
+ partTime: string;
162
+ noPosition: string;
163
+ noPay: string;
164
+ cancel: string;
165
+ done: string;
166
+ tryAgain: string;
167
+ };
168
+ positionModal: {
169
+ editTitle: string;
170
+ addTitle: string;
171
+ };
152
172
  comingSoon: string;
153
173
  };
154
174
  };
@@ -200,6 +220,7 @@ export declare const i18nMessages: {
200
220
  status: {
201
221
  draft: string;
202
222
  published: string;
223
+ locked: string;
203
224
  };
204
225
  staffRail: {
205
226
  title: string;
@@ -300,6 +321,25 @@ export declare const i18nMessages: {
300
321
  thisWeek: string;
301
322
  nextWeek: string;
302
323
  };
324
+ common: {
325
+ anyPosition: string;
326
+ none: string;
327
+ leaveAsIs: string;
328
+ monthly: string;
329
+ hourly: string;
330
+ everyone: string;
331
+ fullTime: string;
332
+ partTime: string;
333
+ noPosition: string;
334
+ noPay: string;
335
+ cancel: string;
336
+ done: string;
337
+ tryAgain: string;
338
+ };
339
+ positionModal: {
340
+ editTitle: string;
341
+ addTitle: string;
342
+ };
303
343
  comingSoon: string;
304
344
  };
305
345
  };
@@ -351,6 +391,7 @@ export declare const i18nMessages: {
351
391
  status: {
352
392
  draft: string;
353
393
  published: string;
394
+ locked: string;
354
395
  };
355
396
  staffRail: {
356
397
  title: string;
@@ -451,6 +492,25 @@ export declare const i18nMessages: {
451
492
  thisWeek: string;
452
493
  nextWeek: string;
453
494
  };
495
+ common: {
496
+ anyPosition: string;
497
+ none: string;
498
+ leaveAsIs: string;
499
+ monthly: string;
500
+ hourly: string;
501
+ everyone: string;
502
+ fullTime: string;
503
+ partTime: string;
504
+ noPosition: string;
505
+ noPay: string;
506
+ cancel: string;
507
+ done: string;
508
+ tryAgain: string;
509
+ };
510
+ positionModal: {
511
+ editTitle: string;
512
+ addTitle: string;
513
+ };
454
514
  comingSoon: string;
455
515
  };
456
516
  };
@@ -502,6 +562,7 @@ export declare const i18nMessages: {
502
562
  status: {
503
563
  draft: string;
504
564
  published: string;
565
+ locked: string;
505
566
  };
506
567
  staffRail: {
507
568
  title: string;
@@ -602,6 +663,25 @@ export declare const i18nMessages: {
602
663
  thisWeek: string;
603
664
  nextWeek: string;
604
665
  };
666
+ common: {
667
+ anyPosition: string;
668
+ none: string;
669
+ leaveAsIs: string;
670
+ monthly: string;
671
+ hourly: string;
672
+ everyone: string;
673
+ fullTime: string;
674
+ partTime: string;
675
+ noPosition: string;
676
+ noPay: string;
677
+ cancel: string;
678
+ done: string;
679
+ tryAgain: string;
680
+ };
681
+ positionModal: {
682
+ editTitle: string;
683
+ addTitle: string;
684
+ };
605
685
  comingSoon: string;
606
686
  };
607
687
  };
@@ -0,0 +1,7 @@
1
+ /** Shared scheduling limits and UI timing values. Keeping these named makes the product
2
+ * trade-offs visible when the API or board behavior changes. */
3
+ export declare const EMPLOYEE_PAGE_SIZE = 500;
4
+ export declare const MAX_BUSINESS_EMPLOYEE_PAGES = 10;
5
+ export declare const PREFETCH_WEEKS = 6;
6
+ export declare const RECENT_SAVE_FLASH_MS = 1500;
7
+ export declare const EMPLOYEE_ID_BASE = 1000000;