@feedmepos/mf-hrm-portal 2.3.0-dev.9 → 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 (115) hide show
  1. package/dist/{ApprovalCodeList-BDpxEJpC.js → ApprovalCodeList-DwubNElp.js} +7 -7
  2. package/dist/{AuditLogList-Dgwj1gz8.js → AuditLogList-CTeMbyHL.js} +18 -19
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BBK2gl7r.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CmLLNcB4.js} +2 -2
  4. package/dist/{EmployeeList-C8cbVcmY.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-zul0_Dlm.js → GrantUserList-Dx4jF2qJ.js} +8 -8
  7. package/dist/{Main-Cjo4FMZZ.js → Main-BirWXk7o.js} +5 -5
  8. package/dist/{Main-DSr9KbjT.js → Main-C2PBSCte.js} +11 -11
  9. package/dist/{Main-5TsFTFpc.js → Main-CL5JYCPg.js} +8 -8
  10. package/dist/{PermissionSetList-CDhiiu37.js → PermissionSetList-BtYcqPiO.js} +19 -18
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DoK944l0.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BXw4aX39.js} +1127 -1127
  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-DEbOPQD_.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-B8PWNsc2.js → ScheduleGeneralPage-C1p2mivt.js} +252 -248
  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-Cuv4ydOK.js → SchedulePositionPage-BogOQZVW.js} +78 -80
  20. package/dist/{SelectFilter-CG13h83-.js → SelectFilter-Dh3eY1hV.js} +1 -1
  21. package/dist/{TeamMemberList-DpCGqHCk.js → TeamMemberList-Bv6_2bzs.js} +27 -27
  22. package/dist/{TimesheetList-B7HAC5zS.js → TimesheetList-B3BmpH0I.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-C4rbnZh1.js} +3 -3
  24. package/dist/{app-Lh0cqgHy.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-joq4stsa.js → dayjs.min-BRlEc3-d.js} +1 -1
  28. package/dist/{employee-BPmp9c6i.js → employee-CcdjLOLQ.js} +51 -47
  29. package/dist/{grant-user-qzKHFTro.js → grant-user-uZmvD_bw.js} +1 -1
  30. package/dist/{iteration-jvdTHQUx.js → iteration-CL1RDmws.js} +1 -1
  31. package/dist/{lodash-CIAEpr9s.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-Dd1TUMhn.js → role-DtatkKp9.js} +2 -2
  35. package/dist/{rule-DmxI7qEY.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 +11 -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 +1 -1
  42. package/dist/src/views/audit-log/locales/index.d.ts +252 -0
  43. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +6 -2
  44. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
  45. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +2 -0
  46. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
  47. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +2 -0
  48. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
  49. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -1
  50. package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +1 -1
  51. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +4 -1
  52. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
  53. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +0 -1
  54. package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
  55. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +1 -1
  56. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +3 -3
  57. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
  58. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -2
  59. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +4 -0
  60. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  61. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +13 -1
  62. package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
  63. package/dist/src/views/scheduling/composables/schedule-leave-split.d.ts +5 -0
  64. package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +22 -0
  65. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
  66. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +3 -1
  67. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +1 -0
  68. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +25 -2
  69. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +3 -11
  70. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -1
  71. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +22 -13
  72. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +58 -7
  73. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
  74. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +13 -1
  75. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -1
  76. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +16 -2
  77. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +7 -0
  78. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -0
  79. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +14 -6
  80. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -4
  81. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +3 -0
  82. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +0 -2
  83. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +1 -0
  84. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +5 -1
  85. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
  86. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +28 -2
  87. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +203 -8
  88. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
  89. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +1 -1
  90. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
  91. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
  92. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +6 -0
  93. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +2 -1
  94. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +46 -0
  95. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +2 -2
  96. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +29 -1
  97. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +32 -3
  98. package/dist/src/views/scheduling/country-rules/index.d.ts +8 -3
  99. package/dist/src/views/scheduling/data.d.ts +17 -0
  100. package/dist/src/views/scheduling/locales/index.d.ts +28 -0
  101. package/dist/src/views/scheduling/schedule-state.d.ts +236 -236
  102. package/dist/src/views/scheduling/schedule-store.d.ts +26 -7
  103. package/dist/src/views/scheduling/types.d.ts +8 -0
  104. package/dist/style.css +1 -1
  105. package/dist/tsconfig.app.tsbuildinfo +1 -1
  106. package/dist/{useAppStore-BoLkvkE2.js → useAppStore-Bp0PwbAN.js} +1 -1
  107. package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
  108. package/dist/{useLoading-Ch1AUYT1.js → useLoading-sgL8DRUz.js} +1 -1
  109. package/dist/{useReportPermissions-DM3GOFCC.js → useReportPermissions-DI-xg3OX.js} +3 -3
  110. package/package.json +2 -2
  111. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Cx9jFgBS.js +0 -492
  112. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-V1sZ_xhO.js +0 -2253
  113. package/dist/SchedulePage-ndLByVBl.js +0 -17785
  114. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
  115. package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
@@ -4,6 +4,7 @@ export interface SchedulePositionRow {
4
4
  }
5
5
  export declare function useSchedulePositions(options?: {
6
6
  notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
7
+ deferWrites?: boolean;
7
8
  }): {
8
9
  positions: import("vue").Ref<{
9
10
  id: string;
@@ -12,6 +13,8 @@ export declare function useSchedulePositions(options?: {
12
13
  id: string;
13
14
  name: string;
14
15
  }[]>;
16
+ pendingCreates: string[];
17
+ pendingDeletes: Set<string>;
15
18
  count: import("vue").ComputedRef<number>;
16
19
  isAdding: import("vue").Ref<boolean, boolean>;
17
20
  newName: import("vue").Ref<string, string>;
@@ -25,5 +28,8 @@ export declare function useSchedulePositions(options?: {
25
28
  askDelete: (id: string) => void;
26
29
  cancelDelete: () => void;
27
30
  confirmDelete: (id: string) => Promise<void>;
31
+ commitCreates: () => Promise<void>;
32
+ commitDeletes: () => Promise<void>;
33
+ discardPending: () => void;
28
34
  };
29
35
  export type SchedulePositionsApi = ReturnType<typeof useSchedulePositions>;
@@ -22,6 +22,7 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
22
22
  close: () => void;
23
23
  conflicts: import("vue").ComputedRef<number>;
24
24
  confirmDisabled: import("vue").ComputedRef<boolean>;
25
+ publishing: import("vue").Ref<boolean, boolean>;
25
26
  visibleVersions: import("vue").ComputedRef<{
26
27
  v: number;
27
28
  at: Date;
@@ -117,10 +118,10 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
117
118
  toggleVersionDiff: (v: number) => void;
118
119
  diffFor: (version: ScheduleVersion) => VersionDiffRow[];
119
120
  confirm: () => Promise<void>;
120
- restoreVersion: (v: number) => void;
121
121
  shareOpen: import("vue").Ref<boolean, boolean>;
122
122
  shareVersion: import("vue").Ref<number | null, number | null>;
123
123
  shareStaffAffected: import("vue").Ref<number, number>;
124
+ showShareCompletion: (changeCount: number, staffAffected: number) => void;
124
125
  closeShare: () => void;
125
126
  };
126
127
  export type SchedulePublishApi = ReturnType<typeof useSchedulePublish>;
@@ -101,6 +101,28 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
101
101
  updatedAt?: string | undefined;
102
102
  splitGroupId?: string | undefined;
103
103
  }[] | null)[];
104
+ timeOff?: ({
105
+ timeOff: "approved" | "pending";
106
+ requestId?: string | undefined;
107
+ type?: "OFF_DAY" | "LEAVE" | undefined;
108
+ leaveType?: "ANNUAL" | "MEDICAL" | "EMERGENCY" | "UNPAID" | undefined;
109
+ reason: string;
110
+ half?: boolean | undefined;
111
+ halfPart?: "AM" | "PM" | undefined;
112
+ from?: string | undefined;
113
+ to?: string | undefined;
114
+ appliedOn?: string | undefined;
115
+ note?: string | undefined;
116
+ cert?: {
117
+ name: string;
118
+ size: string;
119
+ } | null | undefined;
120
+ bal?: {
121
+ type: string;
122
+ entitled: number;
123
+ used: number;
124
+ } | undefined;
125
+ } | null)[] | undefined;
104
126
  remarks: {
105
127
  author: string;
106
128
  date: string;
@@ -133,6 +155,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
133
155
  to: string;
134
156
  }[] | undefined;
135
157
  passcode?: string | undefined;
158
+ code?: string | undefined;
136
159
  masterUser?: boolean | undefined;
137
160
  }[]>;
138
161
  orderedEmployees: import("vue").ComputedRef<{
@@ -227,6 +250,28 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
227
250
  updatedAt?: string | undefined;
228
251
  splitGroupId?: string | undefined;
229
252
  }[] | null)[];
253
+ timeOff?: ({
254
+ timeOff: "approved" | "pending";
255
+ requestId?: string | undefined;
256
+ type?: "OFF_DAY" | "LEAVE" | undefined;
257
+ leaveType?: "ANNUAL" | "MEDICAL" | "EMERGENCY" | "UNPAID" | undefined;
258
+ reason: string;
259
+ half?: boolean | undefined;
260
+ halfPart?: "AM" | "PM" | undefined;
261
+ from?: string | undefined;
262
+ to?: string | undefined;
263
+ appliedOn?: string | undefined;
264
+ note?: string | undefined;
265
+ cert?: {
266
+ name: string;
267
+ size: string;
268
+ } | null | undefined;
269
+ bal?: {
270
+ type: string;
271
+ entitled: number;
272
+ used: number;
273
+ } | undefined;
274
+ } | null)[] | undefined;
230
275
  remarks: {
231
276
  author: string;
232
277
  date: string;
@@ -259,6 +304,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
259
304
  to: string;
260
305
  }[] | undefined;
261
306
  passcode?: string | undefined;
307
+ code?: string | undefined;
262
308
  masterUser?: boolean | undefined;
263
309
  }[]>;
