@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.
Files changed (155) hide show
  1. package/dist/{ApprovalCodeList-cG0zmQVJ.js → ApprovalCodeList-BLA2rhLB.js} +5 -5
  2. package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-DBYdZhZl.js} +4 -4
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CtCEzPbE.js} +2 -2
  4. package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-CA7DWLmy.js} +6 -6
  5. package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-BYnegeEr.js} +6 -6
  6. package/dist/{Main-DFwdAWqn.js → Main-BeXx0hAc.js} +8 -8
  7. package/dist/{Main-B2r59IOW.js → Main-Dh-gZSaa.js} +5 -5
  8. package/dist/{Main-DkLBemi7.js → Main-NDK7LUmm.js} +11 -11
  9. package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-DDIacDpQ.js} +7 -7
  10. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-ONMn3v_f.js +4167 -0
  11. 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
  12. package/dist/{RoleList-DHO4JRKF.js → RoleList-B30FHIzu.js} +9 -9
  13. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CRRguWTG.js +492 -0
  14. package/dist/ScheduleGeneralPage-8gEeZbFR.js +776 -0
  15. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-TfxTAjO8.js +2252 -0
  16. package/dist/SchedulePage-DQ0VXWWi.js +17832 -0
  17. package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-oGIDGneA.js} +66 -65
  18. package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-Drj6R4Y3.js} +10 -10
  19. package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-CDQfN5LE.js} +7 -7
  20. 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
  21. package/dist/{app-CmBSTvaI.js → app-DWe_4-ct.js} +678 -594
  22. package/dist/app.js +1 -1
  23. package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
  24. package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-QSwC9dtX.js} +1 -1
  25. package/dist/{employee-DQcHjoij.js → employee-Bb2b3dP6.js} +29 -28
  26. package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
  27. package/dist/{iteration-BlavheWG.js → iteration-TDU7bFxZ.js} +1 -1
  28. package/dist/{lodash-QerqayrJ.js → lodash-D3Ns5VMN.js} +1 -1
  29. package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
  30. package/dist/{role-RM2YLO7n.js → role-D57Le_-U.js} +2 -2
  31. package/dist/{rule-DjlvYIuP.js → rule-DzesUEX7.js} +3 -3
  32. package/dist/src/api/schedule/index.d.ts +8 -1
  33. package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
  34. package/dist/src/types/employee.d.ts +1 -0
  35. package/dist/src/types/schedule.d.ts +3 -4
  36. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
  37. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +23 -0
  38. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
  39. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
  40. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
  41. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +32 -0
  42. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
  43. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
  44. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
  45. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
  46. package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
  47. package/dist/src/views/scheduling/components/{ScheduleShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +7 -2
  48. package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
  49. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
  50. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
  51. package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
  52. package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
  53. package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
  54. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
  55. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
  56. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
  57. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
  58. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
  59. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
  60. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
  61. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +17 -1
  62. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
  63. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
  64. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
  65. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -12
  66. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
  67. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
  68. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
  69. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
  70. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +5 -1
  71. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
  72. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
  73. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
  74. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  75. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
  76. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
  77. package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
  78. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
  79. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +15 -0
  80. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +34 -21
  81. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
  82. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
  83. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
  84. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -0
  85. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +50 -11
  86. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
  87. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
  88. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -2
  89. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
  90. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +7 -24
  91. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +19 -5
  92. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +16 -0
  93. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
  94. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +27 -0
  95. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
  96. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
  97. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
  98. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
  99. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +29 -0
  100. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +20 -0
  101. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
  102. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +5 -6
  103. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
  104. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
  105. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +205 -0
  106. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
  107. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
  108. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +306 -529
  109. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
  110. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
  111. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
  112. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
  113. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -7
  114. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
  115. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +4 -1
  116. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +4 -2
  117. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +9 -1
  118. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
  119. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +30 -4
  120. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +8 -25
  121. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +18 -3
  122. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
  123. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
  124. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +25 -8
  125. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
  126. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
  127. package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
  128. package/dist/src/views/scheduling/data.d.ts +16 -7
  129. package/dist/src/views/scheduling/locales/index.d.ts +80 -0
  130. package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
  131. package/dist/src/views/scheduling/schedule-state.d.ts +104 -16
  132. package/dist/src/views/scheduling/schedule-store.d.ts +17 -6
  133. package/dist/src/views/scheduling/types.d.ts +27 -5
  134. package/dist/style.css +1 -1
  135. package/dist/tsconfig.app.tsbuildinfo +1 -1
  136. package/dist/{useAppStore-d_nHyK5u.js → useAppStore-BoLkvkE2.js} +1 -1
  137. package/dist/{useLoading-JFoghhRz.js → useLoading-Ch1AUYT1.js} +1 -1
  138. package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-Cmuead1K.js} +3 -3
  139. package/package.json +2 -1
  140. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +0 -4167
  141. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
  142. package/dist/ScheduleGeneralPage-WlBM8bxV.js +0 -629
  143. package/dist/SchedulePage-Nm0krGVU.js +0 -17056
  144. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
  145. package/dist/src/components/layout/withShell.d.ts +0 -14
  146. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
  147. package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
  148. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
  149. package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
  150. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
  151. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -122
  152. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
  153. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
  154. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
  155. /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
- import type { ScheduleTopbarApi } from './useScheduleTopbar';
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
- openShiftCard: ScheduleOpenShiftCardApi;
18
- }): void;
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: (name: string) => number;
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
- otAfterDaily?: number | undefined;
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
- otAfterDaily?: number | undefined;
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
- /** Labour budget and Notifications are out of the General page for now — see
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
- /** The mockup's Scheduling Settings page, scoped to the 3 tabs the topbar gear icon opens
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
- otBudget: number;
38
- notify: {
39
- waConnected: boolean;
40
- waNumber: string;
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
- otAfterDaily?: number | undefined;
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 {};