@feedmepos/mf-hrm-portal 2.2.5-dev.5 → 2.2.5-dev.7

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 (152) hide show
  1. package/dist/{ApprovalCodeList-DqR6ouRS.js → ApprovalCodeList-dn-WwNAd.js} +4 -4
  2. package/dist/{AuditLogList-CG2BiQX6.js → AuditLogList-BqVp9fxD.js} +18 -17
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C7nMXx8R.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-DnAet2oc.js} +2 -2
  4. package/dist/{EmployeeList-CGZzol7v.js → EmployeeList-BwTJre5k.js} +29 -27
  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-D1fBv1KQ.js → GrantUserList-CZek1r4F.js} +5 -5
  7. package/dist/{Main-BOt-Y1wv.js → Main-CbmA-SYo.js} +9 -9
  8. package/dist/{Main-zg7fbEtx.js → Main-DVA51sj2.js} +2 -2
  9. package/dist/{Main-CFoZot3K.js → Main-MjSYZdOq.js} +5 -5
  10. package/dist/{PermissionSetList-bJpwD62u.js → PermissionSetList-lkHmXhNm.js} +11 -10
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-C4C8Cvf4.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-cFQDQCal.js} +1174 -1173
  12. package/dist/{RoleList-DUVZ7dkO.js → RoleList-BSs0SmFo.js} +7 -7
  13. package/dist/ScheduleGeneralPage-DD9n2TUe.js +242 -0
  14. package/dist/SchedulePage-B0X97zVC.js +10761 -0
  15. package/dist/SchedulePositionPage-BXz1USn3.js +220 -0
  16. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DAHke2rH.js +201 -0
  17. package/dist/SelectFilter-CG13h83-.js +264 -0
  18. package/dist/{TeamMemberList-DAnM-DSd.js → TeamMemberList-Dit_nV6d.js} +36 -34
  19. package/dist/{TimesheetList-5sdcWjEf.js → TimesheetList-B-FlRO7E.js} +54 -53
  20. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-GhPw_mCW.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-DZUJR8K_.js} +2 -2
  21. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  22. package/dist/{app-D-cQzgkr.js → app-BpnOPodL.js} +2947 -2362
  23. package/dist/app.js +1 -1
  24. package/dist/{dayjs.min-DqFS0ebn.js → dayjs.min-4GLfSOGZ.js} +1 -1
  25. package/dist/employee-ChdVnSmd.js +139 -0
  26. package/dist/index-CilJxsY7.js +70 -0
  27. package/dist/{iteration-BjW8Cs9e.js → index-DYoVJQTd.js} +698 -726
  28. package/dist/iteration-CcXrOMQe.js +30 -0
  29. package/dist/{lodash-wjhSWqez.js → lodash-CcFIMCiJ.js} +1 -1
  30. package/dist/{role-CEUcSmA6.js → role-OXCiWTVq.js} +4 -3
  31. package/dist/{rule-Df8LOhxm.js → rule-8iyCO_LZ.js} +71 -70
  32. package/dist/src/api/schedule/index.d.ts +44 -0
  33. package/dist/src/components/layout/AppSidebar.vue.d.ts +2 -0
  34. package/dist/src/components/layout/PortalShell.vue.d.ts +12 -0
  35. package/dist/src/components/layout/withShell.d.ts +14 -0
  36. package/dist/src/router/shared.d.ts +4 -1
  37. package/dist/src/types/schedule.d.ts +232 -0
  38. package/dist/src/views/scheduling/ScheduleGeneralPage.vue.d.ts +4 -0
  39. package/dist/src/views/scheduling/SchedulePage.vue.d.ts +4 -0
  40. package/dist/src/views/scheduling/SchedulePositionPage.vue.d.ts +4 -0
  41. package/dist/src/views/scheduling/components/ScheduleAddEmployeeIdentitySection.vue.d.ts +6 -0
  42. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +6 -0
  43. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModeStep.vue.d.ts +6 -0
  44. package/dist/src/views/scheduling/components/ScheduleAddEmployeePosAccessSection.vue.d.ts +6 -0
  45. package/dist/src/views/scheduling/components/ScheduleAddEmployeePositionsSection.vue.d.ts +6 -0
  46. package/dist/src/views/scheduling/components/ScheduleAddEmployeeSchedulingSection.vue.d.ts +6 -0
  47. package/dist/src/views/scheduling/components/ScheduleAddPickPopover.vue.d.ts +6 -0
  48. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +22 -0
  49. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +34 -0
  50. package/dist/src/views/scheduling/components/ScheduleAssignEmployeePopover.vue.d.ts +6 -0
  51. package/dist/src/views/scheduling/components/ScheduleAutoScheduleModal.vue.d.ts +6 -0
  52. package/dist/src/views/scheduling/components/ScheduleChangeEmployeeModal.vue.d.ts +8 -0
  53. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +24 -0
  54. package/dist/src/views/scheduling/components/ScheduleCostRail.vue.d.ts +8 -0
  55. package/dist/src/views/scheduling/components/ScheduleDateRangePopover.vue.d.ts +6 -0
  56. package/dist/src/views/scheduling/components/ScheduleDayNotePopover.vue.d.ts +6 -0
  57. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +12 -0
  58. package/dist/src/views/scheduling/components/ScheduleDemandRow.vue.d.ts +23 -0
  59. package/dist/src/views/scheduling/components/ScheduleDemandSheet.vue.d.ts +10 -0
  60. package/dist/src/views/scheduling/components/ScheduleDotsIcon.vue.d.ts +2 -0
  61. package/dist/src/views/scheduling/components/ScheduleEmployeeDetailPanel.vue.d.ts +12 -0
  62. package/dist/src/views/scheduling/components/ScheduleEmployeeIdentity.vue.d.ts +17 -0
  63. package/dist/src/views/scheduling/components/ScheduleFilterBar.vue.d.ts +18 -0
  64. package/dist/src/views/scheduling/components/ScheduleGapPopover.vue.d.ts +6 -0
  65. package/dist/src/views/scheduling/components/ScheduleGridHeader.vue.d.ts +18 -0
  66. package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +6 -0
  67. package/dist/src/views/scheduling/components/ScheduleLegendBar.vue.d.ts +6 -0
  68. package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +12 -0
  69. package/dist/src/views/scheduling/components/ScheduleOnboardingWizard.vue.d.ts +6 -0
  70. package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +14 -0
  71. package/dist/src/views/scheduling/components/SchedulePdfPreview.vue.d.ts +6 -0
  72. package/dist/src/views/scheduling/components/SchedulePublishModal.vue.d.ts +8 -0
  73. package/dist/src/views/scheduling/components/ScheduleReviewBar.vue.d.ts +12 -0
  74. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +24 -0
  75. package/dist/src/views/scheduling/components/ScheduleSelectExistingEmployeeModal.vue.d.ts +6 -0
  76. package/dist/src/views/scheduling/components/ScheduleShiftCardMenu.vue.d.ts +12 -0
  77. package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +31 -0
  78. package/dist/src/views/scheduling/components/ScheduleShiftHeadcountEditor.vue.d.ts +6 -0
  79. package/dist/src/views/scheduling/components/ScheduleShiftImpact.vue.d.ts +6 -0
  80. package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +6 -0
  81. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +14 -0
  82. package/dist/src/views/scheduling/components/ScheduleShiftRepeatDaysRow.vue.d.ts +8 -0
  83. package/dist/src/views/scheduling/components/ScheduleShiftSegmentsEditor.vue.d.ts +8 -0
  84. package/dist/src/views/scheduling/components/ScheduleShiftWhoPicker.vue.d.ts +25 -0
  85. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +14 -0
  86. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +16 -0
  87. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +54 -0
  88. package/dist/src/views/scheduling/components/ScheduleStatsRow.vue.d.ts +12 -0
  89. package/dist/src/views/scheduling/components/ScheduleSwapShiftsModal.vue.d.ts +8 -0
  90. package/dist/src/views/scheduling/components/ScheduleTimePickerPopover.vue.d.ts +6 -0
  91. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +22 -0
  92. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +67 -0
  93. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +38 -0
  94. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +29 -0
  95. package/dist/src/views/scheduling/composables/schedule-employee-profile.d.ts +7 -0
  96. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +14 -0
  97. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +10 -0
  98. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +86 -0
  99. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +66 -0
  100. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +77 -0
  101. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +50 -0
  102. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +18 -0
  103. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +113 -0
  104. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +136 -0
  105. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +415 -0
  106. package/dist/src/views/scheduling/composables/useScheduleCellState.d.ts +27 -0
  107. package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +18 -0
  108. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +17 -0
  109. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +43 -0
  110. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +48 -0
  111. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +82 -0
  112. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +68 -0
  113. package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +45 -0
  114. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +139 -0
  115. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +22 -0
  116. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +32 -0
  117. package/dist/src/views/scheduling/composables/useScheduleEmployeeProfile.d.ts +16 -0
  118. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +26 -0
  119. package/dist/src/views/scheduling/composables/useScheduleFilterBar.d.ts +14 -0
  120. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +80 -0
  121. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +20 -0
  122. package/dist/src/views/scheduling/composables/useScheduleLegend.d.ts +15 -0
  123. package/dist/src/views/scheduling/composables/useScheduleLegendBar.d.ts +35 -0
  124. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +179 -0
  125. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +23 -0
  126. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +19 -0
  127. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +32 -0
  128. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +91 -0
  129. package/dist/src/views/scheduling/composables/useScheduleRangeCalendar.d.ts +18 -0
  130. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +183 -0
  131. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +54 -0
  132. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +18 -0
  133. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +225 -0
  134. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +174 -0
  135. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +20 -0
  136. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +25 -0
  137. package/dist/src/views/scheduling/composables/useScheduleTimePicker.d.ts +44 -0
  138. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +10 -0
  139. package/dist/src/views/scheduling/data.d.ts +105 -0
  140. package/dist/src/views/scheduling/locales/index.d.ts +496 -0
  141. package/dist/src/views/scheduling/schedule-store.d.ts +116 -0
  142. package/dist/src/views/scheduling/types.d.ts +311 -0
  143. package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +2 -2
  144. package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +2 -2
  145. package/dist/style.css +1 -1
  146. package/dist/tsconfig.app.tsbuildinfo +1 -1
  147. package/dist/{useReportPermissions-4wm7pJcK.js → useReportPermissions-C3fuFTUC.js} +3 -3
  148. package/dist/useScheduleOutlet-TPZJHgSY.js +546 -0
  149. package/dist/useSchedulePositions-DCkaKHQm.js +103 -0
  150. package/package.json +1 -1
  151. package/dist/SelectFilter-ATOm0hdn.js +0 -269
  152. package/dist/employee-DvvnCQMK.js +0 -204
