@feedmepos/mf-hrm-portal 2.3.0-dev.2 → 2.3.0-dev.20
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-CJaNPHZC.js → ApprovalCodeList-ChZm8Cqn.js} +7 -7
- package/dist/{AuditLogList-CHA98ZqW.js → AuditLogList-DNb_HY2b.js} +18 -19
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C7rvthEI.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C1FZLRtw.js} +2 -2
- package/dist/{EmployeeList-CVmMKt71.js → EmployeeList-D0_eAXnx.js} +255 -266
- package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-DZEUOnX-.js} +6 -6
- package/dist/{GrantUserList-MYjgt5-F.js → GrantUserList-HHl1a4dz.js} +8 -8
- package/dist/{Main-BgB9lD4K.js → Main-B35_MSKW.js} +11 -11
- package/dist/{Main-C0cnqQ3B.js → Main-DFk9nc3J.js} +8 -8
- package/dist/{Main-hlcHtrsc.js → Main-DMsmgQyL.js} +5 -5
- package/dist/{PermissionSetList-5f1WIaVa.js → PermissionSetList-CglEdefD.js} +19 -18
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CFoTAGIX.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-9tG8k0mR.js} +1011 -1011
- package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.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-DNR4miXr.js → RoleList-_UsStsN7.js} +21 -20
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-DYhMssqd.js +530 -0
- package/dist/ScheduleGeneralPage-CP3Vb4XJ.js +776 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-B_OqKDw_.js +2439 -0
- package/dist/SchedulePage-5cbZyAow.js +19250 -0
- package/dist/{SchedulePositionPage-DyRckyUx.js → SchedulePositionPage-DwgNOVe8.js} +78 -80
- package/dist/{SelectFilter-CG13h83-.js → SelectFilter-BWM2fbe4.js} +1 -1
- package/dist/{TeamMemberList-mw5OveZG.js → TeamMemberList-CiYROtup.js} +27 -27
- package/dist/{TimesheetList-BzXarZbM.js → TimesheetList-ohxQpGBt.js} +52 -53
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dq5i4poN.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-CHgKOFjZ.js} +3 -3
- package/dist/{app-DSsdRLHg.js → app-hqb3iLmH.js} +2891 -2474
- package/dist/app.js +1 -1
- package/dist/{approval-code-C9DmR4Md.js → approval-code-BXUiojPH.js} +1 -1
- package/dist/{dayjs.min-B6xBXQtU.js → dayjs.min-jdSYngTL.js} +1 -1
- package/dist/{employee-hMhzuqk1.js → employee-DQksdva7.js} +4 -4
- package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-CBJ3gEgW.js} +1 -1
- package/dist/{iteration-B34AvpNC.js → iteration-Ws9RBh0x.js} +1 -1
- package/dist/{lodash-1Vyuy7Mu.js → lodash-Db0CBH2I.js} +1 -1
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/{restaurant-D7PEQjPY.js → restaurant-D2mfKHaH.js} +48 -48
- package/dist/{role-DKOrgO6f.js → role-C5BIFEPz.js} +2 -2
- package/dist/{rule-CBzQ3GeV.js → rule-CU0v7pCG.js} +3 -3
- package/dist/src/api/schedule/index.d.ts +9 -1
- package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- 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/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 +0 -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/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 → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/SchedulePublishShareArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -10
- 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 +3 -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/useRemyAppStore.d.ts +6 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +29 -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 +11 -3
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +84 -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 +13 -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 +5 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +5 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +47 -3
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +406 -29
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
- 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 +2 -0
- 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 +272 -208
- package/dist/src/views/scheduling/schedule-store.d.ts +36 -11
- package/dist/src/views/scheduling/types.d.ts +29 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-d_nHyK5u.js → useAppStore-DZCdxlCd.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-JFoghhRz.js → useLoading-Nygx2zn8.js} +1 -1
- package/dist/{useReportPermissions-B2ev0j4w.js → useReportPermissions-DeJMpuw7.js} +3 -3
- package/package.json +1 -1
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B4VUyKW3.js +0 -470
- package/dist/ScheduleGeneralPage-Cd5AlY4z.js +0 -666
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-Cf0l2MRg.js +0 -2188
- package/dist/SchedulePage-C8m0-m3l.js +0 -18257
- 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
|
@@ -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
|
}[]>;
|
|
@@ -65,6 +66,13 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
65
66
|
}[]>;
|
|
66
67
|
toggleCustomDay: (i: number) => void;
|
|
67
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;
|
|
68
76
|
overlapWarning: import("vue").ComputedRef<string>;
|
|
69
77
|
whenLabel: import("vue").ComputedRef<string>;
|
|
70
78
|
openFor: (idx: number) => void;
|
|
@@ -115,6 +123,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
115
123
|
n: number;
|
|
116
124
|
roles?: {
|
|
117
125
|
position: string;
|
|
126
|
+
positionId?: string | undefined;
|
|
118
127
|
n: number;
|
|
119
128
|
}[] | undefined;
|
|
120
129
|
}[];
|
|
@@ -126,6 +135,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
126
135
|
n: number;
|
|
127
136
|
roles?: {
|
|
128
137
|
position: string;
|
|
138
|
+
positionId?: string | undefined;
|
|
129
139
|
n: number;
|
|
130
140
|
}[] | undefined;
|
|
131
141
|
}[];
|
|
@@ -151,6 +161,6 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
151
161
|
openCopy: () => void;
|
|
152
162
|
closeCopy: () => void;
|
|
153
163
|
confirmCopy: () => Promise<void>;
|
|
154
|
-
setApply: (
|
|
164
|
+
setApply: (mode: DemandApplyMode) => void;
|
|
155
165
|
};
|
|
156
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;
|
|
@@ -12,13 +12,17 @@ interface UseScheduleEmployeeCandidatesOptions {
|
|
|
12
12
|
value: boolean;
|
|
13
13
|
};
|
|
14
14
|
onPicked: (employeeId: string) => void;
|
|
15
|
-
onPrefillPasscode: (employeeId: string) => void
|
|
15
|
+
onPrefillPasscode: (employeeId: string) => void | Promise<void>;
|
|
16
|
+
onPrefillPosRoles: (employeeId: string) => void | Promise<void>;
|
|
17
|
+
onPrefillPosRoleAccess: (roleIds: string[] | null | undefined) => void;
|
|
18
|
+
onPrefillPosRestaurantAccess: (restaurantIds: string[] | null | undefined) => void;
|
|
16
19
|
}
|
|
17
20
|
/** Directory lookup and profile prefill for the existing-employee path of the add wizard. */
|
|
18
21
|
export declare function useScheduleEmployeeCandidates(options: UseScheduleEmployeeCandidatesOptions): {
|
|
19
22
|
selectExistingOpen: import("vue").Ref<boolean, boolean>;
|
|
20
23
|
candidatesLoading: import("vue").Ref<boolean, boolean>;
|
|
21
24
|
candidatesError: import("vue").Ref<string | null, string | null>;
|
|
25
|
+
selectingExisting: import("vue").Ref<boolean, boolean>;
|
|
22
26
|
openSelectExisting: () => void;
|
|
23
27
|
closeSelectExisting: () => void;
|
|
24
28
|
pickExisting: (employeeId: string) => Promise<void>;
|
|
@@ -12,8 +12,13 @@ interface UseScheduleEmployeePersistenceOptions {
|
|
|
12
12
|
board: ScheduleBoardApi;
|
|
13
13
|
editingEmployeeId: Ref<number | null>;
|
|
14
14
|
originalLocations: Ref<string[]>;
|
|
15
|
+
originalPosRoles: Ref<{
|
|
16
|
+
outlet: string;
|
|
17
|
+
roleId: string;
|
|
18
|
+
}[]>;
|
|
15
19
|
effectiveRate: ComputedRef<number>;
|
|
16
20
|
passcodeValue: ComputedRef<string>;
|
|
21
|
+
deferScheduleWrites: Ref<boolean>;
|
|
17
22
|
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
18
23
|
}
|
|
19
24
|
/** 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 {};
|
|
@@ -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;
|
|
@@ -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>;
|
|
@@ -22,10 +22,12 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
22
22
|
contractHours?: number | undefined;
|
|
23
23
|
rate: number;
|
|
24
24
|
positions: string[];
|
|
25
|
+
archivedPositions?: string[] | undefined;
|
|
25
26
|
shifts: ({
|
|
26
27
|
start: string;
|
|
27
28
|
end: string;
|
|
28
29
|
role: string;
|
|
30
|
+
positionId?: string | undefined;
|
|
29
31
|
status: import("../types").ShiftStatus;
|
|
30
32
|
clock?: {
|
|
31
33
|
in: string | null;
|
|
@@ -74,6 +76,7 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
74
76
|
start: string;
|
|
75
77
|
end: string;
|
|
76
78
|
role: string;
|
|
79
|
+
positionId?: string | undefined;
|
|
77
80
|
status: import("../types").ShiftStatus;
|
|
78
81
|
clock?: {
|
|
79
82
|
in: string | null;
|
|
@@ -98,6 +101,28 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
98
101
|
updatedAt?: string | undefined;
|
|
99
102
|
splitGroupId?: string | undefined;
|
|
100
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;
|
|
101
126
|
remarks: {
|
|
102
127
|
author: string;
|
|
103
128
|
date: string;
|
|
@@ -112,9 +137,16 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
112
137
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
113
138
|
payAmount?: number | undefined;
|
|
114
139
|
maxHours?: number | undefined;
|
|
115
|
-
maxOtHours?: number | undefined;
|
|
116
140
|
minHours?: number | undefined;
|
|
117
|
-
|
|
141
|
+
minHoursPerDay?: number | undefined;
|
|
142
|
+
workingHours?: {
|
|
143
|
+
minHoursPerDay: number | null;
|
|
144
|
+
maxHoursPerDay: number | null;
|
|
145
|
+
maxHoursPerWeek: number | null;
|
|
146
|
+
} | undefined;
|
|
147
|
+
overtime?: {
|
|
148
|
+
maxHoursPerMonth: number | null;
|
|
149
|
+
} | undefined;
|
|
118
150
|
preferences?: string[] | undefined;
|
|
119
151
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
120
152
|
availDays?: boolean[] | undefined;
|
|
@@ -123,6 +155,7 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
123
155
|
to: string;
|
|
124
156
|
}[] | undefined;
|
|
125
157
|
passcode?: string | undefined;
|
|
158
|
+
code?: string | undefined;
|
|
126
159
|
masterUser?: boolean | undefined;
|
|
127
160
|
};
|
|
128
161
|
row: TeamRow;
|
|
@@ -137,10 +170,18 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
137
170
|
end: string;
|
|
138
171
|
}[]>;
|
|
139
172
|
rawEmployee: (empId: number) => {
|
|
173
|
+
overtime?: {
|
|
174
|
+
maxHoursPerMonth: number | null;
|
|
175
|
+
} | undefined;
|
|
176
|
+
minHoursPerDay?: number | null | undefined;
|
|
177
|
+
workingHours?: {
|
|
178
|
+
minHoursPerDay: number | null;
|
|
179
|
+
maxHoursPerDay: number | null;
|
|
180
|
+
maxHoursPerWeek: number | null;
|
|
181
|
+
} | undefined;
|
|
140
182
|
name: string;
|
|
141
183
|
employeeId: string;
|
|
142
184
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
143
|
-
workingHour: number;
|
|
144
185
|
wage: {
|
|
145
186
|
type: "HOURLY" | "MONTHLY";
|
|
146
187
|
amount: number;
|
|
@@ -162,7 +203,10 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
162
203
|
seedEmployees: (missingOnly?: boolean) => void;
|
|
163
204
|
pickAll: (checked: boolean) => void;
|
|
164
205
|
setPosition: (empId: number, value: string) => void;
|
|
206
|
+
removePositionFromRows: (position: string) => void;
|
|
207
|
+
toggleSecond: (empId: number, position: string) => void;
|
|
165
208
|
setEmployment: (empId: number, kind: TeamEmployment) => void;
|
|
209
|
+
maxHoursFor: (employment: TeamEmployment) => number | null;
|
|
166
210
|
setHours: (empId: number, value: string) => void;
|
|
167
211
|
setRate: (empId: number, value: string) => void;
|
|
168
212
|
bulkOpen: import("vue").Ref<boolean, boolean>;
|