@feedmepos/mf-hrm-portal 2.3.0-dev.9 → 2.3.1-dev.1

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 (130) hide show
  1. package/dist/{ApprovalCodeList-BDpxEJpC.js → ApprovalCodeList-CDU3yUHy.js} +7 -7
  2. package/dist/AuditLogList-BU11Q5sF.js +1950 -0
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BBK2gl7r.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BjHwyaXu.js} +2 -2
  4. package/dist/{EmployeeList-C8cbVcmY.js → EmployeeList-BqzXg3uA.js} +255 -266
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-Clh43Y-8.js} +6 -6
  6. package/dist/{GrantUserList-zul0_Dlm.js → GrantUserList-Cw8RkFqf.js} +8 -8
  7. package/dist/{Main-Cjo4FMZZ.js → Main-BxcRbcce.js} +5 -5
  8. package/dist/{Main-5TsFTFpc.js → Main-CL-ysWRu.js} +8 -8
  9. package/dist/{Main-DSr9KbjT.js → Main-Dlar77Zq.js} +11 -11
  10. package/dist/{PermissionSetList-CDhiiu37.js → PermissionSetList-_8aBzGy7.js} +19 -18
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DoK944l0.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CNgtAtYH.js} +896 -896
  12. package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-BVz6q3HE.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js} +1 -1
  13. package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
  14. package/dist/{RoleList-DEbOPQD_.js → RoleList-C3n_zOB3.js} +21 -20
  15. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CnrbCggg.js +544 -0
  16. package/dist/ScheduleGeneralPage-DGHKW_ww.js +811 -0
  17. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-AfTAGsh1.js +2556 -0
  18. package/dist/SchedulePage-UzDPRldO.js +19458 -0
  19. package/dist/SchedulePositionPage-RHETW36P.js +282 -0
  20. package/dist/{SelectFilter-CG13h83-.js → SelectFilter-CeBV_Kug.js} +1 -1
  21. package/dist/{TeamMemberList-DpCGqHCk.js → TeamMemberList-B-qR7VS3.js} +27 -27
  22. package/dist/{TimesheetList-B7HAC5zS.js → TimesheetList-BqRIZBt1.js} +52 -53
  23. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BGD6m5M-.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-oIBUAjtv.js} +3 -3
  24. package/dist/{app-Lh0cqgHy.js → app-DFL6Nv_p.js} +10822 -3893
  25. package/dist/app.js +1 -1
  26. package/dist/{approval-code-DHsUgc4K.js → approval-code-BXUiojPH.js} +1 -1
  27. package/dist/{dayjs.min-joq4stsa.js → dayjs.min-CH-gVmsz.js} +1 -1
  28. package/dist/{employee-BPmp9c6i.js → employee-3xpIjR6i.js} +51 -47
  29. package/dist/{grant-user-qzKHFTro.js → grant-user-CBJ3gEgW.js} +1 -1
  30. package/dist/{iteration-jvdTHQUx.js → iteration-D6wutq5U.js} +1 -1
  31. package/dist/{lodash-CIAEpr9s.js → lodash-D5kU1nPN.js} +1 -1
  32. package/dist/object-Dwyg2LgX.js +16 -0
  33. package/dist/{restaurant-BbYRA_IT.js → restaurant-D2mfKHaH.js} +44 -45
  34. package/dist/{role-Dd1TUMhn.js → role-B7nu6hH1.js} +2 -2
  35. package/dist/{rule-DmxI7qEY.js → rule-CMd6SL3n.js} +3 -3
  36. package/dist/src/api/audit-log/index.d.ts +4 -0
  37. package/dist/src/api/employee/index.d.ts +2 -2
  38. package/dist/src/api/schedule/index.d.ts +11 -1
  39. package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
  40. package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
  41. package/dist/src/stores/employee.d.ts +12 -12
  42. package/dist/src/types/schedule.d.ts +1 -1
  43. package/dist/src/views/audit-log/constants.d.ts +9 -30
  44. package/dist/src/views/audit-log/locales/index.d.ts +488 -0
  45. package/dist/src/views/audit-log/pos-row.d.ts +27 -0
  46. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +6 -2
  47. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
  48. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +2 -0
  49. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
  50. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +2 -0
  51. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
  52. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -1
  53. package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +1 -1
  54. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +4 -3
  55. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
  56. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +0 -1
  57. package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
  58. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +1 -1
  59. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +7 -5
  60. package/dist/src/views/scheduling/composables/onboarding-constants.d.ts +2 -0
  61. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
  62. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -2
  63. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +1 -1
  64. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +4 -0
  65. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +10 -0
  66. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +5 -0
  67. package/dist/src/views/scheduling/composables/schedule-currency.d.ts +22 -0
  68. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  69. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +13 -1
  70. package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
  71. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +1 -1
  72. package/dist/src/views/scheduling/composables/schedule-leave-split.d.ts +9 -0
  73. package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +23 -0
  74. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
  75. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +3 -1
  76. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +1 -0
  77. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +30 -7
  78. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +5 -11
  79. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -1
  80. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +22 -13
  81. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +58 -7
  82. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
  83. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +13 -1
  84. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -1
  85. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +16 -2
  86. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +9 -2
  87. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -0
  88. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +14 -6
  89. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +2 -2
  90. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -4
  91. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +1 -1
  92. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +3 -0
  93. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +0 -2
  94. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +1 -0
  95. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +13 -12
  96. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
  97. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +28 -2
  98. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +210 -14
  99. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
  100. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +1 -1
  101. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
  102. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +13 -0
  103. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +6 -0
  104. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +2 -1
  105. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +46 -0
  106. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +1 -1
  107. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +2 -2
  108. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +29 -1
  109. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +33 -4
  110. package/dist/src/views/scheduling/country-rules/index.d.ts +13 -4
  111. package/dist/src/views/scheduling/data.d.ts +17 -0
  112. package/dist/src/views/scheduling/locales/index.d.ts +6300 -0
  113. package/dist/src/views/scheduling/schedule-state.d.ts +236 -236
  114. package/dist/src/views/scheduling/schedule-store.d.ts +29 -7
  115. package/dist/src/views/scheduling/types.d.ts +8 -0
  116. package/dist/style.css +1 -1
  117. package/dist/tsconfig.app.tsbuildinfo +1 -1
  118. package/dist/{useAppStore-BoLkvkE2.js → useAppStore-DZCdxlCd.js} +1 -1
  119. package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
  120. package/dist/{useLoading-Ch1AUYT1.js → useLoading-Nygx2zn8.js} +1 -1
  121. package/dist/{useReportPermissions-DM3GOFCC.js → useReportPermissions-BcxIKxlF.js} +3 -3
  122. package/package.json +2 -2
  123. package/dist/AuditLogList-Dgwj1gz8.js +0 -1779
  124. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Cx9jFgBS.js +0 -492
  125. package/dist/ScheduleGeneralPage-B8PWNsc2.js +0 -776
  126. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-V1sZ_xhO.js +0 -2253
  127. package/dist/SchedulePage-ndLByVBl.js +0 -17785
  128. package/dist/SchedulePositionPage-Cuv4ydOK.js +0 -264
  129. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
  130. package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