@@ -0,0 +1,6 @@
1
+ import type { ScheduleExportApi } from '../composables/useScheduleExport';
2
+ type __VLS_Props = {
3
+ exportApi: ScheduleExportApi;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { SchedulePublishApi } from '../composables/useSchedulePublish';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ publish: SchedulePublishApi;
6
+ };
7
+ 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>;
8
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
2
+ type __VLS_Props = {
3
+ autoSchedule: ScheduleAutoScheduleApi;
4
+ };
5
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
+ applied: (count: number) => any;
7
+ appliedAndPublish: (count: number) => any;
8
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
9
+ onApplied?: ((count: number) => any) | undefined;
10
+ onAppliedAndPublish?: ((count: number) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,24 @@
1
+ /** One row of the menu. `group` heads the rows that carry it — consecutive options sharing
2
+ * a group are drawn under one heading, the way an `<optgroup>` would. A disabled option is a
3
+ * statement rather than a choice ("No position yet" is the field saying the catalogue is
4
+ * empty), so it is dimmed and inert rather than offered and refused. */
5
+ export interface ScheduleSelectOption {
6
+ value: string;
7
+ label: string;
8
+ disabled?: boolean;
9
+ group?: string;
10
+ }
11
+ declare const _default: import("vue").DefineComponent<{
12
+ modelValue: string;
13
+ options: ScheduleSelectOption[];
14
+ disabled?: boolean;
15
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ "update:modelValue": (value: string) => any;
17
+ }, string, import("vue").PublicProps, Readonly<{
18
+ modelValue: string;
19
+ options: ScheduleSelectOption[];
20
+ disabled?: boolean;
21
+ }> & Readonly<{
22
+ "onUpdate:modelValue"?: ((value: string) => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
24
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { useScheduleAddEmployee } from '../composables/useScheduleAddEmployee';
2
+ type __VLS_Props = {
3
+ wizard: ReturnType<typeof useScheduleAddEmployee>;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleShiftActionsApi } from '../composables/useScheduleShiftActions';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ actions: ScheduleShiftActionsApi;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ editShift: (empId: number, dayIdx: number) => any;
9
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
11
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,31 @@
1
+ import type { DaySlot, Proposal } from '../types';
2
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ slot: DaySlot;
6
+ empId: number;
7
+ dayIdx: number;
8
+ /** Position in the VISIBLE column order — month-edge is a neighbour comparison. */
9
+ colIndex: number;
10
+ proposal?: Proposal | null;
11
+ };
12
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
13
+ drop: (empId: number, dayIdx: number, ev: DragEvent) => any;
14
+ addShift: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
15
+ editShift: (empId: number, dayIdx: number) => any;
16
+ editLeave: (empId: number, dayIdx: number) => any;
17
+ dragStart: (empId: number, dayIdx: number, ev: DragEvent) => any;
18
+ dragEnd: () => any;
19
+ openMenu: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
20
+ toggleProposal: (id: number) => any;
21
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
22
+ onDrop?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
23
+ onAddShift?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
24
+ onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
25
+ onEditLeave?: ((empId: number, dayIdx: number) => any) | undefined;
26
+ onDragStart?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
27
+ onDragEnd?: (() => any) | undefined;
28
+ onOpenMenu?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
29
+ onToggleProposal?: ((id: number) => any) | undefined;
30
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
31
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
2
+ type __VLS_Props = {
3
+ popover: ScheduleShiftPopoverApi;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
2
+ type __VLS_Props = {
3
+ popover: ScheduleShiftPopoverApi;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
2
+ type __VLS_Props = {
3
+ popover: ScheduleShiftPopoverApi;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
3
+ import type { ScheduleTimePickerApi } from '../composables/useScheduleTimePicker';
4
+ type __VLS_Props = {
5
+ board: ScheduleBoardApi;
6
+ popover: ScheduleShiftPopoverApi;
7
+ timePicker: ScheduleTimePickerApi;
8
+ };
9
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
10
+ swap: (empId: number, dayIdx: number) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onSwap?: ((empId: number, dayIdx: number) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ popover: ScheduleShiftPopoverApi;
6
+ };
7
+ 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>;
8
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
2
+ import { type ScheduleTimePickerApi } from '../composables/useScheduleTimePicker';
3
+ type __VLS_Props = {
4
+ popover: ScheduleShiftPopoverApi;
5
+ timePicker: ScheduleTimePickerApi;
6
+ };
7
+ 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>;
8
+ export default _default;
@@ -0,0 +1,25 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleShiftPopoverApi } from '../composables/useScheduleShiftPopover';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ popover: ScheduleShiftPopoverApi;
6
+ /** "Empty shift — leave it open" reads as a real option when this shift is free to stay
7
+ * unstaffed. A shift authored to answer a specific coverage gap has no such reading — it
8
+ * does nothing for that gap unstaffed — so its caller passes a placeholder that asks
9
+ * for a pick instead of offering to skip one. */
10
+ placeholder?: string;
11
+ /** Pairs with the placeholder above: the blank option itself becomes unpickable, so
12
+ * there's no way back to "nobody" once this select is showing. */
13
+ forceChoice?: boolean;
14
+ /** In the header this picker IS the heading — a name-sized control with an avatar next
15
+ * to it. Reused lower down as one field among Hours and Headcount, it has to take
16
+ * their treatment instead: a bordered, row-sized select with no avatar, since nobody
17
+ * is picked yet on a shift still being created. */
18
+ compact?: boolean;
19
+ };
20
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
21
+ placeholder: string;
22
+ compact: boolean;
23
+ forceChoice: boolean;
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleAllShiftsRowApi } from '../composables/useScheduleAllShiftsRow';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ row: ScheduleAllShiftsRowApi;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ editShift: (empId: number, dayIdx: number) => any;
9
+ openAssign: (openId: number) => any;
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
12
+ onOpenAssign?: ((openId: number) => any) | undefined;
13
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
14
+ export default _default;
@@ -0,0 +1,16 @@
1
+ import type { ScheduleStaffRailApi } from '../composables/useScheduleStaffRail';
2
+ import type { ScheduleAreaDragDropApi } from '../composables/useScheduleAreaDragDrop';
3
+ type __VLS_Props = {
4
+ rail: ScheduleStaffRailApi;
5
+ dragDrop: ScheduleAreaDragDropApi;
6
+ };
7
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ addEmployee: () => any;
9
+ jumpToOpen: () => any;
10
+ openEmployee: (empId: number) => any;
11
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
12
+ onAddEmployee?: (() => any) | undefined;
13
+ onJumpToOpen?: (() => any) | undefined;
14
+ onOpenEmployee?: ((empId: number) => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ export default _default;
@@ -0,0 +1,54 @@
1
+ import type { Proposal } from '../types';
2
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
3
+ import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
4
+ import type { ScheduleOpenShiftCardApi } from '../composables/useScheduleOpenShiftCard';
5
+ import type { ScheduleAllShiftsRowApi } from '../composables/useScheduleAllShiftsRow';
6
+ import type { ScheduleDemandRowApi } from '../composables/useScheduleDemandRow';
7
+ type __VLS_Props = {
8
+ board: ScheduleBoardApi;
9
+ roster: ScheduleRosterApi;
10
+ openShiftCard: ScheduleOpenShiftCardApi;
11
+ allShiftsRow: ScheduleAllShiftsRowApi;
12
+ demandRow: ScheduleDemandRowApi;
13
+ proposalAt?: (empId: number, dayIdx: number) => Proposal | undefined;
14
+ };
15
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ addShift: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
17
+ editShift: (empId: number, dayIdx: number) => any;
18
+ editLeave: (empId: number, dayIdx: number) => any;
19
+ dragEnd: () => any;
20
+ toggleProposal: (id: number) => any;
21
+ openAssign: (openId: number) => any;
22
+ openOpenShiftMenu: (openId: number, anchor: HTMLElement) => any;
23
+ addOpenShift: (dayIdx: number) => any;
24
+ segEnter: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
25
+ segLeave: () => any;
26
+ segClick: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
27
+ segFocus: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
28
+ openEmployeeMenu: (empId: number) => any;
29
+ dragShiftStart: (empId: number, dayIdx: number, ev: DragEvent) => any;
30
+ dropOnCell: (empId: number, dayIdx: number, ev: DragEvent) => any;
31
+ openCardMenu: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
32
+ addEmployee: () => any;
33
+ openDemandSheet: (dayIdx: number) => any;
34
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
35
+ onAddShift?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
36
+ onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
37
+ onEditLeave?: ((empId: number, dayIdx: number) => any) | undefined;
38
+ onDragEnd?: (() => any) | undefined;
39
+ onToggleProposal?: ((id: number) => any) | undefined;
40
+ onOpenAssign?: ((openId: number) => any) | undefined;
41
+ onOpenOpenShiftMenu?: ((openId: number, anchor: HTMLElement) => any) | undefined;
42
+ onAddOpenShift?: ((dayIdx: number) => any) | undefined;
43
+ onSegEnter?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
44
+ onSegLeave?: (() => any) | undefined;
45
+ onSegClick?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
46
+ onSegFocus?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
47
+ onOpenEmployeeMenu?: ((empId: number) => any) | undefined;
48
+ onDragShiftStart?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
49
+ onDropOnCell?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
50
+ onOpenCardMenu?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
51
+ onAddEmployee?: (() => any) | undefined;
52
+ onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
53
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
54
+ export default _default;
@@ -0,0 +1,12 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleCostRailApi } from '../composables/useScheduleCostRail';
3
+ import type { ScheduleStatsRowApi } from '../composables/useScheduleStatsRow';
4
+ import type { ScheduleViewMode } from '../composables/useScheduleFilterBar';
5
+ type __VLS_Props = {
6
+ board: ScheduleBoardApi;
7
+ costRail: ScheduleCostRailApi;
8
+ stats: ScheduleStatsRowApi;
9
+ mode: ScheduleViewMode;
10
+ };
11
+ 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
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleShiftActionsApi } from '../composables/useScheduleShiftActions';
3
+ type __VLS_Props = {
4
+ board: ScheduleBoardApi;
5
+ actions: ScheduleShiftActionsApi;
6
+ };
7
+ 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>;
8
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { ScheduleTimePickerApi } from '../composables/useScheduleTimePicker';
2
+ type __VLS_Props = {
3
+ timePicker: ScheduleTimePickerApi;
4
+ };
5
+ 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>;
6
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
2
+ import type { ScheduleTopbarApi } from '../composables/useScheduleTopbar';
3
+ import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
4
+ import type { ScheduleCopyWeekApi } from '../composables/useScheduleCopyWeek';
5
+ import type { ScheduleExportApi } from '../composables/useScheduleExport';
6
+ type __VLS_Props = {
7
+ board: ScheduleBoardApi;
8
+ topbar: ScheduleTopbarApi;
9
+ autoSchedule: ScheduleAutoScheduleApi;
10
+ copyWeek: ScheduleCopyWeekApi;
11
+ exportApi: ScheduleExportApi;
12
+ };
13
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
14
+ "dev-reset": () => any;
15
+ "sched-status-click": () => any;
16
+ "clear-shifts": () => any;
17
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ "onDev-reset"?: (() => any) | undefined;
19
+ "onSched-status-click"?: (() => any) | undefined;
20
+ "onClear-shifts"?: (() => any) | undefined;
21
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ export default _default;
@@ -0,0 +1,67 @@
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
+ otAfterDaily: string;
15
+ maxOtHours: string;
16
+ /** For a part-timer: days they CAN work. For a full-timer: days they're OFF — the
17
+ * mockup inverts the same array's meaning by employment type. */
18
+ availDays: boolean[];
19
+ availHours: EmployeeAvailHours[];
20
+ preferences: string;
21
+ primaryPosition: string;
22
+ secondaryPositions: string[];
23
+ seniority: '' | 'senior' | 'junior';
24
+ passcode: string[];
25
+ masterUser: boolean;
26
+ }
27
+ /** A salaried month, for converting a monthly figure into the hourly one the cost rail
28
+ * actually reads. Ported verbatim from the mockup's MONTH_HOURS. */
29
+ export declare const MONTH_HOURS = 173;
30
+ /** A freshly-ticked worked day defaults to the whole day rather than the outlet's current
31
+ * trading hours — trading hours can change, and narrowing a person's stated availability to
32
+ * whatever the outlet happens to trade today isn't something this form should assume for them.
33
+ * `23:59`, not `24:00`: a part-timer's per-day fields are native `<input type="time">`s, which
34
+ * only accept `00:00`–`23:59` — `24:00` would render as blank there despite being a valid
35
+ * `FdtoScheduleTime` on the wire. */
36
+ export declare function defaultAvailHours(): EmployeeAvailHours;
37
+ export declare function blankForm(): ScheduleAddEmployeeForm;
38
+ /** Coverage and Auto-Schedule are still authored per role, so a role is derived from the
39
+ * primary position rather than asked for twice. Unlike position, Employee.role is one of a
40
+ * fixed small set the grid groups by, so an unrecognised (or unset) position falls back to
41
+ * the first known role instead of leaving the record without one. */
42
+ export declare function roleFromPosition(position: string): string;
43
+ export declare function generateCode(): string;
44
+ /** `raw` is typed `string` because that's the form field's declared type, but Vue 3 casts
45
+ * `v-model` on an `<input type="number">` to an actual `number` regardless — the DOM does this
46
+ * itself, independent of the `.number` modifier, so the runtime value disagrees with the type
47
+ * the moment someone types a digit. `String()` first is what makes `.trim()` safe either way. */
48
+ export declare function parsePositiveInt(raw: string, min: number, max: number): number | undefined;
49
+ export declare function parseNonNegativeInt(raw: string, max: number): number | undefined;
50
+ export declare function initials(name: string): string;
51
+ export declare function isPartTimeForm(form: ScheduleAddEmployeeForm): boolean;
52
+ /** `availDays[i]` always means "is this a working day" — the same convention the board model
53
+ * and `ScheduleEmployeeDetailPanel` read (a day off is one marked NOT worked), regardless of
54
+ * employment type. Only the full-time TOGGLE BUTTON is framed as "mark a day off" rather than
55
+ * "mark a work day" — see `useScheduleAddEmployee`'s `dayLit`, which flips this value for
56
+ * that button's pressed state without touching what's actually stored. */
57
+ export declare function dayIsWorkedInForm(form: ScheduleAddEmployeeForm, i: number): boolean;
58
+ /** Days this form currently marks as worked, converted to Mongo's weekday convention. */
59
+ export declare function availabilityPayload(form: ScheduleAddEmployeeForm): Array<{
60
+ dayOfWeek: number;
61
+ start: string;
62
+ end: string;
63
+ }>;
64
+ /** The EmployeeProfile fields `createExisting` and `updateExisting` both send — everything but
65
+ * `employeeId`, which only the create path has (an update targets one already known from the
66
+ * URL). Shared here so the two payloads cannot silently drift apart. */
67
+ export declare function toEmployeeProfileFields(form: ScheduleAddEmployeeForm, name: string, payAmountNumber: number): FdtoScheduleUpdateEmployeeProfileReq;
@@ -0,0 +1,38 @@
1
+ import type { DaySlot, Employee, LeaveSlot, WorkSlot } from '../types';
2
+ import type { FdtoScheduleSaveAssignmentReq } from '@/types/schedule';
3
+ /** dayjs-free local-date key — matches on the browser's local Y/M/D, not UTC, so this stays
4
+ * correct regardless of timezone. */
5
+ export declare function isoDateKey(d: Date): string;
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
+ /** A WorkSlot, in the shape ShiftAssignments actually stores. `pending` is the only status
10
+ * this board's own writers ever set on a fresh slot (see commitShift's callers) — `ot` is
11
+ * derived at cost-rail time, never authored, so it has nowhere sensible to map but PUBLISHED. */
12
+ export declare function toAssignmentReq(employeeId: string, date: string, slot: WorkSlot): FdtoScheduleSaveAssignmentReq;
13
+ /** Which coverage-position (a RULES.coverage.full key, e.g. 'grill', 'customer service') a
14
+ * work slot's `role` counts toward for area-view grouping and cost-by-position breakdowns.
15
+ * The shift popover's "Position needed" field writes a coverage-position key directly into
16
+ * `role` for anything authored through it — so a role that's already a coverage key is
17
+ * used as-is. Seed data instead recorded a station label ('FOH', 'Kitchen', ...), which
18
+ * ROLE_POSITIONS translates to that station's first/primary position. This can't tell a
19
+ * Kitchen employee's grill shifts apart from their prep shifts when the seed data only
20
+ * ever recorded the station — that distinction only exists once a shift is authored (or
21
+ * re-saved) through the popover, which does record the specific position. */
22
+ export declare function positionKeyOf(role: string): string;
23
+ /** The hours this employee is contracted to in a week — what "18h / 44h" measures against.
24
+ * Stated per person on their own profile now that ScheduleSettings carries pay rates alone, so
25
+ * there is no venue-wide full/part pair to fall back to: somebody nobody has agreed hours with
26
+ * reads 0, which is the truth rather than a default they never signed. */
27
+ export declare function contractCapFor(emp: Employee): number;
28
+ /** Whether `hours` runs past what this person is contracted to.
29
+ *
30
+ * A cap of 0 means no hours were ever agreed, which is NOT a contract of zero hours: read
31
+ * naively, `hours > 0` makes every rostered minute overtime, flags everybody on the cost rail's
32
+ * over-contract list and makes copy-week refuse every shift. An unknown limit cannot be
33
+ * exceeded, so it is treated as no limit and the question is answered false. */
34
+ export declare function overContract(emp: Employee, hours: number): boolean;
35
+ export declare function isPartTime(emp: Employee): boolean;
36
+ /** Which weekday (0 = Mon) is today, relative to no particular week — used to seed
37
+ * focusDayIdx whenever "today" needs a weekday index rather than a date. */
38
+ export declare function todayWeekdayIdx(): number;
@@ -0,0 +1,29 @@
1
+ import { type Ref } from 'vue';
2
+ import type { Employee, ScheduleDayNote } from '../types';
3
+ /** Everything a manager authors about a DATE rather than about a shift — the note on its
4
+ * card, whether the venue opens, whether it bills at the holiday rate. Keyed by ISO date
5
+ * (via the board's `dateKey`), not by weekday index: the mockup's flat single-week horizon
6
+ * could use the weekday index directly, but the board pages through weeks, and a note put on
7
+ * this Monday must not reappear on every other Monday. */
8
+ export declare function useScheduleDayMeta(employees: Ref<Employee[]>, dateKey: (dayIdx: number) => string | null, handlers?: {
9
+ onPersistError?: (message: string) => void;
10
+ }): {
11
+ dayNote: (dayIdx: number) => ScheduleDayNote | null;
12
+ setDayNote: (dayIdx: number, title: string, desc: string) => void;
13
+ clearDayNote: (dayIdx: number) => void;
14
+ toggleClosed: (dayIdx: number) => {
15
+ closed: boolean;
16
+ rostered: number;
17
+ };
18
+ isManuallyClosed: (dayIdx: number) => boolean;
19
+ isStandingClosedWeekday: (dayIdx: number) => boolean;
20
+ holidayName: (dayIdx: number) => string | null;
21
+ holidayIsAuto: (dayIdx: number) => boolean;
22
+ isPublicHoliday: (dayIdx: number) => boolean;
23
+ holidayRateApplies: (dayIdx: number) => boolean;
24
+ setHolidayNormal: (dayIdx: number, toNormal: boolean) => void;
25
+ setPublicHoliday: (dayIdx: number, on: boolean) => void;
26
+ otRateOn: (dayIdx: number) => number;
27
+ regularRateOn: (dayIdx: number) => number;
28
+ isHoliday: (dayIdx: number) => boolean;
29
+ };
@@ -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 type ScheduleBreakChoice = 0 | 30 | 60 | 90 | 120 | 'custom';
2
+ export interface ScheduleShiftSegment {
3
+ start: string;
4
+ end: string;
5
+ }
6
+ /** A break length that doesn't match one of the presets becomes 'custom', carrying its own
7
+ * minutes/unit back out for the caller to seed its custom-break fields from. */
8
+ export declare function normalizeBreak(mins: number | undefined): {
9
+ choice: ScheduleBreakChoice;
10
+ customMins?: number;
11
+ customUnit?: 'mins' | 'hrs';
12
+ };
13
+ export declare function resolvedBreakMins(choice: ScheduleBreakChoice, customMins: number, customUnit: 'mins' | 'hrs'): number | undefined;
14
+ export declare function segmentHours(seg: ScheduleShiftSegment, breakMins: number): number;
@@ -0,0 +1,10 @@
1
+ import type { Employee, OpenShift } from '../types';
2
+ export declare const RANGE_LEN = 7;
3
+ export declare function mostRecentMonday(from: Date): Date;
4
+ export declare function weekDates(offset: number): Date[];
5
+ export declare function weeksBetween(a: Date, b: Date): number;
6
+ export interface WeekBucket {
7
+ employees: Employee[];
8
+ openShifts: OpenShift[];
9
+ }
10
+ export declare function weekData(offset: number): WeekBucket;
@@ -0,0 +1,86 @@
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): {
9
+ open: import("vue").Ref<boolean, boolean>;
10
+ selectExistingOpen: import("vue").Ref<boolean, boolean>;
11
+ step: import("vue").Ref<ScheduleAddEmployeeStep, ScheduleAddEmployeeStep>;
12
+ mode: import("vue").Ref<ScheduleAddEmployeeMode, ScheduleAddEmployeeMode>;
13
+ form: {
14
+ name: string;
15
+ mobile: string;
16
+ dial: string;
17
+ employment: "full" | "part";
18
+ locations: string[];
19
+ payBasis: "hourly" | "monthly";
20
+ payAmount: string;
21
+ maxHours: string;
22
+ otAfterDaily: string;
23
+ maxOtHours: string;
24
+ availDays: boolean[];
25
+ availHours: {
26
+ from: string;
27
+ to: string;
28
+ }[];
29
+ preferences: string;
30
+ primaryPosition: string;
31
+ secondaryPositions: string[];
32
+ seniority: "" | "senior" | "junior";
33
+ passcode: string[];
34
+ masterUser: boolean;
35
+ };
36
+ sectionId: import("vue").Ref<string, string>;
37
+ isEditing: import("vue").ComputedRef<boolean>;
38
+ locOpen: import("vue").Ref<boolean, boolean>;
39
+ secOpen: import("vue").Ref<boolean, boolean>;
40
+ secondaryOptions: import("vue").ComputedRef<string[]>;
41
+ isPart: import("vue").ComputedRef<boolean>;
42
+ dayLit: (i: number) => boolean;
43
+ avLabel: import("vue").ComputedRef<"Weekly availability" | "Time off days">;
44
+ avAllLabel: import("vue").ComputedRef<"Clear all" | "Select all" | "No days off" | "Every day off">;
45
+ maxHoursPlaceholder: import("vue").ComputedRef<"Hours per week" | "No cap">;
46
+ otAfterDailyPlaceholder: import("vue").ComputedRef<string>;
47
+ payUnit: import("vue").ComputedRef<"/month" | "/hour">;
48
+ effectiveRate: import("vue").ComputedRef<number>;
49
+ passcodeValue: import("vue").ComputedRef<string>;
50
+ passcodeOk: import("vue").ComputedRef<boolean>;
51
+ 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.">;
52
+ primaryRoleLabel: import("vue").ComputedRef<string>;
53
+ locationsSummary: import("vue").ComputedRef<string>;
54
+ payLine: import("vue").ComputedRef<string>;
55
+ nameError: import("vue").ComputedRef<boolean>;
56
+ passError: import("vue").ComputedRef<boolean>;
57
+ availabilityError: import("vue").ComputedRef<boolean>;
58
+ saving: import("vue").Ref<boolean, boolean>;
59
+ saveError: import("vue").Ref<string | null, string | null>;
60
+ candidatesLoading: import("vue").Ref<boolean, boolean>;
61
+ candidatesError: import("vue").Ref<string | null, string | null>;
62
+ openWizard: (section: string) => void;
63
+ openEditFor: (emp: Employee) => void;
64
+ close: () => void;
65
+ setMode: (m: ScheduleAddEmployeeMode) => void;
66
+ openSelectExisting: () => void;
67
+ closeSelectExisting: () => void;
68
+ pickExisting: (employeeId: string) => void;
69
+ next: () => void;
70
+ back: () => void;
71
+ toggleMulti: (which: "loc" | "sec") => void;
72
+ toggleLocation: (loc: string) => void;
73
+ removeLocation: (loc: string) => void;
74
+ toggleSecondary: (pos: string) => void;
75
+ removeSecondary: (pos: string) => void;
76
+ setPrimaryPosition: (pos: string) => void;
77
+ setPayBasis: (basis: "hourly" | "monthly") => void;
78
+ toggleAvailDay: (i: number) => void;
79
+ availAll: () => void;
80
+ setAvailHour: (i: number, field: "from" | "to", value: string) => void;
81
+ copyAvailHourDown: (i: number) => void;
82
+ setPasscodeDigit: (i: number, value: string) => void;
83
+ generatePasscode: () => void;
84
+ create: () => Promise<boolean>;
85
+ };
86
+ export type ScheduleAddEmployeeApi = ReturnType<typeof useScheduleAddEmployee>;