264
310
  order: import("vue").Ref<number[], number[]>;
@@ -1,6 +1,6 @@
1
1
  /** "Set it up" banner — shown while the outlet has not finished scheduling setup, i.e. while
2
- * `scheduleSetupCompleted` (schedule-store) is false. Dismissing is a session choice: the banner is cheap enough to see
3
- * again on the next visit while the outlet really is unconfigured.
2
+ * `scheduleSetupCompleted` (schedule-store) is false. Dismissing marks the outlet's setup complete (`setupCompleted`
3
+ * is persisted), so neither the banner nor the welcome dialog returns.
4
4
  *
5
5
  * The welcome dialog shares that same gate, plus its own session dismiss so closing it doesn't
6
6
  * also close the banner. `scheduleSetupCompleted` lands from an async fetch and starts `false`
@@ -29,7 +29,10 @@ export interface ScheduleSwapState {
29
29
  preset: {
30
30
  empId: number;
31
31
  dayIdx: number;
32
+ slotIndex?: number;
32
33
  } | null;
34
+ /** Area/Position view exchanges roles; employee view exchanges shift ownership. */
35
+ kind: 'employee' | 'position';
33
36
  }
34
37
  /** The shift card's "⋯" menu (Change employee / Swap shifts / Edit / Remove), plus the two
35
38
  * dialogs it opens that the rest of Phase 1 didn't need: handing a shift to somebody else,
@@ -148,6 +151,28 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
148
151
  updatedAt?: string | undefined;
149
152
  splitGroupId?: string | undefined;
150
153
  }[] | null)[];
154
+ timeOff?: ({
155
+ timeOff: "approved" | "pending";
156
+ requestId?: string | undefined;
157
+ type?: "OFF_DAY" | "LEAVE" | undefined;
158
+ leaveType?: "ANNUAL" | "MEDICAL" | "EMERGENCY" | "UNPAID" | undefined;
159
+ reason: string;
160
+ half?: boolean | undefined;
161
+ halfPart?: "AM" | "PM" | undefined;
162
+ from?: string | undefined;
163
+ to?: string | undefined;
164
+ appliedOn?: string | undefined;
165
+ note?: string | undefined;
166
+ cert?: {
167
+ name: string;
168
+ size: string;
169
+ } | null | undefined;
170
+ bal?: {
171
+ type: string;
172
+ entitled: number;
173
+ used: number;
174
+ } | undefined;
175
+ } | null)[] | undefined;
151
176
  remarks: {
152
177
  author: string;
153
178
  date: string;
@@ -180,6 +205,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
180
205
  to: string;
181
206
  }[] | undefined;
182
207
  passcode?: string | undefined;
208
+ code?: string | undefined;
183
209
  masterUser?: boolean | undefined;
184
210
  }[]>;
185
211
  openChange: (empId: number, dayIdx: number, slotIndex?: number) => void;
@@ -194,7 +220,9 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
194
220
  preset: {
195
221
  empId: number;
196
222
  dayIdx: number;
223
+ slotIndex?: number | undefined;
197
224
  } | null;
225
+ kind: "employee" | "position";
198
226
  };
199
227
  swapSlot: import("vue").ComputedRef<import("../types").WorkSlot[]>;
200
228
  swapCandidates: import("vue").ComputedRef<{
@@ -209,7 +237,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
209
237
  slot: import("../types").WorkSlot[];
210
238
  soft: string | null;
211
239
  } | null>;
212
- openSwap: (empId: number, dayIdx: number, preset?: ScheduleSwapState["preset"], slotIndex?: number, slotCount?: number) => void;
240
+ openSwap: (empId: number, dayIdx: number, preset?: ScheduleSwapState["preset"], slotIndex?: number, slotCount?: number, kind?: ScheduleSwapState["kind"]) => void;
213
241
  closeSwap: () => void;
214
242
  confirmSwap: (toEmpId: number, toDayIdx: number) => void;
215
243
  removeShift: (empId: number, dayIdx: number, slotIndex?: number) => void;
@@ -7,6 +7,10 @@ export interface ScheduleHeadcountRole {
7
7
  count: number;
8
8
  sen: '' | 'senior' | 'junior';
9
9
  }
10
+ export interface ScheduleWarningPart {
11
+ text: string;
12
+ emphasis?: boolean;
13
+ }
10
14
  /** The unified shift popover — ported from the mockup's single `.shift-pop`, which answers
11
15
  * both "who is on this shift" and "what does this shift need" from one form. Picking a real
12
16
  * person in the `who` select turns it into an assignment; leaving it on "Empty shift" turns
@@ -15,6 +19,7 @@ export interface ScheduleHeadcountRole {
15
19
  * record (single position, like an assigned shift's "Position needed" row). */
