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

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-D0B_X3Sf.js → ApprovalCodeList-DqR6ouRS.js} +4 -4
  2. package/dist/{AuditLogList-D9anf4YQ.js → AuditLogList-CG2BiQX6.js} +17 -18
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-4oENMRO3.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C7nMXx8R.js} +2 -2
  4. package/dist/{EmployeeList-DREDu3Ou.js → EmployeeList-CGZzol7v.js} +27 -29
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-DPT2FoIc.js} +1 -1
  6. package/dist/{GrantUserList-CLDshEN9.js → GrantUserList-D1fBv1KQ.js} +5 -5
  7. package/dist/{Main-lqlb8tPw.js → Main-BOt-Y1wv.js} +9 -9
  8. package/dist/{Main-QhQxU593.js → Main-CFoZot3K.js} +5 -5
  9. package/dist/{Main-DtMaG42L.js → Main-zg7fbEtx.js} +2 -2
  10. package/dist/{PermissionSetList-BK8yBpJJ.js → PermissionSetList-bJpwD62u.js} +10 -11
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-uSdvH81B.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-C4C8Cvf4.js} +911 -912
  12. package/dist/{RoleList-D6AX6BqB.js → RoleList-DUVZ7dkO.js} +7 -7
  13. package/dist/SelectFilter-ATOm0hdn.js +269 -0
  14. package/dist/{TeamMemberList-BM5JoR6J.js → TeamMemberList-DAnM-DSd.js} +34 -36
  15. package/dist/{TimesheetList-Ch_f_PD5.js → TimesheetList-5sdcWjEf.js} +53 -54
  16. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-CxqxqwyD.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-GhPw_mCW.js} +2 -2
  17. package/dist/{app-tDHL6k4G.js → app-D-cQzgkr.js} +2299 -2884
  18. package/dist/app.js +1 -1
  19. package/dist/{dayjs.min-B_XWc0Hu.js → dayjs.min-DqFS0ebn.js} +1 -1
  20. package/dist/employee-DvvnCQMK.js +204 -0
  21. package/dist/{index-jxRluZiW.js → iteration-BjW8Cs9e.js} +726 -698
  22. package/dist/{lodash-D5vM3paU.js → lodash-wjhSWqez.js} +1 -1
  23. package/dist/{role-7ccipEEe.js → role-CEUcSmA6.js} +3 -4
  24. package/dist/{rule-7faruCdz.js → rule-Df8LOhxm.js} +70 -71
  25. package/dist/src/router/shared.d.ts +1 -4
  26. package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +2 -2
  27. package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +2 -2
  28. package/dist/style.css +1 -1
  29. package/dist/tsconfig.app.tsbuildinfo +1 -1
  30. package/dist/{useReportPermissions-FieO4EAD.js → useReportPermissions-4wm7pJcK.js} +3 -3
  31. package/package.json +1 -1
  32. package/dist/ScheduleGeneralPage-DAECTCDu.js +0 -242
  33. package/dist/SchedulePage-CdFR7JuO.js +0 -10751
  34. package/dist/SchedulePositionPage-DTtKg0sx.js +0 -220
  35. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-BiuUrr50.js +0 -199
  36. package/dist/SelectFilter-CG13h83-.js +0 -264
  37. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
  38. package/dist/employee-Bs_2vqBY.js +0 -139
  39. package/dist/index-Cz2b95YF.js +0 -70
  40. package/dist/iteration-CcXrOMQe.js +0 -30
  41. package/dist/src/api/schedule/index.d.ts +0 -44
  42. package/dist/src/components/layout/AppSidebar.vue.d.ts +0 -2
  43. package/dist/src/components/layout/PortalShell.vue.d.ts +0 -12
  44. package/dist/src/components/layout/withShell.d.ts +0 -14
  45. package/dist/src/types/schedule.d.ts +0 -232
  46. package/dist/src/views/scheduling/ScheduleGeneralPage.vue.d.ts +0 -4
  47. package/dist/src/views/scheduling/SchedulePage.vue.d.ts +0 -4
  48. package/dist/src/views/scheduling/SchedulePositionPage.vue.d.ts +0 -4
  49. package/dist/src/views/scheduling/components/ScheduleAddEmployeeIdentitySection.vue.d.ts +0 -6
  50. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +0 -6
  51. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModeStep.vue.d.ts +0 -6
  52. package/dist/src/views/scheduling/components/ScheduleAddEmployeePosAccessSection.vue.d.ts +0 -6
  53. package/dist/src/views/scheduling/components/ScheduleAddEmployeePositionsSection.vue.d.ts +0 -6
  54. package/dist/src/views/scheduling/components/ScheduleAddEmployeeSchedulingSection.vue.d.ts +0 -6
  55. package/dist/src/views/scheduling/components/ScheduleAddPickPopover.vue.d.ts +0 -6
  56. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
  57. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -34
  58. package/dist/src/views/scheduling/components/ScheduleAssignEmployeePopover.vue.d.ts +0 -6
  59. package/dist/src/views/scheduling/components/ScheduleAutoScheduleModal.vue.d.ts +0 -6
  60. package/dist/src/views/scheduling/components/ScheduleChangeEmployeeModal.vue.d.ts +0 -8
  61. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +0 -24
  62. package/dist/src/views/scheduling/components/ScheduleCostRail.vue.d.ts +0 -8
  63. package/dist/src/views/scheduling/components/ScheduleDateRangePopover.vue.d.ts +0 -6
  64. package/dist/src/views/scheduling/components/ScheduleDayNotePopover.vue.d.ts +0 -6
  65. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +0 -12
  66. package/dist/src/views/scheduling/components/ScheduleDemandRow.vue.d.ts +0 -23
  67. package/dist/src/views/scheduling/components/ScheduleDemandSheet.vue.d.ts +0 -10
  68. package/dist/src/views/scheduling/components/ScheduleDotsIcon.vue.d.ts +0 -2
  69. package/dist/src/views/scheduling/components/ScheduleEmployeeDetailPanel.vue.d.ts +0 -12
  70. package/dist/src/views/scheduling/components/ScheduleEmployeeIdentity.vue.d.ts +0 -17
  71. package/dist/src/views/scheduling/components/ScheduleFilterBar.vue.d.ts +0 -18
  72. package/dist/src/views/scheduling/components/ScheduleGapPopover.vue.d.ts +0 -6
  73. package/dist/src/views/scheduling/components/ScheduleGridHeader.vue.d.ts +0 -18
  74. package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +0 -6
  75. package/dist/src/views/scheduling/components/ScheduleLegendBar.vue.d.ts +0 -6
  76. package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +0 -12
  77. package/dist/src/views/scheduling/components/ScheduleOnboardingWizard.vue.d.ts +0 -6
  78. package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
  79. package/dist/src/views/scheduling/components/SchedulePdfPreview.vue.d.ts +0 -6
  80. package/dist/src/views/scheduling/components/SchedulePublishModal.vue.d.ts +0 -8
  81. package/dist/src/views/scheduling/components/ScheduleReviewBar.vue.d.ts +0 -12
  82. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +0 -24
  83. package/dist/src/views/scheduling/components/ScheduleSelectExistingEmployeeModal.vue.d.ts +0 -6
  84. package/dist/src/views/scheduling/components/ScheduleShiftCardMenu.vue.d.ts +0 -12
  85. package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +0 -31
  86. package/dist/src/views/scheduling/components/ScheduleShiftHeadcountEditor.vue.d.ts +0 -6
  87. package/dist/src/views/scheduling/components/ScheduleShiftImpact.vue.d.ts +0 -6
  88. package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +0 -6
  89. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +0 -14
  90. package/dist/src/views/scheduling/components/ScheduleShiftRepeatDaysRow.vue.d.ts +0 -8
  91. package/dist/src/views/scheduling/components/ScheduleShiftSegmentsEditor.vue.d.ts +0 -8
  92. package/dist/src/views/scheduling/components/ScheduleShiftWhoPicker.vue.d.ts +0 -25
  93. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
  94. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +0 -16
  95. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -54
  96. package/dist/src/views/scheduling/components/ScheduleStatsRow.vue.d.ts +0 -12
  97. package/dist/src/views/scheduling/components/ScheduleSwapShiftsModal.vue.d.ts +0 -8
  98. package/dist/src/views/scheduling/components/ScheduleTimePickerPopover.vue.d.ts +0 -6
  99. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +0 -22
  100. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +0 -67
  101. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +0 -38
  102. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +0 -29
  103. package/dist/src/views/scheduling/composables/schedule-employee-profile.d.ts +0 -7
  104. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +0 -14
  105. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +0 -10
  106. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +0 -86
  107. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +0 -66
  108. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
  109. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -50
  110. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -18
  111. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -113
  112. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +0 -136
  113. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +0 -415
  114. package/dist/src/views/scheduling/composables/useScheduleCellState.d.ts +0 -27
  115. package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +0 -18
  116. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +0 -17
  117. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +0 -43
  118. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -48
  119. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -82
  120. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +0 -68
  121. package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +0 -45
  122. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +0 -139
  123. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +0 -22
  124. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +0 -32
  125. package/dist/src/views/scheduling/composables/useScheduleEmployeeProfile.d.ts +0 -16
  126. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +0 -26
  127. package/dist/src/views/scheduling/composables/useScheduleFilterBar.d.ts +0 -14
  128. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +0 -80
  129. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +0 -20
  130. package/dist/src/views/scheduling/composables/useScheduleLegend.d.ts +0 -15
  131. package/dist/src/views/scheduling/composables/useScheduleLegendBar.d.ts +0 -35
  132. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +0 -179
  133. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
  134. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +0 -19
  135. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +0 -32
  136. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +0 -91
  137. package/dist/src/views/scheduling/composables/useScheduleRangeCalendar.d.ts +0 -18
  138. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +0 -183
  139. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +0 -54
  140. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +0 -18
  141. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +0 -225
  142. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +0 -174
  143. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -20
  144. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +0 -25
  145. package/dist/src/views/scheduling/composables/useScheduleTimePicker.d.ts +0 -44
  146. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
  147. package/dist/src/views/scheduling/data.d.ts +0 -105
  148. package/dist/src/views/scheduling/locales/index.d.ts +0 -496
  149. package/dist/src/views/scheduling/schedule-store.d.ts +0 -116
  150. package/dist/src/views/scheduling/types.d.ts +0 -311
  151. package/dist/useScheduleOutlet-CmIG5dwQ.js +0 -557
  152. package/dist/useSchedulePositions-DPVAgdB2.js +0 -103
