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

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 (135) hide show
  1. package/dist/{ApprovalCodeList-D5E_FN3f.js → ApprovalCodeList-DwubNElp.js} +7 -7
  2. package/dist/{AuditLogList-CqqiS2xW.js → AuditLogList-CTeMbyHL.js} +18 -19
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DC_oQTsP.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CmLLNcB4.js} +2 -2
  4. package/dist/{EmployeeList-ChMlGxmu.js → EmployeeList-DEAJPx9F.js} +255 -266
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-OAvd6eHM.js} +6 -6
  6. package/dist/{GrantUserList-DA26W3K3.js → GrantUserList-Dx4jF2qJ.js} +8 -8
  7. package/dist/{Main-C0gVAR92.js → Main-BirWXk7o.js} +5 -5
  8. package/dist/{Main-m39gMG-a.js → Main-C2PBSCte.js} +11 -11
  9. package/dist/{Main-B27Qx8R2.js → Main-CL5JYCPg.js} +8 -8
  10. package/dist/{PermissionSetList-mdA65jmw.js → PermissionSetList-BtYcqPiO.js} +19 -18
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Dp6bdEZp.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BXw4aX39.js} +1211 -1211
  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-DaAx79pC.js} +1 -1
  13. package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
  14. package/dist/{RoleList-BPayuLxA.js → RoleList-YS_LBfoJ.js} +21 -20
  15. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BorKuXxL.js +530 -0
  16. package/dist/ScheduleGeneralPage-C1p2mivt.js +780 -0
  17. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-CnKzVz3I.js +2457 -0
  18. package/dist/SchedulePage-BP7x7JAl.js +19485 -0
  19. package/dist/{SchedulePositionPage-BUQy-Itg.js → SchedulePositionPage-BogOQZVW.js} +78 -80
  20. package/dist/{SelectFilter-CG13h83-.js → SelectFilter-Dh3eY1hV.js} +1 -1
  21. package/dist/{TeamMemberList-CIlvRlf8.js → TeamMemberList-Bv6_2bzs.js} +27 -27
  22. package/dist/{TimesheetList-DFAfhWYG.js → TimesheetList-B3BmpH0I.js} +52 -53
  23. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-QGzHuY7V.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-C4rbnZh1.js} +3 -3
  24. package/dist/{app-C_EW9DFr.js → app-CyS8c8dx.js} +2879 -2462
  25. package/dist/app.js +1 -1
  26. package/dist/{approval-code-DHsUgc4K.js → approval-code-BIpLingm.js} +1 -1
  27. package/dist/{dayjs.min-ibysRBBa.js → dayjs.min-BRlEc3-d.js} +1 -1
  28. package/dist/{employee-B1BQc4gB.js → employee-CcdjLOLQ.js} +51 -47
  29. package/dist/{grant-user-qzKHFTro.js → grant-user-uZmvD_bw.js} +1 -1
  30. package/dist/{iteration-DQVB-iz0.js → iteration-CL1RDmws.js} +1 -1
  31. package/dist/{lodash-DOj41a0A.js → lodash-C00ieagp.js} +1 -1
  32. package/dist/object-Dwyg2LgX.js +16 -0
  33. package/dist/{restaurant-BbYRA_IT.js → restaurant-CHpkjUPy.js} +46 -47
  34. package/dist/{role-B9MSLu4B.js → role-DtatkKp9.js} +2 -2
  35. package/dist/{rule-e6okoXK6.js → rule-DJJMpkoG.js} +3 -3
  36. package/dist/src/api/employee/index.d.ts +2 -2
  37. package/dist/src/api/schedule/index.d.ts +12 -1
  38. package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
  39. package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
  40. package/dist/src/stores/employee.d.ts +12 -12
  41. package/dist/src/types/schedule.d.ts +3 -4
  42. package/dist/src/views/audit-log/locales/index.d.ts +252 -0
  43. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -8
  44. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
  45. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -4
  46. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +0 -2
  47. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +0 -7
  48. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
  49. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +2 -6
  50. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
  51. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -1
  52. package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +1 -1
  53. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +4 -1
  54. package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +1 -5
  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/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingSettings.vue.d.ts} +2 -2
  58. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +10 -0
  59. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +1 -1
  60. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -10
  61. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +3 -3
  62. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
  63. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -2
  64. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
  65. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +4 -0
  66. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  67. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +13 -1
  68. package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
  69. package/dist/src/views/scheduling/composables/schedule-leave-split.d.ts +5 -0
  70. package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +22 -0
  71. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
  72. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +3 -1
  73. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +1 -0
  74. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +46 -11
  75. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +3 -11
  76. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
  77. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -9
  78. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +25 -13
  79. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +87 -11
  80. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
  81. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +13 -1
  82. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -1
  83. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +16 -5
  84. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +3 -5
  85. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +18 -3
  86. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -0
  87. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +20 -7
  88. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +1 -1
  89. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -3
  90. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +7 -0
  91. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -2
  92. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +1 -0
  93. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
  94. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +5 -1
  95. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
  96. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +48 -4
  97. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +302 -30
  98. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
  99. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +1 -1
  100. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
  101. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
  102. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +0 -4
  103. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +1 -0
  104. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +7 -1
  105. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +4 -1
  106. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +70 -4
  107. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -2
  108. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +2 -2
  109. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +41 -3
  110. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -0
  111. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +47 -6
  112. package/dist/src/views/scheduling/country-rules/index.d.ts +9 -4
  113. package/dist/src/views/scheduling/data.d.ts +22 -1
  114. package/dist/src/views/scheduling/locales/index.d.ts +28 -0
  115. package/dist/src/views/scheduling/schedule-state.d.ts +276 -212
  116. package/dist/src/views/scheduling/schedule-store.d.ts +37 -11
  117. package/dist/src/views/scheduling/types.d.ts +30 -5
  118. package/dist/style.css +1 -1
  119. package/dist/tsconfig.app.tsbuildinfo +1 -1
  120. package/dist/{useAppStore-BoLkvkE2.js → useAppStore-Bp0PwbAN.js} +1 -1
  121. package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
  122. package/dist/{useLoading-Ch1AUYT1.js → useLoading-sgL8DRUz.js} +1 -1
  123. package/dist/{useReportPermissions-CJ9ey1bN.js → useReportPermissions-DI-xg3OX.js} +3 -3
  124. package/package.json +2 -2
  125. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-C_EQivMd.js +0 -470
  126. package/dist/ScheduleGeneralPage-sAqR1-hf.js +0 -666
  127. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-ABipaQiR.js +0 -2205
  128. package/dist/SchedulePage-DhbtCR8U.js +0 -18546
  129. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
  130. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
  131. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
  132. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
  133. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -124
  134. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
  135. package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
