@feedmepos/mf-hrm-portal 2.3.2-dev → 2.3.2-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.
- package/dist/{ApprovalCodeList-xOyDG5ug.js → ApprovalCodeList-RKU5B8SO.js} +14 -15
- package/dist/AuditLogList-DuDCMjGR.js +2026 -0
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-Cixg_icC.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-pL2zRc67.js} +10 -10
- package/dist/{EmployeeList-BG2KPvOB.js → EmployeeList-nrYsS5uz.js} +196 -208
- package/dist/FormSection.vue_vue_type_script_setup_true_lang-7S2w36aY.js +90 -0
- package/dist/{GrantUserList-CUkuf3VV.js → GrantUserList-BSjeC4MC.js} +15 -16
- package/dist/{Main-Cg9SOzcz.js → Main-CpuHaXU6.js} +5 -5
- package/dist/{Main-BSHf8gTE.js → Main-DbdoVLCE.js} +12 -11
- package/dist/{Main-BcixH7R5.js → Main-DtmCBbTR.js} +1005 -999
- package/dist/MyPosProfile-CsTCfGNT.js +360 -0
- package/dist/{PermissionSetList-I3u2_qHR.js → PermissionSetList-B1c-uGZO.js} +82 -80
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Toq6qrLx.js +4208 -0
- package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-D6Z9z_Yt.js +1831 -0
- package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
- package/dist/RoleForm.vue_vue_type_script_setup_true_lang-TWTVo_9Y.js +547 -0
- package/dist/RoleList-CwaGNsFy.js +265 -0
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-C2ekVXdR.js +544 -0
- package/dist/ScheduleGeneralPage-BVtXmxtp.js +811 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-DdsQ8v-5.js +2557 -0
- package/dist/SchedulePage-3qksmT2I.js +19446 -0
- package/dist/SchedulePositionPage-DAU20KPZ.js +282 -0
- package/dist/SelectFilter-BpzBwBmQ.js +263 -0
- package/dist/TeamMemberList-Bdpm40i3.js +2087 -0
- package/dist/TimesheetList-CL_eJp2h.js +437 -0
- package/dist/{app-CdrnR_Pw.js → app-DEZT4wdV.js} +14439 -5834
- package/dist/app.js +1 -1
- package/dist/{approval-code-Bwvwehz9.js → approval-code-BZTz5OXK.js} +4 -4
- package/dist/{dayjs.min-BO8bcI17.js → dayjs.min-B55I-uhI.js} +12 -12
- package/dist/employee-C6z5i6O4.js +172 -0
- package/dist/{grant-user-whFOaPZI.js → grant-user-B2rYztyf.js} +2 -2
- package/dist/{iteration-ZpERYj3o.js → index-Bfdseotz.js} +698 -726
- package/dist/iteration-CcXrOMQe.js +30 -0
- package/dist/{lodash-7SZBZ8VQ.js → lodash-B8bqa6a9.js} +1 -1
- package/dist/member-grant-BIpKkuu8.js +54 -0
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/restaurant-ejyX2jEG.js +52 -0
- package/dist/role-C_t3DDlG.js +98 -0
- package/dist/rule-Ccopk8R_.js +843 -0
- package/dist/src/api/audit-log/index.d.ts +6 -0
- package/dist/src/api/employee/index.d.ts +3 -4
- package/dist/src/api/my-pos-profile/index.d.ts +1 -3
- package/dist/src/api/restaurant/index.d.ts +2 -0
- package/dist/src/api/schedule/index.d.ts +68 -0
- package/dist/src/api/sso-provider/index.d.ts +5 -0
- package/dist/src/api/staff-invite/index.d.ts +1 -2
- package/dist/src/api/timesheet/index.d.ts +1 -1
- package/dist/src/components/AppForm.vue.d.ts +2 -2
- package/dist/src/components/CheckboxInput.vue.d.ts +2 -2
- package/dist/src/components/layout/PortalShell.vue.d.ts +12 -0
- package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
- package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- package/dist/src/composables/useMessage.d.ts +8 -2
- package/dist/src/composables/useSsoProviders.d.ts +19 -0
- package/dist/src/composables/useStaffInviteProviders.d.ts +1 -12
- package/dist/src/helpers/permission-set.d.ts +1 -102
- package/dist/src/helpers/pos-assignment-rows.d.ts +2 -0
- package/dist/src/helpers/rule.d.ts +2 -2
- package/dist/src/helpers/staff-invite.d.ts +3 -0
- package/dist/src/router/shared.d.ts +3 -0
- package/dist/src/stores/approval-code.d.ts +1 -1
- package/dist/src/stores/employee.d.ts +15 -21
- package/dist/src/stores/grant-user.d.ts +1 -1
- package/dist/src/stores/permission-assignment.d.ts +2 -2
- package/dist/src/stores/permission-set.d.ts +2 -2
- package/dist/src/stores/restaurant.d.ts +63 -3
- package/dist/src/stores/role.d.ts +2 -2
- package/dist/src/stores/team.d.ts +1 -1
- package/dist/src/stores/timesheet.d.ts +68 -53
- package/dist/src/types/employee.d.ts +1 -0
- package/dist/src/types/my-pos-profile.d.ts +2 -3
- package/dist/src/types/schedule.d.ts +23 -0
- package/dist/src/types/sso-provider.d.ts +10 -0
- package/dist/src/types/timesheet.d.ts +3 -0
- package/dist/src/views/audit-log/constants.d.ts +9 -30
- package/dist/src/views/audit-log/locales/index.d.ts +528 -0
- package/dist/src/views/audit-log/pos-row.d.ts +27 -0
- package/dist/src/views/audit-log/useTraceIdDeepLink.d.ts +19 -0
- package/dist/src/views/hr/locales/index.d.ts +24 -4
- package/dist/src/views/hr/role/RoleForm.vue.d.ts +29 -2
- package/dist/src/views/my-pos-profile/components/PasscodeChangedDialog.vue.d.ts +1 -1
- package/dist/src/views/my-pos-profile/locales/index.d.ts +40 -4
- package/dist/src/views/scheduling/ScheduleGeneralPage.vue.d.ts +3 -0
- package/dist/src/views/scheduling/SchedulePage.vue.d.ts +3 -0
- package/dist/src/views/scheduling/SchedulePositionPage.vue.d.ts +3 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeIdentitySection.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeModeStep.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeePosAccessSection.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeePositionsSection.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeSchedulingSection.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddPickPopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddPositionModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +41 -0
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleDetailsModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleModal.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +25 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +29 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +34 -0
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
- package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
- package/dist/src/views/scheduling/components/ScheduleButton.vue.d.ts +23 -0
- package/dist/src/views/scheduling/components/ScheduleChangeEmployeeModal.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleCloneOutletModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleCoach.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +15 -0
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +33 -0
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleCostRail.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleCostRailEmptyArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleDateRangePopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleDayNotePopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleDemandRow.vue.d.ts +23 -0
- package/dist/src/views/scheduling/components/ScheduleDemandSheet.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleDotsIcon.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleEmployeeDetailPanel.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleEmployeeIdentity.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleExportPreview.vue.d.ts +7 -0
- package/dist/src/views/scheduling/components/ScheduleFilterBar.vue.d.ts +18 -0
- package/dist/src/views/scheduling/components/ScheduleGapPopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleGridHeader.vue.d.ts +18 -0
- package/dist/src/views/scheduling/components/ScheduleGridSkeleton.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
- package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingAssignPositionModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingClosedDayConfirm.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandDays.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDoneArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +11 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizard.vue.d.ts +9 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
- package/dist/src/views/scheduling/components/SchedulePublishModal.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/SchedulePublishShareArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleReviewBar.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +70 -0
- package/dist/src/views/scheduling/components/ScheduleSelectExistingEmployeeModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +35 -0
- package/dist/src/views/scheduling/components/ScheduleShiftHeadcountEditor.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleShiftImpact.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +16 -0
- package/dist/src/views/scheduling/components/ScheduleShiftRepeatDaysRow.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleShiftSegmentsEditor.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleShiftWhoPicker.vue.d.ts +25 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +16 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +50 -0
- package/dist/src/views/scheduling/components/ScheduleStatsRow.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleSwapShiftsModal.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleTimePickerPopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +20 -0
- package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +35 -0
- package/dist/src/views/scheduling/composables/onboarding-constants.d.ts +7 -0
- package/dist/src/views/scheduling/composables/onboarding-hours.d.ts +7 -0
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +51 -0
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +15 -0
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +82 -0
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +63 -0
- package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +9 -0
- package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +17 -0
- package/dist/src/views/scheduling/composables/schedule-cost.d.ts +24 -0
- package/dist/src/views/scheduling/composables/schedule-currency.d.ts +22 -0
- package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +21 -0
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +23 -0
- package/dist/src/views/scheduling/composables/schedule-employee-profile.d.ts +7 -0
- package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
- package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
- package/dist/src/views/scheduling/composables/schedule-leave-split.d.ts +9 -0
- package/dist/src/views/scheduling/composables/schedule-popover-position.d.ts +16 -0
- package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +23 -0
- package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +29 -0
- package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
- package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useCollapsedList.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +137 -0
- package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +75 -0
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +50 -0
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +301 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +615 -0
- package/dist/src/views/scheduling/composables/useScheduleCellState.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +28 -0
- package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useScheduleCoach.d.ts +80 -0
- package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +12 -0
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +60 -0
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +44 -0
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +111 -0
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +59 -0
- package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +47 -0
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +166 -0
- package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +55 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +24 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +49 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +50 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +38 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +32 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeProfile.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +52 -0
- package/dist/src/views/scheduling/composables/useScheduleFilterBar.d.ts +14 -0
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +79 -0
- package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +60 -0
- package/dist/src/views/scheduling/composables/useScheduleLegend.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +231 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingFlow.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingPersistence.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +1543 -0
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +25 -0
- package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useSchedulePageBootstrap.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +20 -0
- package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +33 -0
- package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +55 -0
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +35 -0
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +127 -0
- package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleRangeCalendar.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +313 -0
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +40 -0
- package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +245 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +255 -0
- package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleTimePicker.d.ts +49 -0
- package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +95 -0
- package/dist/src/views/scheduling/composables/useScheduleViewportFit.d.ts +9 -0
- package/dist/src/views/scheduling/country-rules/index.d.ts +33 -0
- package/dist/src/views/scheduling/data.d.ts +123 -0
- package/dist/src/views/scheduling/locales/index.d.ts +6988 -0
- package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +767 -0
- package/dist/src/views/scheduling/schedule-store.d.ts +140 -0
- package/dist/src/views/scheduling/types.d.ts +381 -0
- package/dist/src/views/team/components/MemberGrantFields.vue.d.ts +2 -6
- package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +2 -2
- package/dist/src/views/team/components/PosAssignmentRows.vue.d.ts +0 -2
- package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +2 -2
- package/dist/src/views/team/member/AddMemberForm.vue.d.ts +0 -2
- package/dist/src/views/team/member/TeamMemberMasterUser.vue.d.ts +0 -2
- package/dist/style.css +1 -1
- package/dist/timesheet-CZHcebqS.js +76 -0
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-CL6EEDuw.js → useAppStore-DfqsbhT2.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-BBjBUzGJ.js → useLoading-CQnX5WjI.js} +1 -1
- package/dist/useMessage-_ywT_N9X.js +17 -0
- package/dist/{useReportPermissions-Bg0fma6m.js → useReportPermissions-kTjftFk7.js} +13 -13
- package/package.json +7 -5
- package/dist/AuditLogList-Dd6HyFhk.js +0 -1777
- package/dist/FormItem.vue_vue_type_script_setup_true_lang-DPT2FoIc.js +0 -45
- package/dist/FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js +0 -49
- package/dist/MyPosProfile-CN8Bj3aV.js +0 -301
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BBoRXQPn.js +0 -4243
- package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-B5QDOF0L.js +0 -1840
- package/dist/RoleList-ALmAwN0U.js +0 -739
- package/dist/SelectFilter-ATOm0hdn.js +0 -269
- package/dist/TeamMemberList-DZfEnOs1.js +0 -2097
- package/dist/TimesheetList-CECFKt7H.js +0 -402
- package/dist/TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-RIyoAmeb.js +0 -58
- package/dist/employee-Dg-J9goA.js +0 -205
- package/dist/member-grant-C46lvrh2.js +0 -55
- package/dist/restaurant-CKhT6kgj.js +0 -45
- package/dist/role-C6hFKOfU.js +0 -93
- package/dist/rule-BlMymDXm.js +0 -788
- package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export interface CoachTipData {
|
|
2
|
+
title: string;
|
|
3
|
+
body: string;
|
|
4
|
+
count?: string;
|
|
5
|
+
nextLabel?: string;
|
|
6
|
+
skipLabel?: string;
|
|
7
|
+
next?: () => void;
|
|
8
|
+
skip?: () => void;
|
|
9
|
+
}
|
|
10
|
+
type CoachArrowSide = 'top' | 'bottom' | 'left' | 'right';
|
|
11
|
+
/** A spotlight-and-tooltip overlay that frames one live element at a time — the engine behind
|
|
12
|
+
* the guided tour. Ported from V6.2's `coach*` functions: same 4-panel mask, same below /
|
|
13
|
+
* above / left / right tip placement with viewport clamping, same arrow-follows-target-center
|
|
14
|
+
* math. Deliberately has no Back button and no "click to advance" wiring — every tour step
|
|
15
|
+
* here always supplies `next`, so the Next button is the one way on. */
|
|
16
|
+
export declare function useScheduleCoach(): {
|
|
17
|
+
open: import("vue").Ref<boolean, boolean>;
|
|
18
|
+
placing: import("vue").Ref<boolean, boolean>;
|
|
19
|
+
tip: import("vue").Ref<{
|
|
20
|
+
title: string;
|
|
21
|
+
body: string;
|
|
22
|
+
count?: string | undefined;
|
|
23
|
+
nextLabel?: string | undefined;
|
|
24
|
+
skipLabel?: string | undefined;
|
|
25
|
+
next?: (() => void) | undefined;
|
|
26
|
+
skip?: (() => void) | undefined;
|
|
27
|
+
} | null, CoachTipData | {
|
|
28
|
+
title: string;
|
|
29
|
+
body: string;
|
|
30
|
+
count?: string | undefined;
|
|
31
|
+
nextLabel?: string | undefined;
|
|
32
|
+
skipLabel?: string | undefined;
|
|
33
|
+
next?: (() => void) | undefined;
|
|
34
|
+
skip?: (() => void) | undefined;
|
|
35
|
+
} | null>;
|
|
36
|
+
maskT: {
|
|
37
|
+
left: number;
|
|
38
|
+
top: number;
|
|
39
|
+
width: number;
|
|
40
|
+
height: number;
|
|
41
|
+
};
|
|
42
|
+
maskB: {
|
|
43
|
+
left: number;
|
|
44
|
+
top: number;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
};
|
|
48
|
+
maskL: {
|
|
49
|
+
left: number;
|
|
50
|
+
top: number;
|
|
51
|
+
width: number;
|
|
52
|
+
height: number;
|
|
53
|
+
};
|
|
54
|
+
maskR: {
|
|
55
|
+
left: number;
|
|
56
|
+
top: number;
|
|
57
|
+
width: number;
|
|
58
|
+
height: number;
|
|
59
|
+
};
|
|
60
|
+
spot: {
|
|
61
|
+
left: number;
|
|
62
|
+
top: number;
|
|
63
|
+
width: number;
|
|
64
|
+
height: number;
|
|
65
|
+
};
|
|
66
|
+
tipPos: {
|
|
67
|
+
left: number;
|
|
68
|
+
top: number;
|
|
69
|
+
};
|
|
70
|
+
arrow: {
|
|
71
|
+
side: CoachArrowSide;
|
|
72
|
+
offset: number;
|
|
73
|
+
};
|
|
74
|
+
start: (el: HTMLElement, data: CoachTipData, onMiss?: () => void) => void;
|
|
75
|
+
end: () => void;
|
|
76
|
+
next: () => void;
|
|
77
|
+
skip: () => void;
|
|
78
|
+
};
|
|
79
|
+
export type ScheduleCoachApi = ReturnType<typeof useScheduleCoach>;
|
|
80
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
/** The mockup's Copy schedule feature (copyLastWeek/copyThisWeekForward), ported against this
|
|
3
|
+
* board's per-week-offset bucket cache instead of the mockup's absolute 91-day horizon. */
|
|
4
|
+
export declare function useScheduleCopyWeek(board: ScheduleBoardApi, handlers?: {
|
|
5
|
+
onDemandChanged?: () => void;
|
|
6
|
+
onConfirmOverwrite?: (message: string, onConfirm: () => void) => void;
|
|
7
|
+
}): {
|
|
8
|
+
copyLastWeek: (mode: "staffed" | "open") => Promise<void>;
|
|
9
|
+
copyThisWeekForward: (mode: "staffed" | "open") => Promise<void>;
|
|
10
|
+
isCopying: import("vue").Ref<boolean, boolean>;
|
|
11
|
+
};
|
|
12
|
+
export type ScheduleCopyWeekApi = ReturnType<typeof useScheduleCopyWeek>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Proposal } from '../types';
|
|
2
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import type { ScheduleEmployeeLoad } from './useScheduleEmployeeIdentity';
|
|
4
|
+
export declare function slotHours(start: string, end: string): number;
|
|
5
|
+
export interface ScheduleDayCost {
|
|
6
|
+
hours: number;
|
|
7
|
+
otHours: number;
|
|
8
|
+
base: number;
|
|
9
|
+
ot: number;
|
|
10
|
+
total: number;
|
|
11
|
+
}
|
|
12
|
+
export interface SchedulePositionCost {
|
|
13
|
+
position: string;
|
|
14
|
+
base: number;
|
|
15
|
+
ot: number;
|
|
16
|
+
total: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ScheduleSectionCost {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
base: number;
|
|
22
|
+
ot: number;
|
|
23
|
+
total: number;
|
|
24
|
+
rows: SchedulePositionCost[];
|
|
25
|
+
}
|
|
26
|
+
export interface ScheduleOtRisk {
|
|
27
|
+
empId: number;
|
|
28
|
+
name: string;
|
|
29
|
+
hours: number;
|
|
30
|
+
otHours: number;
|
|
31
|
+
contract: number;
|
|
32
|
+
}
|
|
33
|
+
export interface ScheduleMonthlyOtSummary {
|
|
34
|
+
key: string;
|
|
35
|
+
label: string;
|
|
36
|
+
used: number;
|
|
37
|
+
cap: number | null;
|
|
38
|
+
progress: number;
|
|
39
|
+
high: boolean;
|
|
40
|
+
}
|
|
41
|
+
/** The staff rail consumes the same employee identity/load derivation as the area view. */
|
|
42
|
+
export type ScheduleRailRow = ScheduleEmployeeLoad;
|
|
43
|
+
/** Weekly labour cost + monthly OT gauge for the collapsible cost rail, built off one
|
|
44
|
+
* per-day breakdown so the rail's totals and the stats row's per-day figures can never
|
|
45
|
+
* disagree about what a day cost. */
|
|
46
|
+
export declare function useScheduleCostRail(board: ScheduleBoardApi, proposalAt?: () => ((empId: number, dayIdx: number) => Proposal | undefined) | undefined): {
|
|
47
|
+
rows: import("vue").ComputedRef<ScheduleEmployeeLoad[]>;
|
|
48
|
+
collapsed: import("vue").Ref<boolean, boolean>;
|
|
49
|
+
byDay: import("vue").ComputedRef<ScheduleDayCost[]>;
|
|
50
|
+
weeklyCost: import("vue").ComputedRef<number>;
|
|
51
|
+
otHours: import("vue").ComputedRef<number>;
|
|
52
|
+
monthlyOtUsed: import("vue").ComputedRef<number>;
|
|
53
|
+
monthlyOtSummaries: import("vue").ComputedRef<ScheduleMonthlyOtSummary[]>;
|
|
54
|
+
monthlyOtCapHours: import("vue").ComputedRef<number | null>;
|
|
55
|
+
monthlyOtProgress: import("vue").ComputedRef<number>;
|
|
56
|
+
monthlyOtHigh: import("vue").ComputedRef<boolean>;
|
|
57
|
+
bySection: import("vue").ComputedRef<ScheduleSectionCost[]>;
|
|
58
|
+
otRisk: import("vue").ComputedRef<ScheduleOtRisk[]>;
|
|
59
|
+
};
|
|
60
|
+
export type ScheduleCostRailApi = ReturnType<typeof useScheduleCostRail>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
export interface ScheduleDayNoteState {
|
|
3
|
+
open: boolean;
|
|
4
|
+
dayIdx: number | null;
|
|
5
|
+
left: number;
|
|
6
|
+
top: number;
|
|
7
|
+
}
|
|
8
|
+
export interface ScheduleDayNoteOptions {
|
|
9
|
+
/** Toasts for the writes that happen on the spot — closing a day, repricing it, saving. */
|
|
10
|
+
onToast?: (message: string, type?: 'info' | 'success' | 'error') => void;
|
|
11
|
+
}
|
|
12
|
+
/** One decimal, always: "2×" reads as a count, and 1.5 beside a bare 2 in one sentence looks
|
|
13
|
+
* like two different kinds of number. Ported from the mockup's fmtRate(). */
|
|
14
|
+
export declare function fmtRate(rate: number): string;
|
|
15
|
+
/** The date card editor — opened by clicking a day card or its pencil. Everything on it is a
|
|
16
|
+
* fact about the DATE, applying to the whole column: a titled note, whether the venue opens,
|
|
17
|
+
* and whether the day bills at the holiday rate. Ported from the mockup's openDayNote() /
|
|
18
|
+
* saveDayNote() / dnToggleClosed() / dnToggleHoliday().
|
|
19
|
+
*
|
|
20
|
+
* The mockup re-renders the grid on the two toggles and rebuilds the popover from a stashed
|
|
21
|
+
* draft so half-typed text survives; Vue re-renders in place, so the draft just stays in the
|
|
22
|
+
* refs and there is nothing to stash. */
|
|
23
|
+
export declare function useScheduleDayNote(board: ScheduleBoardApi, opts?: ScheduleDayNoteOptions): {
|
|
24
|
+
state: {
|
|
25
|
+
open: boolean;
|
|
26
|
+
dayIdx: number | null;
|
|
27
|
+
left: number;
|
|
28
|
+
top: number;
|
|
29
|
+
};
|
|
30
|
+
dayIdx: import("vue").ComputedRef<number | null>;
|
|
31
|
+
title: import("vue").Ref<string, string>;
|
|
32
|
+
desc: import("vue").Ref<string, string>;
|
|
33
|
+
savedNote: import("vue").ComputedRef<import("../types").ScheduleDayNote | null>;
|
|
34
|
+
hasSaved: import("vue").ComputedRef<boolean>;
|
|
35
|
+
whenLabel: import("vue").ComputedRef<string>;
|
|
36
|
+
rateApplies: import("vue").ComputedRef<boolean>;
|
|
37
|
+
holidayHint: import("vue").ComputedRef<string>;
|
|
38
|
+
openFor: (dayIdx: number, anchor: HTMLElement) => void;
|
|
39
|
+
close: () => void;
|
|
40
|
+
toggleHoliday: () => void;
|
|
41
|
+
save: () => void;
|
|
42
|
+
remove: () => void;
|
|
43
|
+
};
|
|
44
|
+
export type ScheduleDayNoteApi = ReturnType<typeof useScheduleDayNote>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { ScheduleRosterApi } from './useScheduleRoster';
|
|
3
|
+
import type { ScheduleAreaBoardApi } from './useScheduleAreaBoard';
|
|
4
|
+
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
5
|
+
import { type ScheduleEmployeeLoad } from './useScheduleEmployeeIdentity';
|
|
6
|
+
declare function minToHHMM(m: number): string;
|
|
7
|
+
export interface ScheduleTimelineBar {
|
|
8
|
+
key: string;
|
|
9
|
+
start: number;
|
|
10
|
+
end: number;
|
|
11
|
+
left: number;
|
|
12
|
+
width: number;
|
|
13
|
+
cls: string;
|
|
14
|
+
label: string;
|
|
15
|
+
labels?: string[];
|
|
16
|
+
sub?: string;
|
|
17
|
+
conflict?: boolean;
|
|
18
|
+
title: string;
|
|
19
|
+
brk?: {
|
|
20
|
+
left: number;
|
|
21
|
+
width: number;
|
|
22
|
+
};
|
|
23
|
+
laneTop?: number;
|
|
24
|
+
laneHeight?: number;
|
|
25
|
+
employeeId?: number;
|
|
26
|
+
slotIndex?: number;
|
|
27
|
+
onClick?: () => void;
|
|
28
|
+
}
|
|
29
|
+
export interface ScheduleTimelineRow {
|
|
30
|
+
key: string;
|
|
31
|
+
kind: 'open' | 'employee' | 'position';
|
|
32
|
+
swatchColor?: string;
|
|
33
|
+
swatchClass?: string;
|
|
34
|
+
avatarInitials?: string;
|
|
35
|
+
avatarColor?: string;
|
|
36
|
+
employeeId?: number;
|
|
37
|
+
employeeLoad?: ScheduleEmployeeLoad;
|
|
38
|
+
roleLabel?: string;
|
|
39
|
+
hoursLabel?: string;
|
|
40
|
+
hoursPct?: number;
|
|
41
|
+
onMenu?: (anchor: HTMLElement) => void;
|
|
42
|
+
name: string;
|
|
43
|
+
sub: string;
|
|
44
|
+
bars: ScheduleTimelineBar[];
|
|
45
|
+
pastDay?: boolean;
|
|
46
|
+
lockedDay?: boolean;
|
|
47
|
+
closedDay?: boolean;
|
|
48
|
+
availabilityDay?: boolean;
|
|
49
|
+
availabilityLabel?: string;
|
|
50
|
+
minHeight?: number;
|
|
51
|
+
emptyText?: string;
|
|
52
|
+
onTrackClick?: (anchor: HTMLElement) => void;
|
|
53
|
+
}
|
|
54
|
+
export interface ScheduleHourCell {
|
|
55
|
+
m: number;
|
|
56
|
+
clock: string;
|
|
57
|
+
open: boolean;
|
|
58
|
+
state: '' | 'short' | 'met' | 'over';
|
|
59
|
+
barHeightPct: number;
|
|
60
|
+
title: string;
|
|
61
|
+
n: number;
|
|
62
|
+
}
|
|
63
|
+
export declare function useScheduleDayTimeline(board: ScheduleBoardApi, roster: ScheduleRosterApi, areaBoard: ScheduleAreaBoardApi, demand: ScheduleDemandApi, handlers: {
|
|
64
|
+
onAddShift: (empId: number, dayIdx: number, anchor: HTMLElement) => void;
|
|
65
|
+
onAddPositionShift: (dayIdx: number, position: string, anchor: HTMLElement) => void;
|
|
66
|
+
onEditShift: (empId: number, dayIdx: number) => void;
|
|
67
|
+
onEditLeave: (empId: number, dayIdx: number) => void;
|
|
68
|
+
onOpenDemand: (dayIdx: number) => void;
|
|
69
|
+
onOpenEmployeeMenu: (empId: number, anchor: HTMLElement) => void;
|
|
70
|
+
onDemandSegment: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => void;
|
|
71
|
+
}): {
|
|
72
|
+
dayIdx: import("vue").ComputedRef<number>;
|
|
73
|
+
axis: import("vue").ComputedRef<{
|
|
74
|
+
from: number;
|
|
75
|
+
to: number;
|
|
76
|
+
span: number;
|
|
77
|
+
}>;
|
|
78
|
+
hours: import("vue").ComputedRef<{
|
|
79
|
+
m: number;
|
|
80
|
+
clock: string;
|
|
81
|
+
}[]>;
|
|
82
|
+
isOpenHour: (m: number) => boolean;
|
|
83
|
+
employeeRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
|
|
84
|
+
positionTimelineRows: import("vue").ComputedRef<ScheduleTimelineRow[]>;
|
|
85
|
+
demandRow: import("vue").ComputedRef<{
|
|
86
|
+
blank: boolean;
|
|
87
|
+
segments: {
|
|
88
|
+
key: string;
|
|
89
|
+
from: number;
|
|
90
|
+
to: number;
|
|
91
|
+
left: number;
|
|
92
|
+
width: number;
|
|
93
|
+
cls: string;
|
|
94
|
+
}[];
|
|
95
|
+
title: string;
|
|
96
|
+
}>;
|
|
97
|
+
openDemand: () => void;
|
|
98
|
+
openDemandSegment: (from: number, to: number, anchor: HTMLElement) => void;
|
|
99
|
+
footer: import("vue").ComputedRef<{
|
|
100
|
+
cells: ScheduleHourCell[];
|
|
101
|
+
staffCount: number;
|
|
102
|
+
totalHours: number;
|
|
103
|
+
totalWages: number;
|
|
104
|
+
peakN: number;
|
|
105
|
+
lowN: number;
|
|
106
|
+
peakAt: number | undefined;
|
|
107
|
+
}>;
|
|
108
|
+
minToHHMM: typeof minToHHMM;
|
|
109
|
+
};
|
|
110
|
+
export type ScheduleDayTimelineApi = ReturnType<typeof useScheduleDayTimeline>;
|
|
111
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { CoverageSegment, DaySlot, DemandPeriod, Employee, Proposal } from '../types';
|
|
2
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import { anyLeftOf, minToHHMM, minToShort, rangeText, roleTotalOf, spanOf, t12, toMin } from './schedule-demand-domain';
|
|
4
|
+
import type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
5
|
+
export { anyLeftOf, minToHHMM, minToShort, rangeText, roleTotalOf, spanOf, t12, toMin };
|
|
6
|
+
export type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
7
|
+
/** Staffing demand, and coverage read against it.
|
|
8
|
+
*
|
|
9
|
+
* Storage follows this board's dayNotes rather than the mockup's flat `di` index: the mockup
|
|
10
|
+
* renders one long horizon so a day index identifies a date, but this board pages through
|
|
11
|
+
* weeks, and demand put on this Monday must not reappear on every other Monday. Demand is
|
|
12
|
+
* therefore keyed by explicit ISO date.
|
|
13
|
+
*
|
|
14
|
+
* The weekday fallback remains only as a defensive read path until legacy records are removed. */
|
|
15
|
+
export declare function useScheduleDemand(board: ScheduleBoardApi): {
|
|
16
|
+
byDate: Record<string, DemandPeriod[]>;
|
|
17
|
+
byWeekday: Record<number, DemandPeriod[]>;
|
|
18
|
+
demandFor: (dayIdx: number) => DemandPeriod[];
|
|
19
|
+
hasDemandOn: (dayIdx: number) => boolean;
|
|
20
|
+
demandIsOwn: (dayIdx: number) => boolean;
|
|
21
|
+
setDateDemand: (dayIdx: number, periods: DemandPeriod[]) => void;
|
|
22
|
+
clearDateDemand: (dayIdx: number) => void;
|
|
23
|
+
setWeekdayDemand: (weekday: number, periods: DemandPeriod[]) => void;
|
|
24
|
+
coverageAxis: (dayIdx: number) => ScheduleCoverageAxis;
|
|
25
|
+
coverageSegments: (dayIdx: number) => CoverageSegment[];
|
|
26
|
+
setPreview: (items: Proposal[]) => void;
|
|
27
|
+
segmentsWith: (dayIdx: number, employees: Employee[]) => CoverageSegment[];
|
|
28
|
+
dayHeadcount: (dayIdx: number) => {
|
|
29
|
+
crew: number;
|
|
30
|
+
peak: number;
|
|
31
|
+
};
|
|
32
|
+
coverageImpact: (dayIdx: number, empId: number | null, slot: DaySlot) => {
|
|
33
|
+
when: string;
|
|
34
|
+
pctBefore: number;
|
|
35
|
+
pctAfter: number;
|
|
36
|
+
stillShort: number;
|
|
37
|
+
before: {
|
|
38
|
+
required: number;
|
|
39
|
+
scheduled: number;
|
|
40
|
+
};
|
|
41
|
+
after: {
|
|
42
|
+
required: number;
|
|
43
|
+
scheduled: number;
|
|
44
|
+
};
|
|
45
|
+
beforeSegs: CoverageSegment[];
|
|
46
|
+
afterSegs: CoverageSegment[];
|
|
47
|
+
axis: ScheduleCoverageAxis;
|
|
48
|
+
} | null;
|
|
49
|
+
coveragePct: (dayIdx: number) => number | null;
|
|
50
|
+
shortSegs: (dayIdx: number) => CoverageSegment[];
|
|
51
|
+
shortInRange: (dayIdx: number, start: string, end: string) => number;
|
|
52
|
+
biggestGap: (dayIdx: number) => CoverageSegment | null;
|
|
53
|
+
rangeSummary: import("vue").ComputedRef<{
|
|
54
|
+
live: number;
|
|
55
|
+
set: number;
|
|
56
|
+
shortDays: number;
|
|
57
|
+
}>;
|
|
58
|
+
};
|
|
59
|
+
export type ScheduleDemandApi = ReturnType<typeof useScheduleDemand>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
3
|
+
export type ScheduleSegState = 'met' | 'short' | 'over' | 'nodem';
|
|
4
|
+
export interface ScheduleDemandSeg {
|
|
5
|
+
key: string;
|
|
6
|
+
from: number;
|
|
7
|
+
to: number;
|
|
8
|
+
state: ScheduleSegState;
|
|
9
|
+
/** Percentage of the day's axis this segment occupies — width means duration. */
|
|
10
|
+
width: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ScheduleDemandCell {
|
|
14
|
+
dayIdx: number;
|
|
15
|
+
/** No demand stated on this day — the cell carries its own "+ Set demand" instead. Whether
|
|
16
|
+
* the day is closed is a separate, purely visual fact read off cellStateClasses by the
|
|
17
|
+
* template — closing a day is informational for staffing, not a lock, so it doesn't change
|
|
18
|
+
* what this cell has to show. */
|
|
19
|
+
blank: boolean;
|
|
20
|
+
pct: number;
|
|
21
|
+
tone: '' | 'part' | 'short';
|
|
22
|
+
segs: ScheduleDemandSeg[];
|
|
23
|
+
hoursFrom: string;
|
|
24
|
+
hoursTo: string;
|
|
25
|
+
pctTitle: string;
|
|
26
|
+
title: string;
|
|
27
|
+
}
|
|
28
|
+
/** What the coverage band draws, one cell per visible day.
|
|
29
|
+
*
|
|
30
|
+
* The percentage is the headline and the strip is the reason — a day can be 81% covered with
|
|
31
|
+
* the missing fifth spread thinly or concentrated at six o'clock, and only one of those is a
|
|
32
|
+
* problem you act on tonight. */
|
|
33
|
+
export declare function useScheduleDemandRow(board: ScheduleBoardApi, demand: ScheduleDemandApi): {
|
|
34
|
+
cellFor: (dayIdx: number) => ScheduleDemandCell;
|
|
35
|
+
cells: import("vue").ComputedRef<{
|
|
36
|
+
dayIdx: number;
|
|
37
|
+
colIndex: number;
|
|
38
|
+
cell: ScheduleDemandCell;
|
|
39
|
+
}[]>;
|
|
40
|
+
lead: import("vue").ComputedRef<{
|
|
41
|
+
blank: boolean;
|
|
42
|
+
name: string;
|
|
43
|
+
meta: string;
|
|
44
|
+
}>;
|
|
45
|
+
dayTitle: (dayIdx: number) => string;
|
|
46
|
+
};
|
|
47
|
+
export type ScheduleDemandRowApi = ReturnType<typeof useScheduleDemandRow>;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import type { DemandApplyMode, DemandPeriod } from '../types';
|
|
2
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
4
|
+
export interface ScheduleDemandSuggestion {
|
|
5
|
+
why: string;
|
|
6
|
+
periods: DemandPeriod[];
|
|
7
|
+
}
|
|
8
|
+
export interface ScheduleDemandSheetOptions {
|
|
9
|
+
onToast?: (message: string, type?: 'info' | 'success' | 'error') => void;
|
|
10
|
+
/** Positions the breakdown can name — the same list the shift editor offers. */
|
|
11
|
+
positionOptions: () => string[];
|
|
12
|
+
/** Called instead of a toast when "+ Position breakdown" is pressed and there is no position
|
|
13
|
+
* to name yet — the page opens its Add Position popup for that period. */
|
|
14
|
+
onNeedPosition?: (periodIdx: number, roleIdx: number) => void;
|
|
15
|
+
}
|
|
16
|
+
/** The demand sheet — editing happens on a DRAFT, so Save is a real commit and closing is a
|
|
17
|
+
* real cancel. Apply scopes are expanded into explicit dates in the visible week. */
|
|
18
|
+
export declare function useScheduleDemandSheet(board: ScheduleBoardApi, demand: ScheduleDemandApi, opts: ScheduleDemandSheetOptions): {
|
|
19
|
+
open: import("vue").Ref<boolean, boolean>;
|
|
20
|
+
dayIdx: import("vue").Ref<number | null, number | null>;
|
|
21
|
+
periods: import("vue").Ref<{
|
|
22
|
+
from: string;
|
|
23
|
+
to: string;
|
|
24
|
+
n: number;
|
|
25
|
+
roles?: {
|
|
26
|
+
position: string;
|
|
27
|
+
positionId?: string | undefined;
|
|
28
|
+
n: number;
|
|
29
|
+
}[] | undefined;
|
|
30
|
+
}[], DemandPeriod[] | {
|
|
31
|
+
from: string;
|
|
32
|
+
to: string;
|
|
33
|
+
n: number;
|
|
34
|
+
roles?: {
|
|
35
|
+
position: string;
|
|
36
|
+
positionId?: string | undefined;
|
|
37
|
+
n: number;
|
|
38
|
+
}[] | undefined;
|
|
39
|
+
}[]>;
|
|
40
|
+
apply: import("vue").Ref<DemandApplyMode, DemandApplyMode>;
|
|
41
|
+
applyOptions: import("vue").ComputedRef<({
|
|
42
|
+
on: boolean;
|
|
43
|
+
key: "day";
|
|
44
|
+
label: string;
|
|
45
|
+
sub: string;
|
|
46
|
+
} | {
|
|
47
|
+
on: boolean;
|
|
48
|
+
key: "every";
|
|
49
|
+
label: string;
|
|
50
|
+
sub: string;
|
|
51
|
+
} | {
|
|
52
|
+
on: boolean;
|
|
53
|
+
key: "weekdays";
|
|
54
|
+
label: string;
|
|
55
|
+
sub: string;
|
|
56
|
+
} | {
|
|
57
|
+
on: boolean;
|
|
58
|
+
key: "custom";
|
|
59
|
+
label: string;
|
|
60
|
+
sub: string;
|
|
61
|
+
})[]>;
|
|
62
|
+
weekdayButtons: import("vue").ComputedRef<{
|
|
63
|
+
i: number;
|
|
64
|
+
label: string;
|
|
65
|
+
on: boolean;
|
|
66
|
+
}[]>;
|
|
67
|
+
toggleCustomDay: (i: number) => void;
|
|
68
|
+
applyNote: import("vue").ComputedRef<string>;
|
|
69
|
+
replaceConfirmOpen: import("vue").ComputedRef<boolean>;
|
|
70
|
+
replaceConfirmTitle: import("vue").ComputedRef<string>;
|
|
71
|
+
replaceConfirmActionLabel: import("vue").ComputedRef<string>;
|
|
72
|
+
replaceConfirmMessage: import("vue").ComputedRef<string>;
|
|
73
|
+
replaceConfirmDates: import("vue").ComputedRef<string[]>;
|
|
74
|
+
confirmReplace: () => Promise<void>;
|
|
75
|
+
cancelReplace: () => void;
|
|
76
|
+
overlapWarning: import("vue").ComputedRef<string>;
|
|
77
|
+
whenLabel: import("vue").ComputedRef<string>;
|
|
78
|
+
openFor: (idx: number) => void;
|
|
79
|
+
close: (preserveDraft?: boolean) => void;
|
|
80
|
+
hasUnsavedChanges: import("vue").ComputedRef<boolean>;
|
|
81
|
+
diffSummary: import("vue").ComputedRef<{
|
|
82
|
+
changed: number;
|
|
83
|
+
added: number;
|
|
84
|
+
removed: number;
|
|
85
|
+
modified: number;
|
|
86
|
+
}>;
|
|
87
|
+
isPeriodChanged: (index: number) => boolean;
|
|
88
|
+
isPeriodFieldChanged: (index: number, field: "from" | "to" | "n") => boolean;
|
|
89
|
+
revert: () => void;
|
|
90
|
+
addPeriod: () => void;
|
|
91
|
+
removePeriod: (i: number) => void;
|
|
92
|
+
setHeads: (i: number, value: number | string) => void;
|
|
93
|
+
addRole: (i: number) => void;
|
|
94
|
+
addRoleNamed: (i: number, position: string) => void;
|
|
95
|
+
requestNewPosition: (i: number, k: number) => void;
|
|
96
|
+
removeRole: (i: number, k: number) => void;
|
|
97
|
+
setRoleCount: (i: number, k: number, value: number | string) => void;
|
|
98
|
+
setRolePosition: (i: number, k: number, position: string) => void;
|
|
99
|
+
anyLeft: (p: DemandPeriod) => number;
|
|
100
|
+
coverageRows: import("vue").ComputedRef<{
|
|
101
|
+
when: string;
|
|
102
|
+
required: number;
|
|
103
|
+
scheduled: number;
|
|
104
|
+
varies: boolean;
|
|
105
|
+
pct: number;
|
|
106
|
+
tone: "short" | "part" | "over" | "met";
|
|
107
|
+
note: string;
|
|
108
|
+
}[]>;
|
|
109
|
+
coverageTotal: import("vue").ComputedRef<{
|
|
110
|
+
required: number;
|
|
111
|
+
scheduled: number;
|
|
112
|
+
pct: number;
|
|
113
|
+
tone: "short" | "part" | "over" | "met";
|
|
114
|
+
note: string;
|
|
115
|
+
}>;
|
|
116
|
+
saving: import("vue").Ref<boolean, boolean>;
|
|
117
|
+
save: () => Promise<void>;
|
|
118
|
+
suggestion: import("vue").Ref<{
|
|
119
|
+
why: string;
|
|
120
|
+
periods: {
|
|
121
|
+
from: string;
|
|
122
|
+
to: string;
|
|
123
|
+
n: number;
|
|
124
|
+
roles?: {
|
|
125
|
+
position: string;
|
|
126
|
+
positionId?: string | undefined;
|
|
127
|
+
n: number;
|
|
128
|
+
}[] | undefined;
|
|
129
|
+
}[];
|
|
130
|
+
} | null, ScheduleDemandSuggestion | {
|
|
131
|
+
why: string;
|
|
132
|
+
periods: {
|
|
133
|
+
from: string;
|
|
134
|
+
to: string;
|
|
135
|
+
n: number;
|
|
136
|
+
roles?: {
|
|
137
|
+
position: string;
|
|
138
|
+
positionId?: string | undefined;
|
|
139
|
+
n: number;
|
|
140
|
+
}[] | undefined;
|
|
141
|
+
}[];
|
|
142
|
+
} | null>;
|
|
143
|
+
suggestionRows: import("vue").ComputedRef<{
|
|
144
|
+
when: string;
|
|
145
|
+
n: number;
|
|
146
|
+
word: string;
|
|
147
|
+
}[]>;
|
|
148
|
+
suggest: () => void;
|
|
149
|
+
askRemy: () => Promise<void>;
|
|
150
|
+
acceptSuggestion: () => void;
|
|
151
|
+
dismissSuggestion: () => void;
|
|
152
|
+
canCopy: import("vue").ComputedRef<boolean>;
|
|
153
|
+
copyOpen: import("vue").Ref<boolean, boolean>;
|
|
154
|
+
copyPicks: Record<number, boolean>;
|
|
155
|
+
copyRows: import("vue").ComputedRef<{
|
|
156
|
+
dayIdx: number;
|
|
157
|
+
label: string;
|
|
158
|
+
sub: string;
|
|
159
|
+
}[]>;
|
|
160
|
+
copySub: import("vue").ComputedRef<string>;
|
|
161
|
+
openCopy: () => void;
|
|
162
|
+
closeCopy: () => void;
|
|
163
|
+
confirmCopy: () => Promise<void>;
|
|
164
|
+
setApply: (mode: DemandApplyMode) => void;
|
|
165
|
+
};
|
|
166
|
+
export type ScheduleDemandSheetApi = ReturnType<typeof useScheduleDemandSheet>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
export interface ScheduleDragPayload {
|
|
3
|
+
empId: number;
|
|
4
|
+
dayIdx: number;
|
|
5
|
+
/** Which period on that day this card is — 0 for an ordinary single shift. A genuine split
|
|
6
|
+
* shift's one merged card drags both periods together (`slotCount` > 1); any other card on
|
|
7
|
+
* a multi-shift day is its own independent slot and carries just itself. */
|
|
8
|
+
slotIndex: number;
|
|
9
|
+
slotCount: number;
|
|
10
|
+
}
|
|
11
|
+
/** Where a drag is currently hovering — read by ScheduleShiftCell to decide what to light up.
|
|
12
|
+
* `onCard`/`slotIndex` distinguish the two outcomes a drop here actually has: over an existing
|
|
13
|
+
* card it's a swap offer (that one card), over the rest of the cell it lands alongside it. */
|
|
14
|
+
export interface ScheduleDragHoverTarget {
|
|
15
|
+
empId: number;
|
|
16
|
+
dayIdx: number;
|
|
17
|
+
onCard: boolean;
|
|
18
|
+
slotIndex: number | null;
|
|
19
|
+
}
|
|
20
|
+
/** Native HTML5 drag & drop for moving an existing shift card between employee/day cells.
|
|
21
|
+
* The mockup's other drag source — a staff-rail row dragged onto an open shift — is an
|
|
22
|
+
* area-view feature (`r.draggable = viewMode === 'area'` there); this board is employee-view
|
|
23
|
+
* only, so that gesture doesn't exist here — filling an open shift goes through the Assign
|
|
24
|
+
* popover (click) instead. */
|
|
25
|
+
export declare function useScheduleDragDrop(board: ScheduleBoardApi): {
|
|
26
|
+
dragging: import("vue").Ref<{
|
|
27
|
+
empId: number;
|
|
28
|
+
dayIdx: number;
|
|
29
|
+
slotIndex: number;
|
|
30
|
+
slotCount: number;
|
|
31
|
+
} | null, ScheduleDragPayload | {
|
|
32
|
+
empId: number;
|
|
33
|
+
dayIdx: number;
|
|
34
|
+
slotIndex: number;
|
|
35
|
+
slotCount: number;
|
|
36
|
+
} | null>;
|
|
37
|
+
hoverTarget: import("vue").Ref<{
|
|
38
|
+
empId: number;
|
|
39
|
+
dayIdx: number;
|
|
40
|
+
onCard: boolean;
|
|
41
|
+
slotIndex: number | null;
|
|
42
|
+
} | null, ScheduleDragHoverTarget | {
|
|
43
|
+
empId: number;
|
|
44
|
+
dayIdx: number;
|
|
45
|
+
onCard: boolean;
|
|
46
|
+
slotIndex: number | null;
|
|
47
|
+
} | null>;
|
|
48
|
+
startShiftDrag: (empId: number, dayIdx: number, ev: DragEvent, slotIndex?: number) => void;
|
|
49
|
+
endDrag: () => void;
|
|
50
|
+
setDragHover: (empId: number, dayIdx: number, onCard: boolean, slotIndex: number | null) => void;
|
|
51
|
+
clearDragHover: (empId: number, dayIdx: number) => void;
|
|
52
|
+
dropOnCell: (targetEmpId: number, targetDayIdx: number) => void;
|
|
53
|
+
dropOnPosition: (targetDayIdx: number, targetPosition: string, allowLocked?: boolean) => void;
|
|
54
|
+
};
|
|
55
|
+
export type ScheduleDragDropApi = ReturnType<typeof useScheduleDragDrop>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ComputedRef } from 'vue';
|
|
2
|
+
import type { Role } from '@/types/role';
|
|
3
|
+
import type { ScheduleAddEmployeeForm } from './schedule-add-employee-form';
|
|
4
|
+
export declare function useScheduleEmployeeAccess(form: ScheduleAddEmployeeForm, options?: {
|
|
5
|
+
excludePosUserId?: ComputedRef<string | undefined>;
|
|
6
|
+
}): {
|
|
7
|
+
passcodeValue: ComputedRef<string>;
|
|
8
|
+
passcodeOk: ComputedRef<boolean>;
|
|
9
|
+
setPasscodeDigit: (index: number, value: string) => void;
|
|
10
|
+
generatePasscode: () => Promise<void>;
|
|
11
|
+
isGeneratingPasscode: import("vue").Ref<boolean, boolean>;
|
|
12
|
+
togglePosAccess: () => void;
|
|
13
|
+
addPosRoleRow: () => void;
|
|
14
|
+
removePosRoleRow: (index: number) => void;
|
|
15
|
+
isCurrentOutletRow: (index: number) => boolean;
|
|
16
|
+
setPosRoleOutlet: (index: number, outlet: string) => void;
|
|
17
|
+
setPosRoleId: (index: number, roleId: string) => void;
|
|
18
|
+
posRoleOptionsFor: (outlet: string) => Role[];
|
|
19
|
+
isPosRoleUsable: (role: Role) => boolean;
|
|
20
|
+
setMasterUserRoleAccess: (roleIds: string[] | null | undefined) => void;
|
|
21
|
+
isPosOutletUsable: (outlet: string) => boolean;
|
|
22
|
+
setMasterUserRestaurantAccess: (restaurantIds: string[] | null | undefined) => void;
|
|
23
|
+
posRolesHint: ComputedRef<string>;
|
|
24
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ComputedRef } from 'vue';
|
|
2
|
+
import type { ScheduleAddEmployeeForm } from './schedule-add-employee-form';
|
|
3
|
+
export declare function useScheduleEmployeeAvailability(form: ScheduleAddEmployeeForm, isPart: ComputedRef<boolean>): {
|
|
4
|
+
dayLit: (index: number) => boolean;
|
|
5
|
+
avLabel: ComputedRef<string>;
|
|
6
|
+
avAllLabel: ComputedRef<string>;
|
|
7
|
+
maxHoursPlaceholder: ComputedRef<string>;
|
|
8
|
+
ensureAvailHours: (index: number) => void;
|
|
9
|
+
toggleAvailDay: (index: number) => void;
|
|
10
|
+
availAll: () => void;
|
|
11
|
+
setAvailHour: (index: number, field: "from" | "to", value: string) => void;
|
|
12
|
+
copyAvailHourDown: (index: number) => void;
|
|
13
|
+
};
|