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