@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
@@ -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[]>;
@@ -2,7 +2,7 @@ export type ScheduleSettingsSection = 'budget' | 'payrates' | 'overtime' | 'work
2
2
  /** Keep unsupported sections out of the navigation until their API fields exist. */
3
3
  export declare const SETTINGS_SECTIONS: {
4
4
  key: ScheduleSettingsSection;
5
- label: string;
5
+ labelKey: string;
6
6
  }[];
7
7
  /** Settings currently supported by the schedule API: pay rates and monthly OT hours. */
8
8
  export declare function useScheduleSettings(): {
@@ -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>;
@@ -65,7 +70,7 @@ export declare function useScheduleShiftPopover(board: ScheduleBoardApi, demand:
65
70
  saveDisabled: import("vue").ComputedRef<boolean>;
66
71
  dailyLimitExceeded: import("vue").ComputedRef<boolean>;
67
72
  saveTitle: import("vue").ComputedRef<string>;
68
- saveLabel: import("vue").ComputedRef<"Create & assign" | "Save">;
73
+ saveLabel: import("vue").ComputedRef<string>;
69
74
  breakChoice: import("vue").Ref<import("./schedule-shift-time").ScheduleBreakChoice, import("./schedule-shift-time").ScheduleBreakChoice>;
70
75
  breakCustomMins: import("vue").Ref<number, number>;
71
76
  breakCustomUnit: import("vue").Ref<"mins" | "hrs", "mins" | "hrs">;
@@ -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;
@@ -17,8 +22,12 @@ export interface CountryScheduleRules {
17
22
  name: string;
18
23
  }>;
19
24
  publicHolidays: Record<string, Record<string, string>>;
25
+ /** Local holiday names keyed by language (e.g. "th") then by the English name above. */
26
+ holidayNames?: Record<string, Record<string, string>>;
20
27
  }
21
28
  export declare function normalizeCountryCode(country: unknown): string;
22
29
  export declare function getCountryScheduleRules(country?: unknown): CountryScheduleRules;
23
- export declare function holidayNameForDate(rules: CountryScheduleRules, date: string): string | null;
30
+ /** The holiday on `date`, in the UI language when the country has a name for it (`locale` like
31
+ * "th-TH"), otherwise the English name. */
32
+ export declare function holidayNameForDate(rules: CountryScheduleRules, date: string, locale?: string): string | null;
24
33
  export declare const SUPPORTED_SCHEDULE_COUNTRIES: string[];
@@ -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