@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.
Files changed (68) hide show
  1. package/dist/{ApprovalCodeList-NeNAiyOr.js → ApprovalCodeList-B10IvyLu.js} +7 -7
  2. package/dist/{AuditLogList-Pv9kFjBr.js → AuditLogList-BJ8GXIzu.js} +5 -5
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DWfp8X80.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DfXqKPnU.js} +2 -2
  4. package/dist/{EmployeeList-Bs9lymzV.js → EmployeeList-CNj262HG.js} +8 -8
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-Cb22fFWE.js → FormItem.vue_vue_type_script_setup_true_lang-BvSLGM1C.js} +1 -1
  6. package/dist/{GrantUserList-dTWAmoUv.js → GrantUserList-R259wy0R.js} +8 -8
  7. package/dist/{Main-Cp40vaRW.js → Main-DLgW7BX_.js} +5 -5
  8. package/dist/{Main-C_RrWM3c.js → Main-DZ5T4TP1.js} +11 -11
  9. package/dist/{Main-D_iKA3Se.js → Main-yUEWFlC3.js} +8 -8
  10. package/dist/{PermissionSetList-D9uTEllI.js → PermissionSetList-Xrzkx52n.js} +7 -7
  11. 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
  12. 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
  13. package/dist/{RoleList-DyoCd2jX.js → RoleList-RRDkrVmu.js} +9 -9
  14. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-BhkmMQxt.js +532 -0
  15. package/dist/{ScheduleGeneralPage-DyIBUXY1.js → ScheduleGeneralPage-CfcIh0Fy.js} +2 -2
  16. package/dist/{ScheduleModal.vue_vue_type_script_setup_true_lang-CJMPrPHl.js → ScheduleModal.vue_vue_type_script_setup_true_lang-WYuVJxed.js} +655 -639
  17. package/dist/SchedulePage-CHu1VI-U.js +19201 -0
  18. package/dist/{SchedulePositionPage-DE5XxDl2.js → SchedulePositionPage-Dx2fZ1QI.js} +27 -27
  19. package/dist/{SelectFilter-D27X9BNI.js → SelectFilter-DoeKbbjT.js} +1 -1
  20. package/dist/{TeamMemberList-YudsADAP.js → TeamMemberList-CPpBsvi7.js} +11 -11
  21. package/dist/{TimesheetList-CQXDulxg.js → TimesheetList-CWl2faUZ.js} +8 -8
  22. 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
  23. package/dist/{app-BMVAE__n.js → app-COWpQb6i.js} +8 -8
  24. package/dist/app.js +1 -1
  25. package/dist/{approval-code-DHsUgc4K.js → approval-code-BXUiojPH.js} +1 -1
  26. package/dist/{dayjs.min-6iMvK3bi.js → dayjs.min-Dv2S110T.js} +1 -1
  27. package/dist/{employee-kAmYgyIB.js → employee-Drs22uVf.js} +4 -4
  28. package/dist/{grant-user-qzKHFTro.js → grant-user-CBJ3gEgW.js} +1 -1
  29. package/dist/{iteration-kNseYv0g.js → iteration-B23jisFZ.js} +1 -1
  30. package/dist/{lodash-CoGtJ4ls.js → lodash-CQM_jgZN.js} +1 -1
  31. package/dist/{restaurant-BbYRA_IT.js → restaurant-D2mfKHaH.js} +44 -45
  32. package/dist/{role-BvQeAAsI.js → role-k4mdt-op.js} +2 -2
  33. package/dist/{rule-DkjcuvBR.js → rule-xOAXApqp.js} +3 -3
  34. package/dist/src/api/schedule/index.d.ts +6 -1
  35. package/dist/src/types/schedule.d.ts +1 -1
  36. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -2
  37. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -0
  38. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
  39. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
  40. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +2 -0
  41. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
  42. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -4
  43. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
  44. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +1 -0
  45. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +1 -0
  46. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -1
  47. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +1 -0
  48. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +6 -2
  49. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
  50. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +14 -0
  51. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -1
  52. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +1 -0
  53. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +12 -2
  54. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +1 -0
  55. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
  56. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
  57. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +6 -0
  58. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +6 -1
  59. package/dist/src/views/scheduling/schedule-state.d.ts +232 -232
  60. package/dist/src/views/scheduling/schedule-store.d.ts +4 -0
  61. package/dist/style.css +1 -1
  62. package/dist/tsconfig.app.tsbuildinfo +1 -1
  63. package/dist/{useAppStore-BoLkvkE2.js → useAppStore-DZCdxlCd.js} +1 -1
  64. package/dist/{useLoading-Ch1AUYT1.js → useLoading-Nygx2zn8.js} +1 -1
  65. package/dist/{useReportPermissions-CbnelOLy.js → useReportPermissions-BB4JiYDf.js} +3 -3
  66. package/package.json +3 -3
  67. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-D0Mg9P_m.js +0 -501
  68. package/dist/SchedulePage-BkvOpOVt.js +0 -18757
@@ -1,7 +1,7 @@
1
- import { s as W, c as q, e as y } from "./iteration-kNseYv0g.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-BMVAE__n.js";
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-BbYRA_IT.js";
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;
@@ -18,6 +18,7 @@ type __VLS_Props = {
18
18
  clearTitle: string;
19
19
  clearMessage: string;
20
20
  clearConfirmLabel: string;
21
+ clearLoading: boolean;
21
22
  onConfirmClear: () => void;
22
23
  onCloseClear: () => void;
23
24
  };
@@ -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. It points at the two inputs Remy's HRM skill
12
- * handles (an attached roster image, or demand described in words); the bullets are example
13
- * guidance the user replaces. Names the outlet the way a manager knows it; Remy resolves it to
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
- clearShiftsInRange: () => {
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. Split
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
- clearShiftsInRange: () => {
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;