@feedmepos/mf-hrm-portal 2.3.2-dev → 2.3.2-dev.11
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-DoNoFW6w.js} +14 -15
- package/dist/AuditLogList-D5M0cl8g.js +2026 -0
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-Cixg_icC.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C1dLOPFb.js} +10 -10
- package/dist/{EmployeeList-BG2KPvOB.js → EmployeeList-BX9gy9WG.js} +196 -208
- package/dist/FormSection.vue_vue_type_script_setup_true_lang-iCgTyICI.js +90 -0
- package/dist/{GrantUserList-CUkuf3VV.js → GrantUserList-DNvmmlDI.js} +15 -16
- package/dist/{Main-Cg9SOzcz.js → Main-2NivoQNg.js} +5 -5
- package/dist/{Main-BSHf8gTE.js → Main-BHmY7VHC.js} +12 -11
- package/dist/{Main-BcixH7R5.js → Main-SzU5H5uC.js} +2394 -2383
- package/dist/MyPosProfile-2W5mT5d5.js +360 -0
- package/dist/{PermissionSetList-I3u2_qHR.js → PermissionSetList-BCAm8rHm.js} +82 -80
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-e2vu_Mcn.js +4208 -0
- package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DYbfmF2P.js +1797 -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-o4mXv2hT.js +547 -0
- package/dist/RoleList-BXkyCeH0.js +265 -0
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-DOxRdHY1.js +544 -0
- package/dist/ScheduleGeneralPage-4hV53-q6.js +811 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-D5jOHLA1.js +2557 -0
- package/dist/SchedulePage-CqNa_p32.js +19446 -0
- package/dist/SchedulePositionPage-7xYBe1xd.js +282 -0
- package/dist/SelectFilter-Dy2Nv1_D.js +263 -0
- package/dist/TeamMemberList-okhiXdLg.js +2087 -0
- package/dist/TimesheetList-BKj9OnJW.js +437 -0
- package/dist/{app-CdrnR_Pw.js → app-C37qvNnc.js} +14439 -5834
- package/dist/app.js +1 -1
- package/dist/{approval-code-Bwvwehz9.js → approval-code-B7rpc4Oe.js} +4 -4
- package/dist/{dayjs.min-BO8bcI17.js → dayjs.min-D35yhU4A.js} +12 -12
- package/dist/employee-Bn6HTMxg.js +172 -0
- package/dist/{grant-user-whFOaPZI.js → grant-user-CostZ0Md.js} +2 -2
- package/dist/{iteration-ZpERYj3o.js → index-DPiNc7mn.js} +698 -726
- package/dist/iteration-CcXrOMQe.js +30 -0
- package/dist/{lodash-7SZBZ8VQ.js → lodash-C8MGI_QW.js} +1 -1
- package/dist/member-grant-CktOoicv.js +54 -0
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/restaurant-BgvuJL8G.js +52 -0
- package/dist/role-D8G5QOG1.js +98 -0
- package/dist/rule-EYBPBkv_.js +843 -0
- package/dist/src/api/audit-log/index.d.ts +6 -0
- package/dist/src/api/employee/index.d.ts +3 -4
- package/dist/src/api/my-pos-profile/index.d.ts +1 -3
- package/dist/src/api/restaurant/index.d.ts +2 -0
- package/dist/src/api/schedule/index.d.ts +68 -0
- package/dist/src/api/sso-provider/index.d.ts +5 -0
- package/dist/src/api/staff-invite/index.d.ts +1 -2
- package/dist/src/api/timesheet/index.d.ts +1 -1
- package/dist/src/components/AppForm.vue.d.ts +2 -2
- package/dist/src/components/CheckboxInput.vue.d.ts +2 -2
- package/dist/src/components/layout/PortalShell.vue.d.ts +12 -0
- package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
- package/dist/src/components/layout/withScheduleShell.d.ts +10 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- package/dist/src/composables/useMessage.d.ts +8 -2
- package/dist/src/composables/useSsoProviders.d.ts +19 -0
- package/dist/src/composables/useStaffInviteProviders.d.ts +1 -12
- package/dist/src/helpers/permission-set.d.ts +1 -102
- package/dist/src/helpers/pos-assignment-rows.d.ts +2 -0
- package/dist/src/helpers/rule.d.ts +2 -2
- package/dist/src/helpers/staff-invite.d.ts +3 -0
- package/dist/src/router/shared.d.ts +3 -0
- package/dist/src/stores/approval-code.d.ts +1 -1
- package/dist/src/stores/employee.d.ts +15 -21
- package/dist/src/stores/grant-user.d.ts +1 -1
- package/dist/src/stores/permission-assignment.d.ts +2 -2
- package/dist/src/stores/permission-set.d.ts +2 -2
- package/dist/src/stores/restaurant.d.ts +63 -3
- package/dist/src/stores/role.d.ts +2 -2
- package/dist/src/stores/team.d.ts +1 -1
- package/dist/src/stores/timesheet.d.ts +68 -53
- package/dist/src/types/employee.d.ts +1 -0
- package/dist/src/types/my-pos-profile.d.ts +2 -3
- package/dist/src/types/schedule.d.ts +23 -0
- package/dist/src/types/sso-provider.d.ts +10 -0
- package/dist/src/types/timesheet.d.ts +3 -0
- package/dist/src/views/audit-log/constants.d.ts +9 -30
- package/dist/src/views/audit-log/locales/index.d.ts +528 -0
- package/dist/src/views/audit-log/pos-row.d.ts +27 -0
- package/dist/src/views/audit-log/useTraceIdDeepLink.d.ts +19 -0
- package/dist/src/views/hr/locales/index.d.ts +24 -4
- package/dist/src/views/hr/role/RoleForm.vue.d.ts +29 -2
- package/dist/src/views/my-pos-profile/components/PasscodeChangedDialog.vue.d.ts +1 -1
- package/dist/src/views/my-pos-profile/locales/index.d.ts +40 -4
- package/dist/src/views/scheduling/ScheduleGeneralPage.vue.d.ts +3 -0
- package/dist/src/views/scheduling/SchedulePage.vue.d.ts +3 -0
- package/dist/src/views/scheduling/SchedulePositionPage.vue.d.ts +3 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeIdentitySection.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeModeStep.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeePosAccessSection.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeePositionsSection.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleAddEmployeeSchedulingSection.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddPickPopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAddPositionModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +41 -0
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleDetailsModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleDoneArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleAutoScheduleModal.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +25 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +31 -0
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +29 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +34 -0
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +38 -0
- package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +22 -0
- package/dist/src/views/scheduling/components/ScheduleButton.vue.d.ts +23 -0
- package/dist/src/views/scheduling/components/ScheduleChangeEmployeeModal.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleCloneOutletModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleCoach.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +15 -0
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +33 -0
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleCostRail.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleCostRailEmptyArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleDateRangePopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleDayNotePopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleDemandRow.vue.d.ts +23 -0
- package/dist/src/views/scheduling/components/ScheduleDemandSheet.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleDotsIcon.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleEmployeeDetailPanel.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleEmployeeIdentity.vue.d.ts +17 -0
- package/dist/src/views/scheduling/components/ScheduleExportPreview.vue.d.ts +7 -0
- package/dist/src/views/scheduling/components/ScheduleFilterBar.vue.d.ts +18 -0
- package/dist/src/views/scheduling/components/ScheduleGapPopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleGridHeader.vue.d.ts +18 -0
- package/dist/src/views/scheduling/components/ScheduleGridSkeleton.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +9 -0
- package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +26 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingAssignPositionModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingClosedDayConfirm.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandDays.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingDoneArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +11 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizard.vue.d.ts +9 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +11 -0
- package/dist/src/views/scheduling/components/SchedulePublishModal.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/SchedulePublishShareArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleReviewBar.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +70 -0
- package/dist/src/views/scheduling/components/ScheduleSelectExistingEmployeeModal.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +35 -0
- package/dist/src/views/scheduling/components/ScheduleShiftHeadcountEditor.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleShiftImpact.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +16 -0
- package/dist/src/views/scheduling/components/ScheduleShiftRepeatDaysRow.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleShiftSegmentsEditor.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleShiftWhoPicker.vue.d.ts +25 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +16 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +50 -0
- package/dist/src/views/scheduling/components/ScheduleStatsRow.vue.d.ts +12 -0
- package/dist/src/views/scheduling/components/ScheduleSwapShiftsModal.vue.d.ts +8 -0
- package/dist/src/views/scheduling/components/ScheduleTimePickerPopover.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +20 -0
- package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +35 -0
- package/dist/src/views/scheduling/composables/onboarding-constants.d.ts +7 -0
- package/dist/src/views/scheduling/composables/onboarding-hours.d.ts +7 -0
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +51 -0
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +15 -0
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +82 -0
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +63 -0
- package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +9 -0
- package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +17 -0
- package/dist/src/views/scheduling/composables/schedule-cost.d.ts +24 -0
- package/dist/src/views/scheduling/composables/schedule-currency.d.ts +22 -0
- package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +21 -0
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +23 -0
- package/dist/src/views/scheduling/composables/schedule-employee-profile.d.ts +7 -0
- package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
- package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +14 -0
- package/dist/src/views/scheduling/composables/schedule-leave-split.d.ts +9 -0
- package/dist/src/views/scheduling/composables/schedule-popover-position.d.ts +16 -0
- package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +23 -0
- package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +29 -0
- package/dist/src/views/scheduling/composables/schedule-time.d.ts +8 -0
- package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useCollapsedList.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +137 -0
- package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +75 -0
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +50 -0
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +301 -0
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +615 -0
- package/dist/src/views/scheduling/composables/useScheduleCellState.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +28 -0
- package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useScheduleCoach.d.ts +80 -0
- package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +12 -0
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +60 -0
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +44 -0
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +111 -0
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +59 -0
- package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +47 -0
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +166 -0
- package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +55 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +24 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +49 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +7 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +50 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +38 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +32 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeProfile.d.ts +16 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +52 -0
- package/dist/src/views/scheduling/composables/useScheduleFilterBar.d.ts +14 -0
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +79 -0
- package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +60 -0
- package/dist/src/views/scheduling/composables/useScheduleLegend.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +58 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +45 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +231 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingFlow.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +15 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingPersistence.d.ts +13 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +1543 -0
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +25 -0
- package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +18 -0
- package/dist/src/views/scheduling/composables/useSchedulePageBootstrap.d.ts +9 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +20 -0
- package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +33 -0
- package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +22 -0
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +21 -0
- package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +19 -0
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +55 -0
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +35 -0
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +127 -0
- package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +11 -0
- package/dist/src/views/scheduling/composables/useScheduleRangeCalendar.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +313 -0
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +40 -0
- package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +245 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +63 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +17 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +255 -0
- package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +27 -0
- package/dist/src/views/scheduling/composables/useScheduleTimePicker.d.ts +49 -0
- package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +95 -0
- package/dist/src/views/scheduling/composables/useScheduleViewportFit.d.ts +9 -0
- package/dist/src/views/scheduling/country-rules/index.d.ts +33 -0
- package/dist/src/views/scheduling/data.d.ts +123 -0
- package/dist/src/views/scheduling/locales/index.d.ts +6988 -0
- package/dist/src/views/scheduling/schedule-constants.d.ts +7 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +767 -0
- package/dist/src/views/scheduling/schedule-store.d.ts +140 -0
- package/dist/src/views/scheduling/types.d.ts +381 -0
- package/dist/src/views/team/components/MemberGrantFields.vue.d.ts +2 -6
- package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +2 -2
- package/dist/src/views/team/components/PosAssignmentRows.vue.d.ts +0 -2
- package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +2 -2
- package/dist/src/views/team/member/AddMemberForm.vue.d.ts +0 -2
- package/dist/src/views/team/member/TeamMemberMasterUser.vue.d.ts +0 -2
- package/dist/style.css +1 -1
- package/dist/timesheet-D6jBeR-V.js +76 -0
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-CL6EEDuw.js → useAppStore-BmBJPo1_.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-BBjBUzGJ.js → useLoading-BtyGXkm_.js} +1 -1
- package/dist/useMessage-_ywT_N9X.js +17 -0
- package/dist/{useReportPermissions-Bg0fma6m.js → useReportPermissions-C8z7EA7v.js} +13 -13
- package/dist/useSsoProviders-CZrTNgfp.js +41 -0
- package/package.json +7 -5
- package/dist/AuditLogList-Dd6HyFhk.js +0 -1777
- package/dist/FormItem.vue_vue_type_script_setup_true_lang-DPT2FoIc.js +0 -45
- package/dist/FormSection.vue_vue_type_script_setup_true_lang-DknXTYiK.js +0 -49
- package/dist/MyPosProfile-CN8Bj3aV.js +0 -301
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BBoRXQPn.js +0 -4243
- package/dist/PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-B5QDOF0L.js +0 -1840
- package/dist/RoleList-ALmAwN0U.js +0 -739
- package/dist/SelectFilter-ATOm0hdn.js +0 -269
- package/dist/TeamMemberList-DZfEnOs1.js +0 -2097
- package/dist/TimesheetList-CECFKt7H.js +0 -402
- package/dist/TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-RIyoAmeb.js +0 -58
- package/dist/employee-Dg-J9goA.js +0 -205
- package/dist/member-grant-C46lvrh2.js +0 -55
- package/dist/restaurant-CKhT6kgj.js +0 -45
- package/dist/role-C6hFKOfU.js +0 -93
- package/dist/rule-BlMymDXm.js +0 -788
- package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
|
@@ -0,0 +1,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;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Employee, OpenShift } from '../types';
|
|
2
|
+
export { RANGE_LEN, mostRecentMonday, weekDates, weeksBetween } from './schedule-calendar';
|
|
3
|
+
export interface WeekBucket {
|
|
4
|
+
employees: Employee[];
|
|
5
|
+
openShifts: OpenShift[];
|
|
6
|
+
}
|
|
7
|
+
/** `from` is the date the offset is relative to (the board passes the Monday it anchored on, so a
|
|
8
|
+
* tab left open past midnight keeps building the week it is showing). */
|
|
9
|
+
export declare function weekData(offset: number, from?: Date): WeekBucket;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** A long list shown as its first few entries plus "+N more", expandable in place. For chip rows
|
|
2
|
+
* that can run to a hundred items (a person rostered at every outlet), which would otherwise
|
|
3
|
+
* push the rest of the form off screen. */
|
|
4
|
+
export declare function useCollapsedList<T>(items: () => T[], limit?: number): {
|
|
5
|
+
expanded: import("vue").Ref<boolean, boolean>;
|
|
6
|
+
shown: import("vue").ComputedRef<T[]>;
|
|
7
|
+
hiddenCount: import("vue").ComputedRef<number>;
|
|
8
|
+
toggle: () => void;
|
|
9
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useAppStore } from '@feedmepos/mf-remy-panel';
|
|
2
|
+
export interface RemyActivateOptions {
|
|
3
|
+
prompt?: string;
|
|
4
|
+
forceNewConversation?: boolean;
|
|
5
|
+
fullscreen?: boolean;
|
|
6
|
+
}
|
|
7
|
+
/** HRM never bundles or mounts a Remy panel of its own — `@feedmepos/mf-remy-panel` is externalised
|
|
8
|
+
* by the shared vite preset, so inside the host portal this import resolves to the ONE panel
|
|
9
|
+
* instance the host already created. The host portal owns initialisation (with env-specific
|
|
10
|
+
* backend/license URLs) before any HRM view mounts. HRM must never call `initializeRemyChat`:
|
|
11
|
+
* it re-initialises the shared panel instance and, without arguments, points it at production. */
|
|
12
|
+
export interface RemyAppStoreApi {
|
|
13
|
+
store: ReturnType<typeof useAppStore>;
|
|
14
|
+
activate: (options: RemyActivateOptions) => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare function useRemyAppStore(): RemyAppStoreApi;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import type { Employee } from '../types';
|
|
2
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
+
import { type ScheduleAddEmployeeMode, type ScheduleAddEmployeeStep } from './schedule-add-employee-form';
|
|
4
|
+
export type { ScheduleAddEmployeeForm, ScheduleAddEmployeeMode, ScheduleAddEmployeeStep, } from './schedule-add-employee-form';
|
|
5
|
+
/** Add-employee wizard: a "how do you want to add them" step, then one detail form covering
|
|
6
|
+
* identity, locations, pay, scheduling caps, availability, positions and POS access — plus
|
|
7
|
+
* the "select existing POS staff" side dialog the first step can hand off to. */
|
|
8
|
+
export declare function useScheduleAddEmployee(board: ScheduleBoardApi, options?: {
|
|
9
|
+
notify?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
10
|
+
}): {
|
|
11
|
+
open: import("vue").Ref<boolean, boolean>;
|
|
12
|
+
selectExistingOpen: import("vue").Ref<boolean, boolean>;
|
|
13
|
+
step: import("vue").Ref<ScheduleAddEmployeeStep, ScheduleAddEmployeeStep>;
|
|
14
|
+
mode: import("vue").Ref<ScheduleAddEmployeeMode, ScheduleAddEmployeeMode>;
|
|
15
|
+
form: {
|
|
16
|
+
name: string;
|
|
17
|
+
mobile: string;
|
|
18
|
+
dial: string;
|
|
19
|
+
employment: "full" | "part";
|
|
20
|
+
locations: string[];
|
|
21
|
+
payBasis: "hourly" | "monthly";
|
|
22
|
+
payAmount: string;
|
|
23
|
+
maxHours: string;
|
|
24
|
+
maxHoursPerDay: string;
|
|
25
|
+
minHours: string;
|
|
26
|
+
workingHoursEnabled: boolean;
|
|
27
|
+
overtimeEnabled: boolean;
|
|
28
|
+
maxHoursPerMonth: string;
|
|
29
|
+
availDays: boolean[];
|
|
30
|
+
availHours: {
|
|
31
|
+
from: string;
|
|
32
|
+
to: string;
|
|
33
|
+
}[];
|
|
34
|
+
preferences: string;
|
|
35
|
+
primaryPosition: string;
|
|
36
|
+
secondaryPositions: string[];
|
|
37
|
+
seniority: "" | "senior" | "junior";
|
|
38
|
+
passcode: string[];
|
|
39
|
+
masterUser: boolean;
|
|
40
|
+
masterCode: string;
|
|
41
|
+
posAccessEnabled: boolean;
|
|
42
|
+
posRoles: {
|
|
43
|
+
outlet: string;
|
|
44
|
+
roleId: string;
|
|
45
|
+
}[];
|
|
46
|
+
};
|
|
47
|
+
sectionId: import("vue").Ref<string, string>;
|
|
48
|
+
isEditing: import("vue").ComputedRef<boolean>;
|
|
49
|
+
editingEmployeeId: import("vue").Ref<number | null, number | null>;
|
|
50
|
+
locOpen: import("vue").Ref<boolean, boolean>;
|
|
51
|
+
secOpen: import("vue").Ref<boolean, boolean>;
|
|
52
|
+
secondaryOptions: import("vue").ComputedRef<string[]>;
|
|
53
|
+
isPart: import("vue").ComputedRef<boolean>;
|
|
54
|
+
dayLit: (index: number) => boolean;
|
|
55
|
+
avLabel: import("vue").ComputedRef<string>;
|
|
56
|
+
avAllLabel: import("vue").ComputedRef<string>;
|
|
57
|
+
maxHoursPlaceholder: import("vue").ComputedRef<string>;
|
|
58
|
+
minHoursPlaceholder: import("vue").ComputedRef<string>;
|
|
59
|
+
maxHoursPerDayPlaceholder: import("vue").ComputedRef<string>;
|
|
60
|
+
maxHoursPerMonthPlaceholder: import("vue").ComputedRef<string>;
|
|
61
|
+
toggleOvertime: () => void;
|
|
62
|
+
payUnit: import("vue").ComputedRef<string>;
|
|
63
|
+
effectiveRate: import("vue").ComputedRef<number>;
|
|
64
|
+
passcodeValue: import("vue").ComputedRef<string>;
|
|
65
|
+
passcodeOk: import("vue").ComputedRef<boolean>;
|
|
66
|
+
currentLocationLabel: import("vue").ComputedRef<string>;
|
|
67
|
+
locationOptions: import("vue").Reactive<string[]>;
|
|
68
|
+
isNewUser: import("vue").ComputedRef<boolean>;
|
|
69
|
+
footerHint: import("vue").ComputedRef<string>;
|
|
70
|
+
primaryRoleLabel: import("vue").ComputedRef<string>;
|
|
71
|
+
locationsSummary: import("vue").ComputedRef<string>;
|
|
72
|
+
payLine: import("vue").ComputedRef<string>;
|
|
73
|
+
nameError: import("vue").ComputedRef<boolean>;
|
|
74
|
+
passError: import("vue").ComputedRef<boolean>;
|
|
75
|
+
posRolesError: import("vue").ComputedRef<boolean>;
|
|
76
|
+
availabilityError: import("vue").ComputedRef<boolean>;
|
|
77
|
+
saving: import("vue").Ref<boolean, boolean>;
|
|
78
|
+
saveError: import("vue").Ref<string | null, string | null>;
|
|
79
|
+
deferScheduleWrites: import("vue").Ref<boolean, boolean>;
|
|
80
|
+
candidatesLoading: import("vue").Ref<boolean, boolean>;
|
|
81
|
+
candidatesError: import("vue").Ref<string | null, string | null>;
|
|
82
|
+
selectingExisting: import("vue").Ref<boolean, boolean>;
|
|
83
|
+
candidates: import("vue").Ref<{
|
|
84
|
+
employeeId: string;
|
|
85
|
+
name: string;
|
|
86
|
+
otherOutlets: string[];
|
|
87
|
+
locations: string[];
|
|
88
|
+
}[], import("../types").ExistingStaffCandidate[] | {
|
|
89
|
+
employeeId: string;
|
|
90
|
+
name: string;
|
|
91
|
+
otherOutlets: string[];
|
|
92
|
+
locations: string[];
|
|
93
|
+
}[]>;
|
|
94
|
+
candidatesTotal: import("vue").Ref<number, number>;
|
|
95
|
+
candidatesPage: import("vue").Ref<number, number>;
|
|
96
|
+
candidatesPageItemCount: import("vue").Ref<number, number>;
|
|
97
|
+
candidatesPageSize: number;
|
|
98
|
+
searchExisting: (search: string) => void;
|
|
99
|
+
goToExistingPage: (page: number, search: string) => void;
|
|
100
|
+
openWizard: (section: string) => void;
|
|
101
|
+
openEditFor: (emp: Employee) => void;
|
|
102
|
+
confirmClose: () => void;
|
|
103
|
+
close: () => void;
|
|
104
|
+
setMode: (m: ScheduleAddEmployeeMode) => void;
|
|
105
|
+
openSelectExisting: () => void;
|
|
106
|
+
closeSelectExisting: () => void;
|
|
107
|
+
pickExisting: (employeeId: string) => Promise<void>;
|
|
108
|
+
next: () => void;
|
|
109
|
+
back: () => void;
|
|
110
|
+
toggleMulti: (which: "loc" | "sec") => void;
|
|
111
|
+
toggleLocation: (location: string) => void;
|
|
112
|
+
removeLocation: (location: string) => void;
|
|
113
|
+
toggleSecondary: (position: string) => void;
|
|
114
|
+
removeSecondary: (position: string) => void;
|
|
115
|
+
setPrimaryPosition: (position: string) => void;
|
|
116
|
+
setPayBasis: (basis: "hourly" | "monthly") => void;
|
|
117
|
+
toggleAvailDay: (index: number) => void;
|
|
118
|
+
availAll: () => void;
|
|
119
|
+
setAvailHour: (index: number, field: "from" | "to", value: string) => void;
|
|
120
|
+
copyAvailHourDown: (index: number) => void;
|
|
121
|
+
setPasscodeDigit: (index: number, value: string) => void;
|
|
122
|
+
generatePasscode: () => Promise<void>;
|
|
123
|
+
isGeneratingPasscode: import("vue").Ref<boolean, boolean>;
|
|
124
|
+
togglePosAccess: () => void;
|
|
125
|
+
addPosRoleRow: () => void;
|
|
126
|
+
removePosRoleRow: (index: number) => void;
|
|
127
|
+
isCurrentOutletRow: (index: number) => boolean;
|
|
128
|
+
setPosRoleOutlet: (index: number, outlet: string) => void;
|
|
129
|
+
setPosRoleId: (index: number, roleId: string) => void;
|
|
130
|
+
posRoleOptionsFor: (outlet: string) => import("../../../types/role").Role[];
|
|
131
|
+
isPosRoleUsable: (role: import("../../../types/role").Role) => boolean;
|
|
132
|
+
setMasterUserRoleAccess: (roleIds: string[] | null | undefined) => void;
|
|
133
|
+
isPosOutletUsable: (outlet: string) => boolean;
|
|
134
|
+
posRolesHint: import("vue").ComputedRef<string>;
|
|
135
|
+
create: () => Promise<boolean>;
|
|
136
|
+
};
|
|
137
|
+
export type ScheduleAddEmployeeApi = ReturnType<typeof useScheduleAddEmployee>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
3
|
+
import { type QuickPickCandidate } from './schedule-quick-pick';
|
|
4
|
+
import { type ScheduleAnchorRect } from './schedule-popover-position';
|
|
5
|
+
export interface ScheduleAddPickState {
|
|
6
|
+
open: boolean;
|
|
7
|
+
empId: number | null;
|
|
8
|
+
dayIdx: number | null;
|
|
9
|
+
/** Measured rect of the cell the popup opened from; the popup component places itself from it
|
|
10
|
+
* once rendered (V6.2 placePopover), writing the result to `left`/`top`. */
|
|
11
|
+
anchor: ScheduleAnchorRect | null;
|
|
12
|
+
left: number;
|
|
13
|
+
top: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ScheduleAddPickLeaveOption {
|
|
16
|
+
reason: string;
|
|
17
|
+
/** i18n key for the row's label — `reason` itself is an id and stays English. */
|
|
18
|
+
labelKey: string;
|
|
19
|
+
swatch: string;
|
|
20
|
+
}
|
|
21
|
+
/** The "+ Add" quick-pick popover on an employee's empty cell — ported from the mockup's
|
|
22
|
+
* openAddShiftPicker()/renderAddPickList(), scoped to what this board actually has: our one
|
|
23
|
+
* active shift pattern, a fixed leave-reason list, and a demand-gap suggestion, all committed
|
|
24
|
+
* directly (no clash confirmation dialogs — this board has no such infrastructure yet, and none
|
|
25
|
+
* of its existing write paths gate on one either). Leave picks write a full-day approved leave
|
|
26
|
+
* immediately rather than opening a creation form — there's no "book a leave" authoring flow
|
|
27
|
+
* anywhere in this port yet, only the existing pending-request review modal, which assumes the
|
|
28
|
+
* leave already exists. The mockup's "On this day" (join an existing open-shift group) section is
|
|
29
|
+
* left out — it needs split-shift/group-joining machinery this board doesn't model. */
|
|
30
|
+
export declare function useScheduleAddPick(board: ScheduleBoardApi, demand: ScheduleDemandApi, handlers: {
|
|
31
|
+
onCommitted: (message: string) => void;
|
|
32
|
+
onOpenFullEditor: (empId: number, dayIdx: number, slotIndex: number) => void;
|
|
33
|
+
/** The leave editor, on this cell. `reason` is the row's own type, or null for the plain "Leave" row. */
|
|
34
|
+
onOpenLeave: (empId: number, dayIdx: number, reason: string | null) => void;
|
|
35
|
+
}): {
|
|
36
|
+
state: {
|
|
37
|
+
open: boolean;
|
|
38
|
+
empId: number | null;
|
|
39
|
+
dayIdx: number | null;
|
|
40
|
+
anchor: {
|
|
41
|
+
left: number;
|
|
42
|
+
right: number;
|
|
43
|
+
top: number;
|
|
44
|
+
bottom: number;
|
|
45
|
+
} | null;
|
|
46
|
+
left: number;
|
|
47
|
+
top: number;
|
|
48
|
+
};
|
|
49
|
+
query: import("vue").Ref<string, string>;
|
|
50
|
+
parsedRange: import("vue").ComputedRef<{
|
|
51
|
+
start: string;
|
|
52
|
+
end: string;
|
|
53
|
+
} | null>;
|
|
54
|
+
suggestions: import("vue").ComputedRef<QuickPickCandidate[]>;
|
|
55
|
+
filteredPatterns: import("vue").ComputedRef<{
|
|
56
|
+
key: string;
|
|
57
|
+
label: string;
|
|
58
|
+
start: string;
|
|
59
|
+
end: string;
|
|
60
|
+
color: string;
|
|
61
|
+
active: boolean;
|
|
62
|
+
breakMins: number;
|
|
63
|
+
}[]>;
|
|
64
|
+
filteredLeaves: import("vue").ComputedRef<ScheduleAddPickLeaveOption[]>;
|
|
65
|
+
hasResults: import("vue").ComputedRef<boolean>;
|
|
66
|
+
openFor: (empId: number, dayIdx: number, anchor: HTMLElement) => void;
|
|
67
|
+
close: () => void;
|
|
68
|
+
pickSuggested: (index: number) => void;
|
|
69
|
+
pickPattern: (key: string) => void;
|
|
70
|
+
pickTypedRange: (start: string, end: string) => void;
|
|
71
|
+
pickLeave: (reason: string) => void;
|
|
72
|
+
submitQuery: () => void;
|
|
73
|
+
openBlank: () => void;
|
|
74
|
+
};
|
|
75
|
+
export type ScheduleAddPickApi = ReturnType<typeof useScheduleAddPick>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
import type { Employee, WorkSlot } from '../types';
|
|
3
|
+
export interface ScheduleAssignedSlot {
|
|
4
|
+
emp: Employee;
|
|
5
|
+
slot: WorkSlot;
|
|
6
|
+
/** This slot's position within the employee's day — what a drag of this card has to hand
|
|
7
|
+
* `board.moveShift`/`swapShifts` to pick the right period out of a day holding more than one. */
|
|
8
|
+
slotIndex: number;
|
|
9
|
+
}
|
|
10
|
+
export interface SchedulePositionCellMeta {
|
|
11
|
+
required: number;
|
|
12
|
+
filled: number;
|
|
13
|
+
open: number;
|
|
14
|
+
short: number;
|
|
15
|
+
}
|
|
16
|
+
/** Shared by the week and day area views, so a position's colour never disagrees between them. */
|
|
17
|
+
export declare function positionSwatchClass(position: string): string;
|
|
18
|
+
/** Where shifts and employees go that name no station at all — either because the outlet
|
|
19
|
+
* hasn't named its positions yet, or because a shift deliberately names none. Rostering
|
|
20
|
+
* shouldn't be blocked on the Positions page being filled in first, so this row exists
|
|
21
|
+
* whenever there's anyone or anything to put in it (see `positionRows`). */
|
|
22
|
+
export declare const ANY_POSITION_ROW = "Any position";
|
|
23
|
+
/** Every other row is named after the position its shifts carry, so the row name and the
|
|
24
|
+
* position key are the same string. This one differs: it collects records that name nothing,
|
|
25
|
+
* so anything that queries BY position — qualifiedFor, assignedOn, a new shift's role — has to
|
|
26
|
+
* ask for '' instead, or the row would answer "nobody holds Any position". */
|
|
27
|
+
export declare function rowAsk(row: string): string;
|
|
28
|
+
/** Whether this employee can be put on `position` — ported from the mockup's qualifiedFor().
|
|
29
|
+
* Nobody having a named position yet reads as "any station", the same way an unspecialised
|
|
30
|
+
* new-account roster does in the reference: rostering shouldn't be blocked on the Positions
|
|
31
|
+
* page being filled in first. */
|
|
32
|
+
export declare function qualifiedFor(emp: Employee, position: string): boolean;
|
|
33
|
+
/** Week-by-area grouping: rows are positions (a RULES.coverage.full key), not employees.
|
|
34
|
+
* Ported from the mockup's positionRows()/renderPositionBlock() — scoped to this board's single
|
|
35
|
+
* "Unassigned" section and its existing WorkSlot/OpenShift model, so no split shifts and
|
|
36
|
+
* no locked/closed-day states (neither exists anywhere in this port yet). */
|
|
37
|
+
export declare function useScheduleAreaBoard(board: ScheduleBoardApi): {
|
|
38
|
+
positionRows: import("vue").ComputedRef<string[]>;
|
|
39
|
+
assignedOn: (dayIdx: number, position: string) => ScheduleAssignedSlot[];
|
|
40
|
+
poolFor: (position: string) => Employee[];
|
|
41
|
+
cellMeta: (dayIdx: number, position: string) => SchedulePositionCellMeta;
|
|
42
|
+
positionWeekMeta: (position: string) => {
|
|
43
|
+
required: number;
|
|
44
|
+
filled: number;
|
|
45
|
+
open: number;
|
|
46
|
+
short: number;
|
|
47
|
+
pool: number;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
export type ScheduleAreaBoardApi = ReturnType<typeof useScheduleAreaBoard>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
+
/** Dragging a person from the staff rail onto a position/day cell opens a normal assigned shift. */
|
|
3
|
+
export declare function useScheduleAreaDragDrop(board: ScheduleBoardApi, handlers: {
|
|
4
|
+
onCreateShift: (empId: number, dayIdx: number, position: string) => void;
|
|
5
|
+
}): {
|
|
6
|
+
draggingEmpId: import("vue").Ref<number | null, number | null>;
|
|
7
|
+
startRailDrag: (empId: number) => void;
|
|
8
|
+
endRailDrag: () => void;
|
|
9
|
+
dropOnCell: (dayIdx: number, position: string) => void;
|
|
10
|
+
};
|
|
11
|
+
export type ScheduleAreaDragDropApi = ReturnType<typeof useScheduleAreaDragDrop>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DaySlot, Employee, WorkSlot } from '../types';
|
|
2
|
+
export interface ScheduleAssignmentMutationOptions {
|
|
3
|
+
dateFor: (offset: number, dayIdx: number) => string | null;
|
|
4
|
+
employeeAt: (offset: number, employeeId: number) => Employee | undefined;
|
|
5
|
+
currentOffset: () => number;
|
|
6
|
+
onPersistError?: (message: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function useScheduleAssignmentMutations(options: ScheduleAssignmentMutationOptions): {
|
|
9
|
+
persistSlot: (empId: number, dayIdx: number, oldSlot: DaySlot, newSlot: WorkSlot | WorkSlot[], dateOverride?: string | null, offset?: number, restoreDaySlot?: DaySlot) => Promise<void>;
|
|
10
|
+
persistRemoval: (oldSlot: DaySlot) => Promise<void>;
|
|
11
|
+
persistMove: (toEmpId: number, dayIdx: number, slot: WorkSlot | WorkSlot[], dateOverride?: string | null) => Promise<void>;
|
|
12
|
+
recoverPersistFailure: (error: unknown, fallback: string) => Promise<void>;
|
|
13
|
+
};
|