@feedmepos/mf-hrm-portal 2.3.0-dev.7 → 2.3.0-dev.9
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-J-NC4Z5M.js → ApprovalCodeList-BDpxEJpC.js} +5 -5
- package/dist/{AuditLogList-B1Sb8HDk.js → AuditLogList-Dgwj1gz8.js} +4 -4
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BlXgJvsO.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BBK2gl7r.js} +2 -2
- package/dist/{EmployeeList-DprCwGC9.js → EmployeeList-C8cbVcmY.js} +6 -6
- package/dist/{GrantUserList-BWeZAzUC.js → GrantUserList-zul0_Dlm.js} +6 -6
- package/dist/{Main-Dna6CkrV.js → Main-5TsFTFpc.js} +8 -8
- package/dist/{Main-BZCIlbf3.js → Main-Cjo4FMZZ.js} +5 -5
- package/dist/{Main-CGlnX97k.js → Main-DSr9KbjT.js} +11 -11
- package/dist/{PermissionSetList-DuJjihft.js → PermissionSetList-CDhiiu37.js} +7 -7
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-RI8tMDoe.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DoK944l0.js} +971 -971
- 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-BVz6q3HE.js} +1 -1
- package/dist/{RoleList-Jn8EeYqo.js → RoleList-DEbOPQD_.js} +9 -9
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Cx9jFgBS.js +492 -0
- package/dist/ScheduleGeneralPage-B8PWNsc2.js +776 -0
- package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-DLpFG65j.js → ScheduleModal.vue_vue_type_script_setup_true_lang-V1sZ_xhO.js} +858 -793
- package/dist/SchedulePage-ndLByVBl.js +17785 -0
- package/dist/{SchedulePositionPage-B7S3G8gO.js → SchedulePositionPage-Cuv4ydOK.js} +18 -18
- package/dist/{TeamMemberList-Bx_I5hO6.js → TeamMemberList-DpCGqHCk.js} +10 -10
- package/dist/{TimesheetList-DjDoOqih.js → TimesheetList-B7HAC5zS.js} +7 -7
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-pRgaW5ro.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BGD6m5M-.js} +3 -3
- package/dist/{app-uVAVK4Qd.js → app-Lh0cqgHy.js} +20 -20
- package/dist/app.js +1 -1
- package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
- package/dist/{dayjs.min-CdEA8bsz.js → dayjs.min-joq4stsa.js} +1 -1
- package/dist/{employee-mq8mZRLE.js → employee-BPmp9c6i.js} +4 -4
- package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
- package/dist/{iteration-B5TN8t9O.js → iteration-jvdTHQUx.js} +1 -1
- package/dist/{lodash-DxYGKySa.js → lodash-CIAEpr9s.js} +1 -1
- package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
- package/dist/{role-DiyMdYM9.js → role-Dd1TUMhn.js} +2 -2
- package/dist/{rule-BGlU-EJ_.js → rule-DmxI7qEY.js} +3 -3
- package/dist/src/api/schedule/index.d.ts +4 -1
- package/dist/src/types/schedule.d.ts +3 -4
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +0 -5
- 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/ScheduleBoardInteractionOverlays.vue.d.ts +0 -6
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +1 -5
- package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
- 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/schedule-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +21 -9
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +29 -4
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +3 -5
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +6 -3
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +4 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +21 -3
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +223 -21
- 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 +1 -1
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +24 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +12 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +15 -3
- package/dist/src/views/scheduling/country-rules/index.d.ts +4 -4
- package/dist/src/views/scheduling/data.d.ts +5 -1
- package/dist/src/views/scheduling/schedule-state.d.ts +76 -12
- package/dist/src/views/scheduling/schedule-store.d.ts +13 -5
- package/dist/src/views/scheduling/types.d.ts +22 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-d_nHyK5u.js → useAppStore-BoLkvkE2.js} +1 -1
- package/dist/{useLoading-JFoghhRz.js → useLoading-Ch1AUYT1.js} +1 -1
- package/dist/{useReportPermissions-CV0b4SBk.js → useReportPermissions-DM3GOFCC.js} +3 -3
- package/package.json +1 -1
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CV0DRK1L.js +0 -470
- package/dist/ScheduleGeneralPage-DMMqTMQs.js +0 -666
- package/dist/SchedulePage-3MWnazgL.js +0 -18251
- 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
|
@@ -2,15 +2,11 @@ import type { Proposal } from '../types';
|
|
|
2
2
|
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
3
3
|
import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
|
|
4
4
|
import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
|
|
5
|
-
import type { ScheduleOpenShiftCardApi } from '../composables/useScheduleOpenShiftCard';
|
|
6
|
-
import type { ScheduleAllShiftsRowApi } from '../composables/useScheduleAllShiftsRow';
|
|
7
5
|
import type { ScheduleDemandRowApi } from '../composables/useScheduleDemandRow';
|
|
8
6
|
type __VLS_Props = {
|
|
9
7
|
board: ScheduleBoardApi;
|
|
10
8
|
dragDrop: ScheduleDragDropApi;
|
|
11
9
|
roster: ScheduleRosterApi;
|
|
12
|
-
openShiftCard: ScheduleOpenShiftCardApi;
|
|
13
|
-
allShiftsRow: ScheduleAllShiftsRowApi;
|
|
14
10
|
demandRow: ScheduleDemandRowApi;
|
|
15
11
|
proposalAt?: (empId: number, dayIdx: number) => Proposal | undefined;
|
|
16
12
|
};
|
|
@@ -23,9 +19,6 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
23
19
|
toggleProposal: (id: number) => any;
|
|
24
20
|
proposalDragStart: (id: number, ev: DragEvent) => any;
|
|
25
21
|
proposalDragEnd: () => any;
|
|
26
|
-
openAssign: (openId: number) => any;
|
|
27
|
-
openOpenShiftMenu: (openId: number, anchor: HTMLElement) => any;
|
|
28
|
-
addOpenShift: (dayIdx: number) => any;
|
|
29
22
|
segEnter: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
|
|
30
23
|
segLeave: () => any;
|
|
31
24
|
segClick: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
|
|
@@ -44,9 +37,6 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
44
37
|
onToggleProposal?: ((id: number) => any) | undefined;
|
|
45
38
|
onProposalDragStart?: ((id: number, ev: DragEvent) => any) | undefined;
|
|
46
39
|
onProposalDragEnd?: (() => any) | undefined;
|
|
47
|
-
onOpenAssign?: ((openId: number) => any) | undefined;
|
|
48
|
-
onOpenOpenShiftMenu?: ((openId: number, anchor: HTMLElement) => any) | undefined;
|
|
49
|
-
onAddOpenShift?: ((dayIdx: number) => any) | undefined;
|
|
50
40
|
onSegEnter?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
51
41
|
onSegLeave?: (() => any) | undefined;
|
|
52
42
|
onSegClick?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
@@ -11,12 +11,12 @@ export interface ScheduleAddEmployeeForm {
|
|
|
11
11
|
payBasis: 'hourly' | 'monthly';
|
|
12
12
|
payAmount: string;
|
|
13
13
|
maxHours: string;
|
|
14
|
+
maxHoursPerDay: string;
|
|
14
15
|
minHours: string;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
maxOtHours: string;
|
|
16
|
+
workingHoursEnabled: boolean;
|
|
17
|
+
overtimeEnabled: boolean;
|
|
18
|
+
/** Blank means no employee override; the outlet overtime setting is inherited. */
|
|
19
|
+
maxHoursPerMonth: string;
|
|
20
20
|
/** For a part-timer: days they CAN work. For a full-timer: days they're OFF — the
|
|
21
21
|
* mockup inverts the same array's meaning by employment type. */
|
|
22
22
|
availDays: boolean[];
|
|
@@ -31,9 +31,13 @@ export interface ScheduleAddEmployeeForm {
|
|
|
31
31
|
masterCode: string;
|
|
32
32
|
/** Gates the fields below it — someone can be fully scheduled with this off. */
|
|
33
33
|
posAccessEnabled: boolean;
|
|
34
|
-
/** WHAT the passcode opens the till as,
|
|
35
|
-
*
|
|
36
|
-
|
|
34
|
+
/** WHAT the passcode opens the till as, and WHERE — a row per outlet. Not restricted to the
|
|
35
|
+
* outlets picked in Work locations above: a floating manager can be rostered at one outlet
|
|
36
|
+
* and hold POS admin at several others. */
|
|
37
|
+
posRoles: {
|
|
38
|
+
outlet: string;
|
|
39
|
+
roleId: string;
|
|
40
|
+
}[];
|
|
37
41
|
}
|
|
38
42
|
/** A salaried month, for converting a monthly figure into the hourly one the cost rail
|
|
39
43
|
* actually reads. Ported verbatim from the mockup's MONTH_HOURS. */
|
|
@@ -21,10 +21,11 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?
|
|
|
21
21
|
payBasis: "hourly" | "monthly";
|
|
22
22
|
payAmount: string;
|
|
23
23
|
maxHours: string;
|
|
24
|
+
maxHoursPerDay: string;
|
|
24
25
|
minHours: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
workingHoursEnabled: boolean;
|
|
27
|
+
overtimeEnabled: boolean;
|
|
28
|
+
maxHoursPerMonth: string;
|
|
28
29
|
availDays: boolean[];
|
|
29
30
|
availHours: {
|
|
30
31
|
from: string;
|
|
@@ -38,7 +39,10 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?
|
|
|
38
39
|
masterUser: boolean;
|
|
39
40
|
masterCode: string;
|
|
40
41
|
posAccessEnabled: boolean;
|
|
41
|
-
|
|
42
|
+
posRoles: {
|
|
43
|
+
outlet: string;
|
|
44
|
+
roleId: string;
|
|
45
|
+
}[];
|
|
42
46
|
};
|
|
43
47
|
sectionId: import("vue").Ref<string, string>;
|
|
44
48
|
isEditing: import("vue").ComputedRef<boolean>;
|
|
@@ -50,9 +54,11 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?
|
|
|
50
54
|
dayLit: (index: number) => boolean;
|
|
51
55
|
avLabel: import("vue").ComputedRef<"Weekly availability" | "Time off days">;
|
|
52
56
|
avAllLabel: import("vue").ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
|
|
53
|
-
maxHoursPlaceholder: import("vue").ComputedRef<
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
maxHoursPlaceholder: import("vue").ComputedRef<string>;
|
|
58
|
+
minHoursPlaceholder: import("vue").ComputedRef<string>;
|
|
59
|
+
maxHoursPerDayPlaceholder: import("vue").ComputedRef<string>;
|
|
60
|
+
maxHoursPerMonthPlaceholder: import("vue").ComputedRef<string>;
|
|
61
|
+
toggleOvertime: () => void;
|
|
56
62
|
payUnit: import("vue").ComputedRef<"/month" | "/hour">;
|
|
57
63
|
effectiveRate: import("vue").ComputedRef<number>;
|
|
58
64
|
passcodeValue: import("vue").ComputedRef<string>;
|
|
@@ -67,6 +73,7 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?
|
|
|
67
73
|
payLine: import("vue").ComputedRef<string>;
|
|
68
74
|
nameError: import("vue").ComputedRef<boolean>;
|
|
69
75
|
passError: import("vue").ComputedRef<boolean>;
|
|
76
|
+
posRolesError: import("vue").ComputedRef<boolean>;
|
|
70
77
|
availabilityError: import("vue").ComputedRef<boolean>;
|
|
71
78
|
saving: import("vue").Ref<boolean, boolean>;
|
|
72
79
|
saveError: import("vue").Ref<string | null, string | null>;
|
|
@@ -95,8 +102,13 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?
|
|
|
95
102
|
setPasscodeDigit: (index: number, value: string) => void;
|
|
96
103
|
generatePasscode: () => void;
|
|
97
104
|
togglePosAccess: () => void;
|
|
98
|
-
|
|
99
|
-
|
|
105
|
+
addPosRoleRow: () => void;
|
|
106
|
+
removePosRoleRow: (index: number) => void;
|
|
107
|
+
isCurrentOutletRow: (index: number) => boolean;
|
|
108
|
+
setPosRoleOutlet: (index: number, outlet: string) => void;
|
|
109
|
+
setPosRoleId: (index: number, roleId: string) => void;
|
|
110
|
+
posRoleOptionsFor: (outlet: string) => import("../../../types/role").Role[];
|
|
111
|
+
posRolesHint: import("vue").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.">;
|
|
100
112
|
create: () => Promise<boolean>;
|
|
101
113
|
};
|
|
102
114
|
export type ScheduleAddEmployeeApi = ReturnType<typeof useScheduleAddEmployee>;
|
|
@@ -37,19 +37,6 @@ export declare function qualifiedFor(emp: Employee, position: string): boolean;
|
|
|
37
37
|
export declare function useScheduleAreaBoard(board: ScheduleBoardApi): {
|
|
38
38
|
positionRows: import("vue").ComputedRef<string[]>;
|
|
39
39
|
assignedOn: (dayIdx: number, position: string) => ScheduleAssignedSlot[];
|
|
40
|
-
unfilledOpenShiftsOn: (dayIdx: number, position: string) => {
|
|
41
|
-
id: number;
|
|
42
|
-
dayIdx: number;
|
|
43
|
-
position: string;
|
|
44
|
-
required: number;
|
|
45
|
-
filledBy: number | null;
|
|
46
|
-
sen?: "junior" | "senior" | undefined;
|
|
47
|
-
empType?: "full" | "part" | undefined;
|
|
48
|
-
name?: string | undefined;
|
|
49
|
-
start: string;
|
|
50
|
-
end: string;
|
|
51
|
-
breakMins?: number | undefined;
|
|
52
|
-
}[];
|
|
53
40
|
poolFor: (position: string) => Employee[];
|
|
54
41
|
cellMeta: (dayIdx: number, position: string) => SchedulePositionCellMeta;
|
|
55
42
|
positionWeekMeta: (position: string) => {
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* dropStaffOnCell(), scoped to this board's model (no "unspecialised, so ask what they can
|
|
5
|
-
* do" grant flow, no split shifts): dropping fills an existing open shift for that position/day
|
|
6
|
-
* if there is one, otherwise opens the shift editor pre-filled with this person, day and
|
|
7
|
-
* position so the manager sets the hours. */
|
|
8
|
-
export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, areaBoard: ScheduleAreaBoardApi, handlers: {
|
|
9
|
-
onFillOpenShift: (openId: number, empId: number) => void;
|
|
2
|
+
/** Dragging a person from the staff rail onto a position/day cell opens a normal assigned shift. */
|
|
3
|
+
export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, handlers: {
|
|
10
4
|
onCreateShift: (empId: number, dayIdx: number, position: string) => void;
|
|
11
5
|
onNotQualified: (empName: string, position: string) => void;
|
|
12
6
|
}): {
|
|
@@ -57,6 +57,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
57
57
|
occupied: number;
|
|
58
58
|
notQualified: number;
|
|
59
59
|
weeklyCap: number;
|
|
60
|
+
dailyCap: number;
|
|
60
61
|
rest: number;
|
|
61
62
|
dayOff: number;
|
|
62
63
|
dayCap: number;
|
|
@@ -121,6 +122,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
121
122
|
occupied: number;
|
|
122
123
|
notQualified: number;
|
|
123
124
|
weeklyCap: number;
|
|
125
|
+
dailyCap: number;
|
|
124
126
|
rest: number;
|
|
125
127
|
dayOff: number;
|
|
126
128
|
dayCap: number;
|
|
@@ -185,6 +187,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
185
187
|
occupied: number;
|
|
186
188
|
notQualified: number;
|
|
187
189
|
weeklyCap: number;
|
|
190
|
+
dailyCap: number;
|
|
188
191
|
rest: number;
|
|
189
192
|
dayOff: number;
|
|
190
193
|
dayCap: number;
|
|
@@ -33,10 +33,12 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
33
33
|
contractHours?: number | undefined;
|
|
34
34
|
rate: number;
|
|
35
35
|
positions: string[];
|
|
36
|
+
archivedPositions?: string[] | undefined;
|
|
36
37
|
shifts: ({
|
|
37
38
|
start: string;
|
|
38
39
|
end: string;
|
|
39
40
|
role: string;
|
|
41
|
+
positionId?: string | undefined;
|
|
40
42
|
status: import("../types").ShiftStatus;
|
|
41
43
|
clock?: {
|
|
42
44
|
in: string | null;
|
|
@@ -85,6 +87,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
85
87
|
start: string;
|
|
86
88
|
end: string;
|
|
87
89
|
role: string;
|
|
90
|
+
positionId?: string | undefined;
|
|
88
91
|
status: import("../types").ShiftStatus;
|
|
89
92
|
clock?: {
|
|
90
93
|
in: string | null;
|
|
@@ -123,9 +126,16 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
123
126
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
124
127
|
payAmount?: number | undefined;
|
|
125
128
|
maxHours?: number | undefined;
|
|
126
|
-
maxOtHours?: number | undefined;
|
|
127
129
|
minHours?: number | undefined;
|
|
128
|
-
|
|
130
|
+
minHoursPerDay?: number | undefined;
|
|
131
|
+
workingHours?: {
|
|
132
|
+
minHoursPerDay: number | null;
|
|
133
|
+
maxHoursPerDay: number | null;
|
|
134
|
+
maxHoursPerWeek: number | null;
|
|
135
|
+
} | undefined;
|
|
136
|
+
overtime?: {
|
|
137
|
+
maxHoursPerMonth: number | null;
|
|
138
|
+
} | undefined;
|
|
129
139
|
preferences?: string[] | undefined;
|
|
130
140
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
131
141
|
availDays?: boolean[] | undefined;
|
|
@@ -148,10 +158,12 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
148
158
|
contractHours?: number | undefined;
|
|
149
159
|
rate: number;
|
|
150
160
|
positions: string[];
|
|
161
|
+
archivedPositions?: string[] | undefined;
|
|
151
162
|
shifts: ({
|
|
152
163
|
start: string;
|
|
153
164
|
end: string;
|
|
154
165
|
role: string;
|
|
166
|
+
positionId?: string | undefined;
|
|
155
167
|
status: import("../types").ShiftStatus;
|
|
156
168
|
clock?: {
|
|
157
169
|
in: string | null;
|
|
@@ -200,6 +212,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
200
212
|
start: string;
|
|
201
213
|
end: string;
|
|
202
214
|
role: string;
|
|
215
|
+
positionId?: string | undefined;
|
|
203
216
|
status: import("../types").ShiftStatus;
|
|
204
217
|
clock?: {
|
|
205
218
|
in: string | null;
|
|
@@ -238,9 +251,16 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
238
251
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
239
252
|
payAmount?: number | undefined;
|
|
240
253
|
maxHours?: number | undefined;
|
|
241
|
-
maxOtHours?: number | undefined;
|
|
242
254
|
minHours?: number | undefined;
|
|
243
|
-
|
|
255
|
+
minHoursPerDay?: number | undefined;
|
|
256
|
+
workingHours?: {
|
|
257
|
+
minHoursPerDay: number | null;
|
|
258
|
+
maxHoursPerDay: number | null;
|
|
259
|
+
maxHoursPerWeek: number | null;
|
|
260
|
+
} | undefined;
|
|
261
|
+
overtime?: {
|
|
262
|
+
maxHoursPerMonth: number | null;
|
|
263
|
+
} | undefined;
|
|
244
264
|
preferences?: string[] | undefined;
|
|
245
265
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
246
266
|
availDays?: boolean[] | undefined;
|
|
@@ -329,6 +349,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
329
349
|
start: string;
|
|
330
350
|
end: string;
|
|
331
351
|
role: string;
|
|
352
|
+
positionId?: string | undefined;
|
|
332
353
|
status: import("../types").ShiftStatus;
|
|
333
354
|
clock?: {
|
|
334
355
|
in: string | null;
|
|
@@ -377,6 +398,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
377
398
|
start: string;
|
|
378
399
|
end: string;
|
|
379
400
|
role: string;
|
|
401
|
+
positionId?: string | undefined;
|
|
380
402
|
status: import("../types").ShiftStatus;
|
|
381
403
|
clock?: {
|
|
382
404
|
in: string | null;
|
|
@@ -417,6 +439,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
417
439
|
start: string;
|
|
418
440
|
end: string;
|
|
419
441
|
role: string;
|
|
442
|
+
positionId?: string | undefined;
|
|
420
443
|
status: import("../types").ShiftStatus;
|
|
421
444
|
clock?: {
|
|
422
445
|
in: string | null;
|
|
@@ -465,6 +488,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
465
488
|
start: string;
|
|
466
489
|
end: string;
|
|
467
490
|
role: string;
|
|
491
|
+
positionId?: string | undefined;
|
|
468
492
|
status: import("../types").ShiftStatus;
|
|
469
493
|
clock?: {
|
|
470
494
|
in: string | null;
|
|
@@ -510,6 +534,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
510
534
|
rangeLabel: import("vue").ComputedRef<string>;
|
|
511
535
|
isToday: (dayIdx: number) => boolean;
|
|
512
536
|
dateKey: (dayIdx: number) => string | null;
|
|
537
|
+
dateKeyAt: (offset: number, dayIdx: number) => string | null;
|
|
513
538
|
navigate: (delta: number) => void;
|
|
514
539
|
goToday: () => void;
|
|
515
540
|
membersOf: (sectionId: string) => Employee[];
|
|
@@ -51,8 +51,6 @@ export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster:
|
|
|
51
51
|
onAddShift: (empId: number, dayIdx: number) => void;
|
|
52
52
|
onEditShift: (empId: number, dayIdx: number) => void;
|
|
53
53
|
onEditLeave: (empId: number, dayIdx: number) => void;
|
|
54
|
-
onOpenAssign: (openId: number) => void;
|
|
55
|
-
onAddAreaShift: (dayIdx: number, position: string) => void;
|
|
56
54
|
onOpenDemand: (dayIdx: number) => void;
|
|
57
55
|
onOpenEmployeeMenu: (empId: number, anchor: HTMLElement) => void;
|
|
58
56
|
onDemandSegment: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => void;
|
|
@@ -68,7 +66,6 @@ export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster:
|
|
|
68
66
|
clock: string;
|
|
69
67
|
}[]>;
|
|
70
68
|
isOpenHour: (m: number) => boolean;
|
|
71
|
-
openShiftsRow: import("vue").ComputedRef<ScheduleTimelineRow | null>;
|
|
72
69
|
employeeRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
|
|
73
70
|
positionTimelineRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
|
|
74
71
|
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
|
}[]>;
|
|
@@ -115,6 +116,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
115
116
|
n: number;
|
|
116
117
|
roles?: {
|
|
117
118
|
position: string;
|
|
119
|
+
positionId?: string | undefined;
|
|
118
120
|
n: number;
|
|
119
121
|
}[] | undefined;
|
|
120
122
|
}[];
|
|
@@ -126,6 +128,7 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
126
128
|
n: number;
|
|
127
129
|
roles?: {
|
|
128
130
|
position: string;
|
|
131
|
+
positionId?: string | undefined;
|
|
129
132
|
n: number;
|
|
130
133
|
}[] | undefined;
|
|
131
134
|
}[];
|
|
@@ -151,6 +154,6 @@ export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand:
|
|
|
151
154
|
openCopy: () => void;
|
|
152
155
|
closeCopy: () => void;
|
|
153
156
|
confirmCopy: () => Promise<void>;
|
|
154
|
-
setApply: (
|
|
157
|
+
setApply: (mode: DemandApplyMode) => void;
|
|
155
158
|
};
|
|
156
159
|
export type ScheduleDemandSheetApi = ReturnType<typeof useScheduleDemandSheet>;
|
|
@@ -6,6 +6,11 @@ export declare function useScheduleEmployeeAccess(form: ScheduleAddEmployeeForm)
|
|
|
6
6
|
setPasscodeDigit: (index: number, value: string) => void;
|
|
7
7
|
generatePasscode: () => void;
|
|
8
8
|
togglePosAccess: () => void;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
addPosRoleRow: () => void;
|
|
10
|
+
removePosRoleRow: (index: number) => void;
|
|
11
|
+
isCurrentOutletRow: (index: number) => boolean;
|
|
12
|
+
setPosRoleOutlet: (index: number, outlet: string) => void;
|
|
13
|
+
setPosRoleId: (index: number, roleId: string) => void;
|
|
14
|
+
posRoleOptionsFor: (outlet: string) => Role[];
|
|
15
|
+
posRolesHint: import("vue").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
16
|
};
|
|
@@ -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;
|
|
@@ -13,6 +13,7 @@ interface UseScheduleEmployeeCandidatesOptions {
|
|
|
13
13
|
};
|
|
14
14
|
onPicked: (employeeId: string) => void;
|
|
15
15
|
onPrefillPasscode: (employeeId: string) => void;
|
|
16
|
+
onPrefillPosRoles: (employeeId: string) => void;
|
|
16
17
|
}
|
|
17
18
|
/** Directory lookup and profile prefill for the existing-employee path of the add wizard. */
|
|
18
19
|
export declare function useScheduleEmployeeCandidates(options: UseScheduleEmployeeCandidatesOptions): {
|
|
@@ -12,6 +12,10 @@ 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>;
|
|
17
21
|
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
@@ -11,6 +11,8 @@ interface UseScheduleEmployeeValidationOptions {
|
|
|
11
11
|
export declare function useScheduleEmployeeValidation(options: UseScheduleEmployeeValidationOptions): {
|
|
12
12
|
nameError: ComputedRef<boolean>;
|
|
13
13
|
passError: ComputedRef<boolean>;
|
|
14
|
+
posRolesOk: ComputedRef<boolean>;
|
|
15
|
+
posRolesError: ComputedRef<boolean>;
|
|
14
16
|
availabilityOk: ComputedRef<boolean>;
|
|
15
17
|
availabilityError: ComputedRef<boolean>;
|
|
16
18
|
masterCodeError: ComputedRef<boolean>;
|
|
@@ -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;
|
|
@@ -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;
|
|
@@ -112,9 +115,16 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
112
115
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
113
116
|
payAmount?: number | undefined;
|
|
114
117
|
maxHours?: number | undefined;
|
|
115
|
-
maxOtHours?: number | undefined;
|
|
116
118
|
minHours?: number | undefined;
|
|
117
|
-
|
|
119
|
+
minHoursPerDay?: number | undefined;
|
|
120
|
+
workingHours?: {
|
|
121
|
+
minHoursPerDay: number | null;
|
|
122
|
+
maxHoursPerDay: number | null;
|
|
123
|
+
maxHoursPerWeek: number | null;
|
|
124
|
+
} | undefined;
|
|
125
|
+
overtime?: {
|
|
126
|
+
maxHoursPerMonth: number | null;
|
|
127
|
+
} | undefined;
|
|
118
128
|
preferences?: string[] | undefined;
|
|
119
129
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
120
130
|
availDays?: boolean[] | undefined;
|
|
@@ -137,10 +147,18 @@ export declare function useScheduleOnboardingEmployees(options: ScheduleOnboardi
|
|
|
137
147
|
end: string;
|
|
138
148
|
}[]>;
|
|
139
149
|
rawEmployee: (empId: number) => {
|
|
150
|
+
overtime?: {
|
|
151
|
+
maxHoursPerMonth: number | null;
|
|
152
|
+
} | undefined;
|
|
153
|
+
minHoursPerDay?: number | null | undefined;
|
|
154
|
+
workingHours?: {
|
|
155
|
+
minHoursPerDay: number | null;
|
|
156
|
+
maxHoursPerDay: number | null;
|
|
157
|
+
maxHoursPerWeek: number | null;
|
|
158
|
+
} | undefined;
|
|
140
159
|
name: string;
|
|
141
160
|
employeeId: string;
|
|
142
161
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
143
|
-
workingHour: number;
|
|
144
162
|
wage: {
|
|
145
163
|
type: "HOURLY" | "MONTHLY";
|
|
146
164
|
amount: number;
|