@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.
- package/dist/{ApprovalCodeList-D5E_FN3f.js → ApprovalCodeList-DwubNElp.js} +7 -7
- package/dist/{AuditLogList-CqqiS2xW.js → AuditLogList-CTeMbyHL.js} +18 -19
- 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
- package/dist/{EmployeeList-ChMlGxmu.js → EmployeeList-DEAJPx9F.js} +255 -266
- package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-OAvd6eHM.js} +6 -6
- package/dist/{GrantUserList-DA26W3K3.js → GrantUserList-Dx4jF2qJ.js} +8 -8
- package/dist/{Main-C0gVAR92.js → Main-BirWXk7o.js} +5 -5
- package/dist/{Main-m39gMG-a.js → Main-C2PBSCte.js} +11 -11
- package/dist/{Main-B27Qx8R2.js → Main-CL5JYCPg.js} +8 -8
- package/dist/{PermissionSetList-mdA65jmw.js → PermissionSetList-BtYcqPiO.js} +19 -18
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Dp6bdEZp.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BXw4aX39.js} +1211 -1211
- 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
- package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
- package/dist/{RoleList-BPayuLxA.js → RoleList-YS_LBfoJ.js} +21 -20
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BorKuXxL.js +530 -0
- package/dist/ScheduleGeneralPage-C1p2mivt.js +780 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-CnKzVz3I.js +2457 -0
- package/dist/SchedulePage-BP7x7JAl.js +19485 -0
- package/dist/{SchedulePositionPage-BUQy-Itg.js → SchedulePositionPage-BogOQZVW.js} +78 -80
- package/dist/{SelectFilter-CG13h83-.js → SelectFilter-Dh3eY1hV.js} +1 -1
- package/dist/{TeamMemberList-CIlvRlf8.js → TeamMemberList-Bv6_2bzs.js} +27 -27
- package/dist/{TimesheetList-DFAfhWYG.js → TimesheetList-B3BmpH0I.js} +52 -53
- 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
- package/dist/{app-C_EW9DFr.js → app-CyS8c8dx.js} +2879 -2462
- package/dist/app.js +1 -1
- package/dist/{approval-code-DHsUgc4K.js → approval-code-BIpLingm.js} +1 -1
- package/dist/{dayjs.min-ibysRBBa.js → dayjs.min-BRlEc3-d.js} +1 -1
- package/dist/{employee-B1BQc4gB.js → employee-CcdjLOLQ.js} +51 -47
- package/dist/{grant-user-qzKHFTro.js → grant-user-uZmvD_bw.js} +1 -1
- package/dist/{iteration-DQVB-iz0.js → iteration-CL1RDmws.js} +1 -1
- package/dist/{lodash-DOj41a0A.js → lodash-C00ieagp.js} +1 -1
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/{restaurant-BbYRA_IT.js → restaurant-CHpkjUPy.js} +46 -47
- package/dist/{role-B9MSLu4B.js → role-DtatkKp9.js} +2 -2
- package/dist/{rule-e6okoXK6.js → rule-DJJMpkoG.js} +3 -3
- package/dist/src/api/employee/index.d.ts +2 -2
- package/dist/src/api/schedule/index.d.ts +12 -1
- package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- package/dist/src/stores/employee.d.ts +12 -12
- package/dist/src/types/schedule.d.ts +3 -4
- package/dist/src/views/audit-log/locales/index.d.ts +252 -0
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -8
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -4
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +0 -2
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +0 -7
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +2 -6
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -1
- package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +1 -1
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +4 -1
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +1 -5
- package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +0 -1
- package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingSettings.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +1 -1
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -10
- package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +3 -3
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -2
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +4 -0
- package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +13 -1
- package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
- package/dist/src/views/scheduling/composables/schedule-leave-split.d.ts +5 -0
- package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +22 -0
- package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
- package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +46 -11
- package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +3 -11
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -9
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +25 -13
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +87 -11
- package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +13 -1
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -1
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +16 -5
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +3 -5
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +18 -3
- package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +20 -7
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -3
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +7 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +5 -1
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +48 -4
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +302 -30
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
- package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +0 -4
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +7 -1
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +4 -1
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +70 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +41 -3
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +47 -6
- package/dist/src/views/scheduling/country-rules/index.d.ts +9 -4
- package/dist/src/views/scheduling/data.d.ts +22 -1
- package/dist/src/views/scheduling/locales/index.d.ts +28 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +276 -212
- package/dist/src/views/scheduling/schedule-store.d.ts +37 -11
- package/dist/src/views/scheduling/types.d.ts +30 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-BoLkvkE2.js → useAppStore-Bp0PwbAN.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-Ch1AUYT1.js → useLoading-sgL8DRUz.js} +1 -1
- package/dist/{useReportPermissions-CJ9ey1bN.js → useReportPermissions-DI-xg3OX.js} +3 -3
- package/package.json +2 -2
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-C_EQivMd.js +0 -470
- package/dist/ScheduleGeneralPage-sAqR1-hf.js +0 -666
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-ABipaQiR.js +0 -2205
- package/dist/SchedulePage-DhbtCR8U.js +0 -18546
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
- package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
- package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
- package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
- package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -124
- package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
- 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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
12
|
-
*
|
|
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
|
-
*
|
|
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.
|
|
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: (
|
|
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 {
|
|
3
|
-
export declare function useScheduleEmployeeAccess(form: ScheduleAddEmployeeForm
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
|
|
10
|
-
|
|
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<
|
|
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
|
-
|
|
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;
|