@feedmepos/mf-hrm-portal 2.2.5 → 2.3.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/dist/{ApprovalCodeList-Df5_U7Fj.js → ApprovalCodeList-CJaNPHZC.js} +7 -7
  2. package/dist/{AuditLogList-BT-YM-CP.js → AuditLogList-CHA98ZqW.js} +19 -18
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-Df3IHAyZ.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C7rvthEI.js} +2 -2
  4. package/dist/{EmployeeList-BfhG5ktC.js → EmployeeList-CVmMKt71.js} +31 -30
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-DPT2FoIc.js → FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js} +1 -1
  6. package/dist/{GrantUserList-B_WhIR9L.js → GrantUserList-MYjgt5-F.js} +8 -8
  7. package/dist/{Main-Cxwiaabw.js → Main-BgB9lD4K.js} +11 -11
  8. package/dist/{Main-DKOPDO1K.js → Main-C0cnqQ3B.js} +8 -8
  9. package/dist/{Main-CGrtJkUl.js → Main-hlcHtrsc.js} +5 -5
  10. package/dist/{PermissionSetList-CqiLsqaj.js → PermissionSetList-5f1WIaVa.js} +7 -7
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CmNTqB0v.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CFoTAGIX.js} +1340 -1340
  12. package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-Z-DH7ouY.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js} +1 -1
  13. package/dist/{RoleList-iudKGaCg.js → RoleList-DNR4miXr.js} +9 -9
  14. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B4VUyKW3.js +470 -0
  15. package/dist/ScheduleGeneralPage-Cd5AlY4z.js +666 -0
  16. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-Cf0l2MRg.js +2188 -0
  17. package/dist/SchedulePage-C8m0-m3l.js +18257 -0
  18. package/dist/SchedulePositionPage-DyRckyUx.js +264 -0
  19. package/dist/SelectFilter-CG13h83-.js +264 -0
  20. package/dist/{TeamMemberList-D_8d24Vw.js → TeamMemberList-mw5OveZG.js} +38 -37
  21. package/dist/{TimesheetList-VvIiAVLt.js → TimesheetList-BzXarZbM.js} +54 -53
  22. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Bmiz85Y3.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dq5i4poN.js} +3 -3
  23. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  24. package/dist/{app-CVqQjVFY.js → app-DSsdRLHg.js} +3252 -2475
  25. package/dist/app.js +1 -1
  26. package/dist/{approval-code-BRClD2HN.js → approval-code-C9DmR4Md.js} +1 -1
  27. package/dist/{dayjs.min-Bhe9FtFt.js → dayjs.min-B6xBXQtU.js} +1 -1
  28. package/dist/{employee-thZndJWE.js → employee-hMhzuqk1.js} +29 -28
  29. package/dist/{grant-user-Dhi3ilC_.js → grant-user-Bv-pJ9Wt.js} +1 -1
  30. package/dist/{iteration-Cd5fl3-x.js → iteration-B34AvpNC.js} +1 -1
  31. package/dist/{lodash-DiJ9xZIF.js → lodash-1Vyuy7Mu.js} +1 -1
  32. package/dist/{restaurant-DiYb0pCm.js → restaurant-D7PEQjPY.js} +258 -252
  33. package/dist/{role-DdizOTVB.js → role-DKOrgO6f.js} +2 -2
  34. package/dist/{rule-CYFm43rI.js → rule-CBzQ3GeV.js} +36 -36
  35. package/dist/src/api/restaurant/index.d.ts +2 -0
  36. package/dist/src/api/schedule/index.d.ts +55 -0
  37. package/dist/src/components/layout/PortalShell.vue.d.ts +12 -0
  38. package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
  39. package/dist/src/composables/useMessage.d.ts +8 -2
  40. package/dist/src/router/shared.d.ts +4 -1
  41. package/dist/src/types/employee.d.ts +1 -0
  42. package/dist/src/types/schedule.d.ts +24 -0
  43. package/dist/src/views/scheduling/ScheduleGeneralPage.vue.d.ts +3 -0
  44. package/dist/src/views/scheduling/SchedulePage.vue.d.ts +3 -0
  45. package/dist/src/views/scheduling/SchedulePositionPage.vue.d.ts +3 -0
  46. package/dist/src/views/scheduling/components/ScheduleAddEmployeeIdentitySection.vue.d.ts +6 -0
  47. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +12 -0
  48. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModeStep.vue.d.ts +6 -0
  49. package/dist/src/views/scheduling/components/ScheduleAddEmployeePosAccessSection.vue.d.ts +6 -0
  50. package/dist/src/views/scheduling/components/ScheduleAddEmployeePositionsSection.vue.d.ts +10 -0
  51. package/dist/src/views/scheduling/components/ScheduleAddEmployeeSchedulingSection.vue.d.ts +6 -0
  52. package/dist/src/views/scheduling/components/ScheduleAddPickPopover.vue.d.ts +6 -0
  53. package/dist/src/views/scheduling/components/ScheduleAddPositionModal.vue.d.ts +6 -0
  54. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +22 -0
  55. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +45 -0
  56. package/dist/src/views/scheduling/components/ScheduleAssignEmployeePopover.vue.d.ts +6 -0
  57. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDetailsModal.vue.d.ts +6 -0
  58. package/dist/src/views/scheduling/components/ScheduleAutoScheduleModal.vue.d.ts +10 -0
  59. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +28 -0
  60. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +19 -0
  61. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +38 -0
  62. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
  63. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +38 -0
  64. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
  65. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
  66. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +39 -0
  67. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
  68. package/dist/src/views/scheduling/components/ScheduleButton.vue.d.ts +23 -0
  69. package/dist/src/views/scheduling/components/ScheduleChangeEmployeeModal.vue.d.ts +8 -0
  70. package/dist/src/views/scheduling/components/ScheduleCloneOutletModal.vue.d.ts +6 -0
  71. package/dist/src/views/scheduling/components/ScheduleCoach.vue.d.ts +6 -0
  72. package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +15 -0
  73. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +32 -0
  74. package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +21 -0
  75. package/dist/src/views/scheduling/components/ScheduleCostRail.vue.d.ts +8 -0
  76. package/dist/src/views/scheduling/components/ScheduleCostRailEmptyArt.vue.d.ts +2 -0
  77. package/dist/src/views/scheduling/components/ScheduleDateRangePopover.vue.d.ts +6 -0
  78. package/dist/src/views/scheduling/components/ScheduleDayNotePopover.vue.d.ts +6 -0
  79. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +12 -0
  80. package/dist/src/views/scheduling/components/ScheduleDemandRow.vue.d.ts +23 -0
  81. package/dist/src/views/scheduling/components/ScheduleDemandSheet.vue.d.ts +10 -0
  82. package/dist/src/views/scheduling/components/ScheduleDotsIcon.vue.d.ts +2 -0
  83. package/dist/src/views/scheduling/components/ScheduleEmployeeDetailPanel.vue.d.ts +12 -0
  84. package/dist/src/views/scheduling/components/ScheduleEmployeeIdentity.vue.d.ts +17 -0
  85. package/dist/src/views/scheduling/components/ScheduleExportPreview.vue.d.ts +7 -0
  86. package/dist/src/views/scheduling/components/ScheduleFilterBar.vue.d.ts +18 -0
  87. package/dist/src/views/scheduling/components/ScheduleGapPopover.vue.d.ts +6 -0
  88. package/dist/src/views/scheduling/components/ScheduleGridHeader.vue.d.ts +18 -0
  89. package/dist/src/views/scheduling/components/ScheduleGridSkeleton.vue.d.ts +2 -0
  90. package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +6 -0
  91. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +10 -0
  92. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
  93. package/dist/src/views/scheduling/components/ScheduleOnboardingClosedDayConfirm.vue.d.ts +6 -0
  94. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandDays.vue.d.ts +6 -0
  95. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
  96. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
  97. package/dist/src/views/scheduling/components/ScheduleOnboardingDoneArt.vue.d.ts +2 -0
  98. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
  99. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
  100. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
  101. package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +11 -0
  102. package/dist/src/views/scheduling/components/ScheduleOnboardingWizard.vue.d.ts +9 -0
  103. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
  104. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
  105. package/dist/src/views/scheduling/components/SchedulePublishModal.vue.d.ts +8 -0
  106. package/dist/src/views/scheduling/components/ScheduleReviewBar.vue.d.ts +12 -0
  107. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +60 -0
  108. package/dist/src/views/scheduling/components/ScheduleSelectExistingEmployeeModal.vue.d.ts +6 -0
  109. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
  110. package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +35 -0
  111. package/dist/src/views/scheduling/components/ScheduleShiftHeadcountEditor.vue.d.ts +10 -0
  112. package/dist/src/views/scheduling/components/ScheduleShiftImpact.vue.d.ts +6 -0
  113. package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +8 -0
  114. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +16 -0
  115. package/dist/src/views/scheduling/components/ScheduleShiftRepeatDaysRow.vue.d.ts +8 -0
  116. package/dist/src/views/scheduling/components/ScheduleShiftSegmentsEditor.vue.d.ts +8 -0
  117. package/dist/src/views/scheduling/components/ScheduleShiftWhoPicker.vue.d.ts +25 -0
  118. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +14 -0
  119. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +16 -0
  120. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +60 -0
  121. package/dist/src/views/scheduling/components/ScheduleStatsRow.vue.d.ts +12 -0
  122. package/dist/src/views/scheduling/components/ScheduleSwapShiftsModal.vue.d.ts +8 -0
  123. package/dist/src/views/scheduling/components/ScheduleTimePickerPopover.vue.d.ts +6 -0
  124. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +20 -0
  125. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +33 -0
  126. package/dist/src/views/scheduling/composables/onboarding-constants.d.ts +5 -0
  127. package/dist/src/views/scheduling/composables/onboarding-hours.d.ts +7 -0
  128. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +50 -0
  129. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
  130. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +78 -0
  131. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +59 -0
  132. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +9 -0
  133. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
  134. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
  135. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +23 -0
  136. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
  137. package/dist/src/views/scheduling/composables/schedule-employee-profile.d.ts +7 -0
  138. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
  139. package/dist/src/views/scheduling/composables/schedule-popover-position.d.ts +16 -0
  140. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +26 -0
  141. package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
  142. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +7 -0
  143. package/dist/src/views/scheduling/composables/useCollapsedList.d.ts +9 -0
  144. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +10 -0
  145. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +102 -0
  146. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +81 -0
  147. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +77 -0
  148. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +63 -0
  149. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +18 -0
  150. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +124 -0
  151. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
  152. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +289 -0
  153. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +539 -0
  154. package/dist/src/views/scheduling/composables/useScheduleCellState.d.ts +27 -0
  155. package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +28 -0
  156. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +21 -0
  157. package/dist/src/views/scheduling/composables/useScheduleCoach.d.ts +80 -0
  158. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +19 -0
  159. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +48 -0
  160. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +45 -0
  161. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +100 -0
  162. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +61 -0
  163. package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +47 -0
  164. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +156 -0
  165. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +54 -0
  166. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +11 -0
  167. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
  168. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +26 -0
  169. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
  170. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
  171. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +50 -0
  172. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +38 -0
  173. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +25 -0
  174. package/dist/src/views/scheduling/composables/useScheduleEmployeeProfile.d.ts +16 -0
  175. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +18 -0
  176. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +51 -0
  177. package/dist/src/views/scheduling/composables/useScheduleFilterBar.d.ts +14 -0
  178. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +77 -0
  179. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +59 -0
  180. package/dist/src/views/scheduling/composables/useScheduleLegend.d.ts +15 -0
  181. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
  182. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
  183. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +187 -0
  184. package/dist/src/views/scheduling/composables/useScheduleOnboardingFlow.d.ts +9 -0
  185. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
  186. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
  187. package/dist/src/views/scheduling/composables/useScheduleOnboardingPersistence.d.ts +13 -0
  188. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +1145 -0
  189. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +23 -0
  190. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +22 -0
  191. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
  192. package/dist/src/views/scheduling/composables/useSchedulePageBootstrap.d.ts +9 -0
  193. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
  194. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
  195. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +20 -0
  196. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
  197. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +25 -0
  198. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
  199. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +54 -0
  200. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +29 -0
  201. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +124 -0
  202. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
  203. package/dist/src/views/scheduling/composables/useScheduleRangeCalendar.d.ts +27 -0
  204. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +247 -0
  205. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +35 -0
  206. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +17 -0
  207. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +207 -0
  208. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +62 -0
  209. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
  210. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +214 -0
  211. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +27 -0
  212. package/dist/src/views/scheduling/composables/useScheduleTimePicker.d.ts +49 -0
  213. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +95 -0
  214. package/dist/src/views/scheduling/composables/useScheduleViewportFit.d.ts +9 -0
  215. package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
  216. package/dist/src/views/scheduling/data.d.ts +102 -0
  217. package/dist/src/views/scheduling/locales/index.d.ts +688 -0
  218. package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
  219. package/dist/src/views/scheduling/schedule-state.d.ts +703 -0
  220. package/dist/src/views/scheduling/schedule-store.d.ts +110 -0
  221. package/dist/src/views/scheduling/types.d.ts +356 -0
  222. package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +2 -2
  223. package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +2 -2
  224. package/dist/style.css +1 -1
  225. package/dist/tsconfig.app.tsbuildinfo +1 -1
  226. package/dist/{useAppStore-BGhlB1_1.js → useAppStore-d_nHyK5u.js} +1 -1
  227. package/dist/{useLoading-CvgqVDbF.js → useLoading-JFoghhRz.js} +1 -1
  228. package/dist/{useReportPermissions-hVMtRNmj.js → useReportPermissions-B2ev0j4w.js} +3 -3
  229. package/package.json +4 -2
  230. package/dist/SelectFilter-ATOm0hdn.js +0 -269