16
20
  export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand: ScheduleDemandApi, options?: {
17
21
  onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
22
+ onAvailabilityWarning?: (message: string, onConfirm: () => void) => void;
18
23
  }): {
19
24
  open: import("vue").Ref<boolean, boolean>;
20
25
  dayIdx: import("vue").Ref<number | null, number | null>;
@@ -75,6 +80,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
75
80
  repeatDays: import("vue").Ref<boolean[], boolean[]>;
76
81
  gapNote: import("vue").Ref<string | null, string | null>;
77
82
  conflictNote: import("vue").Ref<string | null, string | null>;
83
+ availabilityConflictNote: import("vue").ComputedRef<string | null>;
78
84
  grantSkill: import("vue").Ref<boolean, boolean>;
79
85
  showGrantSkill: import("vue").ComputedRef<boolean>;
80
86
  unassignMode: import("vue").Ref<boolean, boolean>;
@@ -171,6 +177,28 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
171
177
  updatedAt?: string | undefined;
172
178
  splitGroupId?: string | undefined;
173
179
  }[] | null)[];
180
+ timeOff?: ({
181
+ timeOff: "approved" | "pending";
182
+ requestId?: string | undefined;
183
+ type?: "OFF_DAY" | "LEAVE" | undefined;
184
+ leaveType?: "ANNUAL" | "MEDICAL" | "EMERGENCY" | "UNPAID" | undefined;
185
+ reason: string;
186
+ half?: boolean | undefined;
187
+ halfPart?: "AM" | "PM" | undefined;
188
+ from?: string | undefined;
189
+ to?: string | undefined;
190
+ appliedOn?: string | undefined;
191
+ note?: string | undefined;
192
+ cert?: {
193
+ name: string;
194
+ size: string;
195
+ } | null | undefined;
196
+ bal?: {
197
+ type: string;
198
+ entitled: number;
199
+ used: number;
200
+ } | undefined;
201
+ } | null)[] | undefined;
174
202
  remarks: {
175
203
  author: string;
176
204
  date: string;
@@ -203,6 +231,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
203
231
  to: string;
204
232
  }[] | undefined;
