@feedmepos/mf-hrm-portal 2.3.0-dev → 2.3.0-dev.10
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-BLA2rhLB.js} +5 -5
- package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-DBYdZhZl.js} +4 -4
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CtCEzPbE.js} +2 -2
- package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-CA7DWLmy.js} +6 -6
- package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-BYnegeEr.js} +6 -6
- package/dist/{Main-DFwdAWqn.js → Main-BeXx0hAc.js} +8 -8
- package/dist/{Main-B2r59IOW.js → Main-Dh-gZSaa.js} +5 -5
- package/dist/{Main-DkLBemi7.js → Main-NDK7LUmm.js} +11 -11
- package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-DDIacDpQ.js} +7 -7
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-ONMn3v_f.js +4167 -0
- 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-DHO4JRKF.js → RoleList-B30FHIzu.js} +9 -9
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CRRguWTG.js +492 -0
- package/dist/ScheduleGeneralPage-8gEeZbFR.js +776 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-TfxTAjO8.js +2252 -0
- package/dist/SchedulePage-DQ0VXWWi.js +17832 -0
- package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-oGIDGneA.js} +66 -65
- package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-Drj6R4Y3.js} +10 -10
- package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-CDQfN5LE.js} +7 -7
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Bx-6hjs7.js} +3 -3
- package/dist/{app-CmBSTvaI.js → app-DWe_4-ct.js} +678 -594
- package/dist/app.js +1 -1
- package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
- package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-QSwC9dtX.js} +1 -1
- package/dist/{employee-DQcHjoij.js → employee-Bb2b3dP6.js} +29 -28
- package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
- package/dist/{iteration-BlavheWG.js → iteration-TDU7bFxZ.js} +1 -1
- package/dist/{lodash-QerqayrJ.js → lodash-D3Ns5VMN.js} +1 -1
- package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
- package/dist/{role-RM2YLO7n.js → role-D57Le_-U.js} +2 -2
- package/dist/{rule-DjlvYIuP.js → rule-DzesUEX7.js} +3 -3
- package/dist/src/api/schedule/index.d.ts +8 -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 +3 -4
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +23 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +32 -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 +38 -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/{ScheduleShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +7 -2
- 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 +9 -0
- package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.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/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
- 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 +17 -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 -12
- 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-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +5 -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-day-meta.d.ts +1 -3
- 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 +15 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +34 -21
- 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/useScheduleAssignmentMutations.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +50 -11
- 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 -2
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +7 -24
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +19 -5
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +27 -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 +29 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +20 -0
- package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +5 -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 +205 -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 +306 -529
- 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 -7
- package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +4 -1
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +4 -2
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +9 -1
- package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +30 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +8 -25
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +18 -3
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +25 -8
- 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 +16 -7
- 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 +104 -16
- package/dist/src/views/scheduling/schedule-store.d.ts +17 -6
- package/dist/src/views/scheduling/types.d.ts +27 -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-Bl6Br79r.js → useReportPermissions-Cmuead1K.js} +3 -3
- package/package.json +2 -1
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +0 -4167
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
- package/dist/ScheduleGeneralPage-WlBM8bxV.js +0 -629
- 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/withShell.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
- package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
- package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
- package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
- package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -122
- package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
- package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
- package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
- /package/dist/src/{components/layout/AppSidebar.vue.d.ts → views/scheduling/components/SchedulePublishShareArt.vue.d.ts} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { ScheduleAutoScheduleApi } from './useScheduleAutoSchedule';
|
|
3
|
+
import type { SchedulePublishApi } from './useSchedulePublish';
|
|
4
|
+
interface UseSchedulePageActionsOptions {
|
|
5
|
+
board: ScheduleBoardApi;
|
|
6
|
+
autoSchedule: ScheduleAutoScheduleApi;
|
|
7
|
+
publish: SchedulePublishApi;
|
|
8
|
+
notify: (message: string, type: 'info' | 'success') => void;
|
|
9
|
+
}
|
|
10
|
+
export declare function useSchedulePageActions(options: UseSchedulePageActionsOptions): {
|
|
11
|
+
comingSoon: () => void;
|
|
12
|
+
onSchedStatusClick: () => void;
|
|
13
|
+
onApplyProposals: (count: number) => void;
|
|
14
|
+
onApplyAndPublishProposals: (count: number) => void;
|
|
15
|
+
onProposalDragStart: (id: number, event: DragEvent) => void;
|
|
16
|
+
onScroll: (delta: number) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { ScheduleClashDetectionApi } from './useScheduleClashDetection';
|
|
3
|
+
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
4
|
+
import type { ScheduleAddPickApi } from './useScheduleAddPick';
|
|
5
|
+
import type { ScheduleShiftPopoverApi } from './useScheduleShiftPopover';
|
|
6
|
+
import type { ScheduleDemandSheetApi } from './useScheduleDemandSheet';
|
|
7
|
+
interface UseSchedulePageCellActionsOptions {
|
|
8
|
+
board: ScheduleBoardApi;
|
|
9
|
+
clash: ScheduleClashDetectionApi;
|
|
10
|
+
demand: ScheduleDemandApi;
|
|
11
|
+
addPick: ScheduleAddPickApi;
|
|
12
|
+
popover: ScheduleShiftPopoverApi;
|
|
13
|
+
demandSheet: ScheduleDemandSheetApi;
|
|
14
|
+
}
|
|
15
|
+
export declare function useSchedulePageCellActions(options: UseSchedulePageCellActionsOptions): {
|
|
16
|
+
dayHasAnyShift: (dayIdx: number) => boolean;
|
|
17
|
+
onAddShift: (empId: number, dayIdx: number, anchor: HTMLElement) => void;
|
|
18
|
+
onEditShift: (empId: number, dayIdx: number, slotIndex?: number) => void;
|
|
19
|
+
onOpenDemandSheet: (dayIdx: number) => void;
|
|
20
|
+
};
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { ScheduleClashDetectionApi } from './useScheduleClashDetection';
|
|
3
|
+
import type { ScheduleDragDropApi } from './useScheduleDragDrop';
|
|
4
|
+
import type { ScheduleShiftActionsApi } from './useScheduleShiftActions';
|
|
5
|
+
import type { ScheduleAutoScheduleApi } from './useScheduleAutoSchedule';
|
|
6
|
+
interface UseSchedulePageCellDropOptions {
|
|
7
|
+
board: ScheduleBoardApi;
|
|
8
|
+
autoSchedule: ScheduleAutoScheduleApi;
|
|
9
|
+
dragDrop: ScheduleDragDropApi;
|
|
10
|
+
shiftActions: ScheduleShiftActionsApi;
|
|
11
|
+
clash: ScheduleClashDetectionApi;
|
|
12
|
+
dayHasAnyShift: (dayIdx: number) => boolean;
|
|
13
|
+
notify: (message: string, type: 'error') => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function useSchedulePageCellDrop(options: UseSchedulePageCellDropOptions): {
|
|
16
|
+
onCellDrop: (empId: number, dayIdx: number, event: DragEvent) => void;
|
|
17
|
+
};
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { Ref } from 'vue';
|
|
3
|
+
import { useScheduleEmployeeProfile } from './useScheduleEmployeeProfile';
|
|
4
|
+
import type { ScheduleAddEmployeeApi } from './useScheduleAddEmployee';
|
|
5
|
+
import type { ScheduleClashDetectionApi } from './useScheduleClashDetection';
|
|
6
|
+
type ScheduleEmployeeProfileApi = ReturnType<typeof useScheduleEmployeeProfile>;
|
|
7
|
+
interface UseSchedulePageEmployeeActionsOptions {
|
|
8
|
+
board: ScheduleBoardApi;
|
|
9
|
+
employeeProfile: ScheduleEmployeeProfileApi;
|
|
10
|
+
addEmployee: ScheduleAddEmployeeApi;
|
|
11
|
+
removeEmployeeId: Ref<number | null>;
|
|
12
|
+
clash: ScheduleClashDetectionApi;
|
|
13
|
+
notify: (message: string, type: 'error' | 'info' | 'success') => void;
|
|
14
|
+
}
|
|
15
|
+
export declare function useSchedulePageEmployeeActions(options: UseSchedulePageEmployeeActionsOptions): {
|
|
16
|
+
onOpenEmployeeMenu: (empId: number) => void;
|
|
17
|
+
onEditEmployee: () => void;
|
|
18
|
+
onClearAllShifts: (empId: number) => void;
|
|
19
|
+
onRemoveEmployee: () => void;
|
|
20
|
+
onConfirmRemoveEmployee: () => Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
+
import { ref } from 'vue';
|
|
1
2
|
import type { ScheduleAddPickApi } from './useScheduleAddPick';
|
|
2
|
-
import type { ScheduleAllShiftsRowApi } from './useScheduleAllShiftsRow';
|
|
3
3
|
import type { ScheduleDayNoteApi } from './useScheduleDayNote';
|
|
4
4
|
import type { ScheduleGapPopoverApi } from './useScheduleGapPopover';
|
|
5
|
-
import type { ScheduleOpenShiftCardApi } from './useScheduleOpenShiftCard';
|
|
6
5
|
import type { ScheduleShiftActionsApi } from './useScheduleShiftActions';
|
|
7
6
|
import type { ScheduleTimePickerApi } from './useScheduleTimePicker';
|
|
8
|
-
|
|
7
|
+
export type ScheduleTopbarMenu = 'actions' | 'export';
|
|
8
|
+
export interface ScheduleTopbarApi {
|
|
9
|
+
openMenu: ReturnType<typeof ref<ScheduleTopbarMenu | null>>;
|
|
10
|
+
toggleMenu: (id: ScheduleTopbarMenu) => void;
|
|
11
|
+
closeMenus: () => void;
|
|
12
|
+
}
|
|
9
13
|
export declare function useSchedulePageOverlays(apis: {
|
|
10
|
-
topbar: ScheduleTopbarApi;
|
|
11
14
|
dayNote: ScheduleDayNoteApi;
|
|
12
|
-
allShiftsRow: ScheduleAllShiftsRowApi;
|
|
13
15
|
gap: ScheduleGapPopoverApi;
|
|
14
16
|
timePicker: ScheduleTimePickerApi;
|
|
15
17
|
addPick: ScheduleAddPickApi;
|
|
16
18
|
shiftActions: ScheduleShiftActionsApi;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
}): {
|
|
20
|
+
topbar: ScheduleTopbarApi;
|
|
21
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ComputedRef, type Ref } from 'vue';
|
|
2
|
+
export interface SchedulePdfCanvas {
|
|
3
|
+
canvas: HTMLCanvasElement;
|
|
4
|
+
}
|
|
5
|
+
export interface SchedulePdfExportOptions {
|
|
6
|
+
subtitle: ComputedRef<string>;
|
|
7
|
+
title: ComputedRef<string>;
|
|
8
|
+
buildCanvas: () => SchedulePdfCanvas | null;
|
|
9
|
+
buildSheetImage: (onReady: () => void) => void;
|
|
10
|
+
jpgPreviewOpen: Ref<boolean>;
|
|
11
|
+
releaseSheetImage: () => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function useSchedulePdfExport(options: SchedulePdfExportOptions): {
|
|
14
|
+
previewOpen: Ref<boolean, boolean>;
|
|
15
|
+
barMeta: ComputedRef<string>;
|
|
16
|
+
openPreview: () => void;
|
|
17
|
+
closePreview: () => void;
|
|
18
|
+
printNow: () => void;
|
|
19
|
+
};
|
|
@@ -4,6 +4,7 @@ export interface PositionModalPerson {
|
|
|
4
4
|
initials: string;
|
|
5
5
|
/** Positions they already hold, main first — the row's second line. */
|
|
6
6
|
held: string[];
|
|
7
|
+
heldPositionIds: string[];
|
|
7
8
|
}
|
|
8
9
|
export interface PositionModalDone {
|
|
9
10
|
name: string;
|
|
@@ -16,7 +17,9 @@ export interface PositionModalDone {
|
|
|
16
17
|
* as their main position when they have none yet, otherwise as one more they are trained in.
|
|
17
18
|
* The profile write replaces `secondaryPositions` wholesale, so a person's existing ones are
|
|
18
19
|
* sent back with the new one rather than being dropped. */
|
|
19
|
-
export declare function useSchedulePositionModal(onCreated?: (positionName: string) => void
|
|
20
|
+
export declare function useSchedulePositionModal(onCreated?: (positionName: string) => void, options?: {
|
|
21
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
22
|
+
}): {
|
|
20
23
|
open: import("vue").Ref<boolean, boolean>;
|
|
21
24
|
name: import("vue").Ref<string, string>;
|
|
22
25
|
search: import("vue").Ref<string, string>;
|
|
@@ -2,7 +2,9 @@ export interface SchedulePositionRow {
|
|
|
2
2
|
id: string;
|
|
3
3
|
name: string;
|
|
4
4
|
}
|
|
5
|
-
export declare function useSchedulePositions(
|
|
5
|
+
export declare function useSchedulePositions(options?: {
|
|
6
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
7
|
+
}): {
|
|
6
8
|
positions: import("vue").Ref<{
|
|
7
9
|
id: string;
|
|
8
10
|
name: string;
|
|
@@ -16,7 +18,7 @@ export declare function useSchedulePositions(): {
|
|
|
16
18
|
pendingDeleteId: import("vue").Ref<string | null, string | null>;
|
|
17
19
|
saving: import("vue").Ref<boolean, boolean>;
|
|
18
20
|
error: import("vue").Ref<string | null, string | null>;
|
|
19
|
-
usageCountFor: (
|
|
21
|
+
usageCountFor: (positionId: string) => number;
|
|
20
22
|
startAdd: () => void;
|
|
21
23
|
cancelAdd: () => void;
|
|
22
24
|
confirmAdd: () => Promise<void>;
|
|
@@ -37,6 +37,7 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
|
|
|
37
37
|
start: string;
|
|
38
38
|
end: string;
|
|
39
39
|
role: string;
|
|
40
|
+
positionId?: string | undefined;
|
|
40
41
|
status: import("../types").ShiftStatus;
|
|
41
42
|
clock?: {
|
|
42
43
|
in: string | null;
|
|
@@ -58,6 +59,7 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
|
|
|
58
59
|
breakPayType: "PAID" | "UNPAID";
|
|
59
60
|
})[] | undefined;
|
|
60
61
|
assignmentId?: string | undefined;
|
|
62
|
+
updatedAt?: string | undefined;
|
|
61
63
|
splitGroupId?: string | undefined;
|
|
62
64
|
} | {
|
|
63
65
|
timeOff: "approved" | "pending";
|
|
@@ -84,6 +86,7 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
|
|
|
84
86
|
start: string;
|
|
85
87
|
end: string;
|
|
86
88
|
role: string;
|
|
89
|
+
positionId?: string | undefined;
|
|
87
90
|
status: import("../types").ShiftStatus;
|
|
88
91
|
clock?: {
|
|
89
92
|
in: string | null;
|
|
@@ -105,6 +108,7 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
|
|
|
105
108
|
breakPayType: "PAID" | "UNPAID";
|
|
106
109
|
})[] | undefined;
|
|
107
110
|
assignmentId?: string | undefined;
|
|
111
|
+
updatedAt?: string | undefined;
|
|
108
112
|
splitGroupId?: string | undefined;
|
|
109
113
|
}[] | null)[];
|
|
110
114
|
}[];
|
|
@@ -112,7 +116,11 @@ export declare function useSchedulePublish(board: ScheduleBoardApi): {
|
|
|
112
116
|
toggleAllVersions: () => void;
|
|
113
117
|
toggleVersionDiff: (v: number) => void;
|
|
114
118
|
diffFor: (version: ScheduleVersion) => VersionDiffRow[];
|
|
115
|
-
confirm: () => void
|
|
119
|
+
confirm: () => Promise<void>;
|
|
116
120
|
restoreVersion: (v: number) => void;
|
|
121
|
+
shareOpen: import("vue").Ref<boolean, boolean>;
|
|
122
|
+
shareVersion: import("vue").Ref<number | null, number | null>;
|
|
123
|
+
shareStaffAffected: import("vue").Ref<number, number>;
|
|
124
|
+
closeShare: () => void;
|
|
117
125
|
};
|
|
118
126
|
export type SchedulePublishApi = ReturnType<typeof useSchedulePublish>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WorkSlot } from '../types';
|
|
2
|
+
export interface SchedulePublishPersistenceOptions {
|
|
3
|
+
recoverPersistFailure: (error: unknown, fallback: string) => Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export declare function useSchedulePublishPersistence(options: SchedulePublishPersistenceOptions): {
|
|
6
|
+
persistPublish: (items: Array<{
|
|
7
|
+
empId: number;
|
|
8
|
+
dayIdx: number;
|
|
9
|
+
slot: WorkSlot;
|
|
10
|
+
}>) => Promise<boolean>;
|
|
11
|
+
};
|
|
@@ -11,6 +11,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
11
11
|
search: import("vue").Ref<string, string>;
|
|
12
12
|
filteredEmployees: import("vue").ComputedRef<{
|
|
13
13
|
id: number;
|
|
14
|
+
sourceId: string;
|
|
14
15
|
name: string;
|
|
15
16
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
16
17
|
role: string;
|
|
@@ -21,10 +22,12 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
21
22
|
contractHours?: number | undefined;
|
|
22
23
|
rate: number;
|
|
23
24
|
positions: string[];
|
|
25
|
+
archivedPositions?: string[] | undefined;
|
|
24
26
|
shifts: ({
|
|
25
27
|
start: string;
|
|
26
28
|
end: string;
|
|
27
29
|
role: string;
|
|
30
|
+
positionId?: string | undefined;
|
|
28
31
|
status: import("../types").ShiftStatus;
|
|
29
32
|
clock?: {
|
|
30
33
|
in: string | null;
|
|
@@ -46,6 +49,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
46
49
|
breakPayType: "PAID" | "UNPAID";
|
|
47
50
|
})[] | undefined;
|
|
48
51
|
assignmentId?: string | undefined;
|
|
52
|
+
updatedAt?: string | undefined;
|
|
49
53
|
splitGroupId?: string | undefined;
|
|
50
54
|
} | {
|
|
51
55
|
timeOff: "approved" | "pending";
|
|
@@ -72,6 +76,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
72
76
|
start: string;
|
|
73
77
|
end: string;
|
|
74
78
|
role: string;
|
|
79
|
+
positionId?: string | undefined;
|
|
75
80
|
status: import("../types").ShiftStatus;
|
|
76
81
|
clock?: {
|
|
77
82
|
in: string | null;
|
|
@@ -93,6 +98,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
93
98
|
breakPayType: "PAID" | "UNPAID";
|
|
94
99
|
})[] | undefined;
|
|
95
100
|
assignmentId?: string | undefined;
|
|
101
|
+
updatedAt?: string | undefined;
|
|
96
102
|
splitGroupId?: string | undefined;
|
|
97
103
|
}[] | null)[];
|
|
98
104
|
remarks: {
|
|
@@ -109,9 +115,16 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
109
115
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
110
116
|
payAmount?: number | undefined;
|
|
111
117
|
maxHours?: number | undefined;
|
|
112
|
-
maxOtHours?: number | undefined;
|
|
113
118
|
minHours?: number | undefined;
|
|
114
|
-
|
|
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;
|
|
115
128
|
preferences?: string[] | undefined;
|
|
116
129
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
117
130
|
availDays?: boolean[] | undefined;
|
|
@@ -124,6 +137,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
124
137
|
}[]>;
|
|
125
138
|
orderedEmployees: import("vue").ComputedRef<{
|
|
126
139
|
id: number;
|
|
140
|
+
sourceId: string;
|
|
127
141
|
name: string;
|
|
128
142
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
129
143
|
role: string;
|
|
@@ -134,10 +148,12 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
134
148
|
contractHours?: number | undefined;
|
|
135
149
|
rate: number;
|
|
136
150
|
positions: string[];
|
|
151
|
+
archivedPositions?: string[] | undefined;
|
|
137
152
|
shifts: ({
|
|
138
153
|
start: string;
|
|
139
154
|
end: string;
|
|
140
155
|
role: string;
|
|
156
|
+
positionId?: string | undefined;
|
|
141
157
|
status: import("../types").ShiftStatus;
|
|
142
158
|
clock?: {
|
|
143
159
|
in: string | null;
|
|
@@ -159,6 +175,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
159
175
|
breakPayType: "PAID" | "UNPAID";
|
|
160
176
|
})[] | undefined;
|
|
161
177
|
assignmentId?: string | undefined;
|
|
178
|
+
updatedAt?: string | undefined;
|
|
162
179
|
splitGroupId?: string | undefined;
|
|
163
180
|
} | {
|
|
164
181
|
timeOff: "approved" | "pending";
|
|
@@ -185,6 +202,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
185
202
|
start: string;
|
|
186
203
|
end: string;
|
|
187
204
|
role: string;
|
|
205
|
+
positionId?: string | undefined;
|
|
188
206
|
status: import("../types").ShiftStatus;
|
|
189
207
|
clock?: {
|
|
190
208
|
in: string | null;
|
|
@@ -206,6 +224,7 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
206
224
|
breakPayType: "PAID" | "UNPAID";
|
|
207
225
|
})[] | undefined;
|
|
208
226
|
assignmentId?: string | undefined;
|
|
227
|
+
updatedAt?: string | undefined;
|
|
209
228
|
splitGroupId?: string | undefined;
|
|
210
229
|
}[] | null)[];
|
|
211
230
|
remarks: {
|
|
@@ -222,9 +241,16 @@ export declare function useScheduleRoster(board: ScheduleBoardApi): {
|
|
|
222
241
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
223
242
|
payAmount?: number | undefined;
|
|
224
243
|
maxHours?: number | undefined;
|
|
225
|
-
maxOtHours?: number | undefined;
|
|
226
244
|
minHours?: number | undefined;
|
|
227
|
-
|
|
245
|
+
minHoursPerDay?: number | undefined;
|
|
246
|
+
workingHours?: {
|
|
247
|
+
minHoursPerDay: number | null;
|
|
248
|
+
maxHoursPerDay: number | null;
|
|
249
|
+
maxHoursPerWeek: number | null;
|
|
250
|
+
} | undefined;
|
|
251
|
+
overtime?: {
|
|
252
|
+
maxHoursPerMonth: number | null;
|
|
253
|
+
} | undefined;
|
|
228
254
|
preferences?: string[] | undefined;
|
|
229
255
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
230
256
|
availDays?: boolean[] | undefined;
|
|
@@ -1,25 +1,14 @@
|
|
|
1
|
-
export type ScheduleSettingsSection = 'budget' | 'payrates' | 'overtime' | 'notify';
|
|
2
|
-
/**
|
|
3
|
-
* ScheduleSettingsPage's own note. `ScheduleSettingsSection` stays the full union (rather
|
|
4
|
-
* than narrowing to a literal `'payrates' | 'overtime'`) so `draft`/`save()` below don't have
|
|
5
|
-
* to change shape the day a section comes back; only the nav and the page's own rendering
|
|
6
|
-
* are trimmed. */
|
|
1
|
+
export type ScheduleSettingsSection = 'budget' | 'payrates' | 'overtime' | 'workingHours' | 'notify';
|
|
2
|
+
/** Keep unsupported sections out of the navigation until their API fields exist. */
|
|
7
3
|
export declare const SETTINGS_SECTIONS: {
|
|
8
4
|
key: ScheduleSettingsSection;
|
|
9
5
|
label: string;
|
|
10
6
|
}[];
|
|
11
|
-
/**
|
|
12
|
-
* (Labour budget / Overtime / Notifications). The mockup's sibling Shift & coverage / Seasonal
|
|
13
|
-
* / Positions pages are a separate, out-of-scope epic — not built here. One draft object, like
|
|
14
|
-
* the mockup's settingsDraft/spSnapshot(). */
|
|
7
|
+
/** Settings currently supported by the schedule API: pay rates and monthly OT hours. */
|
|
15
8
|
export declare function useScheduleSettings(): {
|
|
16
9
|
isOpen: import("vue").Ref<boolean, boolean>;
|
|
17
10
|
activeSection: import("vue").Ref<ScheduleSettingsSection, ScheduleSettingsSection>;
|
|
18
11
|
draft: {
|
|
19
|
-
salesForecast: number;
|
|
20
|
-
labourTarget: number;
|
|
21
|
-
budgetFromSales: boolean;
|
|
22
|
-
budget: number;
|
|
23
12
|
payRate: {
|
|
24
13
|
NORMAL: {
|
|
25
14
|
overtime: number;
|
|
@@ -33,17 +22,11 @@ export declare function useScheduleSettings(): {
|
|
|
33
22
|
overtime: number;
|
|
34
23
|
};
|
|
35
24
|
};
|
|
36
|
-
otCapHours: number;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
waDisplayName: string;
|
|
42
|
-
defaults: {
|
|
43
|
-
wa: boolean;
|
|
44
|
-
push: boolean;
|
|
45
|
-
email: boolean;
|
|
46
|
-
};
|
|
25
|
+
otCapHours: number | null;
|
|
26
|
+
workingHours: {
|
|
27
|
+
minHoursPerDay: number | null;
|
|
28
|
+
maxHoursPerDay: number | null;
|
|
29
|
+
maxHoursPerWeek: number | null;
|
|
47
30
|
};
|
|
48
31
|
};
|
|
49
32
|
dirty: import("vue").ComputedRef<boolean>;
|
|
@@ -36,7 +36,9 @@ export interface ScheduleSwapState {
|
|
|
36
36
|
* and trading two people's shifts on the same day. Both skip the mockup's OT/pay-band cost
|
|
37
37
|
* preview and hard/soft override tiers — this board has no per-person pay bands to price
|
|
38
38
|
* against, so a candidate is either qualified-and-free or it isn't offered at all. */
|
|
39
|
-
export declare function useScheduleShiftActions(board: ScheduleBoardApi
|
|
39
|
+
export declare function useScheduleShiftActions(board: ScheduleBoardApi, options?: {
|
|
40
|
+
onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
41
|
+
}): {
|
|
40
42
|
menu: {
|
|
41
43
|
open: boolean;
|
|
42
44
|
empId: number | null;
|
|
@@ -56,6 +58,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi): {
|
|
|
56
58
|
changeSlot: import("vue").ComputedRef<import("../types").WorkSlot[]>;
|
|
57
59
|
changeCandidates: import("vue").ComputedRef<{
|
|
58
60
|
id: number;
|
|
61
|
+
sourceId: string;
|
|
59
62
|
name: string;
|
|
60
63
|
employmentType: "FULLTIME" | "PARTTIME";
|
|
61
64
|
role: string;
|
|
@@ -66,10 +69,12 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi): {
|
|
|
66
69
|
contractHours?: number | undefined;
|
|
67
70
|
rate: number;
|
|
68
71
|
positions: string[];
|
|
72
|
+
archivedPositions?: string[] | undefined;
|
|
69
73
|
shifts: ({
|
|
70
74
|
start: string;
|
|
71
75
|
end: string;
|
|
72
76
|
role: string;
|
|
77
|
+
positionId?: string | undefined;
|
|
73
78
|
status: import("../types").ShiftStatus;
|
|
74
79
|
clock?: {
|
|
75
80
|
in: string | null;
|
|
@@ -91,6 +96,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi): {
|
|
|
91
96
|
breakPayType: "PAID" | "UNPAID";
|
|
92
97
|
})[] | undefined;
|
|
93
98
|
assignmentId?: string | undefined;
|
|
99
|
+
updatedAt?: string | undefined;
|
|
94
100
|
splitGroupId?: string | undefined;
|
|
95
101
|
} | {
|
|
96
102
|
timeOff: "approved" | "pending";
|
|
@@ -117,6 +123,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi): {
|
|
|
117
123
|
start: string;
|
|
118
124
|
end: string;
|
|
119
125
|
role: string;
|
|
126
|
+
positionId?: string | undefined;
|
|
120
127
|
status: import("../types").ShiftStatus;
|
|
121
128
|
clock?: {
|
|
122
129
|
in: string | null;
|
|
@@ -138,6 +145,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi): {
|
|
|
138
145
|
breakPayType: "PAID" | "UNPAID";
|
|
139
146
|
})[] | undefined;
|
|
140
147
|
assignmentId?: string | undefined;
|
|
148
|
+
updatedAt?: string | undefined;
|
|
141
149
|
splitGroupId?: string | undefined;
|
|
142
150
|
}[] | null)[];
|
|
143
151
|
remarks: {
|
|
@@ -154,9 +162,16 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi): {
|
|
|
154
162
|
payBasis?: "hourly" | "monthly" | undefined;
|
|
155
163
|
payAmount?: number | undefined;
|
|
156
164
|
maxHours?: number | undefined;
|
|
157
|
-
maxOtHours?: number | undefined;
|
|
158
165
|
minHours?: number | undefined;
|
|
159
|
-
|
|
166
|
+
minHoursPerDay?: number | undefined;
|
|
167
|
+
workingHours?: {
|
|
168
|
+
minHoursPerDay: number | null;
|
|
169
|
+
maxHoursPerDay: number | null;
|
|
170
|
+
maxHoursPerWeek: number | null;
|
|
171
|
+
} | undefined;
|
|
172
|
+
overtime?: {
|
|
173
|
+
maxHoursPerMonth: number | null;
|
|
174
|
+
} | undefined;
|
|
160
175
|
preferences?: string[] | undefined;
|
|
161
176
|
seniority?: "senior" | "junior" | "" | undefined;
|
|
162
177
|
availDays?: boolean[] | undefined;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { WorkSlot } from '../types';
|
|
2
|
+
import { type ScheduleBreakChoice, type ScheduleShiftSegment } from './schedule-shift-time';
|
|
3
|
+
export interface ScheduleHeadcountRole {
|
|
4
|
+
position: string;
|
|
5
|
+
count: number;
|
|
6
|
+
sen: '' | 'senior' | 'junior';
|
|
7
|
+
}
|
|
8
|
+
export declare function useScheduleShiftDraft(): {
|
|
9
|
+
open: import("vue").Ref<boolean, boolean>;
|
|
10
|
+
dayIdx: import("vue").Ref<number | null, number | null>;
|
|
11
|
+
empId: import("vue").Ref<number | null, number | null>;
|
|
12
|
+
originalEmpId: import("vue").Ref<number | null, number | null>;
|
|
13
|
+
editingOpenShiftId: import("vue").Ref<number | null, number | null>;
|
|
14
|
+
isNew: import("vue").Ref<boolean, boolean>;
|
|
15
|
+
originalSlotIndex: import("vue").Ref<number, number>;
|
|
16
|
+
originalSlotCount: import("vue").Ref<number, number>;
|
|
17
|
+
originalSplitGroupId: import("vue").Ref<string | undefined, string | undefined>;
|
|
18
|
+
originalDayHadContent: import("vue").Ref<boolean, boolean>;
|
|
19
|
+
name: import("vue").Ref<string, string>;
|
|
20
|
+
segments: import("vue").Ref<{
|
|
21
|
+
start: string;
|
|
22
|
+
end: string;
|
|
23
|
+
}[], ScheduleShiftSegment[] | {
|
|
24
|
+
start: string;
|
|
25
|
+
end: string;
|
|
26
|
+
}[]>;
|
|
27
|
+
role: import("vue").Ref<string, string>;
|
|
28
|
+
positionId: import("vue").Ref<string | undefined, string | undefined>;
|
|
29
|
+
required: import("vue").Ref<number, number>;
|
|
30
|
+
sen: import("vue").Ref<"" | "senior" | "junior", "" | "senior" | "junior">;
|
|
31
|
+
empType: import("vue").Ref<"" | "full" | "part", "" | "full" | "part">;
|
|
32
|
+
roles: import("vue").Ref<{
|
|
33
|
+
position: string;
|
|
34
|
+
count: number;
|
|
35
|
+
sen: "" | "senior" | "junior";
|
|
36
|
+
}[], ScheduleHeadcountRole[] | {
|
|
37
|
+
position: string;
|
|
38
|
+
count: number;
|
|
39
|
+
sen: "" | "senior" | "junior";
|
|
40
|
+
}[]>;
|
|
41
|
+
breakChoice: import("vue").Ref<ScheduleBreakChoice, ScheduleBreakChoice>;
|
|
42
|
+
breakCustomMins: import("vue").Ref<number, number>;
|
|
43
|
+
breakCustomUnit: import("vue").Ref<"mins" | "hrs", "mins" | "hrs">;
|
|
44
|
+
breakMode: import("vue").Ref<"time" | "duration", "time" | "duration">;
|
|
45
|
+
breakStartTime: import("vue").Ref<string, string>;
|
|
46
|
+
breakEndTime: import("vue").Ref<string, string>;
|
|
47
|
+
repeatDays: import("vue").Ref<boolean[], boolean[]>;
|
|
48
|
+
gapNote: import("vue").Ref<string | null, string | null>;
|
|
49
|
+
conflictNote: import("vue").Ref<string | null, string | null>;
|
|
50
|
+
grantSkill: import("vue").Ref<boolean, boolean>;
|
|
51
|
+
unassignMode: import("vue").Ref<boolean, boolean>;
|
|
52
|
+
resetCommon: (day: number) => void;
|
|
53
|
+
applyNormalizedBreak: (minutes: number | undefined) => void;
|
|
54
|
+
applyPersistedBreaks: (breaks: WorkSlot["breaks"], fallbackMins: number | undefined) => void;
|
|
55
|
+
resolvedBreakMins: () => number | undefined;
|
|
56
|
+
resolvedBreaks: () => WorkSlot["breaks"];
|
|
57
|
+
buildDraftSlot: () => WorkSlot | WorkSlot[];
|
|
58
|
+
close: () => void;
|
|
59
|
+
removeSegment: (index: number) => void;
|
|
60
|
+
addRole: () => void;
|
|
61
|
+
removeRole: (index: number) => void;
|
|
62
|
+
segmentHoursOf: (segment: ScheduleShiftSegment) => number;
|
|
63
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ComputedRef } from 'vue';
|
|
2
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import { useScheduleShiftDraft } from './useScheduleShiftDraft';
|
|
4
|
+
type ShiftDraft = ReturnType<typeof useScheduleShiftDraft>;
|
|
5
|
+
interface UseScheduleShiftPersistenceOptions {
|
|
6
|
+
draft: ShiftDraft;
|
|
7
|
+
saveDisabled: ComputedRef<boolean>;
|
|
8
|
+
showGrantSkill: ComputedRef<boolean>;
|
|
9
|
+
onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
10
|
+
}
|
|
11
|
+
/** Mutations for the shift popover. Draft editing stays separate so the UI can preview and
|
|
12
|
+
* validate without owning board writes. */
|
|
13
|
+
export declare function useScheduleShiftPersistence(board: ScheduleBoardApi, options: UseScheduleShiftPersistenceOptions): {
|
|
14
|
+
save: () => void;
|
|
15
|
+
remove: () => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|