@@ -0,0 +1,78 @@
1
+ import type { EmployeeAvailHours } from '../types';
2
+ import type { FdtoScheduleUpdateEmployeeProfileReq } from '@/types/schedule';
3
+ export type ScheduleAddEmployeeStep = 'mode' | 'details';
4
+ export type ScheduleAddEmployeeMode = 'new' | 'existing';
5
+ export interface ScheduleAddEmployeeForm {
6
+ name: string;
7
+ mobile: string;
8
+ dial: string;
9
+ employment: 'full' | 'part';
10
+ locations: string[];
11
+ payBasis: 'hourly' | 'monthly';
12
+ payAmount: string;
13
+ maxHours: string;
14
+ minHours: string;
15
+ /** Overtime is opt-in: off is "no rule", not "zero overtime" — a 0 sitting in the fields
16
+ * below by default would read as "every hour is overtime", the opposite of unset. */
17
+ otEnabled: boolean;
18
+ otAfterDaily: string;
19
+ maxOtHours: string;
20
+ /** For a part-timer: days they CAN work. For a full-timer: days they're OFF — the
21
+ * mockup inverts the same array's meaning by employment type. */
22
+ availDays: boolean[];
23
+ availHours: EmployeeAvailHours[];
24
+ preferences: string;
25
+ primaryPosition: string;
26
+ secondaryPositions: string[];
27
+ seniority: '' | 'senior' | 'junior';
28
+ passcode: string[];
29
+ masterUser: boolean;
30
+ /** Required by the POS for a master user. */
31
+ masterCode: string;
32
+ /** Gates the fields below it — someone can be fully scheduled with this off. */
33
+ posAccessEnabled: boolean;
34
+ /** WHAT the passcode opens the till as, at this outlet — the one this person is being added
35
+ * to. The outlet itself isn't a choice here: this wizard is already scoped to it. */
36
+ posRoleId: string;
37
+ }
38
+ /** A salaried month, for converting a monthly figure into the hourly one the cost rail
39
+ * actually reads. Ported verbatim from the mockup's MONTH_HOURS. */
40
+ export declare const MONTH_HOURS = 173;
41
+ /** A freshly-ticked worked day defaults to the whole day rather than the outlet's current
42
+ * trading hours — trading hours can change, and narrowing a person's stated availability to
43
+ * whatever the outlet happens to trade today isn't something this form should assume for them.
44
+ * `23:59`, not `24:00`: a part-timer's per-day fields are native `<input type="time">`s, which
45
+ * only accept `00:00`–`23:59` — `24:00` would render as blank there despite being a valid
46
+ * `FdtoScheduleTime` on the wire. */
47
+ export declare function defaultAvailHours(): EmployeeAvailHours;
48
+ export declare function blankForm(): ScheduleAddEmployeeForm;
49
+ /** Coverage and Auto-Schedule are still authored per role, so a role is derived from the
50
+ * primary position rather than asked for twice. Unlike position, Employee.role is one of a
51
+ * fixed small set the grid groups by, so an unrecognised (or unset) position falls back to
52
+ * the first known role instead of leaving the record without one. */
53
+ export declare function roleFromPosition(position: string): string;
54
+ export declare function generateCode(): string;
55
+ /** `raw` is typed `string` because that's the form field's declared type, but Vue 3 casts
56
+ * `v-model` on an `<input type="number">` to an actual `number` regardless — the DOM does this
57
+ * itself, independent of the `.number` modifier, so the runtime value disagrees with the type
58
+ * the moment someone types a digit. `String()` first is what makes `.trim()` safe either way. */
59
+ export declare function parsePositiveInt(raw: string, min: number, max: number): number | undefined;
60
+ export declare function parseNonNegativeInt(raw: string, max: number): number | undefined;
61
+ export declare function initials(name: string): string;
62
+ export declare function isPartTimeForm(form: ScheduleAddEmployeeForm): boolean;
63
+ /** `availDays[i]` always means "is this a working day" — the same convention the board model
64
+ * and `ScheduleEmployeeDetailPanel` read (a day off is one marked NOT worked), regardless of
65
+ * employment type. Only the full-time TOGGLE BUTTON is framed as "mark a day off" rather than
66
+ * "mark a work day" — see `useScheduleAddEmployee`'s `dayLit`, which flips this value for
67
+ * that button's pressed state without touching what's actually stored. */
68
+ export declare function dayIsWorkedInForm(form: ScheduleAddEmployeeForm, i: number): boolean;
69
+ /** Days this form currently marks as worked, converted to Mongo's weekday convention. */
70
+ export declare function availabilityPayload(form: ScheduleAddEmployeeForm): Array<{
71
+ dayOfWeek: number;
72
+ start: string;
73
+ end: string;
74
+ }>;
75
+ /** The EmployeeProfile fields `createExisting` and `updateExisting` both send — everything but
76
+ * `employeeId`, which only the create path has (an update targets one already known from the
77
+ * URL). Shared here so the two payloads cannot silently drift apart. */
78
+ export declare function toEmployeeProfileFields(form: ScheduleAddEmployeeForm, name: string, payAmountNumber: number): FdtoScheduleUpdateEmployeeProfileReq;
@@ -0,0 +1,59 @@
1
+ import type { DaySlot, Employee, LeaveSlot, WorkSlot } from '../types';
2
+ import type { FdtoScheduleSaveAssignmentReq } from '@/types/schedule';
3
+ export { isoDateKey } from './schedule-calendar';
4
+ /** dayjs-free local-date key — matches on the browser's local Y/M/D, not UTC, so this stays
5
+ * correct regardless of timezone. */
6
+ export declare function isWorkSlot(slot: DaySlot): slot is WorkSlot;
7
+ export declare function isLeaveSlot(slot: DaySlot): slot is LeaveSlot;
8
+ export declare function workSlotsOf(day: DaySlot): WorkSlot[];
9
+ /** The inverse of `workSlotsOf` — bare slot for one, the array for two or more, so a day
10
+ * that's back down to its last period reads as a normal single shift again rather than a
11
+ * one-element array everything else has to unwrap. */
12
+ export declare function collapseSlots(slots: WorkSlot[]): WorkSlot | WorkSlot[] | null;
13
+ /** Whether a day's periods are genuinely one shift split across a gap — same `splitGroupId`,
14
+ * set only by the popover's "+ Split" — versus two or more independent shifts that happen to
15
+ * land on the same day (a swap override, say). The card/popover both branch on this: a
16
+ * genuine split draws and edits as one shift; anything else stays separate, card per shift. */
17
+ export declare function isGenuineSplitGroup(slots: WorkSlot[]): boolean;
18
+ /** A WorkSlot, in the shape ScheduleShiftAssignments actually stores. `pending` is the only status
19
+ * this board's own writers ever set on a fresh slot (see commitShift's callers) — `ot` is
20
+ * derived at cost-rail time, never authored, so it has nowhere sensible to map but PUBLISHED. */
21
+ export declare function toAssignmentReq(employeeId: string, date: string, slot: WorkSlot): FdtoScheduleSaveAssignmentReq;
22
+ /** Which coverage-position (a RULES.coverage.full key, e.g. 'grill', 'customer service') a
23
+ * work slot's `role` counts toward for area-view grouping and cost-by-position breakdowns.
24
+ * The shift popover's "Position needed" field writes a coverage-position key directly into
25
+ * `role` for anything authored through it — so a role that's already a coverage key is
26
+ * used as-is. Seed data instead recorded a station label ('FOH', 'Kitchen', ...), which
27
+ * ROLE_POSITIONS translates to that station's first/primary position. This can't tell a
28
+ * Kitchen employee's grill shifts apart from their prep shifts when the seed data only
29
+ * ever recorded the station — that distinction only exists once a shift is authored (or
30
+ * re-saved) through the popover, which does record the specific position. */
31
+ export declare function positionKeyOf(role: string): string;
32
+ /** The hours this employee is contracted to in a week — what "18h / 44h" measures against.
33
+ * Stated per person on their own profile now that ScheduleSettings carries pay rates alone, so
34
+ * there is no venue-wide full/part pair to fall back to: somebody nobody has agreed hours with
35
+ * reads 0, which is the truth rather than a default they never signed. */
36
+ export declare function contractCapFor(emp: Employee): number;
37
+ /** Whether `hours` runs past what this person is contracted to.
38
+ *
39
+ * A cap of 0 means no hours were ever agreed, which is NOT a contract of zero hours: read
40
+ * naively, `hours > 0` makes every rostered minute overtime, flags everybody on the cost rail's
41
+ * over-contract list and makes copy-week refuse every shift. An unknown limit cannot be
42
+ * exceeded, so it is treated as no limit and the question is answered false. */
43
+ export declare function overContract(emp: Employee, hours: number): boolean;
44
+ export declare function isPartTime(emp: Employee): boolean;
45
+ /** Colour keys off the POSITION's rank in the alphabetical position list, looped every six —
46
+ * position 7 repeats position 1's colour, which is expected once a page holds more than six.
47
+ * Unset ("Any position") isn't a real position at all, so it skips the rotation entirely and is
48
+ * always stone, the one of the seven neutral enough to read as "no position". A role no longer in
49
+ * the list (e.g. since deleted) falls back to the first band rather than erroring.
50
+ *
51
+ * Rotation by name, not a keyword lookup — a position is whatever the outlet typed into the
52
+ * Positions page, so there's no fixed vocabulary ("cashier", "kitchen", ...) to match against.
53
+ *
54
+ * Shared by the employee view's own card and the area view's position-row header + card, so the
55
+ * same position never disagrees on its colour anywhere on the board. */
56
+ export declare function positionColorClass(role: string): string;
57
+ /** Which weekday (0 = Mon) is today, relative to no particular week — used to seed
58
+ * focusDayIdx whenever "today" needs a weekday index rather than a date. */
59
+ export declare function todayWeekdayIdx(): number;
@@ -0,0 +1,9 @@
1
+ import type { FdtoScheduleBreak } from '@/types/schedule';
2
+ import type { WorkSlot } from '../types';
3
+ type BreakSource = FdtoScheduleBreak[] | Pick<WorkSlot, 'breaks' | 'breakMins'> | undefined;
4
+ export declare function breakMinutesOf(source: BreakSource): number;
5
+ /** Net paid minutes. Legacy board slots only have `breakMins`; persisted slots use the richer
6
+ * break array, so both representations pass through this function. */
7
+ export declare function paidMinutesOf(slot: Pick<WorkSlot, 'start' | 'end' | 'breaks' | 'breakMins'>, gross?: number): number;
8
+ export declare function durationBreaksOf(minutes: number | undefined): FdtoScheduleBreak[];
9
+ export {};
@@ -0,0 +1,7 @@
1
+ export declare const RANGE_LEN = 7;
2
+ export declare function isoDateKey(date: Date): string;
3
+ export declare function addDays(date: Date, days: number): Date;
4
+ export declare function mostRecentMonday(from: Date): Date;
5
+ export declare function weekDates(offset: number, from?: Date): Date[];
6
+ export declare function weeksBetween(a: Date, b: Date): number;
7
+ export declare function todayWeekdayIdx(): number;
@@ -0,0 +1,19 @@
1
+ import type { Employee, WorkSlot } from '../types';
2
+ export interface ScheduleCostBreakdown {
3
+ hours: number;
4
+ overtimeHours: number;
5
+ baseCost: number;
6
+ overtimeCost: number;
7
+ totalCost: number;
8
+ }
9
+ export declare function costOfSlot(slot: WorkSlot, rate: number, multiplier: number): {
10
+ hours: number;
11
+ cost: number;
12
+ };
13
+ /** Splits a sequence of paid shift minutes at the employee's contract line. This is the single
14
+ * overtime/cost calculation used by rails and exports; callers provide the applicable pay rate
15
+ * multiplier for each slot. */
16
+ export declare function costOfSlots(employee: Employee, slots: Array<{
17
+ slot: WorkSlot;
18
+ multiplier: number;
19
+ }>): ScheduleCostBreakdown;
@@ -0,0 +1,23 @@
1
+ import type { ScheduleDayNote } from '../types';
2
+ /** Everything a manager authors about a DATE rather than about a shift — the note on its
3
+ * card, whether the venue opens, whether it bills at the holiday rate. Keyed by ISO date
4
+ * (via the board's `dateKey`), not by weekday index: the mockup's flat single-week horizon
5
+ * could use the weekday index directly, but the board pages through weeks, and a note put on
6
+ * this Monday must not reappear on every other Monday. */
7
+ export declare function useScheduleDayMeta(dateKey: (dayIdx: number) => string | null, handlers?: {
8
+ onPersistError?: (message: string) => void;
9
+ }): {
10
+ dayNote: (dayIdx: number) => ScheduleDayNote | null;
11
+ setDayNote: (dayIdx: number, title: string, desc: string) => void;
12
+ clearDayNote: (dayIdx: number) => void;
13
+ isStandingClosedWeekday: (dayIdx: number) => boolean;
14
+ holidayName: (dayIdx: number) => string | null;
15
+ holidayIsAuto: (dayIdx: number) => boolean;
16
+ isPublicHoliday: (dayIdx: number) => boolean;
17
+ holidayRateApplies: (dayIdx: number) => boolean;
18
+ setHolidayNormal: (dayIdx: number, toNormal: boolean) => void;
19
+ setPublicHoliday: (dayIdx: number, on: boolean) => void;
20
+ otRateOn: (dayIdx: number) => number;
21
+ regularRateOn: (dayIdx: number) => number;
22
+ isHoliday: (dayIdx: number) => boolean;
23
+ };
@@ -0,0 +1,11 @@
1
+ import type { DemandPeriod } from '../types';
2
+ import { format12h as t12, formatShortMinutes as minToShort, fromMinutes as minToHHMM, spanMinutes as spanOf, toMinutes as toMin } from './schedule-time';
3
+ export { minToHHMM, minToShort, spanOf, t12, toMin };
4
+ export declare function rangeText(from: number, to: number): string;
5
+ export declare function roleTotalOf(period: DemandPeriod): number;
6
+ /** The unnamed part of a period's headcount. Derived so it cannot disagree with the total. */
7
+ export declare function anyLeftOf(period: DemandPeriod): number;
8
+ export interface ScheduleCoverageAxis {
9
+ from: number;
10
+ to: number;
11
+ }
@@ -0,0 +1,7 @@
1
+ import type { Employee } from '../types';
2
+ /** Adds `positionName` to the employee's own profile — the backend write path a real
3
+ * "existing employee" record has (see `useScheduleAddEmployee.ts`'s `toEmployeeProfileFields`
4
+ * for the same shape, built from the add-employee form instead of a live `Employee`).
5
+ * Fire-and-forget: the local roster already shows the grant, and a failed profile write isn't
6
+ * worth a second error dialog on top of whatever caller-side save this followed. */
7
+ export declare function grantSkillToEmployee(emp: Employee, positionName: string): void;
@@ -0,0 +1,14 @@
1
+ export interface ExportShiftCell {
2
+ note: string;
3
+ shifts: {
4
+ when: string;
5
+ pos: string;
6
+ }[];
7
+ }
8
+ export declare function esc(value: string | number): string;
9
+ export declare function cellText(value: string | ExportShiftCell): string;
10
+ export declare function dayCellLines(value: ExportShiftCell): {
11
+ text: string;
12
+ kind: 'note' | 'when' | 'pos';
13
+ }[];
14
+ export declare function dayHeaderLabel(date: Date): string;
@@ -0,0 +1,16 @@
1
+ export interface ScheduleAnchorRect {
2
+ left: number;
3
+ right: number;
4
+ top: number;
5
+ bottom: number;
6
+ }
7
+ /** Measures the element a popover was opened from. Takes the rect while the anchor is still on
8
+ * screen; a hidden or detached element measures 0×0 and counts as "no anchor". */
9
+ export declare function anchorRectOf(el: Element | null | undefined): ScheduleAnchorRect | null;
10
+ /** Port of HRM V6.2 placePopover(): below the anchor by preference (6px gap), flipped above when
11
+ * there is no room, clamped to the viewport on both edges. Uses the popover's rendered size, so
12
+ * call it once the element is in the DOM. */
13
+ export declare function placePopover(el: HTMLElement, anchor: ScheduleAnchorRect | null): {
14
+ left: number;
15
+ top: number;
16
+ };
@@ -0,0 +1,26 @@
1
+ import type { WorkSlot } from '../types';
2
+ export type ScheduleBreakChoice = 0 | 30 | 60 | 90 | 120 | 'custom';
3
+ export interface ScheduleShiftSegment {
4
+ start: string;
5
+ end: string;
6
+ }
7
+ /** The one break shape that names a clock window rather than just a duration — when present,
8
+ * the card reads as two periods around it, each on its own line, instead of one span that
9
+ * quietly got shorter. Shared by the employee view's own card and the area view's position-row
10
+ * card, so a TIME_RANGE break draws the same split face wherever a shift is shown. */
11
+ export declare function timeRangeBreakOf(sl: WorkSlot): {
12
+ startTime: string;
13
+ endTime: string;
14
+ } | null;
15
+ /** Same face as `t12`, but never drops the minutes — two ranges stacked on a split card need
16
+ * to line up at a glance, and "10am" next to "10:30am" reads as two different units. */
17
+ export declare function t12Full(hhmm: string): string;
18
+ /** A break length that doesn't match one of the presets becomes 'custom', carrying its own
19
+ * minutes/unit back out for the caller to seed its custom-break fields from. */
20
+ export declare function normalizeBreak(mins: number | undefined): {
21
+ choice: ScheduleBreakChoice;
22
+ customMins?: number;
23
+ customUnit?: 'mins' | 'hrs';
24
+ };
25
+ export declare function resolvedBreakMins(choice: ScheduleBreakChoice, customMins: number, customUnit: 'mins' | 'hrs'): number | undefined;
26
+ export declare function segmentHours(seg: ScheduleShiftSegment, breakMins: number): number;
@@ -0,0 +1,8 @@
1
+ /** Shared clock arithmetic for the scheduling board. All spans are minutes from midnight;
2
+ * an end at or before the start is treated as an overnight end on the following day. */
3
+ export declare function toMinutes(value: string): number;
4
+ export declare function fromMinutes(value: number): string;
5
+ export declare function spanMinutes(start: string, end: string): [number, number];
6
+ export declare function durationMinutes(start: string, end: string): number;
7
+ export declare function format12h(value: string): string;
8
+ export declare function formatShortMinutes(value: number): string;
@@ -0,0 +1,7 @@
1
+ import type { Employee, OpenShift } from '../types';
2
+ export { RANGE_LEN, mostRecentMonday, weekDates, weeksBetween } from './schedule-calendar';
3
+ export interface WeekBucket {
4
+ employees: Employee[];
5
+ openShifts: OpenShift[];
6
+ }
7
+ export declare function weekData(offset: number): WeekBucket;
@@ -0,0 +1,9 @@
1
+ /** A long list shown as its first few entries plus "+N more", expandable in place. For chip rows
2
+ * that can run to a hundred items (a person rostered at every outlet), which would otherwise
3
+ * push the rest of the form off screen. */
4
+ export declare function useCollapsedList<T>(items: () => T[], limit?: number): {
5
+ expanded: import("vue").Ref<boolean, boolean>;
6
+ shown: import("vue").ComputedRef<T[]>;
7
+ hiddenCount: import("vue").ComputedRef<number>;
8
+ toggle: () => void;
9
+ };
@@ -0,0 +1,10 @@
1
+ import { useAppStore } from '@feedmepos/mf-remy-panel';
2
+ export interface RemyActivateOptions {
3
+ prompt?: string;
4
+ forceNewConversation?: boolean;
5
+ }
6
+ export interface RemyAppStoreApi {
7
+ store: ReturnType<typeof useAppStore>;
8
+ activate: (options: RemyActivateOptions) => Promise<void>;
9
+ }
10
+ export declare function useRemyAppStore(): RemyAppStoreApi;
@@ -0,0 +1,102 @@
1
+ import type { Employee } from '../types';
2
+ import type { ScheduleBoardApi } from './useScheduleBoard';
3
+ import { type ScheduleAddEmployeeMode, type ScheduleAddEmployeeStep } from './schedule-add-employee-form';
4
+ export type { ScheduleAddEmployeeForm, ScheduleAddEmployeeMode, ScheduleAddEmployeeStep, } from './schedule-add-employee-form';
5
+ /** Add-employee wizard: a "how do you want to add them" step, then one detail form covering
6
+ * identity, locations, pay, scheduling caps, availability, positions and POS access — plus
7
+ * the "select existing POS staff" side dialog the first step can hand off to. */
8
+ export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?: {
9
+ notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
10
+ }): {
11
+ open: import("vue").Ref<boolean, boolean>;
12
+ selectExistingOpen: import("vue").Ref<boolean, boolean>;
13
+ step: import("vue").Ref<ScheduleAddEmployeeStep, ScheduleAddEmployeeStep>;
14
+ mode: import("vue").Ref<ScheduleAddEmployeeMode, ScheduleAddEmployeeMode>;
15
+ form: {
16
+ name: string;
17
+ mobile: string;
18
+ dial: string;
19
+ employment: "full" | "part";
20
+ locations: string[];
21
+ payBasis: "hourly" | "monthly";
22
+ payAmount: string;
23
+ maxHours: string;
24
+ minHours: string;
25
+ otEnabled: boolean;
26
+ otAfterDaily: string;
27
+ maxOtHours: string;
28
+ availDays: boolean[];
29
+ availHours: {
30
+ from: string;
31
+ to: string;
32
+ }[];
33
+ preferences: string;
34
+ primaryPosition: string;
35
+ secondaryPositions: string[];
36
+ seniority: "" | "senior" | "junior";
37
+ passcode: string[];
38
+ masterUser: boolean;
39
+ masterCode: string;
40
+ posAccessEnabled: boolean;
41
+ posRoleId: string;
42
+ };
43
+ sectionId: import("vue").Ref<string, string>;
44
+ isEditing: import("vue").ComputedRef<boolean>;
45
+ editingEmployeeId: import("vue").Ref<number | null, number | null>;
46
+ locOpen: import("vue").Ref<boolean, boolean>;
47
+ secOpen: import("vue").Ref<boolean, boolean>;
48
+ secondaryOptions: import("vue").ComputedRef<string[]>;
49
+ isPart: import("vue").ComputedRef<boolean>;
50
+ dayLit: (index: number) => boolean;
51
+ avLabel: import("vue").ComputedRef<"Weekly availability" | "Time off days">;
52
+ avAllLabel: import("vue").ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
53
+ maxHoursPlaceholder: import("vue").ComputedRef<"Hours per week" | "No cap">;
54
+ otAfterDailyPlaceholder: import("vue").ComputedRef<string>;
55
+ toggleOt: () => void;
56
+ payUnit: import("vue").ComputedRef<"/month" | "/hour">;
57
+ effectiveRate: import("vue").ComputedRef<number>;
58
+ passcodeValue: import("vue").ComputedRef<string>;
59
+ passcodeOk: import("vue").ComputedRef<boolean>;
60
+ currentLocationLabel: import("vue").ComputedRef<string>;
61
+ locationOptions: import("vue").Reactive<string[]>;
62
+ masterCodeError: import("vue").ComputedRef<boolean>;
63
+ isNewUser: import("vue").ComputedRef<boolean>;
64
+ footerHint: import("vue").ComputedRef<"Pick who — this outlet's own pay, position and hours are still set here." | "One short form. Rest days are set on their profile afterwards.">;
65
+ primaryRoleLabel: import("vue").ComputedRef<string>;
66
+ locationsSummary: import("vue").ComputedRef<string>;
67
+ payLine: import("vue").ComputedRef<string>;
68
+ nameError: import("vue").ComputedRef<boolean>;
69
+ passError: import("vue").ComputedRef<boolean>;
70
+ availabilityError: import("vue").ComputedRef<boolean>;
71
+ saving: import("vue").Ref<boolean, boolean>;
72
+ saveError: import("vue").Ref<string | null, string | null>;
73
+ candidatesLoading: import("vue").Ref<boolean, boolean>;
74
+ candidatesError: import("vue").Ref<string | null, string | null>;
75
+ openWizard: (section: string) => void;
76
+ openEditFor: (emp: Employee) => void;
77
+ close: () => void;
78
+ setMode: (m: ScheduleAddEmployeeMode) => void;
79
+ openSelectExisting: () => void;
80
+ closeSelectExisting: () => void;
81
+ pickExisting: (employeeId: string) => Promise<void>;
82
+ next: () => void;
83
+ back: () => void;
84
+ toggleMulti: (which: "loc" | "sec") => void;
85
+ toggleLocation: (location: string) => void;
86
+ removeLocation: (location: string) => void;
87
+ toggleSecondary: (position: string) => void;
88
+ removeSecondary: (position: string) => void;
89
+ setPrimaryPosition: (position: string) => void;
90
+ setPayBasis: (basis: "hourly" | "monthly") => void;
91
+ toggleAvailDay: (index: number) => void;
92
+ availAll: () => void;
93
+ setAvailHour: (index: number, field: "from" | "to", value: string) => void;
94
+ copyAvailHourDown: (index: number) => void;
95
+ setPasscodeDigit: (index: number, value: string) => void;
96
+ generatePasscode: () => void;
97
+ togglePosAccess: () => void;
98
+ setPosRole: (roleId: string) => void;
99
+ posRoleOptions: import("vue").ComputedRef<import("../../../types/role").Role[]>;
100
+ create: () => Promise<boolean>;
101
+ };
102
+ export type ScheduleAddEmployeeApi = ReturnType<typeof useScheduleAddEmployee>;
@@ -0,0 +1,81 @@
1
+ import type { ScheduleBoardApi } from './useScheduleBoard';
2
+ import type { ScheduleDemandApi } from './useScheduleDemand';
3
+ import { type ScheduleAnchorRect } from './schedule-popover-position';
4
+ export interface ScheduleAddPickState {
5
+ open: boolean;
6
+ empId: number | null;
7
+ dayIdx: number | null;
8
+ /** Measured rect of the cell the popup opened from; the popup component places itself from it
9
+ * once rendered (V6.2 placePopover), writing the result to `left`/`top`. */
10
+ anchor: ScheduleAnchorRect | null;
11
+ left: number;
12
+ top: number;
13
+ }
14
+ export interface ScheduleAddPickLeaveOption {
15
+ reason: string;
16
+ swatch: string;
17
+ }
18
+ export interface ScheduleAddPickSuggestion {
19
+ start: string;
20
+ end: string;
21
+ short: number;
22
+ label: string;
23
+ /** "Covers 16:00–22:00 demand" — the demand this offer answers, shown under the label. */
24
+ covers: string;
25
+ title: string;
26
+ }
27
+ /** The "+ Add" quick-pick popover on an employee's empty cell — ported from the mockup's
28
+ * openAddShiftPicker()/renderAddPickList(), scoped to what this board actually has: our one
29
+ * active shift pattern, a fixed leave-reason list, and a demand-gap suggestion, all committed
30
+ * directly (no clash confirmation dialogs — this board has no such infrastructure yet, and none
31
+ * of its existing write paths gate on one either). Leave picks write a full-day approved leave
32
+ * immediately rather than opening a creation form — there's no "book a leave" authoring flow
33
+ * anywhere in this port yet, only the existing pending-request review modal, which assumes the
34
+ * leave already exists. The mockup's "On this day" (join an existing open-shift group) section is
35
+ * left out — it needs split-shift/group-joining machinery this board doesn't model. */
36
+ export declare function useScheduleAddPick(board: ScheduleBoardApi, demand: ScheduleDemandApi, handlers: {
37
+ onCommitted: (message: string) => void;
38
+ onOpenFullEditor: (empId: number, dayIdx: number, slotIndex: number) => void;
39
+ /** The leave editor, on this cell. `reason` is the row's own type, or null for the plain "Leave" row. */
40
+ onOpenLeave: (empId: number, dayIdx: number, reason: string | null) => void;
41
+ }): {
42
+ state: {
43
+ open: boolean;
44
+ empId: number | null;
45
+ dayIdx: number | null;
46
+ anchor: {
47
+ left: number;
48
+ right: number;
49
+ top: number;
50
+ bottom: number;
51
+ } | null;
52
+ left: number;
53
+ top: number;
54
+ };
55
+ query: import("vue").Ref<string, string>;
56
+ parsedRange: import("vue").ComputedRef<{
57
+ start: string;
58
+ end: string;
59
+ } | null>;
60
+ suggested: import("vue").ComputedRef<ScheduleAddPickSuggestion | null>;
61
+ filteredPatterns: import("vue").ComputedRef<{
62
+ key: string;
63
+ label: string;
64
+ start: string;
65
+ end: string;
66
+ color: string;
67
+ active: boolean;
68
+ breakMins: number;
69
+ }[]>;
70
+ filteredLeaves: import("vue").ComputedRef<ScheduleAddPickLeaveOption[]>;
71
+ hasResults: import("vue").ComputedRef<boolean>;
72
+ openFor: (empId: number, dayIdx: number, anchor: HTMLElement) => void;
73
+ close: () => void;
74
+ pickSuggested: () => void;
75
+ pickPattern: (key: string) => void;
76
+ pickTypedRange: (start: string, end: string) => void;
77
+ pickLeave: (reason: string) => void;
78
+ submitQuery: () => void;
79
+ openBlank: () => void;
80
+ };
81
+ export type ScheduleAddPickApi = ReturnType<typeof useScheduleAddPick>;
@@ -0,0 +1,77 @@
1
+ import type { Employee, OpenShift } from '../types';
2
+ import type { ScheduleBoardApi } from './useScheduleBoard';
3
+ export interface ScheduleShiftPart {
4
+ start: string;
5
+ end: string;
6
+ }
7
+ /** One shift on the All-shifts row, whichever way it was authored. A split shift is ONE
8
+ * entry carrying both of its periods — two periods one person works is one shift, and
9
+ * counting it twice made a day of three split shifts report as six. */
10
+ export interface ScheduleRowEntry {
11
+ /** Stable across redraws, so the row can be keyed on it. */
12
+ key: string;
13
+ kind: 'open' | 'emp';
14
+ /** The demand record this came from, when it came from one. */
15
+ open?: OpenShift;
16
+ /** Whoever holds it, or null while it is still asking for somebody. */
17
+ who: Employee | null;
18
+ parts: ScheduleShiftPart[];
19
+ position: string;
20
+ /** A shift with a name of its own ("Weekend cover"), distinct from its position. */
21
+ label?: string;
22
+ filled: boolean;
23
+ hours: number;
24
+ }
25
+ export interface ScheduleStackState {
26
+ open: boolean;
27
+ dayIdx: number | null;
28
+ left: number;
29
+ top: number;
30
+ }
31
+ /** The "Open shifts" row: a pseudo-row above the people holding the shifts nobody is on yet.
32
+ *
33
+ * It used to be the "All shifts" row and it used to LEAD this view, carrying every shift on
34
+ * the day whichever way it was authored. The coverage band has both of those now — and the
35
+ * band measures something this row could not, because a shift with nobody on it contributes
36
+ * zero to coverage, so counting untaken records was never an answer to "is this week staffed".
37
+ *
38
+ * What is left is the job only this row can do. An unassigned shift has no person, so the
39
+ * employee rows have nowhere to draw it; the old row would have shown it alongside every
40
+ * other shift, which is the same cards twice — once here and once on the row of whoever is on
41
+ * them. So the subject narrows to the shifts still waiting for somebody, and the row renders
42
+ * only while at least one exists. That makes it a to-do list rather than furniture: it appears
43
+ * when you author open demand and disappears the moment the last of it is staffed, which is
44
+ * the completion signal the old row had to paint itself green to fake. */
45
+ export declare function useScheduleAllShiftsRow(board: ScheduleBoardApi): {
46
+ dayEntries: (dayIdx: number) => ScheduleRowEntry[];
47
+ dayStack: (dayIdx: number) => {
48
+ entries: ScheduleRowEntry[];
49
+ done: number;
50
+ total: number;
51
+ hours: number;
52
+ allOpen: boolean;
53
+ mixShown: {
54
+ name: string;
55
+ n: number;
56
+ }[];
57
+ mixRest: number;
58
+ title: string;
59
+ };
60
+ summary: import("vue").ComputedRef<{
61
+ count: number;
62
+ meta: string;
63
+ tip: string;
64
+ }>;
65
+ hasPending: import("vue").ComputedRef<boolean>;
66
+ stack: {
67
+ open: boolean;
68
+ dayIdx: number | null;
69
+ left: number;
70
+ top: number;
71
+ };
72
+ stackEntries: import("vue").ComputedRef<ScheduleRowEntry[]>;
73
+ openStack: (dayIdx: number, anchor: HTMLElement) => void;
74
+ closeStack: () => void;
75
+ whenOf: (e: ScheduleRowEntry) => string;
76
+ };
77
+ export type ScheduleAllShiftsRowApi = ReturnType<typeof useScheduleAllShiftsRow>;