@feedmepos/mf-hrm-portal 2.3.2-dev → 2.3.2-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ApprovalCodeList-xOyDG5ug.js → ApprovalCodeList-sHnINTik.js} +14 -15
- package/dist/AuditLogList-C9C2emU9.js +1950 -0
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-Cixg_icC.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BbsPesWY.js} +2 -2
- package/dist/{EmployeeList-BG2KPvOB.js → EmployeeList-D4oy5hXz.js} +196 -208
- package/dist/FormSection.vue_vue_type_script_setup_true_lang-Cl053Tg1.js +90 -0
- package/dist/{GrantUserList-CUkuf3VV.js → GrantUserList-LWpqhl-5.js} +15 -16
- package/dist/{Main-BcixH7R5.js → Main-BWKb-QIE.js} +11 -11
- package/dist/{Main-BSHf8gTE.js → Main-CVGiOYpC.js} +12 -11
- package/dist/{Main-Cg9SOzcz.js → Main-PBJjfzBg.js} +5 -5
- package/dist/{MyPosProfile-CN8Bj3aV.js → MyPosProfile-BQCBFMFw.js} +1 -1
- package/dist/{PermissionSetList-I3u2_qHR.js → PermissionSetList-D2qZVlF4.js} +32 -31
- package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BBoRXQPn.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-ZSREAS1r.js} +927 -927
- package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DRGTxOMW.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-DFDTw0lj.js +547 -0
- package/dist/RoleList-DG0crFzW.js +274 -0
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-Cs0rhCa3.js +544 -0
- package/dist/ScheduleGeneralPage-C4J6jYtG.js +811 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-3UqO6uPu.js +2557 -0
- package/dist/SchedulePage-ICzggri0.js +19458 -0
- package/dist/SchedulePositionPage-BshUCd_C.js +282 -0
- package/dist/SelectFilter-D9T0nFvG.js +264 -0
- package/dist/TeamMemberList-C970Iqlj.js +2086 -0
- package/dist/{TimesheetList-CECFKt7H.js → TimesheetList-nxhr0EWj.js} +10 -10
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-RIyoAmeb.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-BLqgALLe.js} +3 -3
- package/dist/{app-CdrnR_Pw.js → app-n6d4AmtP.js} +12373 -4651
- package/dist/app.js +1 -1
- package/dist/{approval-code-Bwvwehz9.js → approval-code-1j1OoXt1.js} +1 -1
- package/dist/{dayjs.min-BO8bcI17.js → dayjs.min-DdNivv4b.js} +26 -26
- package/dist/{employee-Dg-J9goA.js → employee-BlfleiCU.js} +40 -35
- package/dist/{grant-user-whFOaPZI.js → grant-user-BmTyexk3.js} +1 -1
- package/dist/{iteration-ZpERYj3o.js → iteration-y_jodvfN.js} +1 -1
- package/dist/{lodash-7SZBZ8VQ.js → lodash-B2eWEGH4.js} +1 -1
- package/dist/{member-grant-C46lvrh2.js → member-grant-CzZUdO_s.js} +2 -2
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/restaurant-Dl6yx37M.js +51 -0
- package/dist/{role-C6hFKOfU.js → role-DfZi7Ssk.js} +3 -3
- package/dist/{rule-BlMymDXm.js → rule-ChmhcGgA.js} +13 -13
- package/dist/src/api/audit-log/index.d.ts +4 -0
- package/dist/src/api/employee/index.d.ts +2 -2
- 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/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/pos-assignment-rows.d.ts +2 -0
- package/dist/src/helpers/staff-invite.d.ts +3 -0
- package/dist/src/router/shared.d.ts +3 -0
- package/dist/src/stores/employee.d.ts +12 -12
- package/dist/src/types/employee.d.ts +1 -0
- package/dist/src/types/schedule.d.ts +23 -0
- package/dist/src/types/sso-provider.d.ts +10 -0
- package/dist/src/views/audit-log/constants.d.ts +9 -30
- package/dist/src/views/audit-log/locales/index.d.ts +488 -0
- package/dist/src/views/audit-log/pos-row.d.ts +27 -0
- package/dist/src/views/hr/locales/index.d.ts +20 -0
- package/dist/src/views/hr/role/RoleForm.vue.d.ts +29 -2
- 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/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-CL6EEDuw.js → useAppStore-BPARQyvJ.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-BBjBUzGJ.js → useLoading-iPESFb6R.js} +1 -1
- package/dist/{useReportPermissions-Bg0fma6m.js → useReportPermissions-By-BoJZb.js} +5 -5
- package/package.json +5 -3
- 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/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/restaurant-CKhT6kgj.js +0 -45
- package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Proposal } from '../types';
|
|
2
|
+
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
3
|
+
import type { ScheduleDragDropApi } from '../composables/useScheduleDragDrop';
|
|
4
|
+
import type { ScheduleRosterApi } from '../composables/useScheduleRoster';
|
|
5
|
+
import type { ScheduleDemandRowApi } from '../composables/useScheduleDemandRow';
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
board: ScheduleBoardApi;
|
|
8
|
+
dragDrop: ScheduleDragDropApi;
|
|
9
|
+
roster: ScheduleRosterApi;
|
|
10
|
+
demandRow: ScheduleDemandRowApi;
|
|
11
|
+
proposalAt?: (empId: number, dayIdx: number) => Proposal | undefined;
|
|
12
|
+
};
|
|
13
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
14
|
+
addEmployee: () => any;
|
|
15
|
+
addShift: (empId: number, dayIdx: number, anchor: HTMLElement) => any;
|
|
16
|
+
editShift: (empId: number, dayIdx: number, slotIndex?: number | undefined) => any;
|
|
17
|
+
editLeave: (empId: number, dayIdx: number) => any;
|
|
18
|
+
dragEnd: () => any;
|
|
19
|
+
toggleProposal: (id: number) => any;
|
|
20
|
+
proposalDragStart: (id: number, ev: DragEvent) => any;
|
|
21
|
+
proposalDragEnd: () => any;
|
|
22
|
+
segEnter: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
|
|
23
|
+
segLeave: () => any;
|
|
24
|
+
segClick: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
|
|
25
|
+
segFocus: (dayIdx: number, from: number, to: number, anchor: HTMLElement) => any;
|
|
26
|
+
openEmployee: (empId: number) => any;
|
|
27
|
+
openEmployeeMenu: (empId: number, anchor: HTMLElement) => any;
|
|
28
|
+
dragShiftStart: (empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any;
|
|
29
|
+
dropOnCell: (empId: number, dayIdx: number, ev: DragEvent) => any;
|
|
30
|
+
openDemandSheet: (dayIdx: number) => any;
|
|
31
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
32
|
+
onAddEmployee?: (() => any) | undefined;
|
|
33
|
+
onAddShift?: ((empId: number, dayIdx: number, anchor: HTMLElement) => any) | undefined;
|
|
34
|
+
onEditShift?: ((empId: number, dayIdx: number, slotIndex?: number | undefined) => any) | undefined;
|
|
35
|
+
onEditLeave?: ((empId: number, dayIdx: number) => any) | undefined;
|
|
36
|
+
onDragEnd?: (() => any) | undefined;
|
|
37
|
+
onToggleProposal?: ((id: number) => any) | undefined;
|
|
38
|
+
onProposalDragStart?: ((id: number, ev: DragEvent) => any) | undefined;
|
|
39
|
+
onProposalDragEnd?: (() => any) | undefined;
|
|
40
|
+
onSegEnter?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
41
|
+
onSegLeave?: (() => any) | undefined;
|
|
42
|
+
onSegClick?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
43
|
+
onSegFocus?: ((dayIdx: number, from: number, to: number, anchor: HTMLElement) => any) | undefined;
|
|
44
|
+
onOpenEmployee?: ((empId: number) => any) | undefined;
|
|
45
|
+
onOpenEmployeeMenu?: ((empId: number, anchor: HTMLElement) => any) | undefined;
|
|
46
|
+
onDragShiftStart?: ((empId: number, dayIdx: number, ev: DragEvent, slotIndex: number) => any) | undefined;
|
|
47
|
+
onDropOnCell?: ((empId: number, dayIdx: number, ev: DragEvent) => any) | undefined;
|
|
48
|
+
onOpenDemandSheet?: ((dayIdx: number) => any) | undefined;
|
|
49
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
50
|
+
export default _default;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
2
|
+
import type { ScheduleCostRailApi } from '../composables/useScheduleCostRail';
|
|
3
|
+
import type { ScheduleStatsRowApi } from '../composables/useScheduleStatsRow';
|
|
4
|
+
import type { ScheduleViewMode } from '../composables/useScheduleFilterBar';
|
|
5
|
+
type __VLS_Props = {
|
|
6
|
+
board: ScheduleBoardApi;
|
|
7
|
+
costRail: ScheduleCostRailApi;
|
|
8
|
+
stats: ScheduleStatsRowApi;
|
|
9
|
+
mode: ScheduleViewMode;
|
|
10
|
+
};
|
|
11
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
2
|
+
import type { ScheduleShiftActionsApi } from '../composables/useScheduleShiftActions';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
board: ScheduleBoardApi;
|
|
5
|
+
actions: ScheduleShiftActionsApi;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
8
|
+
export default _default;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ScheduleTimePickerApi } from '../composables/useScheduleTimePicker';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
timePicker: ScheduleTimePickerApi;
|
|
4
|
+
};
|
|
5
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
export default _default;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
2
|
+
import type { ScheduleTopbarApi } from '../composables/useSchedulePageOverlays';
|
|
3
|
+
import type { ScheduleAutoScheduleApi } from '../composables/useScheduleAutoSchedule';
|
|
4
|
+
import type { ScheduleCopyWeekApi } from '../composables/useScheduleCopyWeek';
|
|
5
|
+
import type { ScheduleExportApi } from '../composables/useScheduleExport';
|
|
6
|
+
type __VLS_Props = {
|
|
7
|
+
board: ScheduleBoardApi;
|
|
8
|
+
topbar: ScheduleTopbarApi;
|
|
9
|
+
autoSchedule: ScheduleAutoScheduleApi;
|
|
10
|
+
copyWeek: ScheduleCopyWeekApi;
|
|
11
|
+
exportApi: ScheduleExportApi;
|
|
12
|
+
};
|
|
13
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
14
|
+
clear: (kind: "shifts" | "demand" | "both") => any;
|
|
15
|
+
"sch-status-click": () => any;
|
|
16
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
17
|
+
onClear?: ((kind: "shifts" | "demand" | "both") => any) | undefined;
|
|
18
|
+
"onSch-status-click"?: (() => any) | undefined;
|
|
19
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
20
|
+
export default _default;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleObjective, FdtoScheduleAutoScheduleProposal, FdtoScheduleAutoScheduleResult } from '@/types/schedule';
|
|
2
|
+
import { ApiError } from '@/api';
|
|
3
|
+
import type { Proposal } from '../types';
|
|
4
|
+
/** ISO date of `dayIdx` in the week starting `weekKey` (YYYY-MM-DD, local arithmetic). */
|
|
5
|
+
export declare function dateOfProposal(weekKey: string, dayIdx: number): string;
|
|
6
|
+
/** Server proposals → board proposals for the week whose Monday is `weekKey`. A proposal whose
|
|
7
|
+
* date is not one of `dateKeyOf(0..RANGE_LEN-1)` or whose employee the board does not hold is
|
|
8
|
+
* dropped. Ids come from `nextId` so they stay unique across weeks. */
|
|
9
|
+
export declare function proposalsFromResult(proposals: FdtoScheduleAutoScheduleProposal[], weekKey: string, dateKeyOf: (dayIdx: number) => string | null, nextId: () => number, holds: (empId: number) => boolean): Proposal[];
|
|
10
|
+
/** The apply body for the accepted proposals, each re-dated from its own week and day. */
|
|
11
|
+
export declare function applyRequestOf(proposals: Proposal[], allowOvertime: boolean, status?: FdtoScheduleAutoScheduleApplyReq['status']): FdtoScheduleAutoScheduleApplyReq;
|
|
12
|
+
/** The `t` from `useI18n()`, passed into these pure helpers so they stay free of Vue setup. */
|
|
13
|
+
export type TranslateFn = (key: string, params?: Record<string, unknown>) => string;
|
|
14
|
+
export interface ClassifiedExplanation {
|
|
15
|
+
kind: 'reject' | 'ai' | 'plain';
|
|
16
|
+
text: string;
|
|
17
|
+
}
|
|
18
|
+
/** Sorts one `result.explanations` line into what the Details panel renders it as. The matched
|
|
19
|
+
* prefix is stripped from `text` in every case — the panel re-adds its own label/marker for
|
|
20
|
+
* `reject` and `ai`, so the raw wire prefix never doubles up with it. */
|
|
21
|
+
export declare function classifyExplanation(line: string): ClassifiedExplanation;
|
|
22
|
+
/** Whether `error` is a server refusal whose own message is meant for the user: a client error
|
|
23
|
+
* (0 < status < 500). A network failure (0) or a server error (5xx) is not. */
|
|
24
|
+
export declare function isClientRefusal(error: unknown): error is ApiError;
|
|
25
|
+
/** A client-error refusal shows its own message; a network failure or 5xx shows the generic one. */
|
|
26
|
+
export declare function generateErrorMessage(error: unknown, t: TranslateFn): string;
|
|
27
|
+
/** The result shown when "fill gaps" is off: nothing proposed, one explanation. */
|
|
28
|
+
export declare function fillGapsOffResult(week: {
|
|
29
|
+
from: string;
|
|
30
|
+
to: string;
|
|
31
|
+
}, objective: FdtoScheduleAutoScheduleObjective, allowOvertime: boolean, t: TranslateFn): FdtoScheduleAutoScheduleResult;
|
|
32
|
+
/** The snackbar shown once a run finishes, whether it went to the server or (fill gaps off) was
|
|
33
|
+
* answered locally. `wallMs` is measured client-side around the request — it is what the manager
|
|
34
|
+
* actually waited, not just the server's own `timing.totalMs`. */
|
|
35
|
+
export declare function generateDoneMessage(result: FdtoScheduleAutoScheduleResult, wallMs: number, t: TranslateFn): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ScheduleOnboardingStep } from './onboarding-types';
|
|
2
|
+
export declare const ONBOARDING_STEPS: ScheduleOnboardingStep[];
|
|
3
|
+
export declare const SKIPPABLE_ONBOARDING_STEPS: ScheduleOnboardingStep[];
|
|
4
|
+
export declare const COMMON_POSITION_SUGGESTIONS: string[];
|
|
5
|
+
export declare const ANY_POSITION_KEY = "__any__";
|
|
6
|
+
/** i18n key for a Monday-first weekday index's short name (WEEKDAYS in ../data stays English). */
|
|
7
|
+
export declare function weekdayKey(dayIdx: number): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ScheduleRules } from '../types';
|
|
2
|
+
import type { ScheduleOnboardingDayHours } from './onboarding-types';
|
|
3
|
+
import type { FdtoScheduleDayOperatingHours } from '@feedmepos/hrm-schedule-contract';
|
|
4
|
+
/** Converts persisted outlet hours into the wizard's editable draft shape. */
|
|
5
|
+
export declare function onboardingHoursFromRules(rules: ScheduleRules): ScheduleOnboardingDayHours[];
|
|
6
|
+
/** Converts the grid's Monday-first draft back to the restaurant profile's Sunday-first wire shape. */
|
|
7
|
+
export declare function onboardingHoursToProfile(hours: ScheduleOnboardingDayHours[]): FdtoScheduleDayOperatingHours[];
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export type ScheduleOnboardingStep = 'hours' | 'staffing' | 'positions' | 'employees' | 'availability' | 'review';
|
|
2
|
+
export interface ScheduleOnboardingSession {
|
|
3
|
+
from: string;
|
|
4
|
+
to: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ScheduleOnboardingDayHours {
|
|
7
|
+
open: boolean;
|
|
8
|
+
sessions: ScheduleOnboardingSession[];
|
|
9
|
+
}
|
|
10
|
+
export interface ScheduleOnboardingRange {
|
|
11
|
+
from: string;
|
|
12
|
+
to: string;
|
|
13
|
+
/** Blank until typed: an unset range asks for nobody. */
|
|
14
|
+
n: number | null;
|
|
15
|
+
roles: Array<{
|
|
16
|
+
position: string;
|
|
17
|
+
n: number | null;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export type TeamEmployment = 'full' | 'part';
|
|
21
|
+
export type TeamBasis = 'monthly' | 'hourly';
|
|
22
|
+
export interface TeamRow {
|
|
23
|
+
picked: boolean;
|
|
24
|
+
/** '' means "Any position" — a person with none. */
|
|
25
|
+
position: string;
|
|
26
|
+
/** Additional positions this employee also covers. */
|
|
27
|
+
second: string[];
|
|
28
|
+
employment: TeamEmployment;
|
|
29
|
+
maxHours: string;
|
|
30
|
+
rate: string;
|
|
31
|
+
basis: TeamBasis;
|
|
32
|
+
}
|
|
33
|
+
export interface AvailDay {
|
|
34
|
+
on: boolean;
|
|
35
|
+
from: string;
|
|
36
|
+
to: string;
|
|
37
|
+
}
|
|
38
|
+
export interface AvailRow {
|
|
39
|
+
offDays: boolean[];
|
|
40
|
+
days: AvailDay[];
|
|
41
|
+
}
|
|
42
|
+
export interface ReviewRow {
|
|
43
|
+
step: ScheduleOnboardingStep;
|
|
44
|
+
title: string;
|
|
45
|
+
text: string;
|
|
46
|
+
sub?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface IntroRecapRow {
|
|
49
|
+
label: string;
|
|
50
|
+
value: string;
|
|
51
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type RemyDemandScope = {
|
|
2
|
+
mode: 'day';
|
|
3
|
+
isoDate: string;
|
|
4
|
+
label: string;
|
|
5
|
+
} | {
|
|
6
|
+
mode: 'weekday';
|
|
7
|
+
weekday: string;
|
|
8
|
+
} | {
|
|
9
|
+
mode: 'weekdays';
|
|
10
|
+
};
|
|
11
|
+
/** The text prefilled into the host Remy panel: one line naming the outlet and day, which the
|
|
12
|
+
* user continues with their demand. The "attach a roster image or describe it in words" guidance
|
|
13
|
+
* lives on the sheet's Ask Remy tooltip, not here. Names the outlet the way a manager knows it;
|
|
14
|
+
* Remy resolves it to an id itself (hrm_find_outlet), so no outlet id appears in the text. */
|
|
15
|
+
export declare function remyDemandPrompt(outletName: string, scope: RemyDemandScope): string;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { EmployeeAvailHours } from '../types';
|
|
2
|
+
import type { FdtoScheduleUpdateEmployeeProfileReq } from '@/types/schedule';
|
|
3
|
+
export type ScheduleAddEmployeeStep = 'mode' | 'details';
|
|
4
|
+
export type ScheduleAddEmployeeMode = 'new' | 'existing';
|
|
5
|
+
export interface ScheduleAddEmployeeForm {
|
|
6
|
+
name: string;
|
|
7
|
+
mobile: string;
|
|
8
|
+
dial: string;
|
|
9
|
+
employment: 'full' | 'part';
|
|
10
|
+
locations: string[];
|
|
11
|
+
payBasis: 'hourly' | 'monthly';
|
|
12
|
+
payAmount: string;
|
|
13
|
+
maxHours: string;
|
|
14
|
+
maxHoursPerDay: string;
|
|
15
|
+
minHours: string;
|
|
16
|
+
workingHoursEnabled: boolean;
|
|
17
|
+
overtimeEnabled: boolean;
|
|
18
|
+
/** Blank means no employee override; the outlet overtime setting is inherited. */
|
|
19
|
+
maxHoursPerMonth: string;
|
|
20
|
+
/** For a part-timer: days they CAN work. For a full-timer: days they're OFF — the
|
|
21
|
+
* mockup inverts the same array's meaning by employment type. */
|
|
22
|
+
availDays: boolean[];
|
|
23
|
+
availHours: EmployeeAvailHours[];
|
|
24
|
+
preferences: string;
|
|
25
|
+
primaryPosition: string;
|
|
26
|
+
secondaryPositions: string[];
|
|
27
|
+
seniority: '' | 'senior' | 'junior';
|
|
28
|
+
passcode: string[];
|
|
29
|
+
masterUser: boolean;
|
|
30
|
+
/** Required by the POS for a master user. */
|
|
31
|
+
masterCode: string;
|
|
32
|
+
/** Gates the fields below it — someone can be fully scheduled with this off. */
|
|
33
|
+
posAccessEnabled: boolean;
|
|
34
|
+
/** WHAT the passcode opens the till as, and WHERE — a row per outlet. Not restricted to the
|
|
35
|
+
* outlets picked in Work locations above: a floating manager can be rostered at one outlet
|
|
36
|
+
* and hold POS admin at several others. */
|
|
37
|
+
posRoles: {
|
|
38
|
+
outlet: string;
|
|
39
|
+
roleId: string;
|
|
40
|
+
}[];
|
|
41
|
+
}
|
|
42
|
+
/** A salaried month, for converting a monthly figure into the hourly one the cost rail
|
|
43
|
+
* actually reads. Ported verbatim from the mockup's MONTH_HOURS. */
|
|
44
|
+
export declare const MONTH_HOURS = 173;
|
|
45
|
+
/** A freshly-ticked worked day defaults to the whole day rather than the outlet's current
|
|
46
|
+
* trading hours — trading hours can change, and narrowing a person's stated availability to
|
|
47
|
+
* whatever the outlet happens to trade today isn't something this form should assume for them.
|
|
48
|
+
* `23:59`, not `24:00`: a part-timer's per-day fields are native `<input type="time">`s, which
|
|
49
|
+
* only accept `00:00`–`23:59` — `24:00` would render as blank there despite being a valid
|
|
50
|
+
* `FdtoScheduleTime` on the wire. */
|
|
51
|
+
export declare function defaultAvailHours(): EmployeeAvailHours;
|
|
52
|
+
export declare function blankForm(): ScheduleAddEmployeeForm;
|
|
53
|
+
/** Coverage and Auto-Schedule are still authored per role, so a role is derived from the
|
|
54
|
+
* primary position rather than asked for twice. Unlike position, Employee.role is one of a
|
|
55
|
+
* fixed small set the grid groups by, so an unrecognised (or unset) position falls back to
|
|
56
|
+
* the first known role instead of leaving the record without one. */
|
|
57
|
+
export declare function roleFromPosition(position: string): string;
|
|
58
|
+
export declare function generateCode(): string;
|
|
59
|
+
/** `raw` is typed `string` because that's the form field's declared type, but Vue 3 casts
|
|
60
|
+
* `v-model` on an `<input type="number">` to an actual `number` regardless — the DOM does this
|
|
61
|
+
* itself, independent of the `.number` modifier, so the runtime value disagrees with the type
|
|
62
|
+
* the moment someone types a digit. `String()` first is what makes `.trim()` safe either way. */
|
|
63
|
+
export declare function parsePositiveInt(raw: string, min: number, max: number): number | undefined;
|
|
64
|
+
export declare function parseNonNegativeInt(raw: string, max: number): number | undefined;
|
|
65
|
+
export declare function initials(name: string): string;
|
|
66
|
+
export declare function isPartTimeForm(form: ScheduleAddEmployeeForm): boolean;
|
|
67
|
+
/** `availDays[i]` always means "is this a working day" — the same convention the board model
|
|
68
|
+
* and `ScheduleEmployeeDetailPanel` read (a day off is one marked NOT worked), regardless of
|
|
69
|
+
* employment type. Only the full-time TOGGLE BUTTON is framed as "mark a day off" rather than
|
|
70
|
+
* "mark a work day" — see `useScheduleAddEmployee`'s `dayLit`, which flips this value for
|
|
71
|
+
* that button's pressed state without touching what's actually stored. */
|
|
72
|
+
export declare function dayIsWorkedInForm(form: ScheduleAddEmployeeForm, i: number): boolean;
|
|
73
|
+
/** Days this form currently marks as worked, converted to Mongo's weekday convention. */
|
|
74
|
+
export declare function availabilityPayload(form: ScheduleAddEmployeeForm): Array<{
|
|
75
|
+
dayOfWeek: number;
|
|
76
|
+
start: string;
|
|
77
|
+
end: string;
|
|
78
|
+
}>;
|
|
79
|
+
/** The EmployeeProfile fields `createExisting` and `updateExisting` both send — everything but
|
|
80
|
+
* `employeeId`, which only the create path has (an update targets one already known from the
|
|
81
|
+
* URL). Shared here so the two payloads cannot silently drift apart. */
|
|
82
|
+
export declare function toEmployeeProfileFields(form: ScheduleAddEmployeeForm, name: string, payAmountNumber: number, t: (key: string) => string): FdtoScheduleUpdateEmployeeProfileReq;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { DaySlot, Employee, LeaveSlot, WorkSlot } from '../types';
|
|
2
|
+
import type { FdtoScheduleSaveAssignmentReq } from '@/types/schedule';
|
|
3
|
+
export { isoDateKey } from './schedule-calendar';
|
|
4
|
+
/** dayjs-free local-date key — matches on the browser's local Y/M/D, not UTC, so this stays
|
|
5
|
+
* correct regardless of timezone. */
|
|
6
|
+
export declare function isWorkSlot(slot: DaySlot): slot is WorkSlot;
|
|
7
|
+
export declare function isLeaveSlot(slot: DaySlot): slot is LeaveSlot;
|
|
8
|
+
export declare function workSlotsOf(day: DaySlot): WorkSlot[];
|
|
9
|
+
/** Whether two periods occupy any of the same working time. Endpoints that touch are
|
|
10
|
+
* back-to-back, not a conflict. Overnight ranges use the shared clock rules. */
|
|
11
|
+
export declare function shiftsOverlap(a: Pick<WorkSlot, 'start' | 'end'>, b: Pick<WorkSlot, 'start' | 'end'>): boolean;
|
|
12
|
+
export declare function overlapsAnotherSlot(slots: WorkSlot[], target: WorkSlot): boolean;
|
|
13
|
+
/** The inverse of `workSlotsOf` — bare slot for one, the array for two or more, so a day
|
|
14
|
+
* that's back down to its last period reads as a normal single shift again rather than a
|
|
15
|
+
* one-element array everything else has to unwrap. */
|
|
16
|
+
export declare function collapseSlots(slots: WorkSlot[]): WorkSlot | WorkSlot[] | null;
|
|
17
|
+
/** Whether a day's periods are genuinely one shift split across a gap — same `splitGroupId`,
|
|
18
|
+
* set only by the popover's "+ Split" — versus two or more independent shifts that happen to
|
|
19
|
+
* land on the same day (a swap override, say). The card/popover both branch on this: a
|
|
20
|
+
* genuine split draws and edits as one shift; anything else stays separate, card per shift. */
|
|
21
|
+
export declare function isGenuineSplitGroup(slots: WorkSlot[]): boolean;
|
|
22
|
+
/** A WorkSlot, in the shape ScheduleShiftAssignments actually stores. `pending` is the only status
|
|
23
|
+
* this board's own writers ever set on a fresh slot (see commitShift's callers) — `ot` is
|
|
24
|
+
* derived at cost-rail time, never authored, so it has nowhere sensible to map but PUBLISHED. */
|
|
25
|
+
export declare function toAssignmentReq(employeeId: string, date: string, slot: WorkSlot): FdtoScheduleSaveAssignmentReq;
|
|
26
|
+
/** Which coverage-position (a RULES.coverage.full key, e.g. 'grill', 'customer service') a
|
|
27
|
+
* work slot's `role` counts toward for area-view grouping and cost-by-position breakdowns.
|
|
28
|
+
* The shift popover's "Position needed" field writes a coverage-position key directly into
|
|
29
|
+
* `role` for anything authored through it — so a role that's already a coverage key is
|
|
30
|
+
* used as-is. Seed data instead recorded a station label ('FOH', 'Kitchen', ...), which
|
|
31
|
+
* ROLE_POSITIONS translates to that station's first/primary position. This can't tell a
|
|
32
|
+
* Kitchen employee's grill shifts apart from their prep shifts when the seed data only
|
|
33
|
+
* ever recorded the station — that distinction only exists once a shift is authored (or
|
|
34
|
+
* re-saved) through the popover, which does record the specific position. */
|
|
35
|
+
export declare function positionKeyOf(role: string): string;
|
|
36
|
+
/** The hours this employee is contracted to in a week — what "18h / 44h" measures against.
|
|
37
|
+
* Stated per person on their own profile now that ScheduleSettings carries pay rates alone, so
|
|
38
|
+
* there is no venue-wide full/part pair to fall back to: somebody nobody has agreed hours with
|
|
39
|
+
* reads 0, which is the truth rather than a default they never signed. */
|
|
40
|
+
export declare function contractCapFor(emp: Employee): number;
|
|
41
|
+
/** Whether `hours` runs past what this person is contracted to.
|
|
42
|
+
*
|
|
43
|
+
* A cap of 0 means no hours were ever agreed, which is NOT a contract of zero hours: read
|
|
44
|
+
* naively, `hours > 0` makes every rostered minute overtime, flags everybody on the cost rail's
|
|
45
|
+
* over-contract list and makes copy-week refuse every shift. An unknown limit cannot be
|
|
46
|
+
* exceeded, so it is treated as no limit and the question is answered false. */
|
|
47
|
+
export declare function overContract(emp: Employee, hours: number): boolean;
|
|
48
|
+
export declare function isPartTime(emp: Employee): boolean;
|
|
49
|
+
/** Colour keys off the POSITION's rank in the alphabetical position list, looped every six —
|
|
50
|
+
* position 7 repeats position 1's colour, which is expected once a page holds more than six.
|
|
51
|
+
* Unset ("Any position") isn't a real position at all, so it skips the rotation entirely and is
|
|
52
|
+
* always stone, the one of the seven neutral enough to read as "no position". A role no longer in
|
|
53
|
+
* the list (e.g. since deleted) falls back to the first band rather than erroring.
|
|
54
|
+
*
|
|
55
|
+
* Rotation by name, not a keyword lookup — a position is whatever the outlet typed into the
|
|
56
|
+
* Positions page, so there's no fixed vocabulary ("cashier", "kitchen", ...) to match against.
|
|
57
|
+
*
|
|
58
|
+
* Shared by the employee view's own card and the area view's position-row header + card, so the
|
|
59
|
+
* same position never disagrees on its colour anywhere on the board. */
|
|
60
|
+
export declare function positionColorClass(role: string): string;
|
|
61
|
+
/** Which weekday (0 = Mon) is today, relative to no particular week — used to seed
|
|
62
|
+
* focusDayIdx whenever "today" needs a weekday index rather than a date. */
|
|
63
|
+
export declare function todayWeekdayIdx(): number;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FdtoScheduleBreak } from '@/types/schedule';
|
|
2
|
+
import type { WorkSlot } from '../types';
|
|
3
|
+
type BreakSource = FdtoScheduleBreak[] | Pick<WorkSlot, 'breaks' | 'breakMins'> | undefined;
|
|
4
|
+
export declare function breakMinutesOf(source: BreakSource): number;
|
|
5
|
+
/** Net paid minutes. Legacy board slots only have `breakMins`; persisted slots use the richer
|
|
6
|
+
* break array, so both representations pass through this function. */
|
|
7
|
+
export declare function paidMinutesOf(slot: Pick<WorkSlot, 'start' | 'end' | 'breaks' | 'breakMins'>, gross?: number): number;
|
|
8
|
+
export declare function durationBreaksOf(minutes: number | undefined): FdtoScheduleBreak[];
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const RANGE_LEN = 7;
|
|
2
|
+
export declare function isoDateKey(date: Date): string;
|
|
3
|
+
export declare function addDays(date: Date, days: number): Date;
|
|
4
|
+
export declare function mostRecentMonday(from: Date): Date;
|
|
5
|
+
export declare function weekDates(offset: number, from?: Date): Date[];
|
|
6
|
+
export declare function weeksBetween(a: Date, b: Date): number;
|
|
7
|
+
export declare function todayWeekdayIdx(): number;
|
|
8
|
+
/** Monday-first weekday ids, matching the board's `dayIdx` (0 = Mon .. 6 = Sun). */
|
|
9
|
+
export declare const WEEKDAY_IDS: readonly ["mon", "tue", "wed", "thu", "fri", "sat", "sun"];
|
|
10
|
+
/** i18n key of a weekday's short name ("Mon" / "จ."). */
|
|
11
|
+
export declare function weekdayShortKey(dayIdx: number): string;
|
|
12
|
+
/** i18n key of a weekday's full name ("Monday" / "วันจันทร์"). */
|
|
13
|
+
export declare function weekdayLongKey(dayIdx: number): string;
|
|
14
|
+
/** BCP 47 tag for `Intl`/`toLocale*String` from the active i18n locale. English keeps the
|
|
15
|
+
* board's existing format (`enFallback`); Thai stays on the Gregorian calendar so years line up
|
|
16
|
+
* with ISO dates shown elsewhere instead of switching to the Buddhist era. */
|
|
17
|
+
export declare function intlLocale(locale: string | undefined, enFallback?: string): string;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Employee, WorkSlot } from '../types';
|
|
2
|
+
export interface ScheduleCostBreakdown {
|
|
3
|
+
hours: number;
|
|
4
|
+
overtimeHours: number;
|
|
5
|
+
baseCost: number;
|
|
6
|
+
overtimeCost: number;
|
|
7
|
+
totalCost: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function costOfSlot(slot: WorkSlot, rate: number, multiplier: number): {
|
|
10
|
+
hours: number;
|
|
11
|
+
cost: number;
|
|
12
|
+
};
|
|
13
|
+
/** Splits a sequence of paid shift minutes at the employee's contract line. This is the single
|
|
14
|
+
* overtime/cost calculation used by rails and exports; callers provide the applicable pay rate
|
|
15
|
+
* multiplier for each slot. */
|
|
16
|
+
export declare function costOfSlots(employee: Employee, slots: Array<{
|
|
17
|
+
slot: WorkSlot;
|
|
18
|
+
multiplier: number;
|
|
19
|
+
}>): ScheduleCostBreakdown;
|
|
20
|
+
/** The slice of vue-i18n's `t` the format helpers below need, so pure modules can take it as a
|
|
21
|
+
* parameter instead of calling `useI18n()` themselves. */
|
|
22
|
+
export type ScheduleTranslate = (key: string, named?: Record<string, unknown>) => string;
|
|
23
|
+
/** "7h 30m" / "7 ชม. 30 น." — hours rendered as whole hours plus leftover minutes. */
|
|
24
|
+
export declare function formatHoursMinutes(hours: number, t: ScheduleTranslate): string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ComputedRef } from 'vue';
|
|
2
|
+
interface CurrencyFormat {
|
|
3
|
+
label: string;
|
|
4
|
+
/** Where the label sits next to the number: "RM 3" vs "3 บาท" — how each market reads it. */
|
|
5
|
+
position: 'before' | 'after';
|
|
6
|
+
}
|
|
7
|
+
export declare function currencyFormatFor(country: string | null | undefined): CurrencyFormat;
|
|
8
|
+
export declare function currencyLabelFor(country: string | null | undefined): string;
|
|
9
|
+
/** Adds the label to an already-formatted number, on the side that market reads it. */
|
|
10
|
+
export declare function withCurrency(value: string, format: CurrencyFormat): string;
|
|
11
|
+
export interface ScheduleCurrency {
|
|
12
|
+
/** "RM" / "บาท", from the current business country (not the UI language). */
|
|
13
|
+
currency: ComputedRef<string>;
|
|
14
|
+
/** True when the label goes after the number (บาท), so input adornments flip sides. */
|
|
15
|
+
currencyAfter: ComputedRef<boolean>;
|
|
16
|
+
/** "RM 1,234" / "1,234 บาท" — rounded to whole units unless `fractionDigits` is given. */
|
|
17
|
+
formatMoney: (amount: number, fractionDigits?: number) => string;
|
|
18
|
+
/** Adds the currency label to a number that is already formatted. */
|
|
19
|
+
withCurrency: (value: string | number) => string;
|
|
20
|
+
}
|
|
21
|
+
export declare function useScheduleCurrency(): ScheduleCurrency;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ScheduleDayNote } from '../types';
|
|
2
|
+
/** Everything a manager authors about a DATE rather than about a shift — the note on its
|
|
3
|
+
* card, whether the venue opens, whether it bills at the holiday rate. Keyed by ISO date
|
|
4
|
+
* (via the board's `dateKey`), not by weekday index: the mockup's flat single-week horizon
|
|
5
|
+
* could use the weekday index directly, but the board pages through weeks, and a note put on
|
|
6
|
+
* this Monday must not reappear on every other Monday. */
|
|
7
|
+
export declare function useScheduleDayMeta(dateKey: (dayIdx: number) => string | null, handlers?: {
|
|
8
|
+
onPersistError?: (message: string) => void;
|
|
9
|
+
}): {
|
|
10
|
+
dayNote: (dayIdx: number) => ScheduleDayNote | null;
|
|
11
|
+
setDayNote: (dayIdx: number, title: string, desc: string, isPublicHoliday?: boolean) => void;
|
|
12
|
+
clearDayNote: (dayIdx: number) => void;
|
|
13
|
+
isStandingClosedWeekday: (dayIdx: number) => boolean;
|
|
14
|
+
holidayName: (dayIdx: number) => string | null;
|
|
15
|
+
isPublicHoliday: (dayIdx: number) => boolean;
|
|
16
|
+
holidayRateApplies: (dayIdx: number) => boolean;
|
|
17
|
+
setPublicHoliday: (dayIdx: number, on: boolean) => void;
|
|
18
|
+
otRateOn: (dayIdx: number) => number;
|
|
19
|
+
regularRateOn: (dayIdx: number) => number;
|
|
20
|
+
isHoliday: (dayIdx: number) => boolean;
|
|
21
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DemandPeriod, Employee } from '../types';
|
|
2
|
+
import { format12h as t12, formatShortMinutes as minToShort, fromMinutes as minToHHMM, spanMinutes as spanOf, toMinutes as toMin } from './schedule-time';
|
|
3
|
+
export { minToHHMM, minToShort, spanOf, t12, toMin };
|
|
4
|
+
export declare function rangeText(from: number, to: number): string;
|
|
5
|
+
export declare function roleTotalOf(period: DemandPeriod): number;
|
|
6
|
+
/** The unnamed part of a period's headcount. Derived so it cannot disagree with the total. */
|
|
7
|
+
export declare function anyLeftOf(period: DemandPeriod): number;
|
|
8
|
+
export interface ScheduleCoverageAxis {
|
|
9
|
+
from: number;
|
|
10
|
+
to: number;
|
|
11
|
+
}
|
|
12
|
+
/** Fills named position rows from the people on, as a maximum matching (Kuhn's augmenting
|
|
13
|
+
* paths) so a flexible person is moved off one row when another row has nobody else. Rows are
|
|
14
|
+
* tried in the order given (scarcest first); within a row, main-position holders are offered
|
|
15
|
+
* first, then secondary holders, then people with no positions. Returns heads filled per row
|
|
16
|
+
* (same order as `rows`) and the ids spent. */
|
|
17
|
+
export declare function matchSlots(rows: Array<{
|
|
18
|
+
position: string;
|
|
19
|
+
required: number;
|
|
20
|
+
}>, on: Employee[], qualified: (e: Employee, position: string) => boolean): {
|
|
21
|
+
got: number[];
|
|
22
|
+
spent: Set<number>;
|
|
23
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Employee } from '../types';
|
|
2
|
+
/** Adds `positionName` to the employee's own profile — the backend write path a real
|
|
3
|
+
* "existing employee" record has (see `useScheduleAddEmployee.ts`'s `toEmployeeProfileFields`
|
|
4
|
+
* for the same shape, built from the add-employee form instead of a live `Employee`).
|
|
5
|
+
* Fire-and-forget: the local roster already shows the grant, and a failed profile write isn't
|
|
6
|
+
* worth a second error dialog on top of whatever caller-side save this followed. */
|
|
7
|
+
export declare function grantSkillToEmployee(emp: Employee, positionName: string): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function errorMessage(error: unknown, fallback: string): string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface ExportShiftCell {
|
|
2
|
+
note: string;
|
|
3
|
+
shifts: {
|
|
4
|
+
when: string;
|
|
5
|
+
pos: string;
|
|
6
|
+
}[];
|
|
7
|
+
}
|
|
8
|
+
export declare function esc(value: string | number): string;
|
|
9
|
+
export declare function cellText(value: string | ExportShiftCell): string;
|
|
10
|
+
export declare function dayCellLines(value: ExportShiftCell): {
|
|
11
|
+
text: string;
|
|
12
|
+
kind: 'note' | 'when' | 'pos';
|
|
13
|
+
}[];
|
|
14
|
+
export declare function dayHeaderLabel(date: Date, locale?: string): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff } from '@/types/schedule';
|
|
2
|
+
import type { LeaveSlot } from '../types';
|
|
3
|
+
/** The i18n key naming a leave slot's type, for display — `LeaveSlot.reason` stays English
|
|
4
|
+
* (other code matches on it). */
|
|
5
|
+
export declare function timeOffLabelKey(slot: Pick<LeaveSlot, 'type' | 'leaveType'>): string;
|
|
6
|
+
/** The create requests that keep the rest of a multi-day record alive once `date` is carved out
|
|
7
|
+
* of it. Single-day records leave nothing behind. The contract requires a same-day request to
|
|
8
|
+
* have matching parts, so a one-day remainder takes the part from its outer edge. */
|
|
9
|
+
export declare function remainderRequests(record: FdtoScheduleTimeOff, date: string): FdtoScheduleCreateTimeOffReq[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ScheduleAnchorRect {
|
|
2
|
+
left: number;
|
|
3
|
+
right: number;
|
|
4
|
+
top: number;
|
|
5
|
+
bottom: number;
|
|
6
|
+
}
|
|
7
|
+
/** Measures the element a popover was opened from. Takes the rect while the anchor is still on
|
|
8
|
+
* screen; a hidden or detached element measures 0×0 and counts as "no anchor". */
|
|
9
|
+
export declare function anchorRectOf(el: Element | null | undefined): ScheduleAnchorRect | null;
|
|
10
|
+
/** Port of HRM V6.2 placePopover(): below the anchor by preference (6px gap), flipped above when
|
|
11
|
+
* there is no room, clamped to the viewport on both edges. Uses the popover's rendered size, so
|
|
12
|
+
* call it once the element is in the DOM. */
|
|
13
|
+
export declare function placePopover(el: HTMLElement, anchor: ScheduleAnchorRect | null): {
|
|
14
|
+
left: number;
|
|
15
|
+
top: number;
|
|
16
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CoverageSegment, Employee } from '../types';
|
|
2
|
+
import type { ScheduleCoverageAxis } from './schedule-demand-domain';
|
|
3
|
+
export interface QuickPickRules {
|
|
4
|
+
minHoursPerDay: number | null;
|
|
5
|
+
maxHoursPerDay: number | null;
|
|
6
|
+
}
|
|
7
|
+
export interface QuickPickCandidate {
|
|
8
|
+
start: string;
|
|
9
|
+
end: string;
|
|
10
|
+
/** Position name, or '' for any position. */
|
|
11
|
+
role: string;
|
|
12
|
+
/** Max short among the runs this shift covers. */
|
|
13
|
+
short: number;
|
|
14
|
+
label: string;
|
|
15
|
+
covers: string;
|
|
16
|
+
title: string;
|
|
17
|
+
}
|
|
18
|
+
export type QuickPickTranslate = (key: string, named?: Record<string, unknown>) => string;
|
|
19
|
+
/** Up to 3 shifts for one employee on one day, built the way the auto-schedule planner builds
|
|
20
|
+
* them: one per (short run, position the person can fill), padded to their daily minimum,
|
|
21
|
+
* capped at their maximum, kept inside their availability window and clear of their existing
|
|
22
|
+
* shifts. Rest-gap and weekly-cap checks are left to the shift editor's own warnings. */
|
|
23
|
+
export declare function buildQuickPicks(emp: Employee, dayIdx: number, segments: CoverageSegment[], axis: ScheduleCoverageAxis, rules: QuickPickRules, qualifiedFor: (emp: Employee, position: string) => boolean, t?: QuickPickTranslate): QuickPickCandidate[];
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { WorkSlot } from '../types';
|
|
2
|
+
export type ScheduleBreakChoice = 0 | 30 | 60 | 90 | 120 | 'custom';
|
|
3
|
+
export interface ScheduleShiftSegment {
|
|
4
|
+
start: string;
|
|
5
|
+
end: string;
|
|
6
|
+
}
|
|
7
|
+
/** The one break shape that names a clock window rather than just a duration — when present,
|
|
8
|
+
* the card reads as two periods around it, each on its own line, instead of one span that
|
|
9
|
+
* quietly got shorter. Shared by the employee view's own card and the area view's position-row
|
|
10
|
+
* card, so a TIME_RANGE break draws the same split face wherever a shift is shown. */
|
|
11
|
+
export declare function timeRangeBreakOf(sl: WorkSlot): {
|
|
12
|
+
startTime: string;
|
|
13
|
+
endTime: string;
|
|
14
|
+
} | null;
|
|
15
|
+
/** The two visible paid periods around a custom clock-window break. Shared by Weekly cards and
|
|
16
|
+
* Daily timeline bars so the split wording cannot drift between views. */
|
|
17
|
+
export declare function splitTimeLabels(sl: WorkSlot): [string, string] | null;
|
|
18
|
+
/** Same face as `t12`, but never drops the minutes — two ranges stacked on a split card need
|
|
19
|
+
* to line up at a glance, and "10am" next to "10:30am" reads as two different units. */
|
|
20
|
+
export declare function t12Full(hhmm: string): string;
|
|
21
|
+
/** A break length that doesn't match one of the presets becomes 'custom', carrying its own
|
|
22
|
+
* minutes/unit back out for the caller to seed its custom-break fields from. */
|
|
23
|
+
export declare function normalizeBreak(mins: number | undefined): {
|
|
24
|
+
choice: ScheduleBreakChoice;
|
|
25
|
+
customMins?: number;
|
|
26
|
+
customUnit?: 'mins' | 'hrs';
|
|
27
|
+
};
|
|
28
|
+
export declare function resolvedBreakMins(choice: ScheduleBreakChoice, customMins: number, customUnit: 'mins' | 'hrs'): number | undefined;
|
|
29
|
+
export declare function segmentHours(seg: ScheduleShiftSegment, breakMins: number): number;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Shared clock arithmetic for the scheduling board. All spans are minutes from midnight;
|
|
2
|
+
* an end at or before the start is treated as an overnight end on the following day. */
|
|
3
|
+
export declare function toMinutes(value: string): number;
|
|
4
|
+
export declare function fromMinutes(value: number): string;
|
|
5
|
+
export declare function spanMinutes(start: string, end: string): [number, number];
|
|
6
|
+
export declare function durationMinutes(start: string, end: string): number;
|
|
7
|
+
export declare function format12h(value: string): string;
|
|
8
|
+
export declare function formatShortMinutes(value: number): string;
|