@@ -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;
@@ -33,10 +31,12 @@ export declare function useScheduleBoard(handlers?: {
33
31
  contractHours?: number | undefined;
34
32
  rate: number;
35
33
  positions: string[];
34
+ archivedPositions?: string[] | undefined;
36
35
  shifts: ({
37
36
  start: string;
38
37
  end: string;
39
38
  role: string;
39
+ positionId?: string | undefined;
40
40
  status: import("../types").ShiftStatus;
41
41
  clock?: {
42
42
  in: string | null;
@@ -85,6 +85,7 @@ export declare function useScheduleBoard(handlers?: {
85
85
  start: string;
86
86
  end: string;
87
87
  role: string;
88
+ positionId?: string | undefined;
88
89
  status: import("../types").ShiftStatus;
89
90
  clock?: {
90
91
  in: string | null;
@@ -109,6 +110,28 @@ export declare function useScheduleBoard(handlers?: {
109
110
  updatedAt?: string | undefined;
110
111
  splitGroupId?: string | undefined;
111
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;
112
135
  remarks: {
113
136
  author: string;
114
137
  date: string;
@@ -123,9 +146,16 @@ export declare function useScheduleBoard(handlers?: {
123
146
  payBasis?: "hourly" | "monthly" | undefined;
124
147
  payAmount?: number | undefined;
125
148
  maxHours?: number | undefined;
126
- maxOtHours?: number | undefined;
127
149
  minHours?: number | undefined;
128
- otAfterDaily?: number | undefined;
150
+ minHoursPerDay?: number | undefined;
151
+ workingHours?: {
152
+ minHoursPerDay: number | null;
153
+ maxHoursPerDay: number | null;
154
+ maxHoursPerWeek: number | null;
155
+ } | undefined;
156
+ overtime?: {
157
+ maxHoursPerMonth: number | null;
158
+ } | undefined;
129
159
  preferences?: string[] | undefined;
130
160
  seniority?: "senior" | "junior" | "" | undefined;
131
161
  availDays?: boolean[] | undefined;
@@ -134,6 +164,7 @@ export declare function useScheduleBoard(handlers?: {
134
164
  to: string;
135
165
  }[] | undefined;
136
166
  passcode?: string | undefined;
167
+ code?: string | undefined;
137
168
  masterUser?: boolean | undefined;
138
169
  }[], Employee[] | {
139
170
  id: number;
@@ -148,10 +179,12 @@ export declare function useScheduleBoard(handlers?: {
148
179
  contractHours?: number | undefined;
149
180
  rate: number;
150
181
  positions: string[];
182
+ archivedPositions?: string[] | undefined;
151
183
  shifts: ({
152
184
  start: string;
153
185
  end: string;
154
186
  role: string;
187
+ positionId?: string | undefined;
155
188
  status: import("../types").ShiftStatus;
156
189
  clock?: {
157
190
  in: string | null;
@@ -200,6 +233,7 @@ export declare function useScheduleBoard(handlers?: {
200
233
  start: string;
201
234
  end: string;
202
235
  role: string;
236
+ positionId?: string | undefined;
203
237
  status: import("../types").ShiftStatus;
204
238
  clock?: {
205
239
  in: string | null;
@@ -224,6 +258,28 @@ export declare function useScheduleBoard(handlers?: {
224
258
  updatedAt?: string | undefined;
225
259
  splitGroupId?: string | undefined;
226
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;
227
283
  remarks: {
228
284
  author: string;
229
285
  date: string;
@@ -238,9 +294,16 @@ export declare function useScheduleBoard(handlers?: {
238
294
  payBasis?: "hourly" | "monthly" | undefined;
239
295
  payAmount?: number | undefined;
240
296
  maxHours?: number | undefined;
241
- maxOtHours?: number | undefined;
242
297
  minHours?: number | undefined;
243
- otAfterDaily?: number | undefined;
298
+ minHoursPerDay?: number | undefined;
299
+ workingHours?: {
300
+ minHoursPerDay: number | null;
301
+ maxHoursPerDay: number | null;
302
+ maxHoursPerWeek: number | null;
303
+ } | undefined;
304
+ overtime?: {
305
+ maxHoursPerMonth: number | null;
306
+ } | undefined;
244
307
  preferences?: string[] | undefined;
245
308
  seniority?: "senior" | "junior" | "" | undefined;
246
309
  availDays?: boolean[] | undefined;
@@ -249,6 +312,7 @@ export declare function useScheduleBoard(handlers?: {
249
312
  to: string;
250
313
  }[] | undefined;
251
314
  passcode?: string | undefined;
315
+ code?: string | undefined;
252
316
  masterUser?: boolean | undefined;
253
317
  }[]>;
254
318
  sections: import("vue").Ref<{
@@ -299,12 +363,14 @@ export declare function useScheduleBoard(handlers?: {
299
363
  dayIdx: number;
300
364
  kind: "add" | "change" | "remove";
301
365
  label: string;
366
+ conflict?: boolean | undefined;
302
367
  }[], PendingChange[] | {
303
368
  empId: number;
304
369
  employeeKey: string;
305
370
  dayIdx: number;
306
371
  kind: "add" | "change" | "remove";
307
372
  label: string;
373
+ conflict?: boolean | undefined;
308
374
  }[]>;
309
375
  unpublishedChanges: import("vue").ComputedRef<PendingChange[]>;
310
376
  persistPublish: (items: Array<{
@@ -329,6 +395,7 @@ export declare function useScheduleBoard(handlers?: {
329
395
  start: string;
330
396
  end: string;
331
397
  role: string;
398
+ positionId?: string | undefined;
332
399
  status: import("../types").ShiftStatus;
333
400
  clock?: {
334
401
  in: string | null;
@@ -377,6 +444,7 @@ export declare function useScheduleBoard(handlers?: {
377
444
  start: string;
378
445
  end: string;
379
446
  role: string;
447
+ positionId?: string | undefined;
380
448
  status: import("../types").ShiftStatus;
381
449
  clock?: {
382
450
  in: string | null;
@@ -417,6 +485,7 @@ export declare function useScheduleBoard(handlers?: {
417
485
  start: string;
418
486
  end: string;
419
487
  role: string;
488
+ positionId?: string | undefined;
420
489
  status: import("../types").ShiftStatus;
421
490
  clock?: {
422
491
  in: string | null;
@@ -465,6 +534,7 @@ export declare function useScheduleBoard(handlers?: {
465
534
  start: string;
466
535
  end: string;
467
536
  role: string;
537
+ positionId?: string | undefined;
468
538
  status: import("../types").ShiftStatus;
469
539
  clock?: {
470
540
  in: string | null;
@@ -510,6 +580,7 @@ export declare function useScheduleBoard(handlers?: {
510
580
  rangeLabel: import("vue").ComputedRef<string>;
511
581
  isToday: (dayIdx: number) => boolean;
512
582
  dateKey: (dayIdx: number) => string | null;
583
+ dateKeyAt: (offset: number, dayIdx: number) => string | null;
513
584
  navigate: (delta: number) => void;
514
585
  goToday: () => void;
515
586
  membersOf: (sectionId: string) => Employee[];
@@ -524,12 +595,17 @@ export declare function useScheduleBoard(handlers?: {
524
595
  clearEmployeeShifts: (empId: number) => {
525
596
  shifts: number;
526
597
  };
527
- 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;
528
599
  swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
529
- 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
+ }) => {
530
605
  shifts: number;
531
606
  open: number;
532
607
  leave: number;
608
+ assignmentIds: string[];
533
609
  };
534
610
  requiredFor: (dayIdx: number, position: string) => number;
535
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,11 +61,10 @@ 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
- onOpenAssign: (openId: number) => void;
55
- onAddAreaShift: (dayIdx: number, position: string) => void;
56
68
  onOpenDemand: (dayIdx: number) => void;
57
69
  onOpenEmployeeMenu: (empId: number, anchor: HTMLElement) => void;
58
70
  onDemandSegment: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => void;
@@ -68,7 +80,6 @@ export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster:
68
80
  clock: string;
69
81
  }[]>;
70
82
  isOpenHour: (m: number) => boolean;
71
- openShiftsRow: import("vue").ComputedRef<ScheduleTimelineRow | null>;
72
83
  employeeRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
73
84
  positionTimelineRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
74
85
  demandRow: import("vue").ComputedRef<{
@@ -8,12 +8,10 @@ export type { ScheduleCoverageAxis } from './schedule-demand-domain';
8
8
  *
9
9
  * Storage follows this board's dayNotes rather than the mockup's flat `di` index: the mockup
10
10
  * renders one long horizon so a day index identifies a date, but this board pages through
11
- * weeks, and demand put on this Monday must not reappear on every other Monday. So a date's
12
- * own demand is keyed by ISO date, and a standing weekday rule is keyed by weekday index.
11
+ * weeks, and demand put on this Monday must not reappear on every other Monday. Demand is
12
+ * therefore keyed by explicit ISO date.
13
13
  *
14
- * A date's own demand wins over the weekday rule it would otherwise inherit — "every Tuesday
15
- * needs eight" is a standing statement, and "this Tuesday is different" has to be able to
16
- * override it without rewriting the rule. */
14
+ * The weekday fallback remains only as a defensive read path until legacy records are removed. */
17
15
  export declare function useScheduleDemand(board: ScheduleBoardApi): {
18
16
  byDate: Record<string, DemandPeriod[]>;
19
17
  byWeekday: Record<number, DemandPeriod[]>;
@@ -14,8 +14,7 @@ export interface ScheduleDemandSheetOptions {
14
14
  onNeedPosition?: (periodIdx: number, roleIdx: number) => void;
15
15
  }
16
16
  /** The demand sheet — editing happens on a DRAFT, so Save is a real commit and closing is a
17
- * real cancel. The sheet also carries the recurrence choice, because "every Tuesday" is a
18
- * property of the statement being made rather than a second screen. */
17
+ * real cancel. Apply scopes are expanded into explicit dates in the visible week. */
19
18
  export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand: ScheduleDemandApi, opts: ScheduleDemandSheetOptions): {
20
19
  open: import("vue").Ref<boolean, boolean>;
21
20
  dayIdx: import("vue").Ref<number | null, number | null>;
@@ -25,6 +24,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
25
24
  n: number;
26
25
  roles?: {
27
26
  position: string;
27
+ positionId?: string | undefined;
28
28
  n: number;
29
29
  }[] | undefined;
30
30
  }[], DemandPeriod[] | {
@@ -33,6 +33,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
33
33
  n: number;
34
34
  roles?: {
35
35
  position: string;
36
+ positionId?: string | undefined;
36
37
  n: number;
37
38
  }[] | undefined;
38
39
  }[]>;
@@ -52,6 +53,11 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
52
53
  key: "weekdays";
53
54
  label: string;
54
55
  sub: string;
56
+ } | {
57
+ on: boolean;
58
+ key: "custom";
59
+ label: string;
60
+ sub: string;
55
61
  })[]>;
56
62
  weekdayButtons: import("vue").ComputedRef<{
57
63
  i: number;
@@ -60,6 +66,13 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
60
66
  }[]>;
61
67
  toggleCustomDay: (i: number) => void;
62
68
  applyNote: import("vue").ComputedRef<string>;
69
+ replaceConfirmOpen: import("vue").ComputedRef<boolean>;
70
+ replaceConfirmTitle: import("vue").ComputedRef<"Replace existing demand?" | "Clear existing demand?">;
71
+ replaceConfirmActionLabel: import("vue").ComputedRef<"Confirm" | "Clear demand">;
72
+ replaceConfirmMessage: import("vue").ComputedRef<"Demand already exists on the dates below. Applying this demand will replace it on all selected dates." | "Demand exists on the dates below. Saving an empty time range will clear it on all selected dates.">;
73
+ replaceConfirmDates: import("vue").ComputedRef<string[]>;
74
+ confirmReplace: () => Promise<void>;
75
+ cancelReplace: () => void;
63
76
  overlapWarning: import("vue").ComputedRef<string>;
64
77
  whenLabel: import("vue").ComputedRef<string>;
65
78
  openFor: (idx: number) => void;
@@ -110,6 +123,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
110
123
  n: number;
111
124
  roles?: {
112
125
  position: string;
126
+ positionId?: string | undefined;
113
127
  n: number;
114
128
  }[] | undefined;
115
129
  }[];
@@ -121,6 +135,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
121
135
  n: number;
122
136
  roles?: {
123
137
  position: string;
138
+ positionId?: string | undefined;
124
139
  n: number;
125
140
  }[] | undefined;
126
141
  }[];
@@ -146,6 +161,6 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
146
161
  openCopy: () => void;
147
162
  closeCopy: () => void;
148
163
  confirmCopy: () => Promise<void>;
149
- setApply: (k: DemandApplyMode) => DemandApplyMode;
164
+ setApply: (mode: DemandApplyMode) => void;
150
165
  };
151
166
  export type ScheduleDemandSheetApi = ReturnType<typeof useScheduleDemandSheet>;
@@ -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,11 +1,24 @@
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
- setPosRole: (roleId: string) => void;
10
- posRoleOptions: import("vue").ComputedRef<Role[]>;
13
+ addPosRoleRow: () => void;
14
+ removePosRoleRow: (index: number) => void;
15
+ isCurrentOutletRow: (index: number) => boolean;
16
+ setPosRoleOutlet: (index: number, outlet: string) => void;
17
+ setPosRoleId: (index: number, roleId: string) => void;
18
+ posRoleOptionsFor: (outlet: string) => Role[];
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<"" | "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.">;
11
24
  };
@@ -4,7 +4,7 @@ export declare function useScheduleEmployeeAvailability(form: ScheduleAddEmploye
4
4
  dayLit: (index: number) => boolean;
5
5
  avLabel: ComputedRef<"Weekly availability" | "Time off days">;
6
6
  avAllLabel: ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
7
- maxHoursPlaceholder: ComputedRef<"Hours per week" | "No cap">;
7
+ maxHoursPlaceholder: ComputedRef<string>;
8
8
  ensureAvailHours: (index: number) => void;
9
9
  toggleAvailDay: (index: number) => void;
10
10
  availAll: () => 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,15 +13,36 @@ interface UseScheduleEmployeeCandidatesOptions {
11
13
  open: {
12
14
  value: boolean;
13
15
  };
14
- onPicked: (employeeId: string) => void;
15
- onPrefillPasscode: (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;
16
21
  }
17
22
  /** Directory lookup and profile prefill for the existing-employee path of the add wizard. */
18
23
  export declare function useScheduleEmployeeCandidates(options: UseScheduleEmployeeCandidatesOptions): {
19
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;
20
40
  candidatesLoading: import("vue").Ref<boolean, boolean>;
21
41
  candidatesError: import("vue").Ref<string | null, string | null>;
22
- 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;
23
46
  closeSelectExisting: () => void;
24
47
  pickExisting: (employeeId: string) => Promise<void>;
25
48
  };
@@ -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>;
@@ -12,8 +14,13 @@ interface UseScheduleEmployeePersistenceOptions {
12
14
  board: ScheduleBoardApi;
13
15
  editingEmployeeId: Ref<number | null>;
14
16
  originalLocations: Ref<string[]>;
17
+ originalPosRoles: Ref<{
18
+ outlet: string;
19
+ roleId: string;
20
+ }[]>;
15
21
  effectiveRate: ComputedRef<number>;
16
22
  passcodeValue: ComputedRef<string>;
23
+ deferScheduleWrites: Ref<boolean>;
17
24
  notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
18
25
  }
19
26
  /** Persistence for an existing business employee being added to this schedule. */
@@ -4,15 +4,15 @@ 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. */
11
10
  export declare function useScheduleEmployeeValidation(options: UseScheduleEmployeeValidationOptions): {
12
11
  nameError: ComputedRef<boolean>;
13
12
  passError: ComputedRef<boolean>;
13
+ posRolesOk: ComputedRef<boolean>;
14
+ posRolesError: ComputedRef<boolean>;
14
15
  availabilityOk: ComputedRef<boolean>;
15
16
  availabilityError: ComputedRef<boolean>;
16
- masterCodeError: ComputedRef<boolean>;
17
17
  };
18
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>;
@@ -21,6 +21,7 @@ export declare function useScheduleGapPopover(board: ScheduleBoardApi, demand: S
21
21
  over: number;
22
22
  roles: {
23
23
  position: string;
24
+ positionId?: string | undefined;
24
25
  n: number;
25
26
  required: number;
26
27
  got: number;
@@ -41,6 +42,7 @@ export declare function useScheduleGapPopover(board: ScheduleBoardApi, demand: S
41
42
  over: number;
42
43
  roles: {
43
44
  position: string;
45
+ positionId?: string | undefined;
44
46
  n: number;
45
47
  required: number;
46
48
  got: number;