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

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 (155) hide show
  1. package/dist/{ApprovalCodeList-cG0zmQVJ.js → ApprovalCodeList-BLA2rhLB.js} +5 -5
  2. package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-DBYdZhZl.js} +4 -4
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CtCEzPbE.js} +2 -2
  4. package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-CA7DWLmy.js} +6 -6
  5. package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-BYnegeEr.js} +6 -6
  6. package/dist/{Main-DFwdAWqn.js → Main-BeXx0hAc.js} +8 -8
  7. package/dist/{Main-B2r59IOW.js → Main-Dh-gZSaa.js} +5 -5
  8. package/dist/{Main-DkLBemi7.js → Main-NDK7LUmm.js} +11 -11
  9. package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-DDIacDpQ.js} +7 -7
  10. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-ONMn3v_f.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/{RoleList-DHO4JRKF.js → RoleList-B30FHIzu.js} +9 -9
  13. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CRRguWTG.js +492 -0
  14. package/dist/ScheduleGeneralPage-8gEeZbFR.js +776 -0
  15. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-TfxTAjO8.js +2252 -0
  16. package/dist/SchedulePage-DQ0VXWWi.js +17832 -0
  17. package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-oGIDGneA.js} +66 -65
  18. package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-Drj6R4Y3.js} +10 -10
  19. package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-CDQfN5LE.js} +7 -7
  20. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Bx-6hjs7.js} +3 -3
  21. package/dist/{app-CmBSTvaI.js → app-DWe_4-ct.js} +678 -594
  22. package/dist/app.js +1 -1
  23. package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
  24. package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-QSwC9dtX.js} +1 -1
  25. package/dist/{employee-DQcHjoij.js → employee-Bb2b3dP6.js} +29 -28
  26. package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
  27. package/dist/{iteration-BlavheWG.js → iteration-TDU7bFxZ.js} +1 -1
  28. package/dist/{lodash-QerqayrJ.js → lodash-D3Ns5VMN.js} +1 -1
  29. package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
  30. package/dist/{role-RM2YLO7n.js → role-D57Le_-U.js} +2 -2
  31. package/dist/{rule-DjlvYIuP.js → rule-DzesUEX7.js} +3 -3
  32. package/dist/src/api/schedule/index.d.ts +8 -1
  33. package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
  34. package/dist/src/types/employee.d.ts +1 -0
  35. package/dist/src/types/schedule.d.ts +3 -4
  36. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
  37. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +23 -0
  38. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
  39. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
  40. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
  41. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +32 -0
  42. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
  43. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
  44. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
  45. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
  46. package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
  47. package/dist/src/views/scheduling/components/{ScheduleShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +7 -2
  48. package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
  49. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
  50. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
  51. package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
  52. package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
  53. package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
  54. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
  55. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
  56. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
  57. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
  58. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
  59. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
  60. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
  61. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +17 -1
  62. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
  63. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
  64. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
  65. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -12
  66. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
  67. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
  68. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
  69. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
  70. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +5 -1
  71. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
  72. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
  73. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
  74. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  75. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
  76. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
  77. package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
  78. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
  79. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +15 -0
  80. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +34 -21
  81. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
  82. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
  83. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
  84. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -0
  85. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +50 -11
  86. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
  87. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
  88. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -2
  89. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
  90. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +7 -24
  91. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +19 -5
  92. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +16 -0
  93. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
  94. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +27 -0
  95. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
  96. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
  97. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
  98. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
  99. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +29 -0
  100. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +20 -0
  101. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
  102. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +5 -6
  103. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
  104. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
  105. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +205 -0
  106. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
  107. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
  108. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +306 -529
  109. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
  110. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
  111. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
  112. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
  113. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -7
  114. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
  115. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +4 -1
  116. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +4 -2
  117. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +9 -1
  118. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
  119. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +30 -4
  120. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +8 -25
  121. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +18 -3
  122. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
  123. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
  124. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +25 -8
  125. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
  126. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
  127. package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
  128. package/dist/src/views/scheduling/data.d.ts +16 -7
  129. package/dist/src/views/scheduling/locales/index.d.ts +80 -0
  130. package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
  131. package/dist/src/views/scheduling/schedule-state.d.ts +104 -16
  132. package/dist/src/views/scheduling/schedule-store.d.ts +17 -6
  133. package/dist/src/views/scheduling/types.d.ts +27 -5
  134. package/dist/style.css +1 -1
  135. package/dist/tsconfig.app.tsbuildinfo +1 -1
  136. package/dist/{useAppStore-d_nHyK5u.js → useAppStore-BoLkvkE2.js} +1 -1
  137. package/dist/{useLoading-JFoghhRz.js → useLoading-Ch1AUYT1.js} +1 -1
  138. package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-Cmuead1K.js} +3 -3
  139. package/package.json +2 -1
  140. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +0 -4167
  141. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
  142. package/dist/ScheduleGeneralPage-WlBM8bxV.js +0 -629
  143. package/dist/SchedulePage-Nm0krGVU.js +0 -17056
  144. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
  145. package/dist/src/components/layout/withShell.d.ts +0 -14
  146. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
  147. package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
  148. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
  149. package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
  150. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
  151. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -122
  152. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
  153. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
  154. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
  155. /package/dist/src/{components/layout/AppSidebar.vue.d.ts → views/scheduling/components/SchedulePublishShareArt.vue.d.ts} +0 -0