@@ -1,4 +1,4 @@
1
- import type { FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner } from '@/types/schedule';
1
+ import type { FdtoScheduleAutoScheduleObjective } from '@/types/schedule';
2
2
  import type { Proposal } from '../types';
3
3
  import type { ScheduleBoardApi } from './useScheduleBoard';
4
4
  import type { ScheduleDemandApi } from './useScheduleDemand';
@@ -6,7 +6,6 @@ export type ScheduleAutoScheduleStep = 'options' | 'summary';
6
6
  export interface ScheduleAutoScheduleOptions {
7
7
  fillGaps: boolean;
8
8
  objective: FdtoScheduleAutoScheduleObjective;
9
- planner: FdtoScheduleAutoSchedulePlanner;
10
9
  allowOvertime: boolean;
11
10
  /** Shown as preferences in the dialog but not sent: the generator takes no input for them yet
12
11
  * (availability and time off are always respected; patterns and cost ride on the objective). */
@@ -23,25 +22,24 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
23
22
  options: {
24
23
  fillGaps: boolean;
25
24
  objective: FdtoScheduleAutoScheduleObjective;
26
- planner: FdtoScheduleAutoSchedulePlanner;
27
25
  allowOvertime: boolean;
28
26
  respectAvailability: boolean;
29
27
  followPatterns: boolean;
30
28
  costEfficient: boolean;
31
29
  };
32
- planners: import("vue").Ref<("GREEDY" | "LLM")[], ("GREEDY" | "LLM")[]>;
33
- plannerChoice: import("vue").ComputedRef<boolean>;
34
30
  generating: import("vue").Ref<boolean, boolean>;
35
31
  generateError: import("vue").Ref<string | null, string | null>;
36
32
  result: import("vue").Ref<{
37
33
  objective: "BALANCED" | "SERVICE" | "LOWER_COST" | "STABLE_HOURS";
38
34
  allowOvertime: boolean;
35
+ model: string | null;
39
36
  proposals: {
37
+ rejectReason?: string | null | undefined | undefined;
40
38
  date: string;
41
39
  startTime: string;
42
40
  endTime: string;
43
- positionId: string | null;
44
41
  employeeId: string;
42
+ positionId: string | null;
45
43
  employeeName: string;
46
44
  position: string;
47
45
  reason: string;
@@ -60,7 +58,6 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
60
58
  dailyCap: number;
61
59
  rest: number;
62
60
  dayOff: number;
63
- dayCap: number;
64
61
  };
65
62
  }[];
66
63
  metrics: {
@@ -101,12 +98,14 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
101
98
  } | null, {
102
99
  objective: "BALANCED" | "SERVICE" | "LOWER_COST" | "STABLE_HOURS";
103
100
  allowOvertime: boolean;
101
+ model: string | null;
104
102
  proposals: {
103
+ rejectReason?: string | null | undefined;
105
104
  date: string;
106
105
  startTime: string;
107
106
  endTime: string;
108
- positionId: string | null;
109
107
  employeeId: string;
108
+ positionId: string | null;
110
109
  employeeName: string;
111
110
  position: string;
112
111
  reason: string;
@@ -125,7 +124,6 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
125
124
  dailyCap: number;
126
125
  rest: number;
127
126
  dayOff: number;
128
- dayCap: number;
129
127
  };
130
128
  }[];
131
129
  metrics: {
@@ -166,12 +164,14 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
166
164
  } | {
167
165
  objective: "BALANCED" | "SERVICE" | "LOWER_COST" | "STABLE_HOURS";
168
166
  allowOvertime: boolean;
167
+ model: string | null;
169
168
  proposals: {
169
+ rejectReason?: string | null | undefined | undefined;
170
170
  date: string;
171
171
  startTime: string;
172
172
  endTime: string;
173
- positionId: string | null;
174
173
  employeeId: string;
174
+ positionId: string | null;
175
175
  employeeName: string;
176
176
  position: string;
177
177
  reason: string;
@@ -190,7 +190,6 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
190
190
  dailyCap: number;
191
191
  rest: number;
192
192
  dayOff: number;
193
- dayCap: number;
194
193
  };
195
194
  }[];
196
195
  metrics: {
@@ -233,12 +232,13 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
233
232
  hasDemand: import("vue").ComputedRef<boolean>;
234
233
  noDemandOpen: import("vue").Ref<boolean, boolean>;
235
234
  rangeLabel: import("vue").ComputedRef<string>;
236
- openWizard: () => void;
235
+ openWizard: (fromSetup?: boolean) => void;
237
236
  closeWizard: () => void;
238
237
  next: () => void;
239
238
  back: () => void;
240
239
  generate: () => Promise<void>;
241
240
  reviewMode: import("vue").ComputedRef<boolean>;
241
+ hasPendingChanges: import("vue").ComputedRef<boolean>;
242
242
  proposals: import("vue").ComputedRef<{
243
243
  id: number;
244
244
  empId: number;
@@ -251,6 +251,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
251
251
  status: "pending" | "rejected";
252
252
  weekKey?: string | undefined;
253
253
  reason?: string | undefined;
254
+ rejectReason?: string | undefined;
254
255
  }[]>;
255
256
  weekHasProposals: import("vue").ComputedRef<boolean>;
256
257
  unmetCount: import("vue").Ref<number, number>;
@@ -267,7 +268,15 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
267
268
  toggleReject: (id: number) => void;
268
269
  rejectAll: () => void;
269
270
  exitReview: () => void;
270
- apply: () => Promise<number | null>;
271
+ completionOpen: import("vue").Ref<boolean, boolean>;
272
+ completionCount: import("vue").Ref<number, number>;
273
+ completionPublished: import("vue").Ref<boolean, boolean>;
274
+ completionFromSetup: import("vue").Ref<boolean, boolean>;
275
+ closeCompletion: () => void;
276
+ leaveReviewOpen: import("vue").Ref<boolean, boolean>;
277
+ confirmLeaveReview: () => void;
278
+ cancelLeaveReview: () => void;
279
+ apply: (showCompletion?: boolean, status?: "DRAFT" | "PUBLISHED") => Promise<number | null>;
271
280
  applying: import("vue").Ref<boolean, boolean>;
272
281
  applyRejections: import("vue").Ref<{
273
282
  employeeName: string;
@@ -1,21 +1,19 @@
1
1
  import type { Employee, OpenShift, PendingChange, ScheduleStatusInfo, ScheduleVersion, ScheduleVersionSnapshot, Section, WorkSlot } from '../types';
2
2
  import { RANGE_LEN } from './schedule-week-cache';
3
- import { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, positionKeyOf, workSlotsOf } from './schedule-board-helpers';
4
- export { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, positionKeyOf, workSlotsOf, };
3
+ import { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, overlapsAnotherSlot, positionKeyOf, workSlotsOf } from './schedule-board-helpers';
4
+ export { contractCapFor, isGenuineSplitGroup, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, overlapsAnotherSlot, positionKeyOf, workSlotsOf, };
5
5
  export { RANGE_LEN };
6
6
  export type ScheduleGranularity = 'day' | 'week';
7
7
  export declare function useScheduleBoard(handlers?: {
8
8
  onPersistError?: (message: string) => void;
9
9
  }): {
10
10
  dayNote: (dayIdx: number) => import("../types").ScheduleDayNote | null;
11
- setDayNote: (dayIdx: number, title: string, desc: string) => void;
11
+ setDayNote: (dayIdx: number, title: string, desc: string, isPublicHoliday?: boolean) => void;
12
12
  clearDayNote: (dayIdx: number) => void;
13
13
  isStandingClosedWeekday: (dayIdx: number) => boolean;
14
14
  holidayName: (dayIdx: number) => string | null;
15
- holidayIsAuto: (dayIdx: number) => boolean;
16
15
  isPublicHoliday: (dayIdx: number) => boolean;
17
16
  holidayRateApplies: (dayIdx: number) => boolean;
18
- setHolidayNormal: (dayIdx: number, toNormal: boolean) => void;
19
17
  setPublicHoliday: (dayIdx: number, on: boolean) => void;
20
18
  otRateOn: (dayIdx: number) => number;
21
19
  regularRateOn: (dayIdx: number) => number;
@@ -112,6 +110,28 @@ export declare function useScheduleBoard(handlers?: {
112
110
  updatedAt?: string | undefined;
113
111
  splitGroupId?: string | undefined;
114
112
  }[] | null)[];
113
+ timeOff?: ({
114
+ timeOff: "approved" | "pending";
115
+ requestId?: string | undefined;
116
+ type?: "OFF_DAY" | "LEAVE" | undefined;
117
+ leaveType?: "ANNUAL" | "MEDICAL" | "EMERGENCY" | "UNPAID" | undefined;
118
+ reason: string;
119
+ half?: boolean | undefined;
120
+ halfPart?: "AM" | "PM" | undefined;
121
+ from?: string | undefined;
122
+ to?: string | undefined;
123
+ appliedOn?: string | undefined;
124
+ note?: string | undefined;
125
+ cert?: {
126
+ name: string;
127
+ size: string;
128
+ } | null | undefined;
129
+ bal?: {
130
+ type: string;
131
+ entitled: number;
132
+ used: number;
133
+ } | undefined;
134
+ } | null)[] | undefined;
115
135
  remarks: {
116
136
  author: string;
117
137
  date: string;
@@ -144,6 +164,7 @@ export declare function useScheduleBoard(handlers?: {
144
164
  to: string;
145
165
  }[] | undefined;
146
166
  passcode?: string | undefined;
167
+ code?: string | undefined;
147
168
  masterUser?: boolean | undefined;
148
169
  }[], Employee[] | {
149
170
  id: number;
@@ -237,6 +258,28 @@ export declare function useScheduleBoard(handlers?: {
237
258
  updatedAt?: string | undefined;
238
259
  splitGroupId?: string | undefined;
239
260
  }[] | null)[];
261
+ timeOff?: ({
262
+ timeOff: "approved" | "pending";
263
+ requestId?: string | undefined;
264
+ type?: "OFF_DAY" | "LEAVE" | undefined;
265
+ leaveType?: "ANNUAL" | "MEDICAL" | "EMERGENCY" | "UNPAID" | undefined;
266
+ reason: string;
267
+ half?: boolean | undefined;
268
+ halfPart?: "AM" | "PM" | undefined;
269
+ from?: string | undefined;
270
+ to?: string | undefined;
271
+ appliedOn?: string | undefined;
272
+ note?: string | undefined;
273
+ cert?: {
274
+ name: string;
275
+ size: string;
276
+ } | null | undefined;
277
+ bal?: {
278
+ type: string;
279
+ entitled: number;
280
+ used: number;
281
+ } | undefined;
282
+ } | null)[] | undefined;
240
283
  remarks: {
241
284
  author: string;
242
285
  date: string;
@@ -269,6 +312,7 @@ export declare function useScheduleBoard(handlers?: {
269
312
  to: string;
270
313
  }[] | undefined;
271
314
  passcode?: string | undefined;
315
+ code?: string | undefined;
272
316
  masterUser?: boolean | undefined;
273
317
  }[]>;
274
318
  sections: import("vue").Ref<{
@@ -319,12 +363,14 @@ export declare function useScheduleBoard(handlers?: {
319
363
  dayIdx: number;
320
364
  kind: "add" | "change" | "remove";
321
365
  label: string;
366
+ conflict?: boolean | undefined;
322
367
  }[], PendingChange[] | {
323
368
  empId: number;
324
369
  employeeKey: string;
325
370
  dayIdx: number;
326
371
  kind: "add" | "change" | "remove";
327
372
  label: string;
373
+ conflict?: boolean | undefined;
328
374
  }[]>;
329
375
  unpublishedChanges: import("vue").ComputedRef<PendingChange[]>;
330
376
  persistPublish: (items: Array<{
@@ -549,12 +595,17 @@ export declare function useScheduleBoard(handlers?: {
549
595
  clearEmployeeShifts: (empId: number) => {
550
596
  shifts: number;
551
597
  };
552
- moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number) => boolean;
598
+ moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string, allowLocked?: boolean) => boolean;
553
599
  swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
554
- clearShiftsInRange: () => {
600
+ swapPositions: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
601
+ clearShiftsInRange: (options?: {
602
+ persist?: boolean;
603
+ mutate?: boolean;
604
+ }) => {
555
605
  shifts: number;
556
606
  open: number;
557
607
  leave: number;
608
+ assignmentIds: string[];
558
609
  };
559
610
  requiredFor: (dayIdx: number, position: string) => number;
560
611
  scheduledFor: (dayIdx: number, position: string) => number;
@@ -1,19 +1,12 @@
1
1
  import type { ScheduleBoardApi } from './useScheduleBoard';
2
- export interface ScheduleCopySkipReport {
3
- leave: number;
4
- already: number;
5
- hours: number;
6
- full: number;
7
- closed: number;
8
- }
9
2
  /** The mockup's Copy schedule feature (copyLastWeek/copyThisWeekForward), ported against this
10
- * board's per-week-offset bucket cache instead of the mockup's absolute 91-day horizon. Split
11
- * shifts (copyUnitsOf in the mockup) aren't ported — WorkSlot has no splitId concept in this
12
- * data model, so each slot is copied as its own unit. */
3
+ * board's per-week-offset bucket cache instead of the mockup's absolute 91-day horizon. */
13
4
  export declare function useScheduleCopyWeek(board: ScheduleBoardApi, handlers?: {
14
5
  onDemandChanged?: () => void;
6
+ onConfirmOverwrite?: (message: string, onConfirm: () => void) => void;
15
7
  }): {
16
8
  copyLastWeek: (mode: "staffed" | "open") => Promise<void>;
17
9
  copyThisWeekForward: (mode: "staffed" | "open") => Promise<void>;
10
+ isCopying: import("vue").Ref<boolean, boolean>;
18
11
  };
19
12
  export type ScheduleCopyWeekApi = ReturnType<typeof useScheduleCopyWeek>;
@@ -27,8 +27,17 @@ export interface ScheduleOtRisk {
27
27
  empId: number;
28
28
  name: string;
29
29
  hours: number;
30
+ otHours: number;
30
31
  contract: number;
31
32
  }
33
+ export interface ScheduleMonthlyOtSummary {
34
+ key: string;
35
+ label: string;
36
+ used: number;
37
+ cap: number | null;
38
+ progress: number;
39
+ high: boolean;
40
+ }
32
41
  /** The staff rail consumes the same employee identity/load derivation as the area view. */
33
42
  export type ScheduleRailRow = ScheduleEmployeeLoad;
34
43
  /** Weekly labour cost + monthly OT gauge for the collapsible cost rail, built off one
@@ -41,7 +50,10 @@ export declare function useScheduleCostRail(board: ScheduleBoardApi, proposalAt?
41
50
  weeklyCost: import("vue").ComputedRef<number>;
42
51
  otHours: import("vue").ComputedRef<number>;
43
52
  monthlyOtUsed: import("vue").ComputedRef<number>;
44
- monthlyOtCapHours: number;
53
+ monthlyOtSummaries: import("vue").ComputedRef<ScheduleMonthlyOtSummary[]>;
54
+ monthlyOtCapHours: import("vue").ComputedRef<number | null>;
55
+ monthlyOtProgress: import("vue").ComputedRef<number>;
56
+ monthlyOtHigh: import("vue").ComputedRef<boolean>;
45
57
  bySection: import("vue").ComputedRef<ScheduleSectionCost[]>;
46
58
  otRisk: import("vue").ComputedRef<ScheduleOtRisk[]>;
47
59
  };
@@ -33,7 +33,6 @@ export declare function useScheduleDayNote(board: ScheduleBoardApi, opts?: Sched
33
33
  savedNote: import("vue").ComputedRef<import("../types").ScheduleDayNote | null>;
34
34
  hasSaved: import("vue").ComputedRef<boolean>;
35
35
  whenLabel: import("vue").ComputedRef<string>;
36
- isAuto: import("vue").ComputedRef<boolean>;
37
36
  rateApplies: import("vue").ComputedRef<boolean>;
38
37
  holidayHint: import("vue").ComputedRef<string>;
39
38
  openFor: (dayIdx: number, anchor: HTMLElement) => void;
@@ -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,9 +42,14 @@ 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
- onTrackClick?: () => void;
52
+ onTrackClick?: (anchor: HTMLElement) => void;
40
53
  }
41
54
  export interface ScheduleHourCell {
42
55
  m: number;
@@ -48,7 +61,8 @@ export interface ScheduleHourCell {
48
61
  n: number;
49
62
  }
50
63
  export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster: ScheduleRosterApi, areaBoard: ScheduleAreaBoardApi, demand: ScheduleDemandApi, handlers: {
51
- onAddShift: (empId: number, dayIdx: number) => void;
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;
@@ -66,6 +66,13 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
66
66
  }[]>;
67
67
  toggleCustomDay: (i: number) => void;
68
68
  applyNote: import("vue").ComputedRef<string>;
69
+ replaceConfirmOpen: import("vue").ComputedRef<boolean>;
70
+ replaceConfirmTitle: import("vue").ComputedRef<string>;
71
+ replaceConfirmActionLabel: import("vue").ComputedRef<string>;
72
+ replaceConfirmMessage: import("vue").ComputedRef<string>;
73
+ replaceConfirmDates: import("vue").ComputedRef<string[]>;
74
+ confirmReplace: () => Promise<void>;
75
+ cancelReplace: () => void;
69
76
  overlapWarning: import("vue").ComputedRef<string>;
70
77
  whenLabel: import("vue").ComputedRef<string>;
71
78
  openFor: (idx: number) => void;
@@ -96,14 +103,14 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
96
103
  scheduled: number;
97
104
  varies: boolean;
98
105
  pct: number;
99
- tone: "short" | "part" | "met" | "over";
106
+ tone: "short" | "part" | "over" | "met";
100
107
  note: string;
101
108
  }[]>;
102
109
  coverageTotal: import("vue").ComputedRef<{
103
110
  required: number;
104
111
  scheduled: number;
105
112
  pct: number;
106
- tone: "short" | "part" | "met" | "over";
113
+ tone: "short" | "part" | "over" | "met";
107
114
  note: string;
108
115
  }>;
109
116
  saving: import("vue").Ref<boolean, boolean>;
@@ -50,5 +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, allowLocked?: boolean) => void;
53
54
  };
54
55
  export type ScheduleDragDropApi = ReturnType<typeof useScheduleDragDrop>;
@@ -1,10 +1,14 @@
1
+ import { type ComputedRef } from 'vue';
1
2
  import type { Role } from '@/types/role';
2
- import { type ScheduleAddEmployeeForm } from './schedule-add-employee-form';
3
- export declare function useScheduleEmployeeAccess(form: ScheduleAddEmployeeForm): {
4
- passcodeValue: import("vue").ComputedRef<string>;
5
- passcodeOk: import("vue").ComputedRef<boolean>;
3
+ import type { ScheduleAddEmployeeForm } from './schedule-add-employee-form';
4
+ export declare function useScheduleEmployeeAccess(form: ScheduleAddEmployeeForm, options?: {
5
+ excludePosUserId?: ComputedRef<string | undefined>;
6
+ }): {
7
+ passcodeValue: ComputedRef<string>;
8
+ passcodeOk: ComputedRef<boolean>;
6
9
  setPasscodeDigit: (index: number, value: string) => void;
7
- generatePasscode: () => void;
10
+ generatePasscode: () => Promise<void>;
11
+ isGeneratingPasscode: import("vue").Ref<boolean, boolean>;
8
12
  togglePosAccess: () => void;
9
13
  addPosRoleRow: () => void;
10
14
  removePosRoleRow: (index: number) => void;
@@ -12,5 +16,9 @@ export declare function useScheduleEmployeeAccess(form: ScheduleAddEmployeeForm)
12
16
  setPosRoleOutlet: (index: number, outlet: string) => void;
13
17
  setPosRoleId: (index: number, roleId: string) => void;
14
18
  posRoleOptionsFor: (outlet: string) => Role[];
15
- posRolesHint: import("vue").ComputedRef<"" | "No outlet assigned, so their passcode will not open a till yet." | "The same outlet is listed twice — only the last role on it will apply.">;
19
+ isPosRoleUsable: (role: Role) => boolean;
20
+ setMasterUserRoleAccess: (roleIds: string[] | null | undefined) => void;
21
+ isPosOutletUsable: (outlet: string) => boolean;
22
+ setMasterUserRestaurantAccess: (restaurantIds: string[] | null | undefined) => void;
23
+ posRolesHint: ComputedRef<string>;
16
24
  };
@@ -2,8 +2,8 @@ import { type ComputedRef } from 'vue';
2
2
  import type { ScheduleAddEmployeeForm } from './schedule-add-employee-form';
3
3
  export declare function useScheduleEmployeeAvailability(form: ScheduleAddEmployeeForm, isPart: ComputedRef<boolean>): {
4
4
  dayLit: (index: number) => boolean;
5
- avLabel: ComputedRef<"Weekly availability" | "Time off days">;
6
- avAllLabel: ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
5
+ avLabel: ComputedRef<string>;
6
+ avAllLabel: ComputedRef<string>;
7
7
  maxHoursPlaceholder: ComputedRef<string>;
8
8
  ensureAvailHours: (index: number) => void;
9
9
  toggleAvailDay: (index: number) => void;
@@ -1,5 +1,7 @@
1
1
  import { type ComputedRef } from 'vue';
2
+ import type { IFdtoPosUserSummary } from '@/types/employee';
2
3
  import type { ScheduleAddEmployeeForm, ScheduleAddEmployeeStep } from './schedule-add-employee-form';
4
+ import type { ExistingStaffCandidate } from '../types';
3
5
  import type { ScheduleBoardApi } from './useScheduleBoard';
4
6
  interface UseScheduleEmployeeCandidatesOptions {
5
7
  board: ScheduleBoardApi;
@@ -11,16 +13,36 @@ interface UseScheduleEmployeeCandidatesOptions {
11
13
  open: {
12
14
  value: boolean;
13
15
  };
14
- onPicked: (employeeId: string) => void;
15
- onPrefillPasscode: (employeeId: string) => void;
16
- onPrefillPosRoles: (employeeId: string) => void;
16
+ onPicked: (employeeId: string, employee?: IFdtoPosUserSummary) => void;
17
+ onPrefillPasscode: (employeeId: string, employee?: IFdtoPosUserSummary) => void | Promise<void>;
18
+ onPrefillPosRoles: (employeeId: string, employee?: IFdtoPosUserSummary) => void | Promise<void>;
19
+ onPrefillPosRoleAccess: (roleIds: string[] | null | undefined) => void;
20
+ onPrefillPosRestaurantAccess: (restaurantIds: string[] | null | undefined) => void;
17
21
  }
18
22
  /** Directory lookup and profile prefill for the existing-employee path of the add wizard. */
19
23
  export declare function useScheduleEmployeeCandidates(options: UseScheduleEmployeeCandidatesOptions): {
20
24
  selectExistingOpen: import("vue").Ref<boolean, boolean>;
25
+ candidates: import("vue").Ref<{
26
+ employeeId: string;
27
+ name: string;
28
+ otherOutlets: string[];
29
+ locations: string[];
30
+ }[], ExistingStaffCandidate[] | {
31
+ employeeId: string;
32
+ name: string;
33
+ otherOutlets: string[];
34
+ locations: string[];
35
+ }[]>;
36
+ candidatesTotal: import("vue").Ref<number, number>;
37
+ candidatesPage: import("vue").Ref<number, number>;
38
+ candidatesPageItemCount: import("vue").Ref<number, number>;
39
+ candidatesPageSize: number;
21
40
  candidatesLoading: import("vue").Ref<boolean, boolean>;
22
41
  candidatesError: import("vue").Ref<string | null, string | null>;
23
- openSelectExisting: () => void;
42
+ selectingExisting: import("vue").Ref<boolean, boolean>;
43
+ openSelectExisting: (search?: string) => void;
44
+ searchExisting: (search: string) => void;
45
+ goToExistingPage: (page: number, search: string) => void;
24
46
  closeSelectExisting: () => void;
25
47
  pickExisting: (employeeId: string) => Promise<void>;
26
48
  };
@@ -1,7 +1,7 @@
1
1
  import type { ScheduleAddEmployeeForm } from './schedule-add-employee-form';
2
2
  export declare function useScheduleEmployeeCompensation(form: ScheduleAddEmployeeForm): {
3
3
  setPayBasis: (basis: "hourly" | "monthly") => void;
4
- payUnit: import("vue").ComputedRef<"/month" | "/hour">;
4
+ payUnit: import("vue").ComputedRef<string>;
5
5
  payAmountNumber: import("vue").ComputedRef<number>;
6
6
  effectiveRate: import("vue").ComputedRef<number>;
7
7
  };
@@ -1,9 +1,11 @@
1
1
  import type { ComputedRef, Ref } from 'vue';
2
+ import type { IFdtoPosUserSummary } from '@/types/employee';
2
3
  import { type ScheduleAddEmployeeForm } from './schedule-add-employee-form';
3
4
  import type { ScheduleBoardApi } from './useScheduleBoard';
4
5
  interface UseScheduleEmployeePersistenceOptions {
5
6
  form: ScheduleAddEmployeeForm;
6
7
  pickedEmployeeId: Ref<string | null>;
8
+ selectedBusinessEmployee: Ref<IFdtoPosUserSummary | null>;
7
9
  payAmountNumber: ComputedRef<number>;
8
10
  saving: Ref<boolean>;
9
11
  saveError: Ref<string | null>;
@@ -18,6 +20,7 @@ interface UseScheduleEmployeePersistenceOptions {
18
20
  }[]>;
19
21
  effectiveRate: ComputedRef<number>;
20
22
  passcodeValue: ComputedRef<string>;
23
+ deferScheduleWrites: Ref<boolean>;
21
24
  notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
22
25
  }
23
26
  /** Persistence for an existing business employee being added to this schedule. */
@@ -4,7 +4,6 @@ interface UseScheduleEmployeeValidationOptions {
4
4
  form: ScheduleAddEmployeeForm;
5
5
  submitAttempted: Ref<boolean>;
6
6
  passcodeOk: ComputedRef<boolean>;
7
- isNewUser: ComputedRef<boolean>;
8
7
  }
9
8
  /** Validation guards for the add/edit employee form. Keeping them together makes create and
10
9
  * the field-level error indicators consume the same rules. */
@@ -15,6 +14,5 @@ export declare function useScheduleEmployeeValidation(options: UseScheduleEmploy
15
14
  posRolesError: ComputedRef<boolean>;
16
15
  availabilityOk: ComputedRef<boolean>;
17
16
  availabilityError: ComputedRef<boolean>;
18
- masterCodeError: ComputedRef<boolean>;
19
17
  };
20
18
  export {};
@@ -26,6 +26,7 @@ export declare function useScheduleExport(board: ScheduleBoardApi): {
26
26
  printNow: () => void;
27
27
  jpgPreviewOpen: import("vue").Ref<boolean, boolean>;
28
28
  jpgPreviewUrl: import("vue").Ref<string | null, string | null>;
29
+ jpgPreviewError: import("vue").Ref<string | null, string | null>;
29
30
  jpgPreviewWidth: import("vue").Ref<number, number>;
30
31
  jpgPreviewHeight: import("vue").Ref<number, number>;
31
32
  jpgFilename: import("vue").Ref<string, string>;
@@ -1,10 +1,14 @@
1
1
  import type { LeaveSlot } from '../types';
2
2
  import type { ScheduleBoardApi } from './useScheduleBoard';
3
3
  export type TimeOffSelection = 'OFF_DAY' | 'ANNUAL' | 'MEDICAL' | 'EMERGENCY' | 'UNPAID';
4
+ /** `label` is the English record label (kept on `LeaveSlot.reason`, which other code matches on);
5
+ * `labelKey` is what the UI shows. */
4
6
  export declare const TIME_OFF_OPTIONS: Array<{
5
7
  value: TimeOffSelection;
6
8
  label: string;
9
+ labelKey: string;
7
10
  }>;
11
+ export { timeOffLabelKey } from './schedule-leave-split';
8
12
  export type ScheduleLeaveMode = 'all' | 'am' | 'pm';
9
13
  export interface ScheduleLeaveState {
10
14
  open: boolean;
@@ -15,10 +19,13 @@ export interface ScheduleLeaveState {
15
19
  selection: TimeOffSelection;
16
20
  mode: ScheduleLeaveMode;
17
21
  }
22
+ interface ScheduleLeaveOptions {
23
+ notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
24
+ }
18
25
  /** The leave editor — V6.2's "Book leave" dialog: a reason, how much of the day it covers, and
19
26
  * what that does to the person's availability. Opened from the add popup's Off day / Leave rows
20
27
  * (booking) and from an existing leave card (editing, or approving a pending request). */
21
- export declare function useScheduleLeave(board: ScheduleBoardApi): {
28
+ export declare function useScheduleLeave(board: ScheduleBoardApi, leaveOptions?: ScheduleLeaveOptions): {
22
29
  state: {
23
30
  open: boolean;
24
31
  empId: number | null;
@@ -29,16 +36,10 @@ export declare function useScheduleLeave(board: ScheduleBoardApi): {
29
36
  };
30
37
  employee: import("vue").ComputedRef<import("../types").Employee | undefined>;
31
38
  activeSlot: import("vue").ComputedRef<LeaveSlot | null>;
32
- options: import("vue").ComputedRef<({
33
- readonly mode: "all";
34
- readonly name: "Full day";
35
- } | {
36
- readonly mode: "am";
37
- readonly name: "Half day AM";
38
- } | {
39
- readonly mode: "pm";
40
- readonly name: "Half day PM";
41
- })[]>;
39
+ options: import("vue").ComputedRef<{
40
+ mode: "all" | "am" | "pm";
41
+ name: string;
42
+ }[]>;
42
43
  span: import("vue").ComputedRef<{
43
44
  from: string;
44
45
  to: string;
@@ -48,7 +49,7 @@ export declare function useScheduleLeave(board: ScheduleBoardApi): {
48
49
  selectionLabel: import("vue").ComputedRef<string>;
49
50
  dayLabel: import("vue").ComputedRef<string>;
50
51
  hoursText: import("vue").ComputedRef<string>;
51
- coverText: import("vue").ComputedRef<"Full day" | "Half day AM" | "Half day PM">;
52
+ coverText: import("vue").ComputedRef<string>;
52
53
  openFor: (empId: number, dayIdx: number, reason?: string | null) => void;
53
54
  close: () => void;
54
55
  save: () => Promise<void>;
@@ -1,7 +1,7 @@
1
1
  import { type Ref } from 'vue';
2
2
  import type { ScheduleOnboardingDayHours, ScheduleOnboardingRange } from './onboarding-types';
3
3
  import type { SchedulePositionsApi } from './useSchedulePositions';
4
- export declare function useScheduleOnboardingDemand(hours: ScheduleOnboardingDayHours[], positions: SchedulePositionsApi, note: Ref<string>): {
4
+ export declare function useScheduleOnboardingDemand(hours: ScheduleOnboardingDayHours[], positions: SchedulePositionsApi, note: Ref<string>, isPastDay?: (dayIdx: number) => boolean): {
5
5
  demand: import("vue").Reactive<ScheduleOnboardingRange[][]>;
6
6
  dmDay: Ref<number, number>;
7
7
  staffingSaving: Ref<boolean, boolean>;