205
233
  passcode?: string | undefined;
234
+ code?: string | undefined;
206
235
  masterUser?: boolean | undefined;
207
236
  }[]>;
208
237
  isAssigned: import("vue").ComputedRef<boolean>;
@@ -212,9 +241,9 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
212
241
  isSingleOpenRecord: import("vue").ComputedRef<boolean>;
213
242
  totalHours: import("vue").ComputedRef<number>;
214
243
  totalLabel: import("vue").ComputedRef<string>;
215
- warnings: import("vue").ComputedRef<string[]>;
216
- openForEmployee: (forEmpId: number, day: number, roleHint?: string, hours?: ScheduleShiftSegment, slotIndex?: number) => void;
217
- openForNewOpenShift: (day: number, roleHint?: string, hours?: ScheduleShiftSegment) => void;
244
+ warnings: import("vue").ComputedRef<ScheduleWarningPart[][]>;
245
+ openForEmployee: (forEmpId: number, day: number, roleHint?: string, hours?: ScheduleShiftSegment, slotIndex?: number, warnAvailability?: boolean) => void;
246
+ openForNewOpenShift: (day: number, roleHint?: string, hours?: ScheduleShiftSegment, requireAssignment?: boolean) => void;
218
247
  openForEditOpenShift: (openShiftId: number) => void;