@@ -1,136 +0,0 @@
1
- import type { FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoScheduleResult } from '@/types/schedule';
2
- import type { Proposal } from '../types';
3
- import type { ScheduleBoardApi } from './useScheduleBoard';
4
- import type { ScheduleDemandApi } from './useScheduleDemand';
5
- export type ScheduleAutoScheduleStep = 'options' | 'summary';
6
- export interface ScheduleAutoScheduleOptions {
7
- fillGaps: boolean;
8
- objective: FdtoScheduleAutoScheduleObjective;
9
- allowOvertime: boolean;
10
- }
11
- /** Backend-powered draft generation and local proposal review. Generation never writes;
12
- * accepted proposals use the board's existing assignment persistence path. */
13
- export declare function useScheduleAutoSchedule(board: ScheduleBoardApi, demand: ScheduleDemandApi): {
14
- wizardOpen: import("vue").Ref<boolean, boolean>;
15
- step: import("vue").Ref<ScheduleAutoScheduleStep, ScheduleAutoScheduleStep>;
16
- options: {
17
- fillGaps: boolean;
18
- objective: FdtoScheduleAutoScheduleObjective;
19
- allowOvertime: boolean;
20
- };
21
- generating: import("vue").Ref<boolean, boolean>;
22
- generateError: import("vue").Ref<string | null, string | null>;
23
- result: import("vue").Ref<{
24
- proposals: {
25
- employeeId: string;
26
- date: string;
27
- startTime: string;
28
- endTime: string;
29
- position: string;
30
- }[];
31
- unfilledCount: number;
32
- metrics: {
33
- minimumCoveragePercent: number;
34
- recommendedCoveragePercent: number;
35
- totalHours: number;
36
- estimatedLabourCost: number | null;
37
- costCoveragePercent: number;
38
- overtimeHours: number;
39
- targetHoursVariance: number;
40
- unfilledIntervals: number;
41
- };
42
- readiness: {
43
- ready: boolean;
44
- capabilities: string[];
45
- issues: {
46
- code: string;
47
- severity: "BLOCKER" | "WARNING" | "INFO";
48
- message: string;
49
- }[];
50
- coverage: {
51
- position: number;
52
- availability: number;
53
- wage: number;
54
- targetHours: number;
55
- };
56
- };
57
- explanations: string[];
58
- solver: string;
59
- } | null, FdtoScheduleAutoScheduleResult | {
60
- proposals: {
61
- employeeId: string;
62
- date: string;
63
- startTime: string;
64
- endTime: string;
65
- position: string;
66
- }[];
67
- unfilledCount: number;
68
- metrics: {
69
- minimumCoveragePercent: number;
70
- recommendedCoveragePercent: number;
71
- totalHours: number;
72
- estimatedLabourCost: number | null;
73
- costCoveragePercent: number;
74
- overtimeHours: number;
75
- targetHoursVariance: number;
76
- unfilledIntervals: number;
77
- };
78
- readiness: {
79
- ready: boolean;
80
- capabilities: string[];
81
- issues: {
82
- code: string;
83
- severity: "BLOCKER" | "WARNING" | "INFO";
84
- message: string;
85
- }[];
86
- coverage: {
87
- position: number;
88
- availability: number;
89
- wage: number;
90
- targetHours: number;
91
- };
92
- };
93
- explanations: string[];
94
- solver: string;
95
- } | null>;
96
- gapCount: import("vue").ComputedRef<number>;
97
- openWizard: () => void;
98
- closeWizard: () => void;
99
- next: () => void;
100
- back: () => void;
101
- generate: () => Promise<void>;
102
- reviewMode: import("vue").Ref<boolean, boolean>;
103
- proposals: import("vue").Ref<{
104
- id: number;
105
- empId: number;
106
- dayIdx: number;
107
- start: string;
108
- end: string;
109
- role: string;
110
- openId?: number | undefined;
111
- status: "pending" | "rejected";
112
- }[], Proposal[] | {
113
- id: number;
114
- empId: number;
115
- dayIdx: number;
116
- start: string;
117
- end: string;
118
- role: string;
119
- openId?: number | undefined;
120
- status: "pending" | "rejected";
121
- }[]>;
122
- unmetCount: import("vue").Ref<number, number>;
123
- acceptedCount: import("vue").ComputedRef<number>;
124
- rejectedCount: import("vue").ComputedRef<number>;
125
- removedCount: import("vue").ComputedRef<number>;
126
- changedCount: import("vue").ComputedRef<number>;
127
- unqualifiedCount: import("vue").ComputedRef<number>;
128
- conflictCount: import("vue").ComputedRef<number>;
129
- projectedCost: import("vue").ComputedRef<number | null>;
130
- proposalAt: (empId: number, dayIdx: number) => Proposal | undefined;
131
- toggleReject: (id: number) => void;
132
- rejectAll: () => void;
133
- exitReview: () => void;
134
- apply: () => number;
135
- };
136
- export type ScheduleAutoScheduleApi = ReturnType<typeof useScheduleAutoSchedule>;
@@ -1,415 +0,0 @@
1
- import type { Employee, OpenShift, PendingChange, ScheduleStatusInfo, ScheduleVersion, ScheduleVersionSnapshot, Section, WorkSlot } from '../types';
2
- import { RANGE_LEN } from './schedule-week-cache';
3
- import { contractCapFor, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, positionKeyOf, workSlotsOf } from './schedule-board-helpers';
4
- export { contractCapFor, isLeaveSlot, isPartTime, isoDateKey, isWorkSlot, overContract, positionKeyOf, workSlotsOf, };
5
- export { RANGE_LEN };
6
- export type ScheduleGranularity = 'day' | 'week';
7
- export declare function useScheduleBoard(handlers?: {
8
- onPersistError?: (message: string) => void;
9
- }): {
10
- dayNote: (dayIdx: number) => import("../types").ScheduleDayNote | null;
11
- setDayNote: (dayIdx: number, title: string, desc: string) => void;
12
- clearDayNote: (dayIdx: number) => void;
13
- toggleClosed: (dayIdx: number) => {
14
- closed: boolean;
15
- rostered: number;
16
- };
17
- isManuallyClosed: (dayIdx: number) => boolean;
18
- isStandingClosedWeekday: (dayIdx: number) => boolean;
19
- holidayName: (dayIdx: number) => string | null;
20
- holidayIsAuto: (dayIdx: number) => boolean;
21
- isPublicHoliday: (dayIdx: number) => boolean;
22
- holidayRateApplies: (dayIdx: number) => boolean;
23
- setHolidayNormal: (dayIdx: number, toNormal: boolean) => void;
24
- setPublicHoliday: (dayIdx: number, on: boolean) => void;
25
- otRateOn: (dayIdx: number) => number;
26
- regularRateOn: (dayIdx: number) => number;
27
- isHoliday: (dayIdx: number) => boolean;
28
- employees: import("vue").Ref<{
29
- id: number;
30
- name: string;
31
- role: string;
32
- initials: string;
33
- color: string;
34
- weekHours: number;
35
- pct: number;
36
- contractHours?: number | undefined;
37
- rate: number;
38
- positions: string[];
39
- shifts: ({
40
- start: string;
41
- end: string;
42
- role: string;
43
- status: import("../types").ShiftStatus;
44
- clock?: {
45
- in: string | null;
46
- out: string | null;
47
- status: "on-time" | "late" | "early-out" | "absent";
48
- } | undefined;
49
- conflict?: boolean | undefined;
50
- conflictReason?: string | undefined;
51
- openId?: number | undefined;
52
- breakMins?: number | undefined;
53
- assignmentId?: string | undefined;
54
- } | {
55
- timeOff: "approved" | "pending";
56
- reason: string;
57
- half?: boolean | undefined;
58
- halfPart?: "AM" | "PM" | undefined;
59
- appliedOn?: string | undefined;
60
- note?: string | undefined;
61
- cert?: {
62
- name: string;
63
- size: string;
64
- } | null | undefined;
65
- bal?: {
66
- type: string;
67
- entitled: number;
68
- used: number;
69
- } | undefined;
70
- } | {
71
- start: string;
72
- end: string;
73
- role: string;
74
- status: import("../types").ShiftStatus;
75
- clock?: {
76
- in: string | null;
77
- out: string | null;
78
- status: "on-time" | "late" | "early-out" | "absent";
79
- } | undefined;
80
- conflict?: boolean | undefined;
81
- conflictReason?: string | undefined;
82
- openId?: number | undefined;
83
- breakMins?: number | undefined;
84
- assignmentId?: string | undefined;
85
- }[] | null)[];
86
- remarks: {
87
- author: string;
88
- date: string;
89
- type: "note" | "warning" | "praise";
90
- text: string;
91
- }[];
92
- section: string;
93
- compGroup?: string | undefined;
94
- mobile?: string | undefined;
95
- dial?: string | undefined;
96
- locations?: string[] | undefined;
97
- payBasis?: "hourly" | "monthly" | undefined;
98
- payAmount?: number | undefined;
99
- maxHours?: number | undefined;
100
- maxOtHours?: number | undefined;
101
- otAfterDaily?: number | undefined;
102
- preferences?: string[] | undefined;
103
- seniority?: "senior" | "junior" | "" | undefined;
104
- availDays?: boolean[] | undefined;
105
- availHours?: {
106
- from: string;
107
- to: string;
108
- }[] | undefined;
109
- passcode?: string | undefined;
110
- masterUser?: boolean | undefined;
111
- }[], Employee[] | {
112
- id: number;
113
- name: string;
114
- role: string;
115
- initials: string;
116
- color: string;
117
- weekHours: number;
118
- pct: number;
119
- contractHours?: number | undefined;
120
- rate: number;
121
- positions: string[];
122
- shifts: ({
123
- start: string;
124
- end: string;
125
- role: string;
126
- status: import("../types").ShiftStatus;
127
- clock?: {
128
- in: string | null;
129
- out: string | null;
130
- status: "on-time" | "late" | "early-out" | "absent";
131
- } | undefined;
132
- conflict?: boolean | undefined;
133
- conflictReason?: string | undefined;
134
- openId?: number | undefined;
135
- breakMins?: number | undefined;
136
- assignmentId?: string | undefined;
137
- } | {
138
- timeOff: "approved" | "pending";
139
- reason: string;
140
- half?: boolean | undefined;
141
- halfPart?: "AM" | "PM" | undefined;
142
- appliedOn?: string | undefined;
143
- note?: string | undefined;
144
- cert?: {
145
- name: string;
146
- size: string;
147
- } | null | undefined;
148
- bal?: {
149
- type: string;
150
- entitled: number;
151
- used: number;
152
- } | undefined;
153
- } | {
154
- start: string;
155
- end: string;
156
- role: string;
157
- status: import("../types").ShiftStatus;
158
- clock?: {
159
- in: string | null;
160
- out: string | null;
161
- status: "on-time" | "late" | "early-out" | "absent";
162
- } | undefined;
163
- conflict?: boolean | undefined;
164
- conflictReason?: string | undefined;
165
- openId?: number | undefined;
166
- breakMins?: number | undefined;
167
- assignmentId?: string | undefined;
168
- }[] | null)[];
169
- remarks: {
170
- author: string;
171
- date: string;
172
- type: "note" | "warning" | "praise";
173
- text: string;
174
- }[];
175
- section: string;
176
- compGroup?: string | undefined;
177
- mobile?: string | undefined;
178
- dial?: string | undefined;
179
- locations?: string[] | undefined;
180
- payBasis?: "hourly" | "monthly" | undefined;
181
- payAmount?: number | undefined;
182
- maxHours?: number | undefined;
183
- maxOtHours?: number | undefined;
184
- otAfterDaily?: number | undefined;
185
- preferences?: string[] | undefined;
186
- seniority?: "senior" | "junior" | "" | undefined;
187
- availDays?: boolean[] | undefined;
188
- availHours?: {
189
- from: string;
190
- to: string;
191
- }[] | undefined;
192
- passcode?: string | undefined;
193
- masterUser?: boolean | undefined;
194
- }[]>;
195
- sections: import("vue").Ref<{
196
- id: string;
197
- label: string;
198
- roles: string[];
199
- system?: boolean | undefined;
200
- }[], Section[] | {
201
- id: string;
202
- label: string;
203
- roles: string[];
204
- system?: boolean | undefined;
205
- }[]>;
206
- openShifts: import("vue").Ref<{
207
- id: number;
208
- dayIdx: number;
209
- position: string;
210
- required: number;
211
- filledBy: number | null;
212
- sen?: "junior" | "senior" | undefined;
213
- empType?: "full" | "part" | undefined;
214
- name?: string | undefined;
215
- start: string;
216
- end: string;
217
- breakMins?: number | undefined;
218
- }[], OpenShift[] | {
219
- id: number;
220
- dayIdx: number;
221
- position: string;
222
- required: number;
223
- filledBy: number | null;
224
- sen?: "junior" | "senior" | undefined;
225
- empType?: "full" | "part" | undefined;
226
- name?: string | undefined;
227
- start: string;
228
- end: string;
229
- breakMins?: number | undefined;
230
- }[]>;
231
- rangeStart: import("vue").Ref<Date, Date>;
232
- weekOffset: import("vue").ComputedRef<number>;
233
- peekWeek: (offset: number) => import("./schedule-week-cache").WeekBucket;
234
- isRecentlySaved: (empId: number, dayIdx: number) => boolean;
235
- isWeekLocked: (offset?: number) => boolean;
236
- dayLocked: (dayIdx: number) => boolean;
237
- pendingChanges: import("vue").Ref<{
238
- empId: number;
239
- dayIdx: number;
240
- kind: "add" | "change" | "remove";
241
- label: string;
242
- }[], PendingChange[] | {
243
- empId: number;
244
- dayIdx: number;
245
- kind: "add" | "change" | "remove";
246
- label: string;
247
- }[]>;
248
- unpublishedChanges: import("vue").ComputedRef<PendingChange[]>;
249
- persistPublish: (items: Array<{
250
- empId: number;
251
- dayIdx: number;
252
- slot: WorkSlot;
253
- }>) => Promise<void>;
254
- recordChange: (empId: number, dayIdx: number, kind: PendingChange["kind"], label: string) => void;
255
- scheduleVersions: import("vue").Ref<{
256
- v: number;
257
- at: Date;
258
- by: string;
259
- note: string;
260
- changeCount: number;
261
- staffAffected: number;
262
- snapshot: {
263
- id: number;
264
- name: string;
265
- weekHours: number;
266
- shifts: ({
267
- start: string;
268
- end: string;
269
- role: string;
270
- status: import("../types").ShiftStatus;
271
- clock?: {
272
- in: string | null;
273
- out: string | null;
274
- status: "on-time" | "late" | "early-out" | "absent";
275
- } | undefined;
276
- conflict?: boolean | undefined;
277
- conflictReason?: string | undefined;
278
- openId?: number | undefined;
279
- breakMins?: number | undefined;
280
- assignmentId?: string | undefined;
281
- } | {
282
- timeOff: "approved" | "pending";
283
- reason: string;
284
- half?: boolean | undefined;
285
- halfPart?: "AM" | "PM" | undefined;
286
- appliedOn?: string | undefined;
287
- note?: string | undefined;
288
- cert?: {
289
- name: string;
290
- size: string;
291
- } | null | undefined;
292
- bal?: {
293
- type: string;
294
- entitled: number;
295
- used: number;
296
- } | undefined;
297
- } | {
298
- start: string;
299
- end: string;
300
- role: string;
301
- status: import("../types").ShiftStatus;
302
- clock?: {
303
- in: string | null;
304
- out: string | null;
305
- status: "on-time" | "late" | "early-out" | "absent";
306
- } | undefined;
307
- conflict?: boolean | undefined;
308
- conflictReason?: string | undefined;
309
- openId?: number | undefined;
310
- breakMins?: number | undefined;
311
- assignmentId?: string | undefined;
312
- }[] | null)[];
313
- }[];
314
- }[], ScheduleVersion[] | {
315
- v: number;
316
- at: Date;
317
- by: string;
318
- note: string;
319
- changeCount: number;
320
- staffAffected: number;
321
- snapshot: {
322
- id: number;
323
- name: string;
324
- weekHours: number;
325
- shifts: ({
326
- start: string;
327
- end: string;
328
- role: string;
329
- status: import("../types").ShiftStatus;
330
- clock?: {
331
- in: string | null;
332
- out: string | null;
333
- status: "on-time" | "late" | "early-out" | "absent";
334
- } | undefined;
335
- conflict?: boolean | undefined;
336
- conflictReason?: string | undefined;
337
- openId?: number | undefined;
338
- breakMins?: number | undefined;
339
- assignmentId?: string | undefined;
340
- } | {
341
- timeOff: "approved" | "pending";
342
- reason: string;
343
- half?: boolean | undefined;
344
- halfPart?: "AM" | "PM" | undefined;
345
- appliedOn?: string | undefined;
346
- note?: string | undefined;
347
- cert?: {
348
- name: string;
349
- size: string;
350
- } | null | undefined;
351
- bal?: {
352
- type: string;
353
- entitled: number;
354
- used: number;
355
- } | undefined;
356
- } | {
357
- start: string;
358
- end: string;
359
- role: string;
360
- status: import("../types").ShiftStatus;
361
- clock?: {
362
- in: string | null;
363
- out: string | null;
364
- status: "on-time" | "late" | "early-out" | "absent";
365
- } | undefined;
366
- conflict?: boolean | undefined;
367
- conflictReason?: string | undefined;
368
- openId?: number | undefined;
369
- breakMins?: number | undefined;
370
- assignmentId?: string | undefined;
371
- }[] | null)[];
372
- }[];
373
- }[]>;
374
- lastUpdatedAt: import("vue").Ref<Date | null, Date | null>;
375
- lastPublishedAt: import("vue").Ref<Date | null, Date | null>;
376
- pushVersion: (note: string, opts?: Partial<ScheduleVersion>) => ScheduleVersion;
377
- snapshotSchedule: () => ScheduleVersionSnapshot[];
378
- scheduleStatus: import("vue").ComputedRef<ScheduleStatusInfo>;
379
- conflictCount: () => number;
380
- granularity: import("vue").Ref<ScheduleGranularity, ScheduleGranularity>;
381
- focusDayIdx: import("vue").Ref<number, number>;
382
- setGranularity: (value: ScheduleGranularity) => void;
383
- dayDates: import("vue").ComputedRef<Date[]>;
384
- dayLabels: import("vue").ComputedRef<string[]>;
385
- visibleDayIndices: import("vue").ComputedRef<number[]>;
386
- visibleDays: import("vue").ComputedRef<{
387
- dayIdx: number;
388
- date: Date;
389
- }[]>;
390
- rangeLabel: import("vue").ComputedRef<string>;
391
- isToday: (dayIdx: number) => boolean;
392
- dateKey: (dayIdx: number) => string | null;
393
- navigate: (delta: number) => void;
394
- goToday: () => void;
395
- membersOf: (sectionId: string) => Employee[];
396
- sectionCost: (sectionId: string, members?: Employee[]) => number;
397
- totalWeeklyCost: import("vue").ComputedRef<number>;
398
- employeeById: (id: number) => Employee | undefined;
399
- commitShift: (empId: number, dayIdx: number, slot: WorkSlot | WorkSlot[]) => void;
400
- commitShiftAt: (offset: number, empId: number, dayIdx: number, slot: WorkSlot | WorkSlot[]) => void;
401
- removeShift: (empId: number, dayIdx: number) => void;
402
- removeShiftAt: (offset: number, empId: number, dayIdx: number) => void;
403
- moveShift: (fromEmpId: number, fromDayIdx: number, toEmpId: number, toDayIdx: number) => boolean;
404
- swapShifts: (empIdA: number, empIdB: number, dayIdx: number) => boolean;
405
- clearShiftsInRange: () => {
406
- shifts: number;
407
- open: number;
408
- leave: number;
409
- };
410
- requiredFor: (dayIdx: number, position: string) => number;
411
- scheduledFor: (dayIdx: number, position: string) => number;
412
- compGroupRate: (name: string | undefined) => number | undefined;
413
- UNASSIGNED: string;
414
- };
415
- export type ScheduleBoardApi = ReturnType<typeof useScheduleBoard>;
@@ -1,27 +0,0 @@
1
- import type { ScheduleBoardApi } from './useScheduleBoard';
2
- /** Column facts shared by the day header and every `.shift-cell` under it.
3
- *
4
- * The mockup builds these inline in its cell loop (`cell.className = 'shift-cell' + …`) and
5
- * again in its header loop, which is exactly how the two drifted: closing a day painted the
6
- * header and left the cells beneath it clean. One helper, both consumers.
7
- *
8
- * Two of the mockup's cell states are deliberately absent here:
9
- * - `wk-off` — this board has no standing weekly-off pattern to read (same reason
10
- * `otRateOn()` drops the mockup's rest-day case).
11
- * - `peek` / `week-start` — the mockup renders a multi-week horizon, so it has columns
12
- * outside the selected range and interior week boundaries. This board's visible range
13
- * is exactly one week, so neither can ever fire.
14
- */
15
- export declare function isPastDate(date: Date): boolean;
16
- export declare function isWeekendDate(date: Date): boolean;
17
- /** Month-edge compares neighbours in the VISIBLE column order, not raw weekday
18
- * index — a lone Daily-view column has no on-screen neighbour to differ from. */
19
- export declare function isMonthEdgeAt(board: ScheduleBoardApi, colIndex: number): boolean;
20
- export interface ScheduleCellState {
21
- locked: boolean;
22
- 'closed-day': boolean;
23
- 'month-edge': boolean;
24
- past: boolean;
25
- }
26
- /** The class object for one grid cell in column `colIndex` (its weekday is `dayIdx`). */
27
- export declare function cellStateClasses(board: ScheduleBoardApi, dayIdx: number, colIndex: number): ScheduleCellState;
@@ -1,18 +0,0 @@
1
- export interface ScheduleClashState {
2
- open: boolean;
3
- message: string;
4
- onConfirm: (() => void) | null;
5
- }
6
- /** Generic Yes/No conflict-confirmation primitive — the mockup's `askClash`/clashModal,
7
- * reused across several flows (leave clashes, overlapping shifts, etc). */
8
- export declare function useScheduleClashDetection(): {
9
- state: {
10
- open: boolean;
11
- message: string;
12
- onConfirm: (() => void) | null;
13
- };
14
- ask: (message: string, onConfirm: () => void) => void;
15
- confirm: () => void;
16
- close: () => void;
17
- };
18
- export type ScheduleClashDetectionApi = ReturnType<typeof useScheduleClashDetection>;
@@ -1,17 +0,0 @@
1
- import type { ScheduleBoardApi } from './useScheduleBoard';
2
- export interface ScheduleCopySkipReport {
3
- leave: number;
4
- already: number;
5
- hours: number;
6
- full: number;
7
- closed: number;
8
- }
9
- /** The mockup's Copy schedule feature (copyLastWeek/copyThisWeekForward), ported against this
10
- * board's per-week-offset bucket cache instead of the mockup's absolute 91-day horizon. Split
11
- * shifts (copyUnitsOf in the mockup) aren't ported — WorkSlot has no splitId concept in this
12
- * data model, so each slot is copied as its own unit. */
13
- export declare function useScheduleCopyWeek(board: ScheduleBoardApi): {
14
- copyLastWeek: (mode: "staffed" | "open") => void;
15
- copyThisWeekForward: (mode: "staffed" | "open") => void;
16
- };
17
- export type ScheduleCopyWeekApi = ReturnType<typeof useScheduleCopyWeek>;
@@ -1,43 +0,0 @@
1
- import type { ScheduleBoardApi } from './useScheduleBoard';
2
- export declare function slotHours(start: string, end: string): number;
3
- export interface ScheduleDayCost {
4
- hours: number;
5
- otHours: number;
6
- base: number;
7
- ot: number;
8
- total: number;
9
- }
10
- export interface SchedulePositionCost {
11
- position: string;
12
- base: number;
13
- ot: number;
14
- total: number;
15
- }
16
- export interface ScheduleSectionCost {
17
- id: string;
18
- label: string;
19
- base: number;
20
- ot: number;
21
- total: number;
22
- rows: SchedulePositionCost[];
23
- }
24
- export interface ScheduleOtRisk {
25
- empId: number;
26
- name: string;
27
- hours: number;
28
- contract: number;
29
- }
30
- /** Weekly labour cost + monthly OT gauge for the collapsible cost rail, built off one
31
- * per-day breakdown so the rail's totals and the stats row's per-day figures can never
32
- * disagree about what a day cost. */
33
- export declare function useScheduleCostRail(board: ScheduleBoardApi): {
34
- collapsed: import("vue").Ref<boolean, boolean>;
35
- byDay: import("vue").ComputedRef<ScheduleDayCost[]>;
36
- weeklyCost: import("vue").ComputedRef<number>;
37
- otHours: import("vue").ComputedRef<number>;
38
- monthlyOtUsed: import("vue").ComputedRef<number>;
39
- monthlyOtCapHours: number;
40
- bySection: import("vue").ComputedRef<ScheduleSectionCost[]>;
41
- otRisk: import("vue").ComputedRef<ScheduleOtRisk[]>;
42
- };
43
- export type ScheduleCostRailApi = ReturnType<typeof useScheduleCostRail>;