@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,140 @@
|
|
|
1
|
+
import ScheduleAPI from '@/api/schedule';
|
|
2
|
+
import type { IFdtoPosUserSummary } from '@/types/employee';
|
|
3
|
+
import type { FdtoScheduleAssignment, FdtoScheduleAutoScheduleApplyReq, FdtoScheduleAutoScheduleApplyResult, FdtoScheduleAutoScheduleCapabilities, FdtoScheduleAutoScheduleGenerateReq, FdtoScheduleAutoScheduleResult, FdtoScheduleBulkUpdateAssignmentStatusReq, FdtoScheduleCreateEmployeeProfileReq, FdtoScheduleSaveAssignmentReq, FdtoScheduleSavePositionReq, FdtoScheduleSaveScheduleDayReq, FdtoScheduleSaveSettingsReq, FdtoScheduleSettings, FdtoScheduleUpdateEmployeeProfileReq, FdtoScheduleValidatePosAccessReq, FdtoScheduleCreateTimeOffReq, FdtoScheduleTimeOff, FdtoScheduleUpdateTimeOffStatusReq, FdtoScheduleSaveEmployeeConfigsReq, ScheduleReplaceDemandReq } from '@/types/schedule';
|
|
4
|
+
import { isoDateKey } from './composables/schedule-calendar';
|
|
5
|
+
export { businessEmployees, dataVersion, employeeOutletIds, loadError, loading, outletId, payload, restaurantEmployees, employeeConfigs, rosterLoading, scheduleSetupCompleted, } from './schedule-state';
|
|
6
|
+
/** dayjs-free local-date key — the board's own isoDateKey, repeated here so the store does not
|
|
7
|
+
* have to import a composable. Local Y/M/D, never UTC: a BSON-free 'YYYY-MM-DD' that survives
|
|
8
|
+
* a timezone west of Greenwich. */
|
|
9
|
+
export declare const isoDate: typeof isoDateKey;
|
|
10
|
+
/** Called from the scheduling page's setup with `useI18n().t`, so the store's errors follow
|
|
11
|
+
* the portal locale. Pass `null` to fall back to English. */
|
|
12
|
+
export declare function setScheduleStoreTranslator(t: ((key: string) => string) | null): void;
|
|
13
|
+
/** Points the board at an outlet. Switching throws the held window away rather than widening
|
|
14
|
+
* it — two outlets' rosters are not one dataset, and half of each is not a schedule.
|
|
15
|
+
*
|
|
16
|
+
* Returns whether anything changed, so a caller that has to follow up with a fetch can skip
|
|
17
|
+
* the round trip when the picker was set to what was already showing. */
|
|
18
|
+
export declare function setOutlet(restaurantId: string): boolean;
|
|
19
|
+
/** Fetches (once per outlet) who the POS roster says works here, straight off the same
|
|
20
|
+
* `restaurantIds`-filterable endpoint the portal's own Employee List uses — no Schedule-side
|
|
21
|
+
* concept of outlet membership to keep in sync with it. Bumps `dataVersion` on arrival so the
|
|
22
|
+
* board's per-week employee cache (keyed off it already) picks the roster up without a second,
|
|
23
|
+
* separate invalidation path. A generous page size rather than looping pages: real restaurant
|
|
24
|
+
* headcounts sit nowhere near it. */
|
|
25
|
+
export declare function ensureRestaurantEmployeesLoaded(restaurantId: string): Promise<void>;
|
|
26
|
+
export declare function saveEmployeeConfigs(configs: FdtoScheduleSaveEmployeeConfigsReq['configs']): Promise<void>;
|
|
27
|
+
/** Saves outlet settings and keeps the board payload authoritative for any later cache rebuild. */
|
|
28
|
+
export declare function saveScheduleSettings(req: FdtoScheduleSaveSettingsReq): Promise<FdtoScheduleSettings>;
|
|
29
|
+
export declare function setEmployeeSchedulingEnabled(employeeId: string, enabled: boolean): Promise<void>;
|
|
30
|
+
/** Removes this employee's future shifts before disabling their scheduling row. */
|
|
31
|
+
export declare function deleteEmployeeFutureAssignments(employeeId: string, from?: string): Promise<void>;
|
|
32
|
+
/** Re-reads this outlet's POS roster. The roster is what the board's rows are built from and is
|
|
33
|
+
* otherwise fetched once per outlet, so any write that changes who works here (add, remove)
|
|
34
|
+
* has to call this for the grid to show it. */
|
|
35
|
+
export declare function refreshRestaurantEmployees(): Promise<void>;
|
|
36
|
+
/** Gives an existing POS user a role at this outlet, so they land on its roster. */
|
|
37
|
+
export declare function addEmployeeToOutlet(employeeId: string, roleId: string): Promise<void>;
|
|
38
|
+
/** Adds an employee to several outlets at once. Scheduling does not require a POS role, so the
|
|
39
|
+
* caller may pass an empty role id and assign the POS role later from Employee. */
|
|
40
|
+
export declare function addEmployeeToOutlets(employeeId: string, restaurantIds: string[], roleId?: string, enableScheduling?: boolean): Promise<void>;
|
|
41
|
+
/** Takes a POS user off the given outlets' rosters; their other outlets are untouched. */
|
|
42
|
+
export declare function removeEmployeeFromOutlets(employeeId: string, restaurantIds: string[]): Promise<void>;
|
|
43
|
+
/** Takes a POS user off this outlet's roster only. */
|
|
44
|
+
export declare function removeEmployeeFromOutlet(employeeId: string): Promise<void>;
|
|
45
|
+
/** Sets the POS role each of these outlets grants a user — every other outlet on their roster
|
|
46
|
+
* is untouched. An empty roleId means "linked to this outlet, no role assigned" (the same thing
|
|
47
|
+
* `addEmployeeToOutlets`' default gives), not "remove them from it" — use
|
|
48
|
+
* `removeEmployeeFromOutlets` for that. A duplicate restaurantId keeps only the last entry. */
|
|
49
|
+
export declare function setEmployeePosRoles(employeeId: string, assignments: {
|
|
50
|
+
restaurantId: string;
|
|
51
|
+
roleId: string;
|
|
52
|
+
}[]): Promise<void>;
|
|
53
|
+
/** Saves the POS-owned part of an existing scheduling employee. The scheduling profile and the
|
|
54
|
+
* POS user are separate records, so passcode/master-user changes must use the POS user API too.
|
|
55
|
+
* A normalized comparison avoids rewriting the POS user when the employee form was unchanged. */
|
|
56
|
+
export declare function saveEmployeePosAccess(employeeId: string, request: {
|
|
57
|
+
name: string;
|
|
58
|
+
passcode: string;
|
|
59
|
+
masterUser: boolean;
|
|
60
|
+
masterCode: string;
|
|
61
|
+
roles: {
|
|
62
|
+
restaurantId: string;
|
|
63
|
+
roleId: string;
|
|
64
|
+
}[];
|
|
65
|
+
}, knownEmployee?: IFdtoPosUserSummary): Promise<void>;
|
|
66
|
+
/** The cached business roster, fetched on first use. `force` re-reads it (after a write, or to
|
|
67
|
+
* refresh a list that is already on screen). Concurrent callers share one request. */
|
|
68
|
+
export declare function ensureBusinessEmployees(force?: boolean): Promise<IFdtoPosUserSummary[]>;
|
|
69
|
+
/** Guarantees the week starting `weekStart` is in memory, fetching a padded window around it
|
|
70
|
+
* if it is not. Safe to call on every navigation: a week already covered costs nothing. */
|
|
71
|
+
export declare function ensureWeekLoaded(weekStart: Date): Promise<void>;
|
|
72
|
+
/** Re-reads the currently held window from the API — what a write path calls once it has
|
|
73
|
+
* saved, and what the page offers after a failure. */
|
|
74
|
+
export declare function reload(): Promise<void>;
|
|
75
|
+
/** Puts an existing employee onto the current outlet's schedule. Pushes the record the API
|
|
76
|
+
* hands back straight onto the held payload instead of reloading — a reload re-derives every
|
|
77
|
+
* employee's shifts from what's actually stored, and shifts have no write path of their own
|
|
78
|
+
* yet, so it would silently discard any shift assigned to anyone else on the board earlier in
|
|
79
|
+
* the same sitting (the same bug shape saveDemand's callers used to have). data.ts's
|
|
80
|
+
* `employeeNumberOf` assigns the new hire a board id the next time it runs, same as it does for
|
|
81
|
+
* everyone loaded from the initial read, so nothing here needs to know that mapping itself.
|
|
82
|
+
* Throws on failure (a duplicate profile, a network error) — the caller decides how to show
|
|
83
|
+
* that, this just doesn't pretend it succeeded. */
|
|
84
|
+
export declare function createEmployeeProfile(req: FdtoScheduleCreateEmployeeProfileReq): Promise<void>;
|
|
85
|
+
export declare function validateSchedulePosAccess(req: FdtoScheduleValidatePosAccessReq): Promise<void>;
|
|
86
|
+
/** Edits a profile already on this outlet's schedule. The caller (useScheduleAddEmployee's
|
|
87
|
+
* `updateExisting`) applies the form to the live `Employee` object itself for instant feedback,
|
|
88
|
+
* so this does not bump `dataVersion` — nothing needs a board cache rebuild. The raw payload is
|
|
89
|
+
* still replaced immutably so other views, such as the position usage counter, observe the
|
|
90
|
+
* profile change immediately instead of waiting for the next full board reload. */
|
|
91
|
+
export declare function updateEmployeeProfile(employeeId: string, req: FdtoScheduleUpdateEmployeeProfileReq): Promise<void>;
|
|
92
|
+
/** Positions are business-level, not per-outlet (see `ScheduleAPI.createPosition`'s own note)
|
|
93
|
+
* — so unlike the shift-shaped writes below, there's no "discards an unsaved shift" risk in
|
|
94
|
+
* refreshing the catalogue here: `payload` is reassigned as a NEW top-level object (same
|
|
95
|
+
* `employees`/`assignments`/etc. array references, only `positions` itself replaced) so
|
|
96
|
+
* data.ts's `watch(payload, applyCatalogues)` re-derives `POSITIONS`/`POSITION_RECORDS` —
|
|
97
|
+
* without touching `dataVersion`, which would otherwise invalidate the board's per-week
|
|
98
|
+
* employee cache and risk reverting a shift committed earlier in the same sitting that hasn't
|
|
99
|
+
* round-tripped into `payload.value.assignments` yet (see createAssignment's own note below). */
|
|
100
|
+
export declare function createPosition(req: FdtoScheduleSavePositionReq): Promise<void>;
|
|
101
|
+
export declare function updatePosition(id: string, req: FdtoScheduleSavePositionReq): Promise<void>;
|
|
102
|
+
export declare function deletePosition(id: string): Promise<void>;
|
|
103
|
+
/** Replaces one date's note/holiday-mark. Same shallow `payload` reassignment as the position
|
|
104
|
+
* writes above and for the same reason: `useScheduleBoard.ts` seeds its `dayNotes`/
|
|
105
|
+
* `manualHolidays` state from `payload.value.days` on every `payload` reassignment, so this has
|
|
106
|
+
* to land there for that seed to stay correct — without a `dataVersion` bump, which would
|
|
107
|
+
* invalidate the per-week employee cache and risk reverting an unsaved shift. */
|
|
108
|
+
export declare function saveScheduleDay(date: string, req: FdtoScheduleSaveScheduleDayReq): Promise<void>;
|
|
109
|
+
/** Replaces one date's UI demand by expanding every period into flat ShiftDemand rows.
|
|
110
|
+
* Position-specific headcount becomes its own row; any remaining headcount becomes an
|
|
111
|
+
* unpositioned row for the same time range. */
|
|
112
|
+
export declare function saveDemand(req: ScheduleReplaceDemandReq): Promise<void>;
|
|
113
|
+
export declare function saveDemandsBulk(requests: ScheduleReplaceDemandReq[]): Promise<void>;
|
|
114
|
+
/** Copies one date's own demand rows onto another date, as that date's own rows. A date that
|
|
115
|
+
* already has demand of its own is left alone (nothing is overwritten), and a source date with
|
|
116
|
+
* no explicit rows has nothing to copy. Returns how many rows were written. */
|
|
117
|
+
export declare function copyDateDemand(fromDate: string, toDate: string): Promise<number>;
|
|
118
|
+
export declare function generateAutoSchedule(req: FdtoScheduleAutoScheduleGenerateReq): Promise<FdtoScheduleAutoScheduleResult>;
|
|
119
|
+
export declare function getAutoScheduleCapabilities(): Promise<FdtoScheduleAutoScheduleCapabilities>;
|
|
120
|
+
export declare function applyAutoSchedule(req: FdtoScheduleAutoScheduleApplyReq): Promise<FdtoScheduleAutoScheduleApplyResult>;
|
|
121
|
+
/** A one-off shift assignment — someone working these hours on this date, not answering any
|
|
122
|
+
* Shift requirement. Keep the raw payload in sync without bumping `dataVersion`: the current
|
|
123
|
+
* board owns the live draft, while a later roster refresh may rebuild the week cache from this
|
|
124
|
+
* payload. */
|
|
125
|
+
export declare function createAssignment(req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment>;
|
|
126
|
+
export declare function updateAssignment(id: string, req: FdtoScheduleSaveAssignmentReq): Promise<FdtoScheduleAssignment | null>;
|
|
127
|
+
export declare function bulkSaveAssignments(req: Parameters<typeof ScheduleAPI.bulkSaveAssignments>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.bulkSaveAssignments>>>;
|
|
128
|
+
/** Replaces demand and/or assignments in one backend transaction. */
|
|
129
|
+
export declare function copySchedule(req: Parameters<typeof ScheduleAPI.copySchedule>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.copySchedule>>>;
|
|
130
|
+
/** Clears demand and/or assignments in one backend transaction. */
|
|
131
|
+
export declare function clearSchedule(req: Parameters<typeof ScheduleAPI.clearSchedule>[1]): Promise<Awaited<ReturnType<typeof ScheduleAPI.clearSchedule>>>;
|
|
132
|
+
/** Deletes a batch of existing assignments in a single request — see
|
|
133
|
+
* `ScheduleAPI.deleteAssignments`. Deleting one is just this with a single-id array. */
|
|
134
|
+
export declare function deleteAssignments(ids: string[]): Promise<void>;
|
|
135
|
+
export declare function createTimeOff(req: FdtoScheduleCreateTimeOffReq): Promise<FdtoScheduleTimeOff>;
|
|
136
|
+
export declare function updateTimeOffStatus(id: string, req: FdtoScheduleUpdateTimeOffStatusReq): Promise<FdtoScheduleTimeOff | null>;
|
|
137
|
+
export declare function deleteTimeOff(id: string): Promise<void>;
|
|
138
|
+
/** Flips a batch of existing assignments to one status in a single request — see
|
|
139
|
+
* `ScheduleAPI.bulkUpdateAssignmentStatus`. */
|
|
140
|
+
export declare function bulkUpdateAssignmentStatus(req: FdtoScheduleBulkUpdateAssignmentStatusReq): Promise<FdtoScheduleAssignment[]>;
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
export type ShiftStatus = 'confirmed' | 'pending' | 'ot';
|
|
2
|
+
export interface ShiftClock {
|
|
3
|
+
in: string | null;
|
|
4
|
+
out: string | null;
|
|
5
|
+
status: 'on-time' | 'late' | 'early-out' | 'absent';
|
|
6
|
+
}
|
|
7
|
+
export interface WorkSlot {
|
|
8
|
+
start: string;
|
|
9
|
+
end: string;
|
|
10
|
+
role: string;
|
|
11
|
+
/** The persisted position identity, retained even when the position is soft-deleted. */
|
|
12
|
+
positionId?: string;
|
|
13
|
+
status: ShiftStatus;
|
|
14
|
+
clock?: ShiftClock;
|
|
15
|
+
conflict?: boolean;
|
|
16
|
+
conflictReason?: string;
|
|
17
|
+
/** Set when this slot is the filled form of an OpenShift record. */
|
|
18
|
+
openId?: number;
|
|
19
|
+
/** Unpaid break length in minutes, authored in the shift popover. Not currently
|
|
20
|
+
* subtracted by the cost rail / stats row's hour totals — those stay gross-hours,
|
|
21
|
+
* matching how this board priced shifts before the popover surfaced a break field. */
|
|
22
|
+
breakMins?: number;
|
|
23
|
+
/** Breaks as persisted by ScheduleShiftAssignments. `breakMins` remains a derived board calculation
|
|
24
|
+
* value; API writes use only this array. */
|
|
25
|
+
breaks?: Array<{
|
|
26
|
+
type: 'DURATION';
|
|
27
|
+
minutes: number;
|
|
28
|
+
breakPayType: 'PAID' | 'UNPAID';
|
|
29
|
+
} | {
|
|
30
|
+
type: 'TIME_RANGE';
|
|
31
|
+
startTime: string;
|
|
32
|
+
endTime: string;
|
|
33
|
+
breakPayType: 'PAID' | 'UNPAID';
|
|
34
|
+
}>;
|
|
35
|
+
/** The ScheduleShiftAssignments document this slot is saved as, once it has one — see
|
|
36
|
+
* useScheduleBoard's commitShift/removeShift/moveShift. Absent means either it hasn't
|
|
37
|
+
* round-tripped to the backend yet, or it's an OpenShift fill (see openId), which has its
|
|
38
|
+
* own record shape and no write path of its own yet. */
|
|
39
|
+
assignmentId?: string;
|
|
40
|
+
/** Server timestamp used to reject stale background saves. */
|
|
41
|
+
updatedAt?: string;
|
|
42
|
+
/** Client-only — never sent to the backend (there's no linking field in
|
|
43
|
+
* FdtoScheduleAssignment to persist it against). Shared by every period of ONE shift
|
|
44
|
+
* authored through the popover's "+ Split", set there and nowhere else. Two workslots on
|
|
45
|
+
* the same day with no matching `splitGroupId` are two independent shifts, not one split
|
|
46
|
+
* shift — e.g. a day where a swap landed a second shift alongside one the person already
|
|
47
|
+
* had. Lost on reload, which is the safe direction to fail in: an unrecognised pair just
|
|
48
|
+
* reads as two separate shifts rather than a false merge. */
|
|
49
|
+
splitGroupId?: string;
|
|
50
|
+
}
|
|
51
|
+
export interface LeaveBalance {
|
|
52
|
+
type: string;
|
|
53
|
+
entitled: number;
|
|
54
|
+
used: number;
|
|
55
|
+
}
|
|
56
|
+
export interface LeaveSlot {
|
|
57
|
+
timeOff: 'approved' | 'pending';
|
|
58
|
+
requestId?: string;
|
|
59
|
+
type?: 'OFF_DAY' | 'LEAVE';
|
|
60
|
+
leaveType?: 'ANNUAL' | 'MEDICAL' | 'EMERGENCY' | 'UNPAID';
|
|
61
|
+
reason: string;
|
|
62
|
+
half?: boolean;
|
|
63
|
+
halfPart?: 'AM' | 'PM';
|
|
64
|
+
/** Half-day leave's displayed time window, when supplied by the board data. */
|
|
65
|
+
from?: string;
|
|
66
|
+
to?: string;
|
|
67
|
+
appliedOn?: string;
|
|
68
|
+
note?: string;
|
|
69
|
+
cert?: {
|
|
70
|
+
name: string;
|
|
71
|
+
size: string;
|
|
72
|
+
} | null;
|
|
73
|
+
bal?: LeaveBalance;
|
|
74
|
+
}
|
|
75
|
+
export type DaySlot = WorkSlot | WorkSlot[] | LeaveSlot | null;
|
|
76
|
+
export interface EmployeeRemark {
|
|
77
|
+
author: string;
|
|
78
|
+
date: string;
|
|
79
|
+
type: 'note' | 'warning' | 'praise';
|
|
80
|
+
text: string;
|
|
81
|
+
}
|
|
82
|
+
/** One weekday's availability window, used only for the part-timer "hours they can work"
|
|
83
|
+
* editor on the Add Employee form — informational HR data, not read by the grid. This board
|
|
84
|
+
* has no standing weekly rest-day pattern (see cellStateClasses); a day someone is actually
|
|
85
|
+
* away is booked as dated leave, not derived from this. */
|
|
86
|
+
export interface EmployeeAvailHours {
|
|
87
|
+
from: string;
|
|
88
|
+
to: string;
|
|
89
|
+
}
|
|
90
|
+
export interface Employee {
|
|
91
|
+
id: number;
|
|
92
|
+
/** Stable backend identity. The numeric id is only a board/view-model id. */
|
|
93
|
+
sourceId: string;
|
|
94
|
+
name: string;
|
|
95
|
+
employmentType: 'FULLTIME' | 'PARTTIME';
|
|
96
|
+
role: string;
|
|
97
|
+
initials: string;
|
|
98
|
+
color: string;
|
|
99
|
+
weekHours: number;
|
|
100
|
+
/** Full-time-equivalent percentage, e.g. 100 for a full-timer, 60 for 0.6 FTE. */
|
|
101
|
+
pct: number;
|
|
102
|
+
/** Hours per week this person is contracted to, as agreed with them. Per-person rather than
|
|
103
|
+
* a venue default: ScheduleSettings holds pay rates and employee-hour defaults, and EmployeeProfiles.workingHours
|
|
104
|
+
* is where the figure is actually stated. Undefined means nobody has agreed one. */
|
|
105
|
+
contractHours?: number;
|
|
106
|
+
rate: number;
|
|
107
|
+
positions: string[];
|
|
108
|
+
/** Position references that remain on the employee profile but are no longer active in the catalogue. */
|
|
109
|
+
archivedPositions?: string[];
|
|
110
|
+
/** One entry per visible day of the horizon; null = day off. */
|
|
111
|
+
shifts: DaySlot[];
|
|
112
|
+
/** Dated time-off records are kept beside shifts so an off/leave card remains visible when
|
|
113
|
+
* a manager adds a shift on the same day. */
|
|
114
|
+
timeOff?: Array<LeaveSlot | null>;
|
|
115
|
+
remarks: EmployeeRemark[];
|
|
116
|
+
section: string;
|
|
117
|
+
compGroup?: string;
|
|
118
|
+
mobile?: string;
|
|
119
|
+
dial?: string;
|
|
120
|
+
/** Outlets this person may be rostered at. */
|
|
121
|
+
locations?: string[];
|
|
122
|
+
payBasis?: 'hourly' | 'monthly';
|
|
123
|
+
/** The figure as agreed with them, in payBasis's unit — `rate` above is always the
|
|
124
|
+
* hourly figure derived from this and is what the grid actually costs shifts with. */
|
|
125
|
+
payAmount?: number;
|
|
126
|
+
maxHours?: number;
|
|
127
|
+
/** Shortest shift, in hours, this person will come in for. Asking for less is allowed but
|
|
128
|
+
* warned about in the shift popover. */
|
|
129
|
+
minHours?: number;
|
|
130
|
+
minHoursPerDay?: number;
|
|
131
|
+
workingHours?: {
|
|
132
|
+
minHoursPerDay: number | null;
|
|
133
|
+
maxHoursPerDay: number | null;
|
|
134
|
+
maxHoursPerWeek: number | null;
|
|
135
|
+
};
|
|
136
|
+
overtime?: {
|
|
137
|
+
maxHoursPerMonth: number | null;
|
|
138
|
+
};
|
|
139
|
+
preferences?: string[];
|
|
140
|
+
seniority?: 'senior' | 'junior' | '';
|
|
141
|
+
/** Recurring days off (full-timer) or days available (part-timer) — see
|
|
142
|
+
* EmployeeAvailHours above for why the grid does not read this. */
|
|
143
|
+
availDays?: boolean[];
|
|
144
|
+
availHours?: EmployeeAvailHours[];
|
|
145
|
+
/** POS sign-in code. Optional: rostering, costing and publishing never depend on it. */
|
|
146
|
+
passcode?: string;
|
|
147
|
+
/** POS master-user code, when this employee is a master user. */
|
|
148
|
+
code?: string;
|
|
149
|
+
masterUser?: boolean;
|
|
150
|
+
}
|
|
151
|
+
export interface Section {
|
|
152
|
+
id: string;
|
|
153
|
+
label: string;
|
|
154
|
+
roles: string[];
|
|
155
|
+
/** The "Unassigned" bucket — always present, never deletable. */
|
|
156
|
+
system?: boolean;
|
|
157
|
+
}
|
|
158
|
+
export interface OpenShift {
|
|
159
|
+
id: number;
|
|
160
|
+
dayIdx: number;
|
|
161
|
+
position: string;
|
|
162
|
+
required: number;
|
|
163
|
+
filledBy: number | null;
|
|
164
|
+
sen?: 'junior' | 'senior';
|
|
165
|
+
empType?: 'full' | 'part';
|
|
166
|
+
/** Optional custom label for this open shift, shown above the time on its card
|
|
167
|
+
* (e.g. "Weekend cover") — distinct from the position it asks for. */
|
|
168
|
+
name?: string;
|
|
169
|
+
/** Hours this record asks for. Defaults to the active shift template's hours at
|
|
170
|
+
* creation, but the shift popover lets a manager retime one open shift on its own. */
|
|
171
|
+
start: string;
|
|
172
|
+
end: string;
|
|
173
|
+
breakMins?: number;
|
|
174
|
+
}
|
|
175
|
+
export interface ShiftTemplate {
|
|
176
|
+
key: string;
|
|
177
|
+
label: string;
|
|
178
|
+
start: string;
|
|
179
|
+
end: string;
|
|
180
|
+
color: string;
|
|
181
|
+
active: boolean;
|
|
182
|
+
breakMins: number;
|
|
183
|
+
}
|
|
184
|
+
/** Coverage requirement for one shift template: position -> [Mon..Sun] headcount. */
|
|
185
|
+
export type CoverageRow = Record<string, number[]>;
|
|
186
|
+
/** What an hour costs, by the kind of day it falls on — the ScheduleSettings document's whole
|
|
187
|
+
* content. `regular` multiplies ORDINARY hours and `overtime` multiplies hours past the OT
|
|
188
|
+
* threshold; a NORMAL day has no `regular` because an ordinary hour at ordinary pay is 1×.
|
|
189
|
+
*
|
|
190
|
+
* REST_DAY is carried but unread: this board has no standing weekly rest-day pattern to decide
|
|
191
|
+
* which dates are rest days (see cellStateClasses), so nothing can ask for its rates yet. */
|
|
192
|
+
export interface PayRate {
|
|
193
|
+
NORMAL: {
|
|
194
|
+
overtime: number;
|
|
195
|
+
};
|
|
196
|
+
REST_DAY: {
|
|
197
|
+
regular: number;
|
|
198
|
+
overtime: number;
|
|
199
|
+
};
|
|
200
|
+
PUBLIC_HOLIDAY: {
|
|
201
|
+
regular: number;
|
|
202
|
+
overtime: number;
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
export interface ScheduleRules {
|
|
206
|
+
coverage: Record<string, CoverageRow>;
|
|
207
|
+
openFrom: string;
|
|
208
|
+
openTo: string;
|
|
209
|
+
/** Per grid day (0 = Mon) trading windows straight off the outlet's own profile — one or
|
|
210
|
+
* more `{start, end}` pairs a day (a lunch/dinner split reads as two windows, not one that
|
|
211
|
+
* spans the gap between them), empty for a structurally closed day. `openFrom`/`openTo`
|
|
212
|
+
* above stay the widest span across the whole week: the coverage bar, day timeline and shift
|
|
213
|
+
* forms are still drawn against one axis for the whole board, not a different one per day. */
|
|
214
|
+
dayHours: Array<{
|
|
215
|
+
start: string;
|
|
216
|
+
end: string;
|
|
217
|
+
}>[];
|
|
218
|
+
payRate: PayRate;
|
|
219
|
+
/** Weekly sales forecast (RM) — the stats row's editable input and the figure the
|
|
220
|
+
* per-day forecast curve distributes across the week. */
|
|
221
|
+
salesForecast: number;
|
|
222
|
+
/** Weekday indices (0 = Mon) the venue never opens on. Empty by default — this seed venue
|
|
223
|
+
* runs every day. Feeds copy-week's and export's "Closed" labeling. */
|
|
224
|
+
closedWeekdays: number[];
|
|
225
|
+
/** Labour cost target as a % of sales — Settings page "Labour budget" tab. */
|
|
226
|
+
labourTarget: number;
|
|
227
|
+
/** When true, the weekly labour cap is derived from salesForecast * labourTarget instead
|
|
228
|
+
* of being a standalone figure. */
|
|
229
|
+
budgetFromSales: boolean;
|
|
230
|
+
/** Weekly labour cap (RM), editable directly when budgetFromSales is false. */
|
|
231
|
+
budget: number;
|
|
232
|
+
/** Monthly OT cap (hours) — Settings page "Overtime" tab. */
|
|
233
|
+
otCapHours: number | null;
|
|
234
|
+
workingHours: {
|
|
235
|
+
minHoursPerDay: number | null;
|
|
236
|
+
maxHoursPerDay: number | null;
|
|
237
|
+
maxHoursPerWeek: number | null;
|
|
238
|
+
};
|
|
239
|
+
/** Monthly OT budget (RM), advisory only. */
|
|
240
|
+
otBudget: number;
|
|
241
|
+
notify: {
|
|
242
|
+
waConnected: boolean;
|
|
243
|
+
waNumber: string;
|
|
244
|
+
waDisplayName: string;
|
|
245
|
+
defaults: {
|
|
246
|
+
wa: boolean;
|
|
247
|
+
push: boolean;
|
|
248
|
+
email: boolean;
|
|
249
|
+
};
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
export interface PendingChange {
|
|
253
|
+
empId: number;
|
|
254
|
+
employeeKey: string;
|
|
255
|
+
dayIdx: number;
|
|
256
|
+
kind: 'add' | 'change' | 'remove';
|
|
257
|
+
label: string;
|
|
258
|
+
conflict?: boolean;
|
|
259
|
+
}
|
|
260
|
+
export type NotifyChannel = 'wa' | 'push' | 'email';
|
|
261
|
+
export interface ScheduleVersionSnapshot {
|
|
262
|
+
id: number;
|
|
263
|
+
name: string;
|
|
264
|
+
weekHours: number;
|
|
265
|
+
shifts: DaySlot[];
|
|
266
|
+
}
|
|
267
|
+
export interface ScheduleVersion {
|
|
268
|
+
v: number;
|
|
269
|
+
at: Date;
|
|
270
|
+
by: string;
|
|
271
|
+
note: string;
|
|
272
|
+
changeCount: number;
|
|
273
|
+
staffAffected: number;
|
|
274
|
+
snapshot: ScheduleVersionSnapshot[];
|
|
275
|
+
}
|
|
276
|
+
export type ScheduleStatusTone = 'neutral' | 'warn' | 'ok' | 'locked';
|
|
277
|
+
export interface ScheduleStatusInfo {
|
|
278
|
+
tone: ScheduleStatusTone;
|
|
279
|
+
label: string;
|
|
280
|
+
hint: string;
|
|
281
|
+
allLocked: boolean;
|
|
282
|
+
}
|
|
283
|
+
/** Someone in the business's employee directory who is not yet on THIS outlet's schedule —
|
|
284
|
+
* they may already be scheduled elsewhere (see `otherOutlets`), or nowhere at all. Picking one
|
|
285
|
+
* puts a second, independent EmployeeProfiles document against their `employeeId`; it does not
|
|
286
|
+
* move or copy their profile from wherever else they work. */
|
|
287
|
+
export interface ExistingStaffCandidate {
|
|
288
|
+
employeeId: string;
|
|
289
|
+
name: string;
|
|
290
|
+
/** Other outlets this person already has a POS/HR association with — not necessarily a
|
|
291
|
+
* scheduling profile there, just enough context to tell two same-named people apart and to
|
|
292
|
+
* warn against loaning someone who's clearly based elsewhere. */
|
|
293
|
+
otherOutlets: string[];
|
|
294
|
+
/** Every outlet the person works at, by name (this one included when the POS lists it). */
|
|
295
|
+
locations: string[];
|
|
296
|
+
}
|
|
297
|
+
export interface CompGroupMeta {
|
|
298
|
+
basis: 'Hourly' | 'Monthly';
|
|
299
|
+
rate: number;
|
|
300
|
+
note: string;
|
|
301
|
+
}
|
|
302
|
+
/** A manager's note on a DATE, not on a shift — it survives every shift on that date being
|
|
303
|
+
* deleted, because a day with nothing rostered can still be an event day. The title is what
|
|
304
|
+
* makes the note visible on the day card; the description shows on hover. */
|
|
305
|
+
export interface ScheduleDayNote {
|
|
306
|
+
title: string;
|
|
307
|
+
desc: string;
|
|
308
|
+
}
|
|
309
|
+
/** One named slice of a staffing-demand period: "of the 8 people, 2 on grill". Named rows are
|
|
310
|
+
* a PART of the period's headcount, never an addition to it — whatever they don't name is the
|
|
311
|
+
* "any position" remainder, which is derived and never stored. */
|
|
312
|
+
export interface DemandRole {
|
|
313
|
+
position: string;
|
|
314
|
+
/** Persisted position identity; the name is only the display label. */
|
|
315
|
+
positionId?: string;
|
|
316
|
+
n: number;
|
|
317
|
+
}
|
|
318
|
+
/** A stretch of a day and how many people the floor needs across it. Deliberately not a shift:
|
|
319
|
+
* it carries no person and no times anybody works, so five staggered shifts can add up to the
|
|
320
|
+
* five people it asks for at 4pm without any of them being "the" shift for it. */
|
|
321
|
+
export interface DemandPeriod {
|
|
322
|
+
from: string;
|
|
323
|
+
to: string;
|
|
324
|
+
n: number;
|
|
325
|
+
/** Absent and empty mean the same thing — "anybody" — so only a stated breakdown is kept. */
|
|
326
|
+
roles?: DemandRole[];
|
|
327
|
+
}
|
|
328
|
+
/** One slice of a day where neither what was asked for nor who is on the floor changes. The
|
|
329
|
+
* timeline draws one of these per segment and the day's percentage is their weighted sum. */
|
|
330
|
+
export interface CoverageSegment {
|
|
331
|
+
from: number;
|
|
332
|
+
to: number;
|
|
333
|
+
required: number;
|
|
334
|
+
scheduled: number;
|
|
335
|
+
/** Heads asked for that nobody present answers — which is not the same as "too few bodies":
|
|
336
|
+
* eight people none of whom is a cook leaves a 2-grill ask two short with nobody missing. */
|
|
337
|
+
short: number;
|
|
338
|
+
over: number;
|
|
339
|
+
roles: Array<DemandRole & {
|
|
340
|
+
required: number;
|
|
341
|
+
got: number;
|
|
342
|
+
short: number;
|
|
343
|
+
}>;
|
|
344
|
+
/** The unnamed remainder of the period's headcount, and how much of it is covered. */
|
|
345
|
+
anyReq: number;
|
|
346
|
+
anyGot: number;
|
|
347
|
+
/** Nothing was asked for in these hours — an absence of a question, not a gap in one. */
|
|
348
|
+
none: boolean;
|
|
349
|
+
}
|
|
350
|
+
export type DemandApplyMode = 'day' | 'every' | 'weekday' | 'weekdays' | 'custom';
|
|
351
|
+
export interface NoticeBanner {
|
|
352
|
+
variant: 'holiday' | 'info' | 'warning';
|
|
353
|
+
dayIdx: number;
|
|
354
|
+
label: string;
|
|
355
|
+
detail: string;
|
|
356
|
+
action?: string;
|
|
357
|
+
}
|
|
358
|
+
/** One Auto-Schedule suggestion: put `empId` on `dayIdx` for the given hours/position.
|
|
359
|
+
* Phase 2 only ever proposes filling an empty day (an open shift or a coverage gap),
|
|
360
|
+
* so there is no 'change'/'remove' kind like the mockup's fuller engine. */
|
|
361
|
+
export interface Proposal {
|
|
362
|
+
id: number;
|
|
363
|
+
empId: number;
|
|
364
|
+
dayIdx: number;
|
|
365
|
+
start: string;
|
|
366
|
+
end: string;
|
|
367
|
+
role: string;
|
|
368
|
+
/** The position backing `role`, when the auto-schedule result named one. `null`/absent means
|
|
369
|
+
* any position (an unnamed need). */
|
|
370
|
+
positionId?: string | null;
|
|
371
|
+
/** Set when this proposal would fill a named OpenShift record. */
|
|
372
|
+
openId?: number;
|
|
373
|
+
status: 'pending' | 'rejected';
|
|
374
|
+
/** The week these belong to: its first day's date. Proposals are day positions, so without
|
|
375
|
+
* this they would appear on whichever week is showing. */
|
|
376
|
+
weekKey?: string;
|
|
377
|
+
/** Why this person, for the card's tooltip. */
|
|
378
|
+
reason?: string;
|
|
379
|
+
/** Set when the server already knows applying this row would be refused; it starts rejected. */
|
|
380
|
+
rejectReason?: string;
|
|
381
|
+
}
|
|
@@ -31,9 +31,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
31
31
|
}>, {
|
|
32
32
|
readGrantData: typeof readGrantData;
|
|
33
33
|
isModified: typeof isModified;
|
|
34
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}
|
|
35
|
-
"create-pos-role": () => any;
|
|
36
|
-
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
34
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
37
35
|
initialValue: {
|
|
38
36
|
type: PropType<MemberGrantInitialValue | null>;
|
|
39
37
|
};
|
|
@@ -46,9 +44,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
46
44
|
type: BooleanConstructor;
|
|
47
45
|
default: boolean;
|
|
48
46
|
};
|
|
49
|
-
}>> & Readonly<{
|
|
50
|
-
"onCreate-pos-role"?: (() => any) | undefined;
|
|
51
|
-
}>, {
|
|
47
|
+
}>> & Readonly<{}>, {
|
|
52
48
|
loading: boolean;
|
|
53
49
|
fallbackName: string;
|
|
54
50
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -17,21 +17,21 @@ type __VLS_Props = {
|
|
|
17
17
|
title?: string;
|
|
18
18
|
};
|
|
19
19
|
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
20
|
-
apply: () => any;
|
|
21
20
|
"update-form": (payload: {
|
|
22
21
|
builder: ConditionBuilder;
|
|
23
22
|
form: unknown;
|
|
24
23
|
}) => any;
|
|
24
|
+
apply: () => any;
|
|
25
25
|
"update-inherit-mode": (payload: {
|
|
26
26
|
builder: ConditionBuilder;
|
|
27
27
|
mode: "inherit" | "custom";
|
|
28
28
|
}) => any;
|
|
29
29
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
30
|
-
onApply?: (() => any) | undefined;
|
|
31
30
|
"onUpdate-form"?: ((payload: {
|
|
32
31
|
builder: ConditionBuilder;
|
|
33
32
|
form: unknown;
|
|
34
33
|
}) => any) | undefined;
|
|
34
|
+
onApply?: (() => any) | undefined;
|
|
35
35
|
"onUpdate-inherit-mode"?: ((payload: {
|
|
36
36
|
builder: ConditionBuilder;
|
|
37
37
|
mode: "inherit" | "custom";
|
|
@@ -21,7 +21,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
21
21
|
};
|
|
22
22
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
23
23
|
"update:modelValue": (roles: IFdtoPermissionPosUserRole[]) => any;
|
|
24
|
-
"create-role": () => any;
|
|
25
24
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
26
25
|
modelValue: {
|
|
27
26
|
type: PropType<IFdtoPermissionPosUserRole[]>;
|
|
@@ -41,6 +40,5 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
41
40
|
};
|
|
42
41
|
}>> & Readonly<{
|
|
43
42
|
"onUpdate:modelValue"?: ((roles: IFdtoPermissionPosUserRole[]) => any) | undefined;
|
|
44
|
-
"onCreate-role"?: (() => any) | undefined;
|
|
45
43
|
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
46
44
|
export default _default;
|
|
@@ -14,17 +14,17 @@ type __VLS_Slots = {} & {
|
|
|
14
14
|
section?: (props: typeof __VLS_1) => any;
|
|
15
15
|
};
|
|
16
16
|
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
17
|
-
apply: () => any;
|
|
18
17
|
"update-form": (payload: {
|
|
19
18
|
builder: ConditionBuilder;
|
|
20
19
|
form: unknown;
|
|
21
20
|
}) => any;
|
|
21
|
+
apply: () => any;
|
|
22
22
|
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
23
|
-
onApply?: (() => any) | undefined;
|
|
24
23
|
"onUpdate-form"?: ((payload: {
|
|
25
24
|
builder: ConditionBuilder;
|
|
26
25
|
form: unknown;
|
|
27
26
|
}) => any) | undefined;
|
|
27
|
+
onApply?: (() => any) | undefined;
|
|
28
28
|
}>, {
|
|
29
29
|
title: string;
|
|
30
30
|
disable: boolean;
|
|
@@ -65,7 +65,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
65
65
|
providerLabel: import("vue").ComputedRef<string>;
|
|
66
66
|
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
67
67
|
"update-existing": (existing: IFdtoStaffInviteLookup) => any;
|
|
68
|
-
"create-pos-role": () => any;
|
|
69
68
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
70
69
|
initialValue: {
|
|
71
70
|
type: PropType<TeamDialogData>;
|
|
@@ -88,7 +87,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
88
87
|
};
|
|
89
88
|
}>> & Readonly<{
|
|
90
89
|
"onUpdate-existing"?: ((existing: IFdtoStaffInviteLookup) => any) | undefined;
|
|
91
|
-
"onCreate-pos-role"?: (() => any) | undefined;
|
|
92
90
|
}>, {
|
|
93
91
|
loading: boolean;
|
|
94
92
|
roleErrorMessage: string;
|
|
@@ -33,7 +33,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
33
33
|
};
|
|
34
34
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
35
35
|
"update:model-value": (user: IFdtoPermissionPosUser | null | undefined) => any;
|
|
36
|
-
"create-role": () => any;
|
|
37
36
|
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
38
37
|
modelValue: {
|
|
39
38
|
type: PropType<IFdtoPermissionPosUser | null>;
|
|
@@ -65,7 +64,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
65
64
|
};
|
|
66
65
|
}>> & Readonly<{
|
|
67
66
|
"onUpdate:model-value"?: ((user: IFdtoPermissionPosUser | null | undefined) => any) | undefined;
|
|
68
|
-
"onCreate-role"?: (() => any) | undefined;
|
|
69
67
|
}>, {
|
|
70
68
|
modelValue: IFdtoPermissionPosUser | null;
|
|
71
69
|
fallbackPasscode: string;
|