219
248
  close: () => void;
220
249
  removeSegment: (i: number) => void;
@@ -7,9 +7,14 @@ export interface CountryScheduleRules {
7
7
  maxHoursPerMonth: number | null;
8
8
  };
9
9
  workingHours: {
10
- minHoursPerDay: number | null;
11
- maxHoursPerDay: number | null;
12
- maxHoursPerWeek: number | null;
10
+ fullTime: {
11
+ minHoursPerDay: number | null;
12
+ maxHoursPerDay: number | null;
13
+ maxHoursPerWeek: number | null;
14
+ };
15
+ partTime: {
16
+ maxHoursPerWeek: number | null;
17
+ };
13
18
  };
14
19
  recurringPublicHolidays: Array<{
15
20
  month: number;
@@ -25,6 +25,23 @@ export declare function positionIdOf(name: string): string | undefined;
25
25
  /** The selector shape every position-carrying save request wants — `undefined` for a blank
26
26
  * name (the field itself has nothing to name), a resolved id alongside the name otherwise. */
27
27
  export declare function positionSelectorOf(name: string | undefined, positionId?: string): FdtoSchedulePositionSelectorReq | undefined;
28
+ /** Position IDs are authoritative after a rename. Keep the stored name only as a fallback for
29
+ * archived or legacy references that cannot be resolved back to the active catalogue. */
30
+ export declare function positionNameOf(position: {
31
+ positionId?: string | null;
32
+ positionName: string;
33
+ } | null | undefined, catalogue?: readonly {
34
+ id: string;
35
+ name: string;
36
+ }[]): string | undefined;
37
+ /** Resolves a position only when it still exists in the active catalogue. */
38
+ export declare function activePositionNameOf(position: {
39
+ positionId?: string | null;
40
+ positionName: string;
41
+ } | null | undefined, catalogue?: readonly {
42
+ id: string;
43
+ name: string;
44
+ }[]): string | undefined;
28
45
  /** A saved position reference can outlive its catalogue entry after a soft delete. */
29
46
  export declare function isArchivedPosition(name: string | undefined, positionId?: string): boolean;
30
47
  /** Which coverage positions a station label counts toward. Positions ARE the roles in this
@@ -9,6 +9,13 @@ export declare const i18nMessages: {
9
9
  position: string;
10
10
  general: string;
11
11
  };
12
+ promoBanner: {
13
+ new: string;
14
+ message: string;
15
+ badge: string;
16
+ cta: string;
17
+ dismiss: string;
18
+ };
12
19
  topbar: {
13
20
  title: string;
14
21
  today: string;
@@ -180,6 +187,13 @@ export declare const i18nMessages: {
180
187
  position: string;
181
188
  general: string;
182
189
  };
190
+ promoBanner: {
191
+ new: string;
192
+ message: string;
193
+ badge: string;
194
+ cta: string;
195
+ dismiss: string;
196
+ };
183
197
  topbar: {
184
198
  title: string;
185
199
  today: string;
@@ -351,6 +365,13 @@ export declare const i18nMessages: {
351
365
  position: string;
352
366
  general: string;
353
367
  };
368
+ promoBanner: {
369
+ new: string;
370
+ message: string;
371
+ badge: string;
372
+ cta: string;
373
+ dismiss: string;
374
+ };
354
375
  topbar: {
355
376
  title: string;
356
377
  today: string;
@@ -522,6 +543,13 @@ export declare const i18nMessages: {
522
543
  position: string;
523
544
  general: string;
524
545
  };
546
+ promoBanner: {
547
+ new: string;
548
+ message: string;
549
+ badge: string;
550
+ cta: string;
551
+ dismiss: string;
552
+ };
525
553
  topbar: {
526
554
  title: string;
527
555
  today: string;