@@ -1,6 +1,6 @@
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;
@@ -13,7 +13,9 @@ export interface ScheduleHeadcountRole {
13
13
  * it into open demand. Opened three ways: for an employee's cell (assign/edit), for a brand
14
14
  * new open shift (multi-position headcount authoring), or to edit one existing open-shift
15
15
  * record (single position, like an assigned shift's "Position needed" row). */
16
- export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand: ScheduleDemandApi): {
16
+ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand: ScheduleDemandApi, options?: {
17
+ onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
18
+ }): {
17
19
  open: import("vue").Ref<boolean, boolean>;
18
20
  dayIdx: import("vue").Ref<number | null, number | null>;
19
21
  empId: import("vue").Ref<number | null, number | null>;
@@ -29,6 +31,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
29
31
  end: string;
30
32
  }[]>;
31
33
  role: import("vue").Ref<string, string>;
34
+ positionId: import("vue").Ref<string | undefined, string | undefined>;
32
35
  required: import("vue").Ref<number, number>;
33
36
  sen: import("vue").Ref<"" | "senior" | "junior", "" | "senior" | "junior">;
34
37
  empType: import("vue").Ref<"" | "full" | "part", "" | "full" | "part">;
@@ -36,7 +39,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
36
39
  position: string;
37
40
  count: number;
38
41
  sen: "" | "senior" | "junior";
39
- }[], ScheduleHeadcountRole[] | {
42
+ }[], import("./useScheduleShiftDraft").ScheduleHeadcountRole[] | {
40
43
  position: string;
41
44
  count: number;
42
45
  sen: "" | "senior" | "junior";
@@ -56,13 +59,14 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
56
59
  };
57
60
  beforeSegs: import("../types").CoverageSegment[];
58
61
  afterSegs: import("../types").CoverageSegment[];
59
- axis: import("./useScheduleDemand").ScheduleCoverageAxis;
62
+ axis: import("./schedule-demand-domain").ScheduleCoverageAxis;
60
63
  } | null>;
61
64
  requiresAssignment: import("vue").ComputedRef<boolean>;
62
65
  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">;
66
+ dailyLimitExceeded: import("vue").ComputedRef<boolean>;
67
+ saveTitle: import("vue").ComputedRef<string>;
64
68
  saveLabel: import("vue").ComputedRef<"Create & assign" | "Save">;
65
- breakChoice: import("vue").Ref<ScheduleBreakChoice, ScheduleBreakChoice>;
69
+ breakChoice: import("vue").Ref<import("./schedule-shift-time").ScheduleBreakChoice, import("./schedule-shift-time").ScheduleBreakChoice>;
66
70
  breakCustomMins: import("vue").Ref<number, number>;
67
71
  breakCustomUnit: import("vue").Ref<"mins" | "hrs", "mins" | "hrs">;
68
72
  breakMode: import("vue").Ref<"time" | "duration", "time" | "duration">;
@@ -77,6 +81,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
77
81
  positionOptions: import("vue").ComputedRef<string[]>;
78
82
  whoOptions: import("vue").ComputedRef<{
79
83
  id: number;
84
+ sourceId: string;
80
85
  name: string;
81
86
  employmentType: "FULLTIME" | "PARTTIME";
82
87
  role: string;
@@ -87,10 +92,12 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
87
92
  contractHours?: number | undefined;
88
93
  rate: number;
89
94
  positions: string[];
95
+ archivedPositions?: string[] | undefined;
90
96
  shifts: ({
91
97
  start: string;
92
98
  end: string;
93
99
  role: string;
100
+ positionId?: string | undefined;
94
101
  status: import("../types").ShiftStatus;
95
102
  clock?: {
96
103
  in: string | null;
@@ -112,6 +119,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
112
119
  breakPayType: "PAID" | "UNPAID";
113
120
  })[] | undefined;
114
121
  assignmentId?: string | undefined;
122
+ updatedAt?: string | undefined;
115
123
  splitGroupId?: string | undefined;
116
124
  } | {
117
125
  timeOff: "approved" | "pending";
@@ -138,6 +146,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
138
146
  start: string;
139
147
  end: string;
140
148
  role: string;
149
+ positionId?: string | undefined;
141
150
  status: import("../types").ShiftStatus;
142
151
  clock?: {
143
152
  in: string | null;
@@ -159,6 +168,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
159
168
  breakPayType: "PAID" | "UNPAID";
160
169
  })[] | undefined;
161
170
  assignmentId?: string | undefined;
171
+ updatedAt?: string | undefined;
162
172
  splitGroupId?: string | undefined;
163
173
  }[] | null)[];
164
174
  remarks: {
@@ -175,9 +185,16 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
175
185
  payBasis?: "hourly" | "monthly" | undefined;
176
186
  payAmount?: number | undefined;
177
187
  maxHours?: number | undefined;
178
- maxOtHours?: number | undefined;
179
188
  minHours?: number | undefined;
180
- otAfterDaily?: number | undefined;
189
+ minHoursPerDay?: number | undefined;
190
+ workingHours?: {
191
+ minHoursPerDay: number | null;
192
+ maxHoursPerDay: number | null;
193
+ maxHoursPerWeek: number | null;
194
+ } | undefined;
195
+ overtime?: {
196
+ maxHoursPerMonth: number | null;
197
+ } | undefined;
181
198
  preferences?: string[] | undefined;
182
199
  seniority?: "senior" | "junior" | "" | undefined;
183
200
  availDays?: boolean[] | undefined;
@@ -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;