@feedmepos/mf-hrm-portal 2.3.0-dev.16 → 2.3.0-dev.18
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-NeNAiyOr.js → ApprovalCodeList-B10IvyLu.js} +7 -7
- package/dist/{AuditLogList-Pv9kFjBr.js → AuditLogList-BJ8GXIzu.js} +5 -5
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DWfp8X80.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DfXqKPnU.js} +2 -2
- package/dist/{EmployeeList-Bs9lymzV.js → EmployeeList-CNj262HG.js} +8 -8
- package/dist/{FormItem.vue_vue_type_script_setup_true_lang-Cb22fFWE.js → FormItem.vue_vue_type_script_setup_true_lang-BvSLGM1C.js} +1 -1
- package/dist/{GrantUserList-dTWAmoUv.js → GrantUserList-R259wy0R.js} +8 -8
- package/dist/{Main-Cp40vaRW.js → Main-DLgW7BX_.js} +5 -5
- package/dist/{Main-C_RrWM3c.js → Main-DZ5T4TP1.js} +11 -11
- package/dist/{Main-D_iKA3Se.js → Main-yUEWFlC3.js} +8 -8
- package/dist/{PermissionSetList-D9uTEllI.js → PermissionSetList-Xrzkx52n.js} +7 -7
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-vbO5PdcM.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BhR3MM-s.js} +885 -885
- package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-BVz6q3HE.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js} +1 -1
- package/dist/{RoleList-DyoCd2jX.js → RoleList-RRDkrVmu.js} +9 -9
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BhkmMQxt.js +532 -0
- package/dist/{ScheduleGeneralPage-DyIBUXY1.js → ScheduleGeneralPage-CfcIh0Fy.js} +2 -2
- package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-CJMPrPHl.js → ScheduleModal.vue_vue_type_script_setup_true_lang-WYuVJxed.js} +655 -639
- package/dist/SchedulePage-CHu1VI-U.js +19201 -0
- package/dist/{SchedulePositionPage-DE5XxDl2.js → SchedulePositionPage-Dx2fZ1QI.js} +27 -27
- package/dist/{SelectFilter-D27X9BNI.js → SelectFilter-DoeKbbjT.js} +1 -1
- package/dist/{TeamMemberList-YudsADAP.js → TeamMemberList-CPpBsvi7.js} +11 -11
- package/dist/{TimesheetList-CQXDulxg.js → TimesheetList-CWl2faUZ.js} +8 -8
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-CWHjolT4.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dc0_djRp.js} +3 -3
- package/dist/{app-BMVAE__n.js → app-COWpQb6i.js} +8 -8
- package/dist/app.js +1 -1
- package/dist/{approval-code-DHsUgc4K.js → approval-code-BXUiojPH.js} +1 -1
- package/dist/{dayjs.min-6iMvK3bi.js → dayjs.min-Dv2S110T.js} +1 -1
- package/dist/{employee-kAmYgyIB.js → employee-Drs22uVf.js} +4 -4
- package/dist/{grant-user-qzKHFTro.js → grant-user-CBJ3gEgW.js} +1 -1
- package/dist/{iteration-kNseYv0g.js → iteration-B23jisFZ.js} +1 -1
- package/dist/{lodash-CoGtJ4ls.js → lodash-CQM_jgZN.js} +1 -1
- package/dist/{restaurant-BbYRA_IT.js → restaurant-D2mfKHaH.js} +44 -45
- package/dist/{role-BvQeAAsI.js → role-k4mdt-op.js} +2 -2
- package/dist/{rule-DkjcuvBR.js → rule-xOAXApqp.js} +3 -3
- package/dist/src/api/schedule/index.d.ts +6 -1
- package/dist/src/types/schedule.d.ts +1 -1
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -2
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -0
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -4
- package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -1
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +6 -2
- package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +14 -0
- package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +12 -2
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +6 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +6 -1
- package/dist/src/views/scheduling/schedule-state.d.ts +232 -232
- package/dist/src/views/scheduling/schedule-store.d.ts +4 -0
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-BoLkvkE2.js → useAppStore-DZCdxlCd.js} +1 -1
- package/dist/{useLoading-Ch1AUYT1.js → useLoading-Nygx2zn8.js} +1 -1
- package/dist/{useReportPermissions-CbnelOLy.js → useReportPermissions-BB4JiYDf.js} +3 -3
- package/package.json +3 -3
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-D0Mg9P_m.js +0 -501
- package/dist/SchedulePage-BkvOpOVt.js +0 -18757
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { s as W, c as q, e as y } from "./iteration-
|
|
2
|
-
import { h as O, c as V, d as _, v as F, n as h, O as ee, D as M } from "./app-
|
|
1
|
+
import { s as W, c as q, e as y } from "./iteration-B23jisFZ.js";
|
|
2
|
+
import { h as O, c as V, d as _, v as F, n as h, O as ee, D as M } from "./app-COWpQb6i.js";
|
|
3
3
|
import { s as se } from "./utils-BZkjJbju.js";
|
|
4
|
-
import { g, b as v, q as x, u as te } from "./restaurant-
|
|
4
|
+
import { g, b as v, q as x, u as te } from "./restaurant-D2mfKHaH.js";
|
|
5
5
|
import { defineStore as z, storeToRefs as K } from "pinia";
|
|
6
6
|
import { ref as S, computed as T } from "vue";
|
|
7
7
|
import { useCoreStore as X } from "@feedmepos/mf-common";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleBulkReplaceDemandReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoSchedulePosition, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSettings, FdtoScheduleScheduleDay, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleValidatePosAccessReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq } from '@/types/schedule';
|
|
1
|
+
import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleBulkReplaceDemandReq, FdtoScheduleClearScheduleReq, FdtoScheduleCopyScheduleReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoSchedulePosition, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSettings, FdtoScheduleScheduleDay, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleCompleteOnboardingReq, FdtoScheduleValidatePosAccessReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq } from '@/types/schedule';
|
|
2
2
|
declare const ScheduleAPI: {
|
|
3
|
+
completeOnboarding(restaurantId: string, req: FdtoScheduleCompleteOnboardingReq): Promise<any>;
|
|
3
4
|
listEmployeeProfiles(employeeIds?: string[]): Promise<FdtoScheduleEmployee[]>;
|
|
4
5
|
listEmployeeConfigs(restaurantId: string): Promise<FdtoScheduleEmployeeConfig[]>;
|
|
5
6
|
saveEmployeeConfigs(restaurantId: string, req: FdtoScheduleSaveEmployeeConfigsReq): Promise<FdtoScheduleEmployeeConfig[]>;
|
|
@@ -44,6 +45,10 @@ declare const ScheduleAPI: {
|
|
|
44
45
|
updateAssignment(restaurantId: string, id: string, req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment | null>;
|
|
45
46
|
/** Atomically applies assignment updates, creates, and deletes used by moves and swaps. */
|
|
46
47
|
bulkSaveAssignments(restaurantId: string, req: FdtoScheduleBulkSaveAssignmentsReq): Promise<FdtoScheduleBulkSaveAssignmentsResult>;
|
|
48
|
+
/** Replaces demand and/or assignments in one backend transaction. */
|
|
49
|
+
copySchedule(restaurantId: string, req: FdtoScheduleCopyScheduleReq): Promise<any>;
|
|
50
|
+
/** Clears demand and/or assignments in one backend transaction. */
|
|
51
|
+
clearSchedule(restaurantId: string, req: FdtoScheduleClearScheduleReq): Promise<any>;
|
|
47
52
|
/** Deletes a batch of assignments in one request — e.g. a shift split into several segments
|
|
48
53
|
* getting replaced wholesale. Deleting one assignment is just this with a single-id
|
|
49
54
|
* array. */
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* only view-model commands that intentionally do not cross HTTP (for example
|
|
6
6
|
* replacing a period made up of several persisted demand rows).
|
|
7
7
|
*/
|
|
8
|
-
export type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleRejection, FdtoScheduleAutoScheduleResult, FdtoScheduleAutoScheduleTiming, FdtoScheduleAutoScheduleUnfilledNeed, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleBulkReplaceDemandReq, FdtoScheduleBreak, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDayOperatingHours, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoScheduleOptionalDateRange, FdtoSchedulePayRate, FdtoSchedulePosition, FdtoSchedulePositionRef, FdtoSchedulePositionSelectorReq, FdtoScheduleRestaurantProfile, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleScheduleDay, FdtoScheduleSettings, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleValidatePosAccessReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleTimeOffDayPart, FdtoScheduleTimeOffQuery, FdtoScheduleTimeOffStatus, FdtoScheduleTimeOffType, FdtoScheduleUpdateTimeOffStatusReq, } from '@feedmepos/hrm-schedule-contract';
|
|
8
|
+
export type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoSchedulePlanner, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleRejection, FdtoScheduleAutoScheduleResult, FdtoScheduleAutoScheduleTiming, FdtoScheduleAutoScheduleUnfilledNeed, FdtoScheduleBoard, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleBulkSaveAssignmentsReq, FdtoScheduleBulkSaveAssignmentsResult, FdtoScheduleBulkReplaceDemandReq, FdtoScheduleClearScheduleReq, FdtoScheduleCopyScheduleReq, FdtoScheduleCompleteOnboardingReq, FdtoScheduleBreak, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleEmployeeConfig, FdtoScheduleDayOperatingHours, FdtoScheduleDemand, FdtoScheduleEmployee, FdtoScheduleOptionalDateRange, FdtoSchedulePayRate, FdtoSchedulePosition, FdtoSchedulePositionRef, FdtoSchedulePositionSelectorReq, FdtoScheduleRestaurantProfile, FdtoScheduleSaveAssignmentReq, FdtoScheduleSaveDemandReq, FdtoScheduleReplaceDemandReq, FdtoScheduleSaveEmployeeConfigsReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleScheduleDay, FdtoScheduleSettings, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleValidatePosAccessReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleTimeOffDayPart, FdtoScheduleTimeOffQuery, FdtoScheduleTimeOffStatus, FdtoScheduleTimeOffType, FdtoScheduleUpdateTimeOffStatusReq, } from '@feedmepos/hrm-schedule-contract';
|
|
9
9
|
/** UI-level date replacement command. The store expands these periods into flat
|
|
10
10
|
* ShiftDemand rows before calling the shared HTTP contract. */
|
|
11
11
|
export interface ScheduleReplaceDemandReq {
|
|
@@ -21,9 +21,10 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
21
21
|
segFocus: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
|
|
22
22
|
openDemandSheet: (dayIdx: number) => any;
|
|
23
23
|
openNewShift: (dayIdx: number, position: string) => any;
|
|
24
|
+
openPositionDrop: (dayIdx: number, position: string) => any;
|
|
24
25
|
addPosition: () => any;
|
|
25
26
|
scheduleByPerson: () => any;
|
|
26
|
-
openSwap: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number) => any;
|
|
27
|
+
openSwap: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number, targetSlotIndex: number) => any;
|
|
27
28
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
28
29
|
onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
|
|
29
30
|
onSegEnter?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
@@ -32,8 +33,9 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
32
33
|
onSegFocus?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
33
34
|
onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
|
|
34
35
|
onOpenNewShift?: ((dayIdx: number, position: string) => any) | undefined;
|
|
36
|
+
onOpenPositionDrop?: ((dayIdx: number, position: string) => any) | undefined;
|
|
35
37
|
onAddPosition?: (() => any) | undefined;
|
|
36
38
|
onScheduleByPerson?: (() => any) | undefined;
|
|
37
|
-
onOpenSwap?: ((fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number) => any) | undefined;
|
|
39
|
+
onOpenSwap?: ((fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, slotIndex: number, targetSlotIndex: number) => any) | undefined;
|
|
38
40
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
39
41
|
export default _default;
|
|
@@ -11,6 +11,7 @@ type __VLS_Props = {
|
|
|
11
11
|
demandRow: ScheduleDemandRowApi;
|
|
12
12
|
onEditShift: (...args: any[]) => void;
|
|
13
13
|
onOpenNewShift: (...args: any[]) => void;
|
|
14
|
+
onOpenPositionDrop: (...args: any[]) => void;
|
|
14
15
|
onOpenDemandSheet: (...args: any[]) => void;
|
|
15
16
|
onSegEnter: (...args: any[]) => void;
|
|
16
17
|
onSegLeave: (...args: any[]) => void;
|
|
@@ -5,6 +5,7 @@ import type { useScheduleStatsRow } from '../composables/useScheduleStatsRow';
|
|
|
5
5
|
import type { ScheduleDayTimelineApi } from '../composables/useScheduleDayTimeline';
|
|
6
6
|
import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
|
|
7
7
|
import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
|
|
8
|
+
import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
|
|
8
9
|
type ScheduleLegendApi = ReturnType<typeof useScheduleLegend>;
|
|
9
10
|
type ScheduleStatsRowApi = ReturnType<typeof useScheduleStatsRow>;
|
|
10
11
|
type __VLS_Props = {
|
|
@@ -15,6 +16,10 @@ type __VLS_Props = {
|
|
|
15
16
|
dayTimeline: ScheduleDayTimelineApi;
|
|
16
17
|
roster: ScheduleRosterApi;
|
|
17
18
|
areaDragDrop: ScheduleAreaDragDropApi;
|
|
19
|
+
shiftDragDrop: ScheduleDragDropApi;
|
|
20
|
+
onDropEmployee: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
|
|
21
|
+
onDropPosition: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
|
|
22
|
+
onDropPositionCell: (position: string, event: DragEvent) => void;
|
|
18
23
|
mode: 'employee' | 'area';
|
|
19
24
|
onScroll: (delta: number) => void;
|
|
20
25
|
onComingSoon: () => void;
|
|
@@ -11,6 +11,7 @@ type __VLS_Props = {
|
|
|
11
11
|
* consequence of pressing the button. Omitted entirely when there's nothing to point to. */
|
|
12
12
|
note?: string;
|
|
13
13
|
confirmLabel?: string;
|
|
14
|
+
loading?: boolean;
|
|
14
15
|
cancelLabel?: string;
|
|
15
16
|
tone?: 'primary' | 'danger';
|
|
16
17
|
/** The "!" mark is for dialogs guarding something irreversible — a reversible action
|
|
@@ -25,6 +26,7 @@ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
25
26
|
onConfirm?: (() => any) | undefined;
|
|
26
27
|
}>, {
|
|
27
28
|
icon: boolean;
|
|
29
|
+
loading: boolean;
|
|
28
30
|
confirmLabel: string;
|
|
29
31
|
messageClass: string;
|
|
30
32
|
cancelLabel: string;
|
|
@@ -2,11 +2,16 @@ import type { ScheduleDayTimelineApi } from '../composables/useScheduleDayTimeli
|
|
|
2
2
|
import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
|
|
3
3
|
import type { ScheduleViewMode } from '../composables/useScheduleFilterBar';
|
|
4
4
|
import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
|
|
5
|
+
import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
|
|
5
6
|
type __VLS_Props = {
|
|
6
7
|
timeline: ScheduleDayTimelineApi;
|
|
7
8
|
roster: ScheduleRosterApi;
|
|
8
9
|
mode: ScheduleViewMode;
|
|
9
10
|
dragDrop?: ScheduleAreaDragDropApi;
|
|
11
|
+
shiftDragDrop?: ScheduleDragDropApi;
|
|
12
|
+
onDropEmployee?: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
|
|
13
|
+
onDropPosition?: (employeeId: number, event: DragEvent, slotIndex?: number) => void;
|
|
14
|
+
onDropPositionCell?: (position: string, event: DragEvent) => void;
|
|
10
15
|
};
|
|
11
16
|
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>;
|
|
12
17
|
export default _default;
|
|
@@ -8,8 +8,8 @@ export type RemyDemandScope = {
|
|
|
8
8
|
} | {
|
|
9
9
|
mode: 'weekdays';
|
|
10
10
|
};
|
|
11
|
-
/** The text prefilled into the host Remy panel
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* an id itself (hrm_find_outlet), so no outlet id appears in the text. */
|
|
11
|
+
/** The text prefilled into the host Remy panel: one line naming the outlet and day, which the
|
|
12
|
+
* user continues with their demand. The "attach a roster image or describe it in words" guidance
|
|
13
|
+
* lives on the sheet's Ask Remy tooltip, not here. Names the outlet the way a manager knows it;
|
|
14
|
+
* Remy resolves it to an id itself (hrm_find_outlet), so no outlet id appears in the text. */
|
|
15
15
|
export declare function remyDemandPrompt(outletName: string, scope: RemyDemandScope): string;
|
|
@@ -12,6 +12,9 @@ export declare function timeRangeBreakOf(sl: WorkSlot): {
|
|
|
12
12
|
startTime: string;
|
|
13
13
|
endTime: string;
|
|
14
14
|
} | null;
|
|
15
|
+
/** The two visible paid periods around a custom clock-window break. Shared by Weekly cards and
|
|
16
|
+
* Daily timeline bars so the split wording cannot drift between views. */
|
|
17
|
+
export declare function splitTimeLabels(sl: WorkSlot): [string, string] | null;
|
|
15
18
|
/** Same face as `t12`, but never drops the minutes — two ranges stacked on a split card need
|
|
16
19
|
* to line up at a glance, and "10am" next to "10:30am" reads as two different units. */
|
|
17
20
|
export declare function t12Full(hhmm: string): string;
|
|
@@ -2,6 +2,7 @@ import { useAppStore } from '@feedmepos/mf-remy-panel';
|
|
|
2
2
|
export interface RemyActivateOptions {
|
|
3
3
|
prompt?: string;
|
|
4
4
|
forceNewConversation?: boolean;
|
|
5
|
+
fullscreen?: boolean;
|
|
5
6
|
}
|
|
6
7
|
/** HRM never bundles or mounts a Remy panel of its own — `@feedmepos/mf-remy-panel` is externalised
|
|
7
8
|
* by the shared vite preset, so inside the host portal this import resolves to the ONE panel
|
|
@@ -76,6 +76,7 @@ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?
|
|
|
76
76
|
availabilityError: import("vue").ComputedRef<boolean>;
|
|
77
77
|
saving: import("vue").Ref<boolean, boolean>;
|
|
78
78
|
saveError: import("vue").Ref<string | null, string | null>;
|
|
79
|
+
deferScheduleWrites: import("vue").Ref<boolean, boolean>;
|
|
79
80
|
candidatesLoading: import("vue").Ref<boolean, boolean>;
|
|
80
81
|
candidatesError: import("vue").Ref<string | null, string | null>;
|
|
81
82
|
openWizard: (section: string) => void;
|
|
@@ -2,7 +2,6 @@ import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
|
2
2
|
/** Dragging a person from the staff rail onto a position/day cell opens a normal assigned shift. */
|
|
3
3
|
export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, handlers: {
|
|
4
4
|
onCreateShift: (empId: number, dayIdx: number, position: string) => void;
|
|
5
|
-
onNotQualified: (empName: string, position: string) => void;
|
|
6
5
|
}): {
|
|
7
6
|
draggingEmpId: import("vue").Ref<number | null, number | null>;
|
|
8
7
|
startRailDrag: (empId: number) => void;
|
|
@@ -239,6 +239,7 @@ export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand:
|
|
|
239
239
|
back: () => void;
|
|
240
240
|
generate: () => Promise<void>;
|
|
241
241
|
reviewMode: import("vue").ComputedRef<boolean>;
|
|
242
|
+
hasPendingChanges: import("vue").ComputedRef<boolean>;
|
|
242
243
|
proposals: import("vue").ComputedRef<{
|
|
243
244
|
id: number;
|
|
244
245
|
empId: number;
|
|
@@ -593,12 +593,16 @@ export declare function useScheduleBoard(handlers?: {
|
|
|
593
593
|
clearEmployeeShifts: (empId: number) => {
|
|
594
594
|
shifts: number;
|
|
595
595
|
};
|
|
596
|
-
moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string) => boolean;
|
|
596
|
+
moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string, allowLocked?: boolean) => boolean;
|
|
597
597
|
swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
|
|
598
|
-
|
|
598
|
+
swapPositions: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
|
|
599
|
+
clearShiftsInRange: (options?: {
|
|
600
|
+
persist?: boolean;
|
|
601
|
+
}) => {
|
|
599
602
|
shifts: number;
|
|
600
603
|
open: number;
|
|
601
604
|
leave: number;
|
|
605
|
+
assignmentIds: string[];
|
|
602
606
|
};
|
|
603
607
|
requiredFor: (dayIdx: number, position: string) => number;
|
|
604
608
|
scheduledFor: (dayIdx: number, position: string) => number;
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
-
export interface ScheduleCopySkipReport {
|
|
3
|
-
leave: number;
|
|
4
|
-
already: number;
|
|
5
|
-
hours: number;
|
|
6
|
-
full: number;
|
|
7
|
-
closed: number;
|
|
8
|
-
}
|
|
9
2
|
/** The mockup's Copy schedule feature (copyLastWeek/copyThisWeekForward), ported against this
|
|
10
|
-
* board's per-week-offset bucket cache instead of the mockup's absolute 91-day horizon.
|
|
11
|
-
* shifts (copyUnitsOf in the mockup) aren't ported — WorkSlot has no splitId concept in this
|
|
12
|
-
* data model, so each slot is copied as its own unit. */
|
|
3
|
+
* board's per-week-offset bucket cache instead of the mockup's absolute 91-day horizon. */
|
|
13
4
|
export declare function useScheduleCopyWeek(board: ScheduleBoardApi, handlers?: {
|
|
14
5
|
onDemandChanged?: () => void;
|
|
6
|
+
onConfirmOverwrite?: (message: string, onConfirm: () => void) => void;
|
|
15
7
|
}): {
|
|
16
8
|
copyLastWeek: (mode: "staffed" | "open") => Promise<void>;
|
|
17
9
|
copyThisWeekForward: (mode: "staffed" | "open") => Promise<void>;
|
|
10
|
+
isCopying: import("vue").Ref<boolean, boolean>;
|
|
18
11
|
};
|
|
19
12
|
export type ScheduleCopyWeekApi = ReturnType<typeof useScheduleCopyWeek>;
|
|
@@ -2,14 +2,19 @@ import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
|
2
2
|
import type { ScheduleRosterApi } from './useScheduleRoster';
|
|
3
3
|
import type { ScheduleAreaBoardApi } from './useScheduleAreaBoard';
|
|
4
4
|
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
5
|
+
import { type ScheduleEmployeeLoad } from './useScheduleEmployeeIdentity';
|
|
5
6
|
declare function minToHHMM(m: number): string;
|
|
6
7
|
export interface ScheduleTimelineBar {
|
|
7
8
|
key: string;
|
|
9
|
+
start: number;
|
|
10
|
+
end: number;
|
|
8
11
|
left: number;
|
|
9
12
|
width: number;
|
|
10
13
|
cls: string;
|
|
11
14
|
label: string;
|
|
15
|
+
labels?: string[];
|
|
12
16
|
sub?: string;
|
|
17
|
+
conflict?: boolean;
|
|
13
18
|
title: string;
|
|
14
19
|
brk?: {
|
|
15
20
|
left: number;
|
|
@@ -17,6 +22,8 @@ export interface ScheduleTimelineBar {
|
|
|
17
22
|
};
|
|
18
23
|
laneTop?: number;
|
|
19
24
|
laneHeight?: number;
|
|
25
|
+
employeeId?: number;
|
|
26
|
+
slotIndex?: number;
|
|
20
27
|
onClick?: () => void;
|
|
21
28
|
}
|
|
22
29
|
export interface ScheduleTimelineRow {
|
|
@@ -27,6 +34,7 @@ export interface ScheduleTimelineRow {
|
|
|
27
34
|
avatarInitials?: string;
|
|
28
35
|
avatarColor?: string;
|
|
29
36
|
employeeId?: number;
|
|
37
|
+
employeeLoad?: ScheduleEmployeeLoad;
|
|
30
38
|
roleLabel?: string;
|
|
31
39
|
hoursLabel?: string;
|
|
32
40
|
hoursPct?: number;
|
|
@@ -34,6 +42,11 @@ export interface ScheduleTimelineRow {
|
|
|
34
42
|
name: string;
|
|
35
43
|
sub: string;
|
|
36
44
|
bars: ScheduleTimelineBar[];
|
|
45
|
+
pastDay?: boolean;
|
|
46
|
+
lockedDay?: boolean;
|
|
47
|
+
closedDay?: boolean;
|
|
48
|
+
availabilityDay?: boolean;
|
|
49
|
+
availabilityLabel?: string;
|
|
37
50
|
minHeight?: number;
|
|
38
51
|
emptyText?: string;
|
|
39
52
|
onTrackClick?: (anchor: HTMLElement) => void;
|
|
@@ -49,6 +62,7 @@ export interface ScheduleHourCell {
|
|
|
49
62
|
}
|
|
50
63
|
export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster: ScheduleRosterApi, areaBoard: ScheduleAreaBoardApi, demand: ScheduleDemandApi, handlers: {
|
|
51
64
|
onAddShift: (empId: number, dayIdx: number, anchor: HTMLElement) => void;
|
|
65
|
+
onAddPositionShift: (dayIdx: number, position: string, anchor: HTMLElement) => void;
|
|
52
66
|
onEditShift: (empId: number, dayIdx: number) => void;
|
|
53
67
|
onEditLeave: (empId: number, dayIdx: number) => void;
|
|
54
68
|
onOpenDemand: (dayIdx: number) => void;
|
|
@@ -50,6 +50,6 @@ export declare function useScheduleDragDrop(board: ScheduleBoardApi): {
|
|
|
50
50
|
setDragHover: (empId: number, dayIdx: number, onCard: boolean, slotIndex: number | null) => void;
|
|
51
51
|
clearDragHover: (empId: number, dayIdx: number) => void;
|
|
52
52
|
dropOnCell: (targetEmpId: number, targetDayIdx: number) => void;
|
|
53
|
-
dropOnPosition: (targetDayIdx: number, targetPosition: string) => void;
|
|
53
|
+
dropOnPosition: (targetDayIdx: number, targetPosition: string, allowLocked?: boolean) => void;
|
|
54
54
|
};
|
|
55
55
|
export type ScheduleDragDropApi = ReturnType<typeof useScheduleDragDrop>;
|
|
@@ -18,6 +18,7 @@ interface UseScheduleEmployeePersistenceOptions {
|
|
|
18
18
|
}[]>;
|
|
19
19
|
effectiveRate: ComputedRef<number>;
|
|
20
20
|
passcodeValue: ComputedRef<string>;
|
|
21
|
+
deferScheduleWrites: Ref<boolean>;
|
|
21
22
|
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
22
23
|
}
|
|
23
24
|
/** Persistence for an existing business employee being added to this schedule. */
|
|
@@ -597,12 +597,16 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
|
|
|
597
597
|
clearEmployeeShifts: (empId: number) => {
|
|
598
598
|
shifts: number;
|
|
599
599
|
};
|
|
600
|
-
moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string) => boolean;
|
|
600
|
+
moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number, fromSlotIndex?: number, fromSlotCount?: number, targetPosition?: string, allowLocked?: boolean) => boolean;
|
|
601
601
|
swapShifts: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
|
|
602
|
-
|
|
602
|
+
swapPositions: (empIdA: number, empIdB: number, dayA: number, dayB?: number, slotIndexA?: number, slotIndexB?: number, slotCountA?: number) => boolean;
|
|
603
|
+
clearShiftsInRange: (options?: {
|
|
604
|
+
persist?: boolean;
|
|
605
|
+
}) => {
|
|
603
606
|
shifts: number;
|
|
604
607
|
open: number;
|
|
605
608
|
leave: number;
|
|
609
|
+
assignmentIds: string[];
|
|
606
610
|
};
|
|
607
611
|
requiredFor: (dayIdx: number, position: string) => number;
|
|
608
612
|
scheduledFor: (dayIdx: number, position: string) => number;
|
|
@@ -627,6 +631,8 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
|
|
|
627
631
|
id: string;
|
|
628
632
|
name: string;
|
|
629
633
|
}[]>;
|
|
634
|
+
pendingCreates: string[];
|
|
635
|
+
pendingDeletes: Set<string>;
|
|
630
636
|
count: import("vue").ComputedRef<number>;
|
|
631
637
|
isAdding: import("vue").Ref<boolean, boolean>;
|
|
632
638
|
newName: import("vue").Ref<string, string>;
|
|
@@ -640,6 +646,9 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
|
|
|
640
646
|
askDelete: (id: string) => void;
|
|
641
647
|
cancelDelete: () => void;
|
|
642
648
|
confirmDelete: (id: string) => Promise<void>;
|
|
649
|
+
commitCreates: () => Promise<void>;
|
|
650
|
+
commitDeletes: () => Promise<void>;
|
|
651
|
+
discardPending: () => void;
|
|
643
652
|
};
|
|
644
653
|
steps: ScheduleOnboardingStep[];
|
|
645
654
|
isSkippable: import("vue").ComputedRef<boolean>;
|
|
@@ -1462,6 +1471,7 @@ export declare function useScheduleOnboardingWizard(board: ScheduleBoardApi, add
|
|
|
1462
1471
|
availabilityError: import("vue").ComputedRef<boolean>;
|
|
1463
1472
|
saving: import("vue").Ref<boolean, boolean>;
|
|
1464
1473
|
saveError: import("vue").Ref<string | null, string | null>;
|
|
1474
|
+
deferScheduleWrites: import("vue").Ref<boolean, boolean>;
|
|
1465
1475
|
candidatesLoading: import("vue").Ref<boolean, boolean>;
|
|
1466
1476
|
candidatesError: import("vue").Ref<string | null, string | null>;
|
|
1467
1477
|
openWizard: (section: string) => void;
|
|
@@ -20,5 +20,6 @@ export declare function useScheduleOutlet(): {
|
|
|
20
20
|
resolve: () => Promise<string>;
|
|
21
21
|
resolveOutlet: () => Promise<string>;
|
|
22
22
|
switchTo: (restaurantId: string, weekStart: Date) => Promise<boolean>;
|
|
23
|
+
setBeforeSwitch: (handler: (restaurantId: string) => boolean | Promise<boolean>) => void;
|
|
23
24
|
};
|
|
24
25
|
export type ScheduleOutletApi = ReturnType<typeof useScheduleOutlet>;
|
|
@@ -13,6 +13,8 @@ interface UseSchedulePageCellDropOptions {
|
|
|
13
13
|
notify: (message: string, type: 'error') => void;
|
|
14
14
|
}
|
|
15
15
|
export declare function useSchedulePageCellDrop(options: UseSchedulePageCellDropOptions): {
|
|
16
|
-
onCellDrop: (empId: number, dayIdx: number, event: DragEvent) => void;
|
|
16
|
+
onCellDrop: (empId: number, dayIdx: number, event: DragEvent, targetSlotIndex?: number, kind?: "employee" | "position") => void;
|
|
17
|
+
confirmPositionSwap: (toEmpId: number, toDayIdx: number, onConfirm: () => void) => void;
|
|
18
|
+
confirmPositionDrop: (targetDayIdx: number, onConfirm: () => void) => void;
|
|
17
19
|
};
|
|
18
20
|
export {};
|
|
@@ -14,6 +14,7 @@ type Snackbar = {
|
|
|
14
14
|
};
|
|
15
15
|
export declare function useSchedulePageClearActions(board: ScheduleBoardApi, demand: ScheduleDemandApi, snackbar: Snackbar): {
|
|
16
16
|
clearKind: import("vue").Ref<ClearKind | null, ClearKind | null>;
|
|
17
|
+
clearing: import("vue").Ref<boolean, boolean>;
|
|
17
18
|
onConfirmClear: () => Promise<void>;
|
|
18
19
|
};
|
|
19
20
|
export type SchedulePageClearActionsApi = ReturnType<typeof useSchedulePageClearActions>;
|
|
@@ -4,6 +4,7 @@ export interface SchedulePositionRow {
|
|
|
4
4
|
}
|
|
5
5
|
export declare function useSchedulePositions(options?: {
|
|
6
6
|
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
7
|
+
deferWrites?: boolean;
|
|
7
8
|
}): {
|
|
8
9
|
positions: import("vue").Ref<{
|
|
9
10
|
id: string;
|
|
@@ -12,6 +13,8 @@ export declare function useSchedulePositions(options?: {
|
|
|
12
13
|
id: string;
|
|
13
14
|
name: string;
|
|
14
15
|
}[]>;
|
|
16
|
+
pendingCreates: string[];
|
|
17
|
+
pendingDeletes: Set<string>;
|
|
15
18
|
count: import("vue").ComputedRef<number>;
|
|
16
19
|
isAdding: import("vue").Ref<boolean, boolean>;
|
|
17
20
|
newName: import("vue").Ref<string, string>;
|
|
@@ -25,5 +28,8 @@ export declare function useSchedulePositions(options?: {
|
|
|
25
28
|
askDelete: (id: string) => void;
|
|
26
29
|
cancelDelete: () => void;
|
|
27
30
|
confirmDelete: (id: string) => Promise<void>;
|
|
31
|
+
commitCreates: () => Promise<void>;
|
|
32
|
+
commitDeletes: () => Promise<void>;
|
|
33
|
+
discardPending: () => void;
|
|
28
34
|
};
|
|
29
35
|
export type SchedulePositionsApi = ReturnType<typeof useSchedulePositions>;
|
|
@@ -29,7 +29,10 @@ export interface ScheduleSwapState {
|
|
|
29
29
|
preset: {
|
|
30
30
|
empId: number;
|
|
31
31
|
dayIdx: number;
|
|
32
|
+
slotIndex?: number;
|
|
32
33
|
} | null;
|
|
34
|
+
/** Area/Position view exchanges roles; employee view exchanges shift ownership. */
|
|
35
|
+
kind: 'employee' | 'position';
|
|
33
36
|
}
|
|
34
37
|
/** The shift card's "⋯" menu (Change employee / Swap shifts / Edit / Remove), plus the two
|
|
35
38
|
* dialogs it opens that the rest of Phase 1 didn't need: handing a shift to somebody else,
|
|
@@ -217,7 +220,9 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
|
|
|
217
220
|
preset: {
|
|
218
221
|
empId: number;
|
|
219
222
|
dayIdx: number;
|
|
223
|
+
slotIndex?: number | undefined;
|
|
220
224
|
} | null;
|
|
225
|
+
kind: "employee" | "position";
|
|
221
226
|
};
|
|
222
227
|
swapSlot: import("vue").ComputedRef<import("../types").WorkSlot[]>;
|
|
223
228
|
swapCandidates: import("vue").ComputedRef<{
|
|
@@ -232,7 +237,7 @@ export declare function useScheduleShiftActions(board: ScheduleBoardApi, options
|
|
|
232
237
|
slot: import("../types").WorkSlot[];
|
|
233
238
|
soft: string | null;
|
|
234
239
|
} | null>;
|
|
235
|
-
openSwap: (empId: number, dayIdx: number, preset?: ScheduleSwapState["preset"], slotIndex?: number, slotCount?: number) => void;
|
|
240
|
+
openSwap: (empId: number, dayIdx: number, preset?: ScheduleSwapState["preset"], slotIndex?: number, slotCount?: number, kind?: ScheduleSwapState["kind"]) => void;
|
|
236
241
|
closeSwap: () => void;
|
|
237
242
|
confirmSwap: (toEmpId: number, toDayIdx: number) => void;
|
|
238
243
|
removeShift: (empId: number, dayIdx: number, slotIndex?: number) => void;
|