@feedmepos/mf-hrm-portal 2.3.0-dev → 2.3.0-dev.2
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-cG0zmQVJ.js → ApprovalCodeList-CJaNPHZC.js} +2 -2
- package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-CHA98ZqW.js} +3 -3
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C7rvthEI.js} +2 -2
- package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-CVmMKt71.js} +4 -4
- package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-MYjgt5-F.js} +3 -3
- package/dist/{Main-DkLBemi7.js → Main-BgB9lD4K.js} +9 -9
- package/dist/{Main-DFwdAWqn.js → Main-C0cnqQ3B.js} +5 -5
- package/dist/{Main-B2r59IOW.js → Main-hlcHtrsc.js} +2 -2
- package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-5f1WIaVa.js} +5 -5
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CFoTAGIX.js} +823 -823
- package/dist/{RoleList-DHO4JRKF.js → RoleList-DNR4miXr.js} +7 -7
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B4VUyKW3.js +470 -0
- package/dist/{ScheduleGeneralPage-WlBM8bxV.js → ScheduleGeneralPage-Cd5AlY4z.js} +273 -236
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-Cf0l2MRg.js +2188 -0
- package/dist/SchedulePage-C8m0-m3l.js +18257 -0
- package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-DyRckyUx.js} +67 -66
- package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-mw5OveZG.js} +6 -6
- package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-BzXarZbM.js} +5 -5
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dq5i4poN.js} +2 -2
- package/dist/{app-CmBSTvaI.js → app-DSsdRLHg.js} +657 -577
- package/dist/app.js +1 -1
- package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-B6xBXQtU.js} +1 -1
- package/dist/{employee-DQcHjoij.js → employee-hMhzuqk1.js} +28 -27
- package/dist/{iteration-BlavheWG.js → iteration-B34AvpNC.js} +1 -1
- package/dist/{lodash-QerqayrJ.js → lodash-1Vyuy7Mu.js} +1 -1
- package/dist/{role-RM2YLO7n.js → role-DKOrgO6f.js} +1 -1
- package/dist/{rule-DjlvYIuP.js → rule-CBzQ3GeV.js} +2 -2
- package/dist/src/api/schedule/index.d.ts +5 -1
- package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
- package/dist/src/types/employee.d.ts +1 -0
- package/dist/src/types/schedule.d.ts +1 -1
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +28 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +19 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +38 -0
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +38 -0
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
- package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +39 -0
- package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
- package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
- package/dist/src/views/scheduling/components/{ScheduleOpenShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +10 -3
- package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/{ScheduleTourAllSet.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingDemandFooter.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +7 -1
- package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
- package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -2
- package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +1 -1
- package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
- package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
- package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
- package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
- package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
- package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +10 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +14 -13
- package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +18 -2
- package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +4 -19
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +13 -2
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +25 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +3 -6
- package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +187 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +64 -487
- package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -3
- package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +7 -1
- package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +6 -0
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +2 -24
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +6 -1
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +62 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +10 -5
- package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
- package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
- package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
- package/dist/src/views/scheduling/data.d.ts +11 -6
- package/dist/src/views/scheduling/locales/index.d.ts +80 -0
- package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +32 -8
- package/dist/src/views/scheduling/schedule-store.d.ts +4 -1
- package/dist/src/views/scheduling/types.d.ts +5 -0
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-B2ev0j4w.js} +3 -3
- package/package.json +2 -1
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
- package/dist/SchedulePage-Nm0krGVU.js +0 -17056
- package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
- package/dist/src/components/layout/AppSidebar.vue.d.ts +0 -2
- package/dist/src/components/layout/withShell.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleShiftCardMenu.vue.d.ts +0 -12
- package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
- package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
2
|
type __VLS_Props = {
|
|
3
|
-
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
4
|
};
|
|
5
5
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
6
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
2
|
type __VLS_Props = {
|
|
3
|
-
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
4
|
};
|
|
5
5
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
6
|
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
outletName: string;
|
|
3
|
+
hoursMatchProfile: boolean;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
+
reset: () => any;
|
|
7
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
8
|
+
onReset?: (() => any) | undefined;
|
|
9
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ScheduleOnboardingWizardApi } from '../composables/useScheduleOnboardingWizard';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
wizard: ScheduleOnboardingWizardApi;
|
|
4
|
+
outletName: string;
|
|
5
|
+
};
|
|
6
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
7
|
+
close: () => any;
|
|
8
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
9
|
+
onClose?: (() => any) | undefined;
|
|
10
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
export default _default;
|
|
@@ -29,6 +29,8 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
29
29
|
menuTitle?: string;
|
|
30
30
|
/** A filter box at the top of the menu, for lists long enough to hunt through (outlets). */
|
|
31
31
|
searchable?: boolean;
|
|
32
|
+
/** Disable body teleporting for SSR or tests that want to keep the menu in the component tree. */
|
|
33
|
+
teleport?: boolean;
|
|
32
34
|
}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
33
35
|
toggle: (value: string) => any;
|
|
34
36
|
"update:modelValue": (value: string) => any;
|
|
@@ -47,8 +49,12 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
47
49
|
menuTitle?: string;
|
|
48
50
|
/** A filter box at the top of the menu, for lists long enough to hunt through (outlets). */
|
|
49
51
|
searchable?: boolean;
|
|
52
|
+
/** Disable body teleporting for SSR or tests that want to keep the menu in the component tree. */
|
|
53
|
+
teleport?: boolean;
|
|
50
54
|
}> & Readonly<{
|
|
51
55
|
onToggle?: ((value: string) => any) | undefined;
|
|
52
56
|
"onUpdate:modelValue"?: ((value: string) => any) | undefined;
|
|
53
|
-
}>, {
|
|
57
|
+
}>, {
|
|
58
|
+
teleport: boolean;
|
|
59
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
54
60
|
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
open: boolean;
|
|
3
|
+
outletName: string;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
6
|
+
setup: () => any;
|
|
7
|
+
dismiss: () => any;
|
|
8
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
9
|
+
onSetup?: (() => any) | undefined;
|
|
10
|
+
onDismiss?: (() => any) | undefined;
|
|
11
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
export default _default;
|
|
@@ -7,10 +7,10 @@ type __VLS_Props = {
|
|
|
7
7
|
timePicker: ScheduleTimePickerApi;
|
|
8
8
|
};
|
|
9
9
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
10
|
-
newPosition: (assign: (name: string) => void) => any;
|
|
11
10
|
swap: (empId: number, dayIdx: number) => any;
|
|
11
|
+
newPosition: (assign: (name: string) => void) => any;
|
|
12
12
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
13
|
-
onNewPosition?: ((assign: (name: string) => void) => any) | undefined;
|
|
14
13
|
onSwap?: ((empId: number, dayIdx: number) => any) | undefined;
|
|
14
|
+
onNewPosition?: ((assign: (name: string) => void) => any) | undefined;
|
|
15
15
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
16
|
export default _default;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScheduleCostRailApi } from '../composables/useScheduleCostRail';
|
|
2
2
|
import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
|
|
3
3
|
type __VLS_Props = {
|
|
4
|
-
rail:
|
|
4
|
+
rail: ScheduleCostRailApi;
|
|
5
5
|
dragDrop: ScheduleAreaDragDropApi;
|
|
6
6
|
};
|
|
7
7
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
+
addEmployee: () => any;
|
|
8
9
|
openEmployee: (empId: number) => any;
|
|
9
10
|
openEmployeeMenu: (empId: number, anchor: HTMLElement) => any;
|
|
10
|
-
addEmployee: () => any;
|
|
11
11
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
12
|
+
onAddEmployee?: (() => any) | undefined;
|
|
12
13
|
onOpenEmployee?: ((empId: number) => any) | undefined;
|
|
13
14
|
onOpenEmployeeMenu?: ((empId: number, anchor: HTMLElement) => any) | undefined;
|
|
14
|
-
onAddEmployee?: (() => any) | undefined;
|
|
15
15
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
16
16
|
export default _default;
|
|
@@ -15,6 +15,7 @@ type __VLS_Props = {
|
|
|
15
15
|
proposalAt?: (empId: number, dayIdx: number) => Proposal | undefined;
|
|
16
16
|
};
|
|
17
17
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
18
|
+
addEmployee: () => any;
|
|
18
19
|
addShift: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
|
|
19
20
|
editShift: (empId: number, dayIdx: number, slotIndex?: number | undefined) => any;
|
|
20
21
|
editLeave: (empId: number, dayIdx: number) => any;
|
|
@@ -33,9 +34,9 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
33
34
|
openEmployeeMenu: (empId: number, anchor: HTMLElement) => any;
|
|
34
35
|
dragShiftStart: (empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any;
|
|
35
36
|
dropOnCell: (empId: number, dayIdx: number, ev: DragEvent) => any;
|
|
36
|
-
addEmployee: () => any;
|
|
37
37
|
openDemandSheet: (dayIdx: number) => any;
|
|
38
38
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
39
|
+
onAddEmployee?: (() => any) | undefined;
|
|
39
40
|
onAddShift?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
|
|
40
41
|
onEditShift?: ((empId: number, dayIdx: number, slotIndex?: number | undefined) => any) | undefined;
|
|
41
42
|
onEditLeave?: ((empId: number, dayIdx: number) => any) | undefined;
|
|
@@ -54,7 +55,6 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
54
55
|
onOpenEmployeeMenu?: ((empId: number, anchor: HTMLElement) => any) | undefined;
|
|
55
56
|
onDragShiftStart?: ((empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any) | undefined;
|
|
56
57
|
onDropOnCell?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
|
|
57
|
-
onAddEmployee?: (() => any) | undefined;
|
|
58
58
|
onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
|
|
59
59
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
60
60
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
2
|
-
import type { ScheduleTopbarApi } from '../composables/
|
|
2
|
+
import type { ScheduleTopbarApi } from '../composables/useSchedulePageOverlays';
|
|
3
3
|
import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
|
|
4
4
|
import type { ScheduleCopyWeekApi } from '../composables/useScheduleCopyWeek';
|
|
5
5
|
import type { ScheduleExportApi } from '../composables/useScheduleExport';
|
|
@@ -11,10 +11,10 @@ type __VLS_Props = {
|
|
|
11
11
|
exportApi: ScheduleExportApi;
|
|
12
12
|
};
|
|
13
13
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
14
|
-
clear: (kind: "shifts" | "
|
|
14
|
+
clear: (kind: "shifts" | "demand" | "both") => any;
|
|
15
15
|
"sch-status-click": () => any;
|
|
16
16
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
17
|
-
onClear?: ((kind: "shifts" | "
|
|
17
|
+
onClear?: ((kind: "shifts" | "demand" | "both") => any) | undefined;
|
|
18
18
|
"onSch-status-click"?: (() => any) | undefined;
|
|
19
19
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
20
|
export default _default;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ScheduleOnboardingStep = 'hours' | 'staffing' | 'positions' | '
|
|
1
|
+
export type ScheduleOnboardingStep = 'hours' | 'staffing' | 'positions' | 'employees' | 'availability' | 'review';
|
|
2
2
|
export interface ScheduleOnboardingSession {
|
|
3
3
|
from: string;
|
|
4
4
|
to: string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type RemyDemandScope = {
|
|
2
|
+
mode: 'day';
|
|
3
|
+
isoDate: string;
|
|
4
|
+
label: string;
|
|
5
|
+
} | {
|
|
6
|
+
mode: 'weekday';
|
|
7
|
+
weekday: string;
|
|
8
|
+
} | {
|
|
9
|
+
mode: 'weekdays';
|
|
10
|
+
};
|
|
11
|
+
/** The sentence prefilled into the host Remy panel. Names the outlet the way a manager knows it;
|
|
12
|
+
* Remy resolves it to an id itself (hrm_find_outlet), so no identifier appears in the text. */
|
|
13
|
+
export declare function remyDemandPrompt(outletName: string, scope: RemyDemandScope): string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { DaySlot, Employee, LeaveSlot, WorkSlot } from '../types';
|
|
2
2
|
import type { FdtoScheduleSaveAssignmentReq } from '@/types/schedule';
|
|
3
|
+
export { isoDateKey } from './schedule-calendar';
|
|
3
4
|
/** dayjs-free local-date key — matches on the browser's local Y/M/D, not UTC, so this stays
|
|
4
5
|
* correct regardless of timezone. */
|
|
5
|
-
export declare function isoDateKey(d: Date): string;
|
|
6
6
|
export declare function isWorkSlot(slot: DaySlot): slot is WorkSlot;
|
|
7
7
|
export declare function isLeaveSlot(slot: DaySlot): slot is LeaveSlot;
|
|
8
8
|
export declare function workSlotsOf(day: DaySlot): WorkSlot[];
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import type { FdtoScheduleBreak } from '@/types/schedule';
|
|
2
|
-
|
|
2
|
+
import type { WorkSlot } from '../types';
|
|
3
|
+
type BreakSource = FdtoScheduleBreak[] | Pick<WorkSlot, 'breaks' | 'breakMins'> | undefined;
|
|
4
|
+
export declare function breakMinutesOf(source: BreakSource): number;
|
|
5
|
+
/** Net paid minutes. Legacy board slots only have `breakMins`; persisted slots use the richer
|
|
6
|
+
* break array, so both representations pass through this function. */
|
|
7
|
+
export declare function paidMinutesOf(slot: Pick<WorkSlot, 'start' | 'end' | 'breaks' | 'breakMins'>, gross?: number): number;
|
|
3
8
|
export declare function durationBreaksOf(minutes: number | undefined): FdtoScheduleBreak[];
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const RANGE_LEN = 7;
|
|
2
|
+
export declare function isoDateKey(date: Date): string;
|
|
3
|
+
export declare function addDays(date: Date, days: number): Date;
|
|
4
|
+
export declare function mostRecentMonday(from: Date): Date;
|
|
5
|
+
export declare function weekDates(offset: number, from?: Date): Date[];
|
|
6
|
+
export declare function weeksBetween(a: Date, b: Date): number;
|
|
7
|
+
export declare function todayWeekdayIdx(): number;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Employee, WorkSlot } from '../types';
|
|
2
|
+
export interface ScheduleCostBreakdown {
|
|
3
|
+
hours: number;
|
|
4
|
+
overtimeHours: number;
|
|
5
|
+
baseCost: number;
|
|
6
|
+
overtimeCost: number;
|
|
7
|
+
totalCost: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function costOfSlot(slot: WorkSlot, rate: number, multiplier: number): {
|
|
10
|
+
hours: number;
|
|
11
|
+
cost: number;
|
|
12
|
+
};
|
|
13
|
+
/** Splits a sequence of paid shift minutes at the employee's contract line. This is the single
|
|
14
|
+
* overtime/cost calculation used by rails and exports; callers provide the applicable pay rate
|
|
15
|
+
* multiplier for each slot. */
|
|
16
|
+
export declare function costOfSlots(employee: Employee, slots: Array<{
|
|
17
|
+
slot: WorkSlot;
|
|
18
|
+
multiplier: number;
|
|
19
|
+
}>): ScheduleCostBreakdown;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DemandPeriod } from '../types';
|
|
2
|
+
import { format12h as t12, formatShortMinutes as minToShort, fromMinutes as minToHHMM, spanMinutes as spanOf, toMinutes as toMin } from './schedule-time';
|
|
3
|
+
export { minToHHMM, minToShort, spanOf, t12, toMin };
|
|
4
|
+
export declare function rangeText(from: number, to: number): string;
|
|
5
|
+
export declare function roleTotalOf(period: DemandPeriod): number;
|
|
6
|
+
/** The unnamed part of a period's headcount. Derived so it cannot disagree with the total. */
|
|
7
|
+
export declare function anyLeftOf(period: DemandPeriod): number;
|
|
8
|
+
export interface ScheduleCoverageAxis {
|
|
9
|
+
from: number;
|
|
10
|
+
to: number;
|
|
11
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ExportShiftCell {
|
|
2
|
+
note: string;
|
|
3
|
+
shifts: {
|
|
4
|
+
when: string;
|
|
5
|
+
pos: string;
|
|
6
|
+
}[];
|
|
7
|
+
}
|
|
8
|
+
export declare function esc(value: string | number): string;
|
|
9
|
+
export declare function cellText(value: string | ExportShiftCell): string;
|
|
10
|
+
export declare function dayCellLines(value: ExportShiftCell): {
|
|
11
|
+
text: string;
|
|
12
|
+
kind: 'note' | 'when' | 'pos';
|
|
13
|
+
}[];
|
|
14
|
+
export declare function dayHeaderLabel(date: Date): string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Shared clock arithmetic for the scheduling board. All spans are minutes from midnight;
|
|
2
|
+
* an end at or before the start is treated as an overnight end on the following day. */
|
|
3
|
+
export declare function toMinutes(value: string): number;
|
|
4
|
+
export declare function fromMinutes(value: number): string;
|
|
5
|
+
export declare function spanMinutes(start: string, end: string): [number, number];
|
|
6
|
+
export declare function durationMinutes(start: string, end: string): number;
|
|
7
|
+
export declare function format12h(value: string): string;
|
|
8
|
+
export declare function formatShortMinutes(value: number): string;
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import type { Employee, OpenShift } from '../types';
|
|
2
|
-
export
|
|
3
|
-
export declare function mostRecentMonday(from: Date): Date;
|
|
4
|
-
export declare function weekDates(offset: number): Date[];
|
|
5
|
-
export declare function weeksBetween(a: Date, b: Date): number;
|
|
2
|
+
export { RANGE_LEN, mostRecentMonday, weekDates, weeksBetween } from './schedule-calendar';
|
|
6
3
|
export interface WeekBucket {
|
|
7
4
|
employees: Employee[];
|
|
8
5
|
openShifts: OpenShift[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useAppStore } from '@feedmepos/mf-remy-panel';
|
|
2
|
+
export interface RemyActivateOptions {
|
|
3
|
+
prompt?: string;
|
|
4
|
+
forceNewConversation?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface RemyAppStoreApi {
|
|
7
|
+
store: ReturnType<typeof useAppStore>;
|
|
8
|
+
activate: (options: RemyActivateOptions) => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare function useRemyAppStore(): RemyAppStoreApi;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Role } from '@/types/role';
|
|
2
1
|
import type { Employee } from '../types';
|
|
3
2
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
4
3
|
import { type ScheduleAddEmployeeMode, type ScheduleAddEmployeeStep } from './schedule-add-employee-form';
|
|
@@ -6,7 +5,9 @@ export type { ScheduleAddEmployeeForm, ScheduleAddEmployeeMode, ScheduleAddEmplo
|
|
|
6
5
|
/** Add-employee wizard: a "how do you want to add them" step, then one detail form covering
|
|
7
6
|
* identity, locations, pay, scheduling caps, availability, positions and POS access — plus
|
|
8
7
|
* the "select existing POS staff" side dialog the first step can hand off to. */
|
|
9
|
-
export declare function useScheduleAddEmployee(board: ScheduleBoardApi
|
|
8
|
+
export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?: {
|
|
9
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
10
|
+
}): {
|
|
10
11
|
open: import("vue").Ref<boolean, boolean>;
|
|
11
12
|
selectExistingOpen: import("vue").Ref<boolean, boolean>;
|
|
12
13
|
step: import("vue").Ref<ScheduleAddEmployeeStep, ScheduleAddEmployeeStep>;
|
|
@@ -46,7 +47,7 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
46
47
|
secOpen: import("vue").Ref<boolean, boolean>;
|
|
47
48
|
secondaryOptions: import("vue").ComputedRef<string[]>;
|
|
48
49
|
isPart: import("vue").ComputedRef<boolean>;
|
|
49
|
-
dayLit: (
|
|
50
|
+
dayLit: (index: number) => boolean;
|
|
50
51
|
avLabel: import("vue").ComputedRef<"Weekly availability" | "Time off days">;
|
|
51
52
|
avAllLabel: import("vue").ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
|
|
52
53
|
maxHoursPlaceholder: import("vue").ComputedRef<"Hours per week" | "No cap">;
|
|
@@ -81,21 +82,21 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi): {
|
|
|
81
82
|
next: () => void;
|
|
82
83
|
back: () => void;
|
|
83
84
|
toggleMulti: (which: "loc" | "sec") => void;
|
|
84
|
-
toggleLocation: (
|
|
85
|
-
removeLocation: (
|
|
86
|
-
toggleSecondary: (
|
|
87
|
-
removeSecondary: (
|
|
88
|
-
setPrimaryPosition: (
|
|
85
|
+
toggleLocation: (location: string) => void;
|
|
86
|
+
removeLocation: (location: string) => void;
|
|
87
|
+
toggleSecondary: (position: string) => void;
|
|
88
|
+
removeSecondary: (position: string) => void;
|
|
89
|
+
setPrimaryPosition: (position: string) => void;
|
|
89
90
|
setPayBasis: (basis: "hourly" | "monthly") => void;
|
|
90
|
-
toggleAvailDay: (
|
|
91
|
+
toggleAvailDay: (index: number) => void;
|
|
91
92
|
availAll: () => void;
|
|
92
|
-
setAvailHour: (
|
|
93
|
-
copyAvailHourDown: (
|
|
94
|
-
setPasscodeDigit: (
|
|
93
|
+
setAvailHour: (index: number, field: "from" | "to", value: string) => void;
|
|
94
|
+
copyAvailHourDown: (index: number) => void;
|
|
95
|
+
setPasscodeDigit: (index: number, value: string) => void;
|
|
95
96
|
generatePasscode: () => void;
|
|
96
97
|
togglePosAccess: () => void;
|
|
97
98
|
setPosRole: (roleId: string) => void;
|
|
98
|
-
posRoleOptions: import("vue").ComputedRef<Role[]>;
|
|
99
|
+
posRoleOptions: import("vue").ComputedRef<import("../../../types/role").Role[]>;
|
|
99
100
|
create: () => Promise<boolean>;
|
|
100
101
|
};
|
|
101
102
|
export type ScheduleAddEmployeeApi = ReturnType<typeof useScheduleAddEmployee>;
|
|
@@ -74,7 +74,9 @@ export interface ScheduleAssignSlot {
|
|
|
74
74
|
* any other assignment); a soft clash — the person already has a shift that day — asks first via
|
|
75
75
|
* the shared clash-confirmation dialog, and approved leave is a hard block the tile itself
|
|
76
76
|
* refuses rather than asking about. */
|
|
77
|
-
export declare function useScheduleAssign(board: ScheduleBoardApi, demand: ScheduleDemandApi, clash: ScheduleClashDetectionApi
|
|
77
|
+
export declare function useScheduleAssign(board: ScheduleBoardApi, demand: ScheduleDemandApi, clash: ScheduleClashDetectionApi, options?: {
|
|
78
|
+
onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
79
|
+
}): {
|
|
78
80
|
state: {
|
|
79
81
|
open: boolean;
|
|
80
82
|
target: {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DaySlot, Employee, WorkSlot } from '../types';
|
|
2
|
+
export interface ScheduleAssignmentMutationOptions {
|
|
3
|
+
dateFor: (offset: number, dayIdx: number) => string | null;
|
|
4
|
+
employeeAt: (offset: number, employeeId: number) => Employee | undefined;
|
|
5
|
+
currentOffset: () => number;
|
|
6
|
+
onPersistError?: (message: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function useScheduleAssignmentMutations(options: ScheduleAssignmentMutationOptions): {
|
|
9
|
+
persistSlot: (empId: number, dayIdx: number, oldSlot: DaySlot, newSlot: WorkSlot | WorkSlot[], dateOverride?: string | null, offset?: number, restoreDaySlot?: DaySlot) => Promise<void>;
|
|
10
|
+
persistRemoval: (oldSlot: DaySlot) => Promise<void>;
|
|
11
|
+
persistMove: (toEmpId: number, dayIdx: number, slot: WorkSlot | WorkSlot[], dateOverride?: string | null) => Promise<void>;
|
|
12
|
+
recoverPersistFailure: (error: unknown, fallback: string) => Promise<void>;
|
|
13
|
+
};
|
|
@@ -22,6 +22,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
22
22
|
isHoliday: (dayIdx: number) => boolean;
|
|
23
23
|
employees: import("vue").Ref<{
|
|
24
24
|
id: number;
|
|
25
|
+
sourceId: string;
|
|
25
26
|
name: string;
|
|
26
27
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
27
28
|
role: string;
|
|
@@ -57,6 +58,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
57
58
|
breakPayType: "PAID" | "UNPAID";
|
|
58
59
|
})[] | undefined;
|
|
59
60
|
assignmentId?: string | undefined;
|
|
61
|
+
updatedAt?: string | undefined;
|
|
60
62
|
splitGroupId?: string | undefined;
|
|
61
63
|
} | {
|
|
62
64
|
timeOff: "approved" | "pending";
|
|
@@ -104,6 +106,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
104
106
|
breakPayType: "PAID" | "UNPAID";
|
|
105
107
|
})[] | undefined;
|
|
106
108
|
assignmentId?: string | undefined;
|
|
109
|
+
updatedAt?: string | undefined;
|
|
107
110
|
splitGroupId?: string | undefined;
|
|
108
111
|
}[] | null)[];
|
|
109
112
|
remarks: {
|
|
@@ -134,6 +137,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
134
137
|
masterUser?: boolean | undefined;
|
|
135
138
|
}[], Employee[] | {
|
|
136
139
|
id: number;
|
|
140
|
+
sourceId: string;
|
|
137
141
|
name: string;
|
|
138
142
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
139
143
|
role: string;
|
|
@@ -169,6 +173,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
169
173
|
breakPayType: "PAID" | "UNPAID";
|
|
170
174
|
})[] | undefined;
|
|
171
175
|
assignmentId?: string | undefined;
|
|
176
|
+
updatedAt?: string | undefined;
|
|
172
177
|
splitGroupId?: string | undefined;
|
|
173
178
|
} | {
|
|
174
179
|
timeOff: "approved" | "pending";
|
|
@@ -216,6 +221,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
216
221
|
breakPayType: "PAID" | "UNPAID";
|
|
217
222
|
})[] | undefined;
|
|
218
223
|
assignmentId?: string | undefined;
|
|
224
|
+
updatedAt?: string | undefined;
|
|
219
225
|
splitGroupId?: string | undefined;
|
|
220
226
|
}[] | null)[];
|
|
221
227
|
remarks: {
|
|
@@ -281,7 +287,6 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
281
287
|
end: string;
|
|
282
288
|
breakMins?: number | undefined;
|
|
283
289
|
}[]>;
|
|
284
|
-
highlightEmpId: import("vue").Ref<number | null, number | null>;
|
|
285
290
|
rangeStart: import("vue").Ref<Date, Date>;
|
|
286
291
|
weekOffset: import("vue").ComputedRef<number>;
|
|
287
292
|
peekWeek: (offset: number) => import("./schedule-week-cache").WeekBucket;
|
|
@@ -290,11 +295,13 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
290
295
|
dayLocked: (dayIdx: number) => boolean;
|
|
291
296
|
pendingChanges: import("vue").Ref<{
|
|
292
297
|
empId: number;
|
|
298
|
+
employeeKey: string;
|
|
293
299
|
dayIdx: number;
|
|
294
300
|
kind: "add" | "change" | "remove";
|
|
295
301
|
label: string;
|
|
296
302
|
}[], PendingChange[] | {
|
|
297
303
|
empId: number;
|
|
304
|
+
employeeKey: string;
|
|
298
305
|
dayIdx: number;
|
|
299
306
|
kind: "add" | "change" | "remove";
|
|
300
307
|
label: string;
|
|
@@ -304,7 +311,8 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
304
311
|
empId: number;
|
|
305
312
|
dayIdx: number;
|
|
306
313
|
slot: WorkSlot;
|
|
307
|
-
}>) => Promise<
|
|
314
|
+
}>) => Promise<boolean>;
|
|
315
|
+
flushAssignmentWrites: () => Promise<void>;
|
|
308
316
|
recordChange: (empId: number, dayIdx: number, kind: PendingChange["kind"], label: string) => void;
|
|
309
317
|
scheduleVersions: import("vue").Ref<{
|
|
310
318
|
v: number;
|
|
@@ -342,6 +350,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
342
350
|
breakPayType: "PAID" | "UNPAID";
|
|
343
351
|
})[] | undefined;
|
|
344
352
|
assignmentId?: string | undefined;
|
|
353
|
+
updatedAt?: string | undefined;
|
|
345
354
|
splitGroupId?: string | undefined;
|
|
346
355
|
} | {
|
|
347
356
|
timeOff: "approved" | "pending";
|
|
@@ -389,6 +398,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
389
398
|
breakPayType: "PAID" | "UNPAID";
|
|
390
399
|
})[] | undefined;
|
|
391
400
|
assignmentId?: string | undefined;
|
|
401
|
+
updatedAt?: string | undefined;
|
|
392
402
|
splitGroupId?: string | undefined;
|
|
393
403
|
}[] | null)[];
|
|
394
404
|
}[];
|
|
@@ -428,6 +438,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
428
438
|
breakPayType: "PAID" | "UNPAID";
|
|
429
439
|
})[] | undefined;
|
|
430
440
|
assignmentId?: string | undefined;
|
|
441
|
+
updatedAt?: string | undefined;
|
|
431
442
|
splitGroupId?: string | undefined;
|
|
432
443
|
} | {
|
|
433
444
|
timeOff: "approved" | "pending";
|
|
@@ -475,6 +486,7 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
475
486
|
breakPayType: "PAID" | "UNPAID";
|
|
476
487
|
})[] | undefined;
|
|
477
488
|
assignmentId?: string | undefined;
|
|
489
|
+
updatedAt?: string | undefined;
|
|
478
490
|
splitGroupId?: string | undefined;
|
|
479
491
|
}[] | null)[];
|
|
480
492
|
}[];
|
|
@@ -508,6 +520,10 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
508
520
|
commitShiftAt: (offset: number, empId: number, dayIdx: number, slot: WorkSlot | WorkSlot[], replaceIndex?: number, replaceCount?: number) => void;
|
|
509
521
|
removeShift: (empId: number, dayIdx: number, slotIndex?: number, count?: number) => void;
|
|
510
522
|
removeShiftAt: (offset: number, empId: number, dayIdx: number, slotIndex?: number, count?: number) => void;
|
|
523
|
+
employeeShiftsToClear: (empId: number) => number[];
|
|
524
|
+
clearEmployeeShifts: (empId: number) => {
|
|
525
|
+
shifts: number;
|
|
526
|
+
};
|
|
511
527
|
moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number) => boolean;
|
|
512
528
|
swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
|
|
513
529
|
clearShiftsInRange: () => {
|
|
@@ -3,7 +3,9 @@ import type { ScheduleOutletApi } from './useScheduleOutlet';
|
|
|
3
3
|
* not the page's draft — to one or more other outlets the manager ticks. Scoped to pay rates
|
|
4
4
|
* because that is the only outlet-scoped setting this page persists; the mockup's broader
|
|
5
5
|
* "rules, shifts, coverage and positions" clone lives on pages this one doesn't own. */
|
|
6
|
-
export declare function useScheduleCloneOutletModal(outlet: ScheduleOutletApi
|
|
6
|
+
export declare function useScheduleCloneOutletModal(outlet: ScheduleOutletApi, options?: {
|
|
7
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
8
|
+
}): {
|
|
7
9
|
open: import("vue").Ref<boolean, boolean>;
|
|
8
10
|
query: import("vue").Ref<string, string>;
|
|
9
11
|
selected: import("vue").Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import type { Proposal } from '../types';
|
|
1
2
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import type { ScheduleEmployeeLoad } from './useScheduleEmployeeIdentity';
|
|
2
4
|
export declare function slotHours(start: string, end: string): number;
|
|
3
5
|
export interface ScheduleDayCost {
|
|
4
6
|
hours: number;
|
|
@@ -27,10 +29,13 @@ export interface ScheduleOtRisk {
|
|
|
27
29
|
hours: number;
|
|
28
30
|
contract: number;
|
|
29
31
|
}
|
|
32
|
+
/** The staff rail consumes the same employee identity/load derivation as the area view. */
|
|
33
|
+
export type ScheduleRailRow = ScheduleEmployeeLoad;
|
|
30
34
|
/** Weekly labour cost + monthly OT gauge for the collapsible cost rail, built off one
|
|
31
35
|
* per-day breakdown so the rail's totals and the stats row's per-day figures can never
|
|
32
36
|
* disagree about what a day cost. */
|
|
33
|
-
export declare function useScheduleCostRail(board: ScheduleBoardApi): {
|
|
37
|
+
export declare function useScheduleCostRail(board: ScheduleBoardApi, proposalAt?: () => ((empId: number, dayIdx: number) => Proposal | undefined) | undefined): {
|
|
38
|
+
rows: import("vue").ComputedRef<ScheduleEmployeeLoad[]>;
|
|
34
39
|
collapsed: import("vue").Ref<boolean, boolean>;
|
|
35
40
|
byDay: import("vue").ComputedRef<ScheduleDayCost[]>;
|
|
36
41
|
weeklyCost: import("vue").ComputedRef<number>;
|
|
@@ -7,7 +7,7 @@ export interface ScheduleDayNoteState {
|
|
|
7
7
|
}
|
|
8
8
|
export interface ScheduleDayNoteOptions {
|
|
9
9
|
/** Toasts for the writes that happen on the spot — closing a day, repricing it, saving. */
|
|
10
|
-
onToast?: (message: string) => void;
|
|
10
|
+
onToast?: (message: string, type?: 'info' | 'success' | 'error') => void;
|
|
11
11
|
}
|
|
12
12
|
/** One decimal, always: "2×" reads as a count, and 1.5 beside a bare 2 in one sentence looks
|
|
13
13
|
* like two different kinds of number. Ported from the mockup's fmtRate(). */
|
|
@@ -1,24 +1,9 @@
|
|
|
1
1
|
import type { CoverageSegment, DaySlot, DemandPeriod, Employee, Proposal } from '../types';
|
|
2
2
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export declare function spanOf(start: string, end: string): [number, number];
|
|
8
|
-
/** 12-hour clock for prose — the sheet and the popovers read as sentences, and "16:00" in the
|
|
9
|
-
* middle of one does not. */
|
|
10
|
-
export declare function t12(hhmm: string): string;
|
|
11
|
-
/** The timeline's two end labels — "8am", "10:30pm", meridiem spelled out. */
|
|
12
|
-
export declare function minToShort(m: number): string;
|
|
13
|
-
export declare function rangeText(from: number, to: number): string;
|
|
14
|
-
export declare function roleTotalOf(p: DemandPeriod): number;
|
|
15
|
-
/** The unnamed part of a period's headcount. Derived, never typed — so it cannot disagree with
|
|
16
|
-
* the total above it. Negative means the breakdown has overrun that total. */
|
|
17
|
-
export declare function anyLeftOf(p: DemandPeriod): number;
|
|
18
|
-
export interface ScheduleCoverageAxis {
|
|
19
|
-
from: number;
|
|
20
|
-
to: number;
|
|
21
|
-
}
|
|
3
|
+
import { anyLeftOf, minToHHMM, minToShort, rangeText, roleTotalOf, spanOf, t12, toMin } from './schedule-demand-domain';
|
|
4
|
+
import type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
5
|
+
export { anyLeftOf, minToHHMM, minToShort, rangeText, roleTotalOf, spanOf, t12, toMin };
|
|
6
|
+
export type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
22
7
|
/** Staffing demand, and coverage read against it.
|
|
23
8
|
*
|
|
24
9
|
* Storage follows this board's dayNotes rather than the mockup's flat `di` index: the mockup
|