@feedmepos/mf-hrm-portal 2.3.0-dev → 2.3.0-dev.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/dist/{ApprovalCodeList-cG0zmQVJ.js → ApprovalCodeList-BLA2rhLB.js} +5 -5
  2. package/dist/{AuditLogList-BTifJhO1.js → AuditLogList-DBYdZhZl.js} +4 -4
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-qr5TwLTK.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-CtCEzPbE.js} +2 -2
  4. package/dist/{EmployeeList-DzcMtxJ3.js → EmployeeList-CA7DWLmy.js} +6 -6
  5. package/dist/{GrantUserList-D5b7tJ8Y.js → GrantUserList-BYnegeEr.js} +6 -6
  6. package/dist/{Main-DFwdAWqn.js → Main-BeXx0hAc.js} +8 -8
  7. package/dist/{Main-B2r59IOW.js → Main-Dh-gZSaa.js} +5 -5
  8. package/dist/{Main-DkLBemi7.js → Main-NDK7LUmm.js} +11 -11
  9. package/dist/{PermissionSetList-B80hrfMW.js → PermissionSetList-DDIacDpQ.js} +7 -7
  10. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-ONMn3v_f.js +4167 -0
  11. package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-BVz6q3HE.js} +1 -1
  12. package/dist/{RoleList-DHO4JRKF.js → RoleList-B30FHIzu.js} +9 -9
  13. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-CRRguWTG.js +492 -0
  14. package/dist/ScheduleGeneralPage-8gEeZbFR.js +776 -0
  15. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-TfxTAjO8.js +2252 -0
  16. package/dist/SchedulePage-DQ0VXWWi.js +17832 -0
  17. package/dist/{SchedulePositionPage-C0hrO11d.js → SchedulePositionPage-oGIDGneA.js} +66 -65
  18. package/dist/{TeamMemberList-CgFWLRBM.js → TeamMemberList-Drj6R4Y3.js} +10 -10
  19. package/dist/{TimesheetList-Dp40G-0I.js → TimesheetList-CDQfN5LE.js} +7 -7
  20. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BFjrMhUG.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Bx-6hjs7.js} +3 -3
  21. package/dist/{app-CmBSTvaI.js → app-DWe_4-ct.js} +678 -594
  22. package/dist/app.js +1 -1
  23. package/dist/{approval-code-C9DmR4Md.js → approval-code-DHsUgc4K.js} +1 -1
  24. package/dist/{dayjs.min-CfL2DQ3d.js → dayjs.min-QSwC9dtX.js} +1 -1
  25. package/dist/{employee-DQcHjoij.js → employee-Bb2b3dP6.js} +29 -28
  26. package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-qzKHFTro.js} +1 -1
  27. package/dist/{iteration-BlavheWG.js → iteration-TDU7bFxZ.js} +1 -1
  28. package/dist/{lodash-QerqayrJ.js → lodash-D3Ns5VMN.js} +1 -1
  29. package/dist/{restaurant-D7PEQjPY.js → restaurant-BbYRA_IT.js} +4 -3
  30. package/dist/{role-RM2YLO7n.js → role-D57Le_-U.js} +2 -2
  31. package/dist/{rule-DjlvYIuP.js → rule-DzesUEX7.js} +3 -3
  32. package/dist/src/api/schedule/index.d.ts +8 -1
  33. package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
  34. package/dist/src/types/employee.d.ts +1 -0
  35. package/dist/src/types/schedule.d.ts +3 -4
  36. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -8
  37. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +23 -0
  38. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
  39. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
  40. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +24 -0
  41. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +32 -0
  42. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +25 -0
  43. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
  44. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
  45. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
  46. package/dist/src/views/scheduling/components/{ScheduleOnboardingComplete.vue.d.ts → ScheduleCompletionDialog.vue.d.ts} +8 -3
  47. package/dist/src/views/scheduling/components/{ScheduleShiftCardMenu.vue.d.ts → ScheduleContextMenu.vue.d.ts} +7 -2
  48. package/dist/src/views/scheduling/components/{SchedulePdfPreview.vue.d.ts → ScheduleExportPreview.vue.d.ts} +1 -0
  49. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
  50. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
  51. package/dist/src/views/scheduling/components/{ScheduleExportDoneDialog.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
  52. package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingClosedDayConfirm.vue.d.ts} +2 -2
  53. package/dist/src/views/scheduling/components/{ScheduleEmployeeMenu.vue.d.ts → ScheduleOnboardingDemandDays.vue.d.ts} +2 -2
  54. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
  55. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
  56. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
  57. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
  58. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
  59. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
  60. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
  61. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +17 -1
  62. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
  63. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +2 -2
  64. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +4 -4
  65. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +2 -12
  66. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +3 -3
  67. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +1 -1
  68. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +13 -0
  69. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
  70. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +5 -1
  71. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +7 -1
  72. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +7 -0
  73. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +19 -0
  74. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
  75. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +11 -0
  76. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
  77. package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
  78. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +1 -4
  79. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +15 -0
  80. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +34 -21
  81. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
  82. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -8
  83. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
  84. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +3 -0
  85. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +50 -11
  86. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +3 -1
  87. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +6 -1
  88. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +1 -2
  89. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -3
  90. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +7 -24
  91. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +19 -5
  92. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +16 -0
  93. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
  94. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +27 -0
  95. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
  96. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
  97. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +9 -0
  98. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +6 -3
  99. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +29 -0
  100. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +20 -0
  101. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +19 -11
  102. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +5 -6
  103. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
  104. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
  105. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +205 -0
  106. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
  107. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
  108. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +306 -529
  109. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
  110. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
  111. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +18 -0
  112. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
  113. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +10 -7
  114. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
  115. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +4 -1
  116. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +4 -2
  117. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +9 -1
  118. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
  119. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +30 -4
  120. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +8 -25
  121. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +18 -3
  122. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
  123. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
  124. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +25 -8
  125. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +4 -1
  126. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +6 -4
  127. package/dist/src/views/scheduling/country-rules/index.d.ts +24 -0
  128. package/dist/src/views/scheduling/data.d.ts +16 -7
  129. package/dist/src/views/scheduling/locales/index.d.ts +80 -0
  130. package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
  131. package/dist/src/views/scheduling/schedule-state.d.ts +104 -16
  132. package/dist/src/views/scheduling/schedule-store.d.ts +17 -6
  133. package/dist/src/views/scheduling/types.d.ts +27 -5
  134. package/dist/style.css +1 -1
  135. package/dist/tsconfig.app.tsbuildinfo +1 -1
  136. package/dist/{useAppStore-d_nHyK5u.js → useAppStore-BoLkvkE2.js} +1 -1
  137. package/dist/{useLoading-JFoghhRz.js → useLoading-Ch1AUYT1.js} +1 -1
  138. package/dist/{useReportPermissions-Bl6Br79r.js → useReportPermissions-Cmuead1K.js} +3 -3
  139. package/package.json +2 -1
  140. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-DjNcJQM9.js +0 -4167
  141. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B-XtB64L.js +0 -452
  142. package/dist/ScheduleGeneralPage-WlBM8bxV.js +0 -629
  143. package/dist/SchedulePage-Nm0krGVU.js +0 -17056
  144. package/dist/ScheduleSelect.vue_vue_type_script_setup_true_lang-DTDXir_7.js +0 -1150
  145. package/dist/src/components/layout/withShell.d.ts +0 -14
  146. package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
  147. package/dist/src/views/scheduling/components/ScheduleOpenShiftCardMenu.vue.d.ts +0 -14
  148. package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
  149. package/dist/src/views/scheduling/components/ScheduleTourAllSet.vue.d.ts +0 -6
  150. package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
  151. package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -122
  152. package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
  153. package/dist/src/views/scheduling/composables/useScheduleStaffRail.d.ts +0 -17
  154. package/dist/src/views/scheduling/composables/useScheduleTopbar.d.ts +0 -10
  155. /package/dist/src/{components/layout/AppSidebar.vue.d.ts → views/scheduling/components/SchedulePublishShareArt.vue.d.ts} +0 -0
@@ -0,0 +1,776 @@
1
+ import { ref as w, reactive as B, computed as N, defineComponent as T, createBlock as I, openBlock as p, withCtx as b, createElementVNode as e, createVNode as k, createElementBlock as m, Fragment as L, createTextVNode as H, toDisplayString as h, withDirectives as f, vModelText as g, createCommentVNode as A, renderList as V, onMounted as z, unref as o, normalizeClass as U } from "vue";
2
+ import { useRouter as W } from "vue-router";
3
+ import { useSnackbar as Y } from "@feedmepos/ui-library";
4
+ import { R as q } from "./app-DWe_4-ct.js";
5
+ import { b as v, o as M, M as E, g as G, aq as F, ao as x, as as j, at as J, ab as K, ap as Q } from "./ScheduleModal.vue_vue_type_script_setup_true_lang-TfxTAjO8.js";
6
+ import "./iteration-TDU7bFxZ.js";
7
+ import { useCoreStore as X } from "@feedmepos/mf-common";
8
+ import "./employee-Bb2b3dP6.js";
9
+ const Z = [
10
+ { key: "payrates", label: "Pay rates" },
11
+ { key: "overtime", label: "Overtime" },
12
+ { key: "workingHours", label: "Working hours" }
13
+ ];
14
+ function $() {
15
+ return structuredClone({
16
+ // RULES is reactive, so spreading each rate tier first gives structuredClone plain
17
+ // objects instead of Vue Proxy instances, which structuredClone cannot clone.
18
+ payRate: {
19
+ NORMAL: { ...v.payRate.NORMAL },
20
+ REST_DAY: { ...v.payRate.REST_DAY },
21
+ PUBLIC_HOLIDAY: { ...v.payRate.PUBLIC_HOLIDAY }
22
+ },
23
+ otCapHours: v.otCapHours,
24
+ workingHours: { ...v.workingHours }
25
+ });
26
+ }
27
+ function _() {
28
+ const l = X(), d = w(!1), a = w("payrates"), r = B($()), t = w(!1);
29
+ let u = 0;
30
+ async function C() {
31
+ if (!M.value) return;
32
+ const c = ++u, i = M.value;
33
+ t.value = !0;
34
+ try {
35
+ const s = await E.getSettings(i);
36
+ if (c !== u || M.value !== i) return;
37
+ const n = G(l.currentCountry.value);
38
+ v.payRate = structuredClone(s.settingsConfigured ? s.payRate : n.payRate), v.otCapHours = s.settingsConfigured ? s.overtime.maxHoursPerMonth : n.overtime.maxHoursPerMonth, v.workingHours = s.settingsConfigured ? structuredClone(s.workingHours) : {
39
+ minHoursPerDay: null,
40
+ maxHoursPerDay: n.workingHours.maxHoursPerDay,
41
+ maxHoursPerWeek: n.workingHours.maxHoursPerWeek
42
+ };
43
+ } finally {
44
+ c === u && (t.value = !1);
45
+ }
46
+ }
47
+ function y(c) {
48
+ Object.assign(r, $()), a.value = c ?? "payrates", d.value = !0;
49
+ }
50
+ const S = N(() => JSON.stringify(r) !== JSON.stringify($()));
51
+ function P() {
52
+ return S.value ? !1 : (d.value = !1, !0);
53
+ }
54
+ function D() {
55
+ Object.assign(r, $()), d.value = !1;
56
+ }
57
+ async function R() {
58
+ if (!M.value) throw new Error("No outlet selected");
59
+ const c = r.otCapHours === 0 ? null : r.otCapHours;
60
+ if (c != null && c <= 0)
61
+ throw new Error("Maximum monthly overtime hours must be greater than zero");
62
+ const i = {
63
+ minHoursPerDay: r.workingHours.minHoursPerDay === 0 ? null : r.workingHours.minHoursPerDay,
64
+ maxHoursPerDay: r.workingHours.maxHoursPerDay === 0 ? null : r.workingHours.maxHoursPerDay,
65
+ maxHoursPerWeek: r.workingHours.maxHoursPerWeek === 0 ? null : r.workingHours.maxHoursPerWeek
66
+ };
67
+ if (i.minHoursPerDay != null && i.maxHoursPerDay != null && i.minHoursPerDay > i.maxHoursPerDay)
68
+ throw new Error("Minimum daily working hours cannot exceed maximum daily working hours");
69
+ const s = await E.saveSettings(M.value, {
70
+ payRate: r.payRate,
71
+ overtime: { maxHoursPerMonth: c },
72
+ workingHours: i
73
+ });
74
+ v.payRate = structuredClone(s.payRate), v.otCapHours = s.overtime.maxHoursPerMonth, v.workingHours = structuredClone(s.workingHours), d.value = !1;
75
+ }
76
+ return { isOpen: d, activeSection: a, draft: r, dirty: S, loading: t, load: C, open: y, close: P, discard: D, save: R };
77
+ }
78
+ function ee(l, d = {}) {
79
+ const a = w(!1), r = w(""), t = w(/* @__PURE__ */ new Set()), u = w(!1), C = w(null), y = N(
80
+ () => {
81
+ var i;
82
+ return ((i = l.options.value.find((s) => s.value === l.outletId.value)) == null ? void 0 : i.label) ?? "";
83
+ }
84
+ ), S = N(() => {
85
+ const i = r.value.trim().toLowerCase();
86
+ return l.options.value.filter(
87
+ (s) => s.value !== l.outletId.value && (!i || s.label.toLowerCase().includes(i))
88
+ );
89
+ });
90
+ function P() {
91
+ r.value = "", t.value = /* @__PURE__ */ new Set(), u.value = !1, C.value = null, a.value = !0;
92
+ }
93
+ function D() {
94
+ a.value = !1;
95
+ }
96
+ function R(i) {
97
+ const s = new Set(t.value);
98
+ s.has(i) ? s.delete(i) : s.add(i), t.value = s;
99
+ }
100
+ async function c() {
101
+ var s, n;
102
+ const i = [...t.value];
103
+ if (!(!i.length || u.value)) {
104
+ u.value = !0;
105
+ try {
106
+ await Promise.all(
107
+ i.map(
108
+ (O) => E.saveSettings(O, {
109
+ payRate: v.payRate,
110
+ overtime: { maxHoursPerMonth: v.otCapHours },
111
+ workingHours: v.workingHours
112
+ })
113
+ )
114
+ ), C.value = i.length, (s = d.notify) == null || s.call(
115
+ d,
116
+ `Setup copied to ${i.length} outlet${i.length === 1 ? "" : "s"}`,
117
+ "success"
118
+ );
119
+ } catch (O) {
120
+ (n = d.notify) == null || n.call(
121
+ d,
122
+ O instanceof Error ? O.message : "Could not clone outlet setup",
123
+ "error"
124
+ );
125
+ } finally {
126
+ u.value = !1;
127
+ }
128
+ }
129
+ }
130
+ return {
131
+ open: a,
132
+ query: r,
133
+ selected: t,
134
+ saving: u,
135
+ done: C,
136
+ sourceLabel: y,
137
+ targets: S,
138
+ openModal: P,
139
+ close: D,
140
+ toggle: R,
141
+ confirm: c
142
+ };
143
+ }
144
+ const se = { class: "am-head" }, te = { class: "ce-body" }, ae = {
145
+ class: "ce-hint",
146
+ style: { "margin-bottom": "var(--fm-spacing-10)" }
147
+ }, oe = { class: "sch-search" }, le = { class: "asg-list" }, re = ["checked", "onChange"], ne = { class: "asg-id" }, ie = { class: "asg-nm" }, ue = {
148
+ key: 0,
149
+ class: "asg-empty"
150
+ }, de = {
151
+ key: 1,
152
+ class: "cg-done"
153
+ }, pe = { class: "cg-st-main" }, ve = { class: "am-foot" }, me = { class: "am-cost-preview" }, ce = { class: "am-foot-btns" }, ye = /* @__PURE__ */ T({
154
+ __name: "ScheduleCloneOutletModal",
155
+ props: {
156
+ modal: {}
157
+ },
158
+ setup(l) {
159
+ return (d, a) => (p(), I(F, {
160
+ open: l.modal.open.value,
161
+ "panel-class": "ce-modal",
162
+ "panel-style": "width: min(460px, 95vw)",
163
+ "labelled-by": "schedule-clone-title",
164
+ onClose: a[5] || (a[5] = (r) => l.modal.close())
165
+ }, {
166
+ default: b(() => [
167
+ e("div", se, [
168
+ a[7] || (a[7] = e("div", {
169
+ id: "schedule-clone-title",
170
+ class: "am-title"
171
+ }, "Clone outlet setup", -1)),
172
+ k(x, {
173
+ hierarchy: "ghost",
174
+ size: "xs",
175
+ "icon-only": "",
176
+ class: "ce-close-x",
177
+ type: "button",
178
+ "aria-label": "Close",
179
+ onClick: a[0] || (a[0] = (r) => l.modal.close())
180
+ }, {
181
+ default: b(() => [...a[6] || (a[6] = [
182
+ e("svg", {
183
+ width: "20",
184
+ height: "20",
185
+ viewBox: "0 0 20 20",
186
+ fill: "none",
187
+ stroke: "currentColor",
188
+ "stroke-width": "1.8",
189
+ "stroke-linecap": "round",
190
+ "aria-hidden": "true"
191
+ }, [
192
+ e("path", { d: "M5.5 5.5l9 9M14.5 5.5l-9 9" })
193
+ ], -1)
194
+ ])]),
195
+ _: 1
196
+ })
197
+ ]),
198
+ e("div", te, [
199
+ l.modal.done.value === null ? (p(), m(L, { key: 0 }, [
200
+ e("div", ae, [
201
+ a[8] || (a[8] = H(" Copy ", -1)),
202
+ e("b", null, h(l.modal.sourceLabel.value), 1),
203
+ a[9] || (a[9] = H("'s pay rates to: ", -1))
204
+ ]),
205
+ e("div", oe, [
206
+ a[10] || (a[10] = e("svg", {
207
+ width: "16",
208
+ height: "16",
209
+ viewBox: "0 0 16 16",
210
+ fill: "none",
211
+ "aria-hidden": "true"
212
+ }, [
213
+ e("circle", {
214
+ cx: "7",
215
+ cy: "7",
216
+ r: "4.5",
217
+ stroke: "currentColor",
218
+ "stroke-width": "1.5"
219
+ }),
220
+ e("path", {
221
+ d: "M10.5 10.5L14 14",
222
+ stroke: "currentColor",
223
+ "stroke-width": "1.5",
224
+ "stroke-linecap": "round"
225
+ })
226
+ ], -1)),
227
+ f(e("input", {
228
+ "onUpdate:modelValue": a[1] || (a[1] = (r) => l.modal.query.value = r),
229
+ type: "search",
230
+ placeholder: "Search outlets",
231
+ "aria-label": "Search outlets",
232
+ autocomplete: "off"
233
+ }, null, 512), [
234
+ [g, l.modal.query.value]
235
+ ])
236
+ ]),
237
+ e("div", le, [
238
+ (p(!0), m(L, null, V(l.modal.targets.value, (r) => (p(), m("label", {
239
+ key: r.value,
240
+ class: "asg-row"
241
+ }, [
242
+ e("input", {
243
+ type: "checkbox",
244
+ class: "sch-checkbox",
245
+ "data-platform": "desktop",
246
+ checked: l.modal.selected.value.has(r.value),
247
+ onChange: (t) => l.modal.toggle(r.value)
248
+ }, null, 40, re),
249
+ e("span", ne, [
250
+ e("span", ie, h(r.label), 1)
251
+ ])
252
+ ]))), 128)),
253
+ l.modal.targets.value.length ? A("", !0) : (p(), m("div", ue, h(l.modal.query.value ? "No outlet matches that search." : "No other outlets."), 1))
254
+ ]),
255
+ a[11] || (a[11] = e("div", {
256
+ class: "ce-hint",
257
+ style: { "margin-top": "var(--fm-spacing-10)" }
258
+ }, " Copies this outlet's pay rates to the outlets you tick. Their current pay rates are replaced. ", -1))
259
+ ], 64)) : (p(), m("div", de, [
260
+ a[13] || (a[13] = e("span", {
261
+ class: "cg-done-tick",
262
+ "aria-hidden": "true"
263
+ }, "✓", -1)),
264
+ e("div", pe, [
265
+ a[12] || (a[12] = e("b", null, "Pay rates copied", -1)),
266
+ e("small", null, "Sent to " + h(l.modal.done.value) + " outlet" + h(l.modal.done.value === 1 ? "" : "s"), 1)
267
+ ])
268
+ ]))
269
+ ]),
270
+ e("div", ve, [
271
+ e("div", me, h(l.modal.done.value === null && l.modal.selected.value.size ? `${l.modal.selected.value.size} outlet${l.modal.selected.value.size === 1 ? "" : "s"} selected` : ""), 1),
272
+ e("div", ce, [
273
+ l.modal.done.value === null ? (p(), m(L, { key: 0 }, [
274
+ k(x, {
275
+ hierarchy: "secondary",
276
+ size: "sm",
277
+ class: "am-btn am-btn-sec",
278
+ type: "button",
279
+ onClick: a[2] || (a[2] = (r) => l.modal.close())
280
+ }, {
281
+ default: b(() => [...a[14] || (a[14] = [
282
+ H(" Cancel ", -1)
283
+ ])]),
284
+ _: 1
285
+ }),
286
+ k(x, {
287
+ hierarchy: "primary",
288
+ size: "sm",
289
+ class: "am-btn am-btn-primary",
290
+ type: "button",
291
+ disabled: !l.modal.selected.value.size || l.modal.saving.value,
292
+ onClick: a[3] || (a[3] = (r) => l.modal.confirm())
293
+ }, {
294
+ default: b(() => [
295
+ H(h(l.modal.saving.value ? "Copying…" : "Copy setup"), 1)
296
+ ]),
297
+ _: 1
298
+ }, 8, ["disabled"])
299
+ ], 64)) : (p(), I(x, {
300
+ key: 1,
301
+ hierarchy: "primary",
302
+ size: "sm",
303
+ class: "am-btn am-btn-primary",
304
+ type: "button",
305
+ onClick: a[4] || (a[4] = (r) => l.modal.close())
306
+ }, {
307
+ default: b(() => [...a[15] || (a[15] = [
308
+ H(" Done ", -1)
309
+ ])]),
310
+ _: 1
311
+ }))
312
+ ])
313
+ ])
314
+ ]),
315
+ _: 1
316
+ }, 8, ["open"]));
317
+ }
318
+ }), fe = { class: "main" }, ge = {
319
+ id: "viewSettings",
320
+ class: "view"
321
+ }, he = { class: "sp-head" }, we = { class: "outlet-bar" }, ke = { class: "sp-body" }, be = { class: "sp-tabs" }, He = ["onClick"], Ce = { class: "sp-content" }, xe = { class: "sp-panel" }, Se = {
322
+ key: 0,
323
+ id: "sp-payrates",
324
+ class: "sp-sec"
325
+ }, Pe = { class: "sp-card" }, De = { class: "sp-row" }, Re = { class: "sp-field" }, Oe = { class: "sp-row" }, Me = { class: "sp-field" }, $e = { class: "sp-row" }, Le = { class: "sp-field" }, Ne = { class: "sp-card" }, Ae = { class: "sp-row" }, Ee = { class: "sp-field" }, Ie = { class: "sp-row" }, Ue = { class: "sp-field" }, Te = {
326
+ key: 1,
327
+ id: "sp-working-hours",
328
+ class: "sp-sec"
329
+ }, Ve = { class: "sp-card" }, Be = { class: "sp-row" }, ze = { class: "sp-field" }, We = { class: "sp-row" }, Ye = { class: "sp-field" }, qe = { class: "sp-row" }, Ge = { class: "sp-field" }, Fe = {
330
+ key: 2,
331
+ id: "sp-overtime",
332
+ class: "sp-sec"
333
+ }, je = { class: "sp-card" }, Je = { class: "sp-row" }, Ke = { class: "sp-save-txt" }, Qe = { key: 0 }, ls = /* @__PURE__ */ T({
334
+ __name: "ScheduleGeneralPage",
335
+ setup(l) {
336
+ const d = w(null);
337
+ j(d);
338
+ const a = W(), r = Y(), t = _(), u = J(), C = ee(u, {
339
+ notify: (i, s) => r.open({ message: i, type: s })
340
+ }), y = w(!1);
341
+ z(async () => {
342
+ await u.resolve() && await K(/* @__PURE__ */ new Date()), await t.load(), t.open();
343
+ });
344
+ const S = N(
345
+ () => u.options.value.length ? u.options.value : [{ value: "", label: "No outlet selected", disabled: !0 }]
346
+ );
347
+ async function P(i) {
348
+ t.dirty.value || await u.switchTo(i, /* @__PURE__ */ new Date()) && (await t.load(), t.open());
349
+ }
350
+ function D() {
351
+ t.close() && a.push({ name: q.SCHEDULE });
352
+ }
353
+ function R() {
354
+ if (!y.value) {
355
+ y.value = !0;
356
+ return;
357
+ }
358
+ y.value = !1, t.discard();
359
+ }
360
+ async function c() {
361
+ try {
362
+ await t.save(), r.open({ message: "General settings saved", type: "success" });
363
+ } catch (i) {
364
+ r.open({
365
+ message: i instanceof Error ? i.message : "Could not save general settings",
366
+ type: "error"
367
+ });
368
+ }
369
+ }
370
+ return (i, s) => (p(), m("div", {
371
+ ref_key: "rootEl",
372
+ ref: d,
373
+ class: "sch"
374
+ }, [
375
+ e("div", fe, [
376
+ e("div", ge, [
377
+ e("div", he, [
378
+ k(x, {
379
+ hierarchy: "ghost",
380
+ size: "sm",
381
+ class: "sp-back",
382
+ type: "button",
383
+ onClick: D
384
+ }, {
385
+ default: b(() => [...s[12] || (s[12] = [
386
+ e("svg", {
387
+ width: "12",
388
+ height: "12",
389
+ viewBox: "0 0 16 16",
390
+ fill: "none",
391
+ "aria-hidden": "true"
392
+ }, [
393
+ e("path", {
394
+ d: "M10 3.5L5.5 8l4.5 4.5",
395
+ stroke: "currentColor",
396
+ "stroke-width": "1.7",
397
+ "stroke-linecap": "round",
398
+ "stroke-linejoin": "round"
399
+ })
400
+ ], -1),
401
+ e("span", null, "Back to schedule", -1)
402
+ ])]),
403
+ _: 1
404
+ }),
405
+ s[15] || (s[15] = e("div", { class: "sp-title" }, "General Settings", -1)),
406
+ s[16] || (s[16] = e("div", { class: "sp-sub" }, "Pay multipliers and overtime limit for this outlet.", -1)),
407
+ e("div", we, [
408
+ s[14] || (s[14] = e("span", { class: "outlet-bar-lbl" }, "Outlet", -1)),
409
+ k(Q, {
410
+ class: "outlet-sel",
411
+ "aria-label": "Outlet being configured",
412
+ searchable: "",
413
+ disabled: o(t).dirty.value || o(t).loading.value,
414
+ title: o(t).dirty.value ? "Save or discard changes before switching outlets" : "Which outlet these pay rates apply to",
415
+ "model-value": o(u).outletId.value,
416
+ options: S.value,
417
+ "onUpdate:modelValue": P
418
+ }, null, 8, ["disabled", "title", "model-value", "options"]),
419
+ k(x, {
420
+ hierarchy: "secondary",
421
+ size: "sm",
422
+ class: "outlet-clone",
423
+ type: "button",
424
+ disabled: o(t).dirty.value || o(t).loading.value || !o(u).outletId.value,
425
+ title: o(t).dirty.value ? "Save or discard changes before cloning" : "Copy this outlet's pay rates to other outlets",
426
+ onClick: s[0] || (s[0] = (n) => o(C).openModal())
427
+ }, {
428
+ default: b(() => [...s[13] || (s[13] = [
429
+ e("svg", {
430
+ width: "12",
431
+ height: "12",
432
+ viewBox: "0 0 16 16",
433
+ fill: "none",
434
+ "aria-hidden": "true"
435
+ }, [
436
+ e("rect", {
437
+ x: "5.5",
438
+ y: "5.5",
439
+ width: "8.5",
440
+ height: "8.5",
441
+ rx: "1.5",
442
+ stroke: "currentColor",
443
+ "stroke-width": "1.4"
444
+ }),
445
+ e("path", {
446
+ d: "M10.5 5.5V3.2A1.6 1.6 0 0 0 8.9 1.6H3.2A1.6 1.6 0 0 0 1.6 3.2v5.7a1.6 1.6 0 0 0 1.6 1.6h2.3",
447
+ stroke: "currentColor",
448
+ "stroke-width": "1.4",
449
+ "stroke-linecap": "round"
450
+ })
451
+ ], -1),
452
+ H(" Clone setup to… ", -1)
453
+ ])]),
454
+ _: 1
455
+ }, 8, ["disabled", "title"])
456
+ ])
457
+ ]),
458
+ e("div", ke, [
459
+ e("nav", be, [
460
+ (p(!0), m(L, null, V(o(Z), (n) => (p(), m("button", {
461
+ key: n.key,
462
+ type: "button",
463
+ class: U(["sch-tab sp-tab", { active: o(t).activeSection.value === n.key }]),
464
+ "data-active": "false",
465
+ onClick: (O) => o(t).activeSection.value = n.key
466
+ }, h(n.label), 11, He))), 128))
467
+ ]),
468
+ e("div", Ce, [
469
+ e("div", xe, [
470
+ o(t).activeSection.value === "payrates" ? (p(), m("section", Se, [
471
+ s[29] || (s[29] = e("div", { class: "sp-sec-head" }, [
472
+ e("div", { class: "sp-panel-title" }, "Pay rates")
473
+ ], -1)),
474
+ s[30] || (s[30] = e("div", { class: "sp-panel-desc" }, "Pay multipliers by kind of day.", -1)),
475
+ e("div", Pe, [
476
+ s[23] || (s[23] = e("div", { class: "sp-card-head" }, [
477
+ e("div", { class: "sp-card-title" }, "Overtime rate"),
478
+ e("div", { class: "sp-card-note" }, "Multiplier on every OT hour")
479
+ ], -1)),
480
+ e("div", De, [
481
+ s[18] || (s[18] = e("div", { class: "sp-row-main" }, [
482
+ e("div", { class: "sp-row-label" }, "Normal operations day"),
483
+ e("div", { class: "sp-row-hint" }, " Multiplier on their rate for hours past the weekly contract. ")
484
+ ], -1)),
485
+ e("div", Re, [
486
+ f(e("input", {
487
+ "onUpdate:modelValue": s[1] || (s[1] = (n) => o(t).draft.payRate.NORMAL.overtime = n),
488
+ class: "sch-input sp-num",
489
+ type: "number",
490
+ min: "1",
491
+ max: "4",
492
+ step: "0.1",
493
+ "aria-label": "Overtime rate on a normal day"
494
+ }, null, 512), [
495
+ [
496
+ g,
497
+ o(t).draft.payRate.NORMAL.overtime,
498
+ void 0,
499
+ { number: !0 }
500
+ ]
501
+ ]),
502
+ s[17] || (s[17] = e("span", { class: "sp-unit" }, "×", -1))
503
+ ])
504
+ ]),
505
+ e("div", Oe, [
506
+ s[20] || (s[20] = e("div", { class: "sp-row-main" }, [
507
+ e("div", { class: "sp-row-label" }, "Off day"),
508
+ e("div", { class: "sp-row-hint" }, " For a shift on the person's off day, weekly or booked. Check the rate with HR. ")
509
+ ], -1)),
510
+ e("div", Me, [
511
+ f(e("input", {
512
+ "onUpdate:modelValue": s[2] || (s[2] = (n) => o(t).draft.payRate.REST_DAY.overtime = n),
513
+ class: "sch-input sp-num",
514
+ type: "number",
515
+ min: "1",
516
+ max: "4",
517
+ step: "0.1",
518
+ "aria-label": "Overtime rate on an off day"
519
+ }, null, 512), [
520
+ [
521
+ g,
522
+ o(t).draft.payRate.REST_DAY.overtime,
523
+ void 0,
524
+ { number: !0 }
525
+ ]
526
+ ]),
527
+ s[19] || (s[19] = e("span", { class: "sp-unit" }, "×", -1))
528
+ ])
529
+ ]),
530
+ e("div", $e, [
531
+ s[22] || (s[22] = e("div", { class: "sp-row-main" }, [
532
+ e("div", { class: "sp-row-label" }, "Public holiday"),
533
+ e("div", { class: "sp-row-hint" }, " For dates on the holiday calendar. Wins over an off day on the same date. ")
534
+ ], -1)),
535
+ e("div", Le, [
536
+ f(e("input", {
537
+ "onUpdate:modelValue": s[3] || (s[3] = (n) => o(t).draft.payRate.PUBLIC_HOLIDAY.overtime = n),
538
+ class: "sch-input sp-num",
539
+ type: "number",
540
+ min: "1",
541
+ max: "4",
542
+ step: "0.1",
543
+ "aria-label": "Overtime rate on a public holiday"
544
+ }, null, 512), [
545
+ [
546
+ g,
547
+ o(t).draft.payRate.PUBLIC_HOLIDAY.overtime,
548
+ void 0,
549
+ { number: !0 }
550
+ ]
551
+ ]),
552
+ s[21] || (s[21] = e("span", { class: "sp-unit" }, "×", -1))
553
+ ])
554
+ ])
555
+ ]),
556
+ e("div", Ne, [
557
+ s[28] || (s[28] = e("div", { class: "sp-card-head" }, [
558
+ e("div", { class: "sp-card-title" }, "Regular rate"),
559
+ e("div", { class: "sp-card-note" }, "Multiplier on ordinary hours")
560
+ ], -1)),
561
+ e("div", Ae, [
562
+ s[25] || (s[25] = e("div", { class: "sp-row-main" }, [
563
+ e("div", { class: "sp-row-label" }, "Off day"),
564
+ e("div", { class: "sp-row-hint" }, "Ordinary hours worked on the person's off day.")
565
+ ], -1)),
566
+ e("div", Ee, [
567
+ f(e("input", {
568
+ "onUpdate:modelValue": s[4] || (s[4] = (n) => o(t).draft.payRate.REST_DAY.regular = n),
569
+ class: "sch-input sp-num",
570
+ type: "number",
571
+ min: "1",
572
+ max: "4",
573
+ step: "0.1",
574
+ "aria-label": "Regular rate on an off day"
575
+ }, null, 512), [
576
+ [
577
+ g,
578
+ o(t).draft.payRate.REST_DAY.regular,
579
+ void 0,
580
+ { number: !0 }
581
+ ]
582
+ ]),
583
+ s[24] || (s[24] = e("span", { class: "sp-unit" }, "×", -1))
584
+ ])
585
+ ]),
586
+ e("div", Ie, [
587
+ s[27] || (s[27] = e("div", { class: "sp-row-main" }, [
588
+ e("div", { class: "sp-row-label" }, "Public holiday"),
589
+ e("div", { class: "sp-row-hint" }, " Ordinary hours worked on a date on the holiday calendar. ")
590
+ ], -1)),
591
+ e("div", Ue, [
592
+ f(e("input", {
593
+ "onUpdate:modelValue": s[5] || (s[5] = (n) => o(t).draft.payRate.PUBLIC_HOLIDAY.regular = n),
594
+ class: "sch-input sp-num",
595
+ type: "number",
596
+ min: "1",
597
+ max: "4",
598
+ step: "0.1",
599
+ "aria-label": "Regular rate on a public holiday"
600
+ }, null, 512), [
601
+ [
602
+ g,
603
+ o(t).draft.payRate.PUBLIC_HOLIDAY.regular,
604
+ void 0,
605
+ { number: !0 }
606
+ ]
607
+ ]),
608
+ s[26] || (s[26] = e("span", { class: "sp-unit" }, "×", -1))
609
+ ])
610
+ ])
611
+ ])
612
+ ])) : o(t).activeSection.value === "workingHours" ? (p(), m("section", Te, [
613
+ s[38] || (s[38] = e("div", { class: "sp-sec-head" }, [
614
+ e("div", { class: "sp-panel-title" }, "Working hours")
615
+ ], -1)),
616
+ s[39] || (s[39] = e("div", { class: "sp-panel-desc" }, "Default employee working-hour limits when no individual setting is provided.", -1)),
617
+ e("div", Ve, [
618
+ s[37] || (s[37] = e("div", { class: "sp-card-head" }, [
619
+ e("div", { class: "sp-card-title" }, "Default working hours"),
620
+ e("div", { class: "sp-card-note" }, "Used as the employee default")
621
+ ], -1)),
622
+ e("div", Be, [
623
+ s[32] || (s[32] = e("div", { class: "sp-row-main" }, [
624
+ e("div", { class: "sp-row-label" }, "Min hours per day")
625
+ ], -1)),
626
+ e("div", ze, [
627
+ f(e("input", {
628
+ "onUpdate:modelValue": s[6] || (s[6] = (n) => o(t).draft.workingHours.minHoursPerDay = n),
629
+ class: "sch-input sp-num",
630
+ type: "number",
631
+ min: "0",
632
+ max: "24",
633
+ step: "1",
634
+ placeholder: "None",
635
+ "aria-label": "Default minimum working hours per day"
636
+ }, null, 512), [
637
+ [
638
+ g,
639
+ o(t).draft.workingHours.minHoursPerDay,
640
+ void 0,
641
+ { number: !0 }
642
+ ]
643
+ ]),
644
+ s[31] || (s[31] = e("span", { class: "sp-unit" }, "hours / day", -1))
645
+ ])
646
+ ]),
647
+ e("div", We, [
648
+ s[34] || (s[34] = e("div", { class: "sp-row-main" }, [
649
+ e("div", { class: "sp-row-label" }, "Max hours per day")
650
+ ], -1)),
651
+ e("div", Ye, [
652
+ f(e("input", {
653
+ "onUpdate:modelValue": s[7] || (s[7] = (n) => o(t).draft.workingHours.maxHoursPerDay = n),
654
+ class: "sch-input sp-num",
655
+ type: "number",
656
+ min: "0",
657
+ max: "24",
658
+ step: "1",
659
+ placeholder: "None",
660
+ "aria-label": "Default maximum working hours per day"
661
+ }, null, 512), [
662
+ [
663
+ g,
664
+ o(t).draft.workingHours.maxHoursPerDay,
665
+ void 0,
666
+ { number: !0 }
667
+ ]
668
+ ]),
669
+ s[33] || (s[33] = e("span", { class: "sp-unit" }, "hours / day", -1))
670
+ ])
671
+ ]),
672
+ e("div", qe, [
673
+ s[36] || (s[36] = e("div", { class: "sp-row-main" }, [
674
+ e("div", { class: "sp-row-label" }, "Max hours per week")
675
+ ], -1)),
676
+ e("div", Ge, [
677
+ f(e("input", {
678
+ "onUpdate:modelValue": s[8] || (s[8] = (n) => o(t).draft.workingHours.maxHoursPerWeek = n),
679
+ class: "sch-input sp-num",
680
+ type: "number",
681
+ min: "0",
682
+ max: "168",
683
+ step: "1",
684
+ placeholder: "None",
685
+ "aria-label": "Default maximum working hours per week"
686
+ }, null, 512), [
687
+ [
688
+ g,
689
+ o(t).draft.workingHours.maxHoursPerWeek,
690
+ void 0,
691
+ { number: !0 }
692
+ ]
693
+ ]),
694
+ s[35] || (s[35] = e("span", { class: "sp-unit" }, "hours / week", -1))
695
+ ])
696
+ ])
697
+ ])
698
+ ])) : o(t).activeSection.value === "overtime" ? (p(), m("section", Fe, [
699
+ s[42] || (s[42] = e("div", { class: "sp-sec-head" }, [
700
+ e("div", { class: "sp-panel-title" }, "Overtime")
701
+ ], -1)),
702
+ s[43] || (s[43] = e("div", { class: "sp-panel-desc" }, "The monthly statutory cap on overtime hours.", -1)),
703
+ e("div", je, [
704
+ s[41] || (s[41] = e("div", { class: "sp-card-head" }, [
705
+ e("div", { class: "sp-card-title" }, "Maximum OT Hours"),
706
+ e("div", { class: "sp-card-note" }, "Enforced")
707
+ ], -1)),
708
+ e("div", Je, [
709
+ s[40] || (s[40] = e("div", { class: "sp-row-main" }, [
710
+ e("div", { class: "sp-row-label" }, "Monthly OT cap"),
711
+ e("div", { class: "sp-row-hint" }, " Hours per person per month. Auto-Schedule never exceeds it. ")
712
+ ], -1)),
713
+ f(e("input", {
714
+ "onUpdate:modelValue": s[9] || (s[9] = (n) => o(t).draft.otCapHours = n),
715
+ class: "sch-input sp-num",
716
+ type: "number",
717
+ min: "0",
718
+ max: "300",
719
+ step: "1",
720
+ placeholder: "None",
721
+ "aria-label": "Monthly OT cap in hours"
722
+ }, null, 512), [
723
+ [
724
+ g,
725
+ o(t).draft.otCapHours,
726
+ void 0,
727
+ { number: !0 }
728
+ ]
729
+ ])
730
+ ])
731
+ ])
732
+ ])) : A("", !0)
733
+ ])
734
+ ]),
735
+ e("div", {
736
+ class: U(["sp-save", { dirty: o(t).dirty.value, arming: y.value }])
737
+ }, [
738
+ e("div", Ke, [
739
+ H(h(y.value ? "Discard unsaved changes?" : "Unsaved changes") + " ", 1),
740
+ y.value ? A("", !0) : (p(), m("span", Qe, "— save or discard before leaving."))
741
+ ]),
742
+ k(x, {
743
+ hierarchy: "secondary",
744
+ size: "sm",
745
+ class: "am-btn am-btn-sec",
746
+ type: "button",
747
+ onClick: s[10] || (s[10] = (n) => R())
748
+ }, {
749
+ default: b(() => [
750
+ H(h(y.value ? "Confirm discard" : "Discard"), 1)
751
+ ]),
752
+ _: 1
753
+ }),
754
+ k(x, {
755
+ hierarchy: "primary",
756
+ size: "sm",
757
+ class: "am-btn am-btn-primary",
758
+ type: "button",
759
+ onClick: s[11] || (s[11] = (n) => c())
760
+ }, {
761
+ default: b(() => [...s[44] || (s[44] = [
762
+ H(" Save changes ", -1)
763
+ ])]),
764
+ _: 1
765
+ })
766
+ ], 2)
767
+ ])
768
+ ])
769
+ ]),
770
+ k(ye, { modal: o(C) }, null, 8, ["modal"])
771
+ ], 512));
772
+ }
773
+ });
774
+ export {
775
+ ls as default
776
+ };