@feedmepos/mf-hrm-portal 2.3.0-dev.2 → 2.3.0-dev.21
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-CJaNPHZC.js → ApprovalCodeList-DuPmMQ8Z.js} +7 -7
- package/dist/{AuditLogList-CHA98ZqW.js → AuditLogList-BeRA_284.js} +18 -19
- package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-C7rvthEI.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-StnBAQOk.js} +2 -2
- package/dist/{EmployeeList-CVmMKt71.js → EmployeeList-qmjsbCjj.js} +255 -266
- package/dist/{FormItem.vue_vue_type_script_setup_true_lang-CUnlKsxk.js → FormItem.vue_vue_type_script_setup_true_lang-oQJgMciC.js} +6 -6
- package/dist/{GrantUserList-MYjgt5-F.js → GrantUserList--WUK7zrV.js} +8 -8
- package/dist/{Main-hlcHtrsc.js → Main-9X2iCXoX.js} +5 -5
- package/dist/{Main-C0cnqQ3B.js → Main-BIAeEQV9.js} +8 -8
- package/dist/{Main-BgB9lD4K.js → Main-tPL_YTwT.js} +11 -11
- package/dist/{PermissionSetList-5f1WIaVa.js → PermissionSetList-ByTyQe0s.js} +19 -18
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-Bp9WwlnI.js +4167 -0
- package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-fe-Rdwn4.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js} +1 -1
- package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +132 -0
- package/dist/{RoleList-DNR4miXr.js → RoleList-INlydQmP.js} +21 -20
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-d8KDvgNu.js +530 -0
- package/dist/ScheduleGeneralPage-DbOoP9Ez.js +776 -0
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-UowMybGr.js +2439 -0
- package/dist/SchedulePage-CjOZtRlK.js +19291 -0
- package/dist/{SchedulePositionPage-DyRckyUx.js → SchedulePositionPage-CnDqkvL9.js} +78 -80
- package/dist/{SelectFilter-CG13h83-.js → SelectFilter-BWw4B9tM.js} +1 -1
- package/dist/{TeamMemberList-mw5OveZG.js → TeamMemberList-BgYtoXht.js} +27 -27
- package/dist/{TimesheetList-BzXarZbM.js → TimesheetList-Dg0QYsWO.js} +52 -53
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-Dq5i4poN.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-eTd4J1CB.js} +3 -3
- package/dist/{app-DSsdRLHg.js → app-CDo04LrB.js} +2891 -2474
- package/dist/app.js +1 -1
- package/dist/{approval-code-C9DmR4Md.js → approval-code-BXUiojPH.js} +1 -1
- package/dist/{dayjs.min-B6xBXQtU.js → dayjs.min-KFBmxZF3.js} +1 -1
- package/dist/{employee-hMhzuqk1.js → employee-BRaYoaOY.js} +4 -4
- package/dist/{grant-user-Bv-pJ9Wt.js → grant-user-CBJ3gEgW.js} +1 -1
- package/dist/{iteration-B34AvpNC.js → iteration-p-TjO05t.js} +1 -1
- package/dist/{lodash-1Vyuy7Mu.js → lodash-D72lpJgs.js} +1 -1
- package/dist/object-Dwyg2LgX.js +16 -0
- package/dist/{restaurant-D7PEQjPY.js → restaurant-D2mfKHaH.js} +48 -48
- package/dist/{role-DKOrgO6f.js → role-a35Vc8gC.js} +2 -2
- package/dist/{rule-CBzQ3GeV.js → rule-BRRw0K7p.js} +3 -3
- package/dist/src/api/schedule/index.d.ts +9 -1
- package/dist/src/components/layout/SchedulePromoBanner.vue.d.ts +2 -0
- package/dist/src/composables/useDiscardConfirm.d.ts +3 -1
- package/dist/src/types/schedule.d.ts +3 -4
- package/dist/src/views/audit-log/locales/index.d.ts +252 -0
- package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +4 -8
- package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +1 -4
- package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +0 -2
- package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +0 -7
- package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +0 -6
- package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +1 -0
- package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -1
- package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +4 -1
- package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +1 -5
- package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +5 -0
- package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +0 -1
- package/dist/src/views/scheduling/components/{ScheduleAssignEmployeePopover.vue.d.ts → ScheduleOnboardingAssignPositionModal.vue.d.ts} +2 -2
- package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +6 -0
- package/dist/src/views/scheduling/components/SchedulePublishShareArt.vue.d.ts +2 -0
- package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +10 -0
- package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -10
- package/dist/src/views/scheduling/composables/onboarding-types.d.ts +2 -1
- package/dist/src/views/scheduling/composables/remyPrompt.d.ts +4 -2
- package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +12 -8
- package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +4 -0
- package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +1 -3
- package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +13 -1
- package/dist/src/views/scheduling/composables/schedule-error.d.ts +1 -0
- package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +22 -0
- package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +3 -0
- package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +6 -0
- package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +29 -11
- package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +3 -11
- package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -13
- package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +2 -9
- package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +11 -3
- package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +86 -11
- package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +3 -10
- package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +13 -1
- package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -1
- package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +16 -5
- package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +3 -5
- package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +13 -3
- package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +20 -7
- package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +5 -1
- package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +5 -0
- package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +1 -1
- package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +47 -3
- package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +408 -29
- package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +11 -8
- package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +3 -1
- package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +0 -4
- package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +7 -1
- package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +2 -0
- package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +70 -4
- package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +7 -2
- package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +2 -2
- package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +41 -3
- package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +1 -0
- package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +47 -6
- package/dist/src/views/scheduling/country-rules/index.d.ts +9 -4
- package/dist/src/views/scheduling/data.d.ts +22 -1
- package/dist/src/views/scheduling/locales/index.d.ts +28 -0
- package/dist/src/views/scheduling/schedule-state.d.ts +272 -208
- package/dist/src/views/scheduling/schedule-store.d.ts +36 -11
- package/dist/src/views/scheduling/types.d.ts +30 -5
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-d_nHyK5u.js → useAppStore-DZCdxlCd.js} +1 -1
- package/dist/useDiscardConfirm-CzZSPyvh.js +28 -0
- package/dist/{useLoading-JFoghhRz.js → useLoading-Nygx2zn8.js} +1 -1
- package/dist/{useReportPermissions-B2ev0j4w.js → useReportPermissions-Ca-9DEOI.js} +3 -3
- package/package.json +1 -1
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-CFoTAGIX.js +0 -4167
- package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-B4VUyKW3.js +0 -470
- package/dist/ScheduleGeneralPage-Cd5AlY4z.js +0 -666
- package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-Cf0l2MRg.js +0 -2188
- package/dist/SchedulePage-C8m0-m3l.js +0 -18257
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +0 -9
- package/dist/src/views/scheduling/components/ScheduleAllShiftsRow.vue.d.ts +0 -22
- package/dist/src/views/scheduling/components/ScheduleStackPopover.vue.d.ts +0 -14
- package/dist/src/views/scheduling/composables/useScheduleAllShiftsRow.d.ts +0 -77
- package/dist/src/views/scheduling/composables/useScheduleAssign.d.ts +0 -124
- package/dist/src/views/scheduling/composables/useScheduleOpenShiftCard.d.ts +0 -23
- package/dist/useDiscardConfirm-DPhEV6v0.js +0 -157
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
2
|
-
import type { ScheduleAllShiftsRowApi } from '../composables/useScheduleAllShiftsRow';
|
|
3
|
-
import type { ScheduleOpenShiftCardApi } from '../composables/useScheduleOpenShiftCard';
|
|
4
|
-
type __VLS_Props = {
|
|
5
|
-
board: ScheduleBoardApi;
|
|
6
|
-
row: ScheduleAllShiftsRowApi;
|
|
7
|
-
openShiftCard: ScheduleOpenShiftCardApi;
|
|
8
|
-
};
|
|
9
|
-
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
10
|
-
editShift: (empId: number, dayIdx: number) => any;
|
|
11
|
-
openAssign: (openId: number) => any;
|
|
12
|
-
openOpenShiftMenu: (openId: number, anchor: HTMLElement) => any;
|
|
13
|
-
addOpenShift: (dayIdx: number) => any;
|
|
14
|
-
openStack: (dayIdx: number, anchor: HTMLElement) => any;
|
|
15
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
16
|
-
onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
|
|
17
|
-
onOpenAssign?: ((openId: number) => any) | undefined;
|
|
18
|
-
onOpenOpenShiftMenu?: ((openId: number, anchor: HTMLElement) => any) | undefined;
|
|
19
|
-
onAddOpenShift?: ((dayIdx: number) => any) | undefined;
|
|
20
|
-
onOpenStack?: ((dayIdx: number, anchor: HTMLElement) => any) | undefined;
|
|
21
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
22
|
-
export default _default;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { ScheduleBoardApi } from '../composables/useScheduleBoard';
|
|
2
|
-
import type { ScheduleAllShiftsRowApi } from '../composables/useScheduleAllShiftsRow';
|
|
3
|
-
type __VLS_Props = {
|
|
4
|
-
board: ScheduleBoardApi;
|
|
5
|
-
row: ScheduleAllShiftsRowApi;
|
|
6
|
-
};
|
|
7
|
-
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
-
editShift: (empId: number, dayIdx: number) => any;
|
|
9
|
-
openAssign: (openId: number) => any;
|
|
10
|
-
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
11
|
-
onEditShift?: ((empId: number, dayIdx: number) => any) | undefined;
|
|
12
|
-
onOpenAssign?: ((openId: number) => any) | undefined;
|
|
13
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
|
-
export default _default;
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import type { Employee, OpenShift } from '../types';
|
|
2
|
-
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
3
|
-
export interface ScheduleShiftPart {
|
|
4
|
-
start: string;
|
|
5
|
-
end: string;
|
|
6
|
-
}
|
|
7
|
-
/** One shift on the All-shifts row, whichever way it was authored. A split shift is ONE
|
|
8
|
-
* entry carrying both of its periods — two periods one person works is one shift, and
|
|
9
|
-
* counting it twice made a day of three split shifts report as six. */
|
|
10
|
-
export interface ScheduleRowEntry {
|
|
11
|
-
/** Stable across redraws, so the row can be keyed on it. */
|
|
12
|
-
key: string;
|
|
13
|
-
kind: 'open' | 'emp';
|
|
14
|
-
/** The demand record this came from, when it came from one. */
|
|
15
|
-
open?: OpenShift;
|
|
16
|
-
/** Whoever holds it, or null while it is still asking for somebody. */
|
|
17
|
-
who: Employee | null;
|
|
18
|
-
parts: ScheduleShiftPart[];
|
|
19
|
-
position: string;
|
|
20
|
-
/** A shift with a name of its own ("Weekend cover"), distinct from its position. */
|
|
21
|
-
label?: string;
|
|
22
|
-
filled: boolean;
|
|
23
|
-
hours: number;
|
|
24
|
-
}
|
|
25
|
-
export interface ScheduleStackState {
|
|
26
|
-
open: boolean;
|
|
27
|
-
dayIdx: number | null;
|
|
28
|
-
left: number;
|
|
29
|
-
top: number;
|
|
30
|
-
}
|
|
31
|
-
/** The "Open shifts" row: a pseudo-row above the people holding the shifts nobody is on yet.
|
|
32
|
-
*
|
|
33
|
-
* It used to be the "All shifts" row and it used to LEAD this view, carrying every shift on
|
|
34
|
-
* the day whichever way it was authored. The coverage band has both of those now — and the
|
|
35
|
-
* band measures something this row could not, because a shift with nobody on it contributes
|
|
36
|
-
* zero to coverage, so counting untaken records was never an answer to "is this week staffed".
|
|
37
|
-
*
|
|
38
|
-
* What is left is the job only this row can do. An unassigned shift has no person, so the
|
|
39
|
-
* employee rows have nowhere to draw it; the old row would have shown it alongside every
|
|
40
|
-
* other shift, which is the same cards twice — once here and once on the row of whoever is on
|
|
41
|
-
* them. So the subject narrows to the shifts still waiting for somebody, and the row renders
|
|
42
|
-
* only while at least one exists. That makes it a to-do list rather than furniture: it appears
|
|
43
|
-
* when you author open demand and disappears the moment the last of it is staffed, which is
|
|
44
|
-
* the completion signal the old row had to paint itself green to fake. */
|
|
45
|
-
export declare function useScheduleAllShiftsRow(board: ScheduleBoardApi): {
|
|
46
|
-
dayEntries: (dayIdx: number) => ScheduleRowEntry[];
|
|
47
|
-
dayStack: (dayIdx: number) => {
|
|
48
|
-
entries: ScheduleRowEntry[];
|
|
49
|
-
done: number;
|
|
50
|
-
total: number;
|
|
51
|
-
hours: number;
|
|
52
|
-
allOpen: boolean;
|
|
53
|
-
mixShown: {
|
|
54
|
-
name: string;
|
|
55
|
-
n: number;
|
|
56
|
-
}[];
|
|
57
|
-
mixRest: number;
|
|
58
|
-
title: string;
|
|
59
|
-
};
|
|
60
|
-
summary: import("vue").ComputedRef<{
|
|
61
|
-
count: number;
|
|
62
|
-
meta: string;
|
|
63
|
-
tip: string;
|
|
64
|
-
}>;
|
|
65
|
-
hasPending: import("vue").ComputedRef<boolean>;
|
|
66
|
-
stack: {
|
|
67
|
-
open: boolean;
|
|
68
|
-
dayIdx: number | null;
|
|
69
|
-
left: number;
|
|
70
|
-
top: number;
|
|
71
|
-
};
|
|
72
|
-
stackEntries: import("vue").ComputedRef<ScheduleRowEntry[]>;
|
|
73
|
-
openStack: (dayIdx: number, anchor: HTMLElement) => void;
|
|
74
|
-
closeStack: () => void;
|
|
75
|
-
whenOf: (e: ScheduleRowEntry) => string;
|
|
76
|
-
};
|
|
77
|
-
export type ScheduleAllShiftsRowApi = ReturnType<typeof useScheduleAllShiftsRow>;
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
-
import type { ScheduleClashDetectionApi } from './useScheduleClashDetection';
|
|
3
|
-
import type { ScheduleDemandApi } from './useScheduleDemand';
|
|
4
|
-
/** What this sitting is trying to fill — an on-screen open-shift row (never backed by a
|
|
5
|
-
* persisted Shift doc; `openShiftId` only ever identifies it within this session) or a raw
|
|
6
|
-
* demand gap. Either way the assignment created is a plain one-off, same shape as the +Add
|
|
7
|
-
* popover's — nothing here carries a shift/assignment linkage back to the server. */
|
|
8
|
-
export interface ScheduleAssignTarget {
|
|
9
|
-
dayIdx: number;
|
|
10
|
-
position: string;
|
|
11
|
-
start: string;
|
|
12
|
-
end: string;
|
|
13
|
-
breakMins?: number;
|
|
14
|
-
openShiftId?: number;
|
|
15
|
-
}
|
|
16
|
-
export interface ScheduleAssignState {
|
|
17
|
-
open: boolean;
|
|
18
|
-
target: ScheduleAssignTarget | null;
|
|
19
|
-
/** How many heads this sitting is answering, and how many it has landed so far — the
|
|
20
|
-
* footer's "N still needed" note. Tracked locally rather than re-derived from
|
|
21
|
-
* `demand.coverageSegments` on every assign: a fresh assign can reshape segment boundaries
|
|
22
|
-
* entirely (met/short is a function of ALL current coverage, not just this one target), so a
|
|
23
|
-
* simple running count is the honest thing to show without re-deriving segment math here. */
|
|
24
|
-
required: number;
|
|
25
|
-
scheduled: number;
|
|
26
|
-
}
|
|
27
|
-
/** `free` — no shift that day, the ordinary case. `busy` — has a shift, but this is the
|
|
28
|
-
* manager's call to override (soft clash, asks first). `leave` — approved leave, a hard block:
|
|
29
|
-
* inert, not something a second tap should be able to push past. `mine` — already the one
|
|
30
|
-
* filling THIS open shift; only meaningful when the target has an `openShiftId` (a demand gap
|
|
31
|
-
* has no single "holder"), and the tile becomes the unassign control instead. */
|
|
32
|
-
export type ScheduleAssignTileState = 'free' | 'busy' | 'leave' | 'mine';
|
|
33
|
-
export interface ScheduleAssignTile {
|
|
34
|
-
id: number;
|
|
35
|
-
name: string;
|
|
36
|
-
initials: string;
|
|
37
|
-
weekHours: number;
|
|
38
|
-
cap: number;
|
|
39
|
-
over: boolean;
|
|
40
|
-
state: ScheduleAssignTileState;
|
|
41
|
-
title: string;
|
|
42
|
-
}
|
|
43
|
-
export interface ScheduleAssignGroup {
|
|
44
|
-
label: string;
|
|
45
|
-
tiles: ScheduleAssignTile[];
|
|
46
|
-
}
|
|
47
|
-
/** One entry in the day's shift rail — either the thing this sitting was opened to answer (the
|
|
48
|
-
* ORIGIN, always first), or another shift already on the same day, so a manager can jump to
|
|
49
|
-
* reassigning it without leaving the panel. Every entry is a `target` the tile grid can be
|
|
50
|
-
* pointed at via `switchTo`. */
|
|
51
|
-
export interface ScheduleAssignSlot {
|
|
52
|
-
key: string;
|
|
53
|
-
position: string;
|
|
54
|
-
/** One requirement of a demand gap: shows whether the people scheduled fulfil it (progress bar),
|
|
55
|
-
* and can be picked to assign people as that position. */
|
|
56
|
-
tracker?: boolean;
|
|
57
|
-
/** 0–100, for a tracker's progress bar. */
|
|
58
|
-
pct?: number;
|
|
59
|
-
start: string;
|
|
60
|
-
end: string;
|
|
61
|
-
chip: string;
|
|
62
|
-
full: boolean;
|
|
63
|
-
sub: string;
|
|
64
|
-
who: string;
|
|
65
|
-
whoNone: boolean;
|
|
66
|
-
on: boolean;
|
|
67
|
-
target: ScheduleAssignTarget;
|
|
68
|
-
required: number;
|
|
69
|
-
scheduled: number;
|
|
70
|
-
}
|
|
71
|
-
/** Assign panel — the one modal both the open-shifts row and a demand gap's "Assign employee"
|
|
72
|
-
* button open, per the reference's own note that they are "the same assign panel". Every pick
|
|
73
|
-
* lands immediately (through the canonical `commitShift` mutator, so it persists exactly like
|
|
74
|
-
* any other assignment); a soft clash — the person already has a shift that day — asks first via
|
|
75
|
-
* the shared clash-confirmation dialog, and approved leave is a hard block the tile itself
|
|
76
|
-
* refuses rather than asking about. */
|
|
77
|
-
export declare function useScheduleAssign(board: ScheduleBoardApi, demand: ScheduleDemandApi, clash: ScheduleClashDetectionApi, options?: {
|
|
78
|
-
onToast?: (message: string, type?: 'success' | 'error' | 'info') => void;
|
|
79
|
-
}): {
|
|
80
|
-
state: {
|
|
81
|
-
open: boolean;
|
|
82
|
-
target: {
|
|
83
|
-
dayIdx: number;
|
|
84
|
-
position: string;
|
|
85
|
-
start: string;
|
|
86
|
-
end: string;
|
|
87
|
-
breakMins?: number | undefined;
|
|
88
|
-
openShiftId?: number | undefined;
|
|
89
|
-
} | null;
|
|
90
|
-
required: number;
|
|
91
|
-
scheduled: number;
|
|
92
|
-
};
|
|
93
|
-
search: import("vue").Ref<string, string>;
|
|
94
|
-
activeOpenShift: import("vue").ComputedRef<{
|
|
95
|
-
id: number;
|
|
96
|
-
dayIdx: number;
|
|
97
|
-
position: string;
|
|
98
|
-
required: number;
|
|
99
|
-
filledBy: number | null;
|
|
100
|
-
sen?: "junior" | "senior" | undefined;
|
|
101
|
-
empType?: "full" | "part" | undefined;
|
|
102
|
-
name?: string | undefined;
|
|
103
|
-
start: string;
|
|
104
|
-
end: string;
|
|
105
|
-
breakMins?: number | undefined;
|
|
106
|
-
} | null>;
|
|
107
|
-
title: import("vue").ComputedRef<string>;
|
|
108
|
-
subParts: import("vue").ComputedRef<{
|
|
109
|
-
position: string;
|
|
110
|
-
range: string;
|
|
111
|
-
duration: string;
|
|
112
|
-
} | null>;
|
|
113
|
-
footLead: import("vue").ComputedRef<string>;
|
|
114
|
-
footRest: import("vue").ComputedRef<string>;
|
|
115
|
-
groups: import("vue").ComputedRef<ScheduleAssignGroup[]>;
|
|
116
|
-
shiftSlots: import("vue").ComputedRef<ScheduleAssignSlot[]>;
|
|
117
|
-
switchTo: (slot: ScheduleAssignSlot) => void;
|
|
118
|
-
openFor: (openShiftId: number) => void;
|
|
119
|
-
openForGap: (dayIdx: number, _position: string, start: string, end: string, required: number, scheduled: number, gapFrom: number, gapTo: number) => void;
|
|
120
|
-
close: () => void;
|
|
121
|
-
fillOpenShift: (openShiftId: number, empId: number) => void;
|
|
122
|
-
armAssign: (empId: number) => void;
|
|
123
|
-
};
|
|
124
|
-
export type ScheduleAssignApi = ReturnType<typeof useScheduleAssign>;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { ScheduleBoardApi } from './useScheduleBoard';
|
|
2
|
-
export interface ScheduleOpenShiftMenuState {
|
|
3
|
-
open: boolean;
|
|
4
|
-
openShiftId: number | null;
|
|
5
|
-
left: number;
|
|
6
|
-
top: number;
|
|
7
|
-
}
|
|
8
|
-
/** The open-shift card's "⋯" menu (Assign/Edit/Remove) and its "N can cover" candidate
|
|
9
|
-
* count — split out from the shift popover itself, since these apply to the card at rest,
|
|
10
|
-
* not to the form. */
|
|
11
|
-
export declare function useScheduleOpenShiftCard(board: ScheduleBoardApi): {
|
|
12
|
-
menu: {
|
|
13
|
-
open: boolean;
|
|
14
|
-
openShiftId: number | null;
|
|
15
|
-
left: number;
|
|
16
|
-
top: number;
|
|
17
|
-
};
|
|
18
|
-
openMenu: (openShiftId: number, anchor: HTMLElement) => void;
|
|
19
|
-
closeMenu: () => void;
|
|
20
|
-
remove: (openShiftId: number) => void;
|
|
21
|
-
candidateCountFor: (openShiftId: number) => number;
|
|
22
|
-
};
|
|
23
|
-
export type ScheduleOpenShiftCardApi = ReturnType<typeof useScheduleOpenShiftCard>;
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { defineComponent as x, ref as M, resolveComponent as l, createBlock as a, openBlock as t, withCtx as i, createElementVNode as g, renderSlot as b, createCommentVNode as k, withModifiers as $, nextTick as I, createElementBlock as f, normalizeClass as h, createTextVNode as V, toDisplayString as C, computed as w, Fragment as B, renderList as F, createVNode as S } from "vue";
|
|
2
|
-
import { useBreakpoints as z, useDialog as D } from "@feedmepos/ui-library";
|
|
3
|
-
import { useI18n as N } from "@feedmepos/mf-common";
|
|
4
|
-
const A = /* @__PURE__ */ x({
|
|
5
|
-
__name: "BottomSheetMenu",
|
|
6
|
-
setup(o) {
|
|
7
|
-
const e = M(!1);
|
|
8
|
-
async function r() {
|
|
9
|
-
await I(), e.value = !e.value;
|
|
10
|
-
}
|
|
11
|
-
return (n, s) => {
|
|
12
|
-
const y = l("FmButton"), _ = l("FmBottomSheet");
|
|
13
|
-
return t(), a(_, {
|
|
14
|
-
modelValue: e.value,
|
|
15
|
-
"onUpdate:modelValue": s[1] || (s[1] = (d) => e.value = d),
|
|
16
|
-
"dismiss-away": "",
|
|
17
|
-
"no-header": "",
|
|
18
|
-
"z-index": 110
|
|
19
|
-
}, {
|
|
20
|
-
"bottom-sheet-button": i(() => [
|
|
21
|
-
n.$slots.button ? k("", !0) : (t(), a(y, {
|
|
22
|
-
key: 0,
|
|
23
|
-
icon: "more_vert",
|
|
24
|
-
variant: "tertiary",
|
|
25
|
-
onClick: $(r, ["stop"])
|
|
26
|
-
})),
|
|
27
|
-
b(n.$slots, "button")
|
|
28
|
-
]),
|
|
29
|
-
default: i(() => [
|
|
30
|
-
g("div", {
|
|
31
|
-
onClick: s[0] || (s[0] = (d) => e.value = !1)
|
|
32
|
-
}, [
|
|
33
|
-
b(n.$slots, "default")
|
|
34
|
-
])
|
|
35
|
-
]),
|
|
36
|
-
_: 3
|
|
37
|
-
}, 8, ["modelValue"]);
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
}), E = { class: "py-8 px-12 hover:bg-fm-color-neutral-gray-100" }, T = /* @__PURE__ */ x({
|
|
41
|
-
__name: "BottomSheetMenuItem",
|
|
42
|
-
props: {
|
|
43
|
-
label: {},
|
|
44
|
-
icon: {},
|
|
45
|
-
disabled: { type: Boolean },
|
|
46
|
-
itemClass: {}
|
|
47
|
-
},
|
|
48
|
-
setup(o) {
|
|
49
|
-
const e = o;
|
|
50
|
-
return (r, n) => {
|
|
51
|
-
const s = l("FmIcon");
|
|
52
|
-
return t(), f("div", E, [
|
|
53
|
-
r.$slots.content ? k("", !0) : (t(), f("div", {
|
|
54
|
-
key: 0,
|
|
55
|
-
class: h(["flex items-center", {
|
|
56
|
-
"text-fm-color-typo-disabled": e.disabled,
|
|
57
|
-
"cursor-pointer": !e.disabled,
|
|
58
|
-
"cursor-not-allowed": e.disabled,
|
|
59
|
-
[e.itemClass || ""]: e.itemClass && !e.disabled
|
|
60
|
-
}])
|
|
61
|
-
}, [
|
|
62
|
-
o.icon ? (t(), a(s, {
|
|
63
|
-
key: 0,
|
|
64
|
-
name: o.icon
|
|
65
|
-
}, null, 8, ["name"])) : k("", !0),
|
|
66
|
-
V(" " + C(o.label), 1)
|
|
67
|
-
], 2)),
|
|
68
|
-
b(r.$slots, "content")
|
|
69
|
-
]);
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}), U = /* @__PURE__ */ x({
|
|
73
|
-
__name: "ResponsiveContextMenu",
|
|
74
|
-
props: {
|
|
75
|
-
items: {}
|
|
76
|
-
},
|
|
77
|
-
setup(o) {
|
|
78
|
-
const e = z(), r = w(() => e.breakpoints.value.xs);
|
|
79
|
-
return (n, s) => {
|
|
80
|
-
const y = l("FmButton"), _ = l("FmMenuItem"), d = l("FmMenu");
|
|
81
|
-
return r.value ? (t(), a(A, { key: 0 }, {
|
|
82
|
-
default: i(() => [
|
|
83
|
-
(t(!0), f(B, null, F(o.items, ({ icon: c, label: m, disabled: p, itemClass: u, onClick: v }) => (t(), a(T, {
|
|
84
|
-
key: m,
|
|
85
|
-
icon: c,
|
|
86
|
-
label: m,
|
|
87
|
-
disabled: p,
|
|
88
|
-
itemClass: u,
|
|
89
|
-
onClick: () => {
|
|
90
|
-
!p && (v == null || v());
|
|
91
|
-
}
|
|
92
|
-
}, null, 8, ["icon", "label", "disabled", "itemClass", "onClick"]))), 128))
|
|
93
|
-
]),
|
|
94
|
-
_: 1
|
|
95
|
-
})) : (t(), a(d, {
|
|
96
|
-
key: 1,
|
|
97
|
-
"stop-click-propagation": "",
|
|
98
|
-
shift: !0
|
|
99
|
-
}, {
|
|
100
|
-
"menu-button": i(() => [
|
|
101
|
-
S(y, {
|
|
102
|
-
type: "button",
|
|
103
|
-
variant: "tertiary",
|
|
104
|
-
icon: "more_vert",
|
|
105
|
-
"text-color": "neutral-gray-400",
|
|
106
|
-
size: "md"
|
|
107
|
-
})
|
|
108
|
-
]),
|
|
109
|
-
default: i(() => [
|
|
110
|
-
(t(!0), f(B, null, F(o.items, ({ label: c, disabled: m, itemClass: p, onClick: u }) => (t(), a(_, {
|
|
111
|
-
key: c,
|
|
112
|
-
disabled: m,
|
|
113
|
-
label: c,
|
|
114
|
-
onClick: () => {
|
|
115
|
-
!m && (u == null || u());
|
|
116
|
-
}
|
|
117
|
-
}, {
|
|
118
|
-
label: i(() => [
|
|
119
|
-
g("span", {
|
|
120
|
-
class: h(m ? "text-fm-color-typo-disabled" : p)
|
|
121
|
-
}, C(c), 3)
|
|
122
|
-
]),
|
|
123
|
-
_: 2
|
|
124
|
-
}, 1032, ["disabled", "label", "onClick"]))), 128))
|
|
125
|
-
]),
|
|
126
|
-
_: 1
|
|
127
|
-
}));
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
|
-
function j(o, e) {
|
|
132
|
-
const r = D(), { t: n } = N();
|
|
133
|
-
function s() {
|
|
134
|
-
o() ? r.open({
|
|
135
|
-
title: n("portalCommon.dismiss.title"),
|
|
136
|
-
message: n("portalCommon.dismiss.message"),
|
|
137
|
-
zIndex: 200,
|
|
138
|
-
primaryActions: {
|
|
139
|
-
text: n("portalCommon.dismiss.primaryActions"),
|
|
140
|
-
variant: "primary",
|
|
141
|
-
close: !0
|
|
142
|
-
},
|
|
143
|
-
secondaryActions: {
|
|
144
|
-
text: n("common.cancel"),
|
|
145
|
-
variant: "tertiary",
|
|
146
|
-
close: !0
|
|
147
|
-
}
|
|
148
|
-
}).onPrimary(() => {
|
|
149
|
-
e();
|
|
150
|
-
}) : e();
|
|
151
|
-
}
|
|
152
|
-
return s;
|
|
153
|
-
}
|
|
154
|
-
export {
|
|
155
|
-
U as _,
|
|
156
|
-
j as u
|
|
157
|
-
};
|