@feedmepos/mf-hrm-portal 2.0.6-dev → 2.0.6-dev.1

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.
Files changed (50) hide show
  1. package/dist/{AuditLogList-BxigxQv3.js → AuditLogList-C23_MiyK.js} +31 -30
  2. package/dist/{EmployeeList-DyvqwZtw.js → EmployeeList-vXPEVqoh.js} +164 -169
  3. package/dist/FormSection.vue_vue_type_script_setup_true_lang-BVb8c4YU.js +71 -0
  4. package/dist/HorizontalSplitter-o860F4xM.js +12 -0
  5. package/dist/Main-CQWe1-SW.js +599 -0
  6. package/dist/{Main-B8tSMq-U.js → Main-DC9H9bAs.js} +11 -10
  7. package/dist/{Main-CtH5MCty.js → Main-k56Iy_zg.js} +8 -7
  8. package/dist/PermissionSetList-B8tJCNpR.js +338 -0
  9. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-BPJpVG8_.js +3356 -0
  10. package/dist/{RoleList-jykDD_zm.js → RoleList-C5WA3Kxu.js} +26 -24
  11. package/dist/TeamMemberList-Ic-iWBHd.js +989 -0
  12. package/dist/{TimesheetList-Bk1XF9xy.js → TimesheetList-DlGpcOUp.js} +11 -10
  13. package/dist/{app-BPlaahxK.js → app-D0xH_99A.js} +1310 -937
  14. package/dist/app.js +2 -2
  15. package/dist/{dayjs.min-LweNOSZ_.js → dayjs.min-C1rTVn8X.js} +1 -1
  16. package/dist/{employee-DPfiL6rd.js → employee-BK4sYiRy.js} +21 -20
  17. package/dist/index-C2ubYSVV.js +968 -0
  18. package/dist/{index-BAhsHYNv.js → index-DSAB4vz3.js} +1 -1
  19. package/dist/{index-CBxn7cxI.js → iteration-BSGKcAZm.js} +3416 -4256
  20. package/dist/{lodash-D1uG3PY3.js → lodash-CeTePH4O.js} +1 -1
  21. package/dist/src/api/grant-user/index.d.ts +8 -0
  22. package/dist/src/api/index.d.ts +3 -1
  23. package/dist/src/api/permission-assignment/index.d.ts +3 -0
  24. package/dist/src/api/report-query/index.d.ts +1 -0
  25. package/dist/src/composables/useCustomReportPermissions.d.ts +7 -0
  26. package/dist/src/helpers/permission-set.d.ts +32 -1
  27. package/dist/src/helpers/permission-set.test.d.ts +1 -0
  28. package/dist/src/helpers/rule.d.ts +4 -1
  29. package/dist/src/router/shared.d.ts +2 -1
  30. package/dist/src/stores/grant-user.d.ts +86 -0
  31. package/dist/src/types/grant-user.d.ts +27 -0
  32. package/dist/src/types/report-query.d.ts +1 -0
  33. package/dist/src/views/grant/GrantUserList.vue.d.ts +17 -0
  34. package/dist/src/views/grant/Main.vue.d.ts +2 -0
  35. package/dist/src/views/grant/components/GrantUserForm.vue.d.ts +17 -0
  36. package/dist/src/views/grant/locales/index.d.ts +232 -0
  37. package/dist/src/views/team/components/BasePermission.vue.d.ts +17 -0
  38. package/dist/{team-B1osnB4U.js → team-B25hRkju.js} +1 -1
  39. package/dist/{timesheet-rte2utJf.js → timesheet-C8oy-bxz.js} +10 -9
  40. package/dist/tsconfig.app.tsbuildinfo +1 -1
  41. package/dist/{useAppStore-CqrjwnF_.js → useAppStore-WGnUS7Wm.js} +1 -1
  42. package/dist/{useLoading-B5IjfVEP.js → useLoading-BCi2g_rf.js} +1 -1
  43. package/dist/useReportPermissions--LOfl1e-.js +60 -0
  44. package/dist/useRestaurantMap-e9fQJiLC.js +39 -0
  45. package/package.json +2 -2
  46. package/dist/PermissionSetList-DCONmOgn.js +0 -323
  47. package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-07Dsea27.js +0 -3092
  48. package/dist/TeamMemberList-DMrPgF1l.js +0 -973
  49. package/dist/useReportPermissions-C4Q29AQJ.js +0 -65
  50. package/dist/useRestaurantMap-D5BNPLKh.js +0 -107
@@ -1,4 +1,4 @@
1
- import { c as jt } from "./app-BPlaahxK.js";
1
+ import { c as jt } from "./app-D0xH_99A.js";
2
2
  var Jr = { exports: {} };
3
3
  /**
4
4
  * @license
@@ -0,0 +1,8 @@
1
+ import type { IFdtoGrantUser, IFdtoCreateGrantUserReq, IFdtoGrantValidationRes } from '@/types/grant-user';
2
+ declare const GrantUserAPI: {
3
+ getGrantUsers(): Promise<IFdtoGrantUser[]>;
4
+ createGrantUser(dto: IFdtoCreateGrantUserReq): Promise<IFdtoGrantUser>;
5
+ revokeGrantUser(id: string, restaurantId: string): Promise<IFdtoGrantUser>;
6
+ validatePasscode(passcode: string, restaurantId: string): Promise<IFdtoGrantValidationRes>;
7
+ };
8
+ export default GrantUserAPI;
@@ -3,6 +3,8 @@ export declare class ApiError extends Error {
3
3
  readonly status: number;
4
4
  constructor(message: string, status: number);
5
5
  }
6
- export declare const businessClientInstance: () => AxiosInstance;
6
+ export declare const businessClientInstance: (subPath?: string) => AxiosInstance;
7
7
  export declare const queryEngineClientInstance: () => AxiosInstance;
8
+ export declare const grantClientInstance: () => AxiosInstance;
9
+ export declare const grantValidateClientInstance: () => AxiosInstance;
8
10
  export declare function getAxiosData<T>(response: AxiosResponse<T>): T;
@@ -6,5 +6,8 @@ declare const PermissionAssignmentAPI: {
6
6
  create(dto: IFdtoCreatePermissionAssignmentReq): Promise<IFdtoPermissionAssignment>;
7
7
  update(id: string, dto: IFdtoUpdatePermissionAssignmentReq): Promise<IFdtoPermissionAssignment>;
8
8
  delete(id: string): Promise<boolean>;
9
+ addReportManagePermission(permissionKey: string, label: string): Promise<{
10
+ success: boolean;
11
+ }>;
9
12
  };
10
13
  export default PermissionAssignmentAPI;
@@ -1,5 +1,6 @@
1
1
  import type { ReportPermissionItem } from '@/types/report-query';
2
2
  declare const ReportQueryAPI: {
3
3
  fetchReportPermissions(businessId: string): Promise<ReportPermissionItem[]>;
4
+ fetchReportPermissionsForPortal(businessId: string): Promise<ReportPermissionItem[]>;
4
5
  };
5
6
  export default ReportQueryAPI;
@@ -0,0 +1,7 @@
1
+ import { type IFdtoPortalPermissionsWithVisibilityCondition } from '@feedmepos/hrm-permission';
2
+ export declare function useCustomReportPermissions(): {
3
+ fetchCustomReportPermissions: () => Promise<void>;
4
+ customReportPermissions: import("vue").ComputedRef<IFdtoPortalPermissionsWithVisibilityCondition[]>;
5
+ isLoading: import("vue").ComputedRef<boolean>;
6
+ isLoaded: import("vue").ComputedRef<boolean>;
7
+ };
@@ -46,6 +46,37 @@ export declare function materializeSystemPermissionSetOverrides(overridePermissi
46
46
  * Inverted rules (explicit user denials) are always preserved.
47
47
  */
48
48
  export declare function stripSystemExpandedPositives(permissions: FdoPermissionRule[]): FdoPermissionRule[];
49
+ export declare const REPORT_SUBJECT_PREFIX = "business::report::";
50
+ /**
51
+ * Filter out stale report permission rules.
52
+ *
53
+ * Only rules whose subject starts with `business::report::` are candidates for removal —
54
+ * any other subject (restaurant, role, warehouse, etc.) passes through untouched.
55
+ * A report-prefixed subject is kept only if it exists in `knownReportSubjects`.
56
+ *
57
+ * This handles:
58
+ * - Deprecated/renamed subjects (e.g. `business::report::closeup` → `business::report::reports::closeup`)
59
+ * - Deleted dynamic reports that no longer exist
60
+ */
61
+ export declare function filterStalePermissions(permissions: FdoPermissionRule[], knownReportSubjects: Set<string>): FdoPermissionRule[];
62
+ /**
63
+ * Strip individual-report actions already covered by an `allDefaultReports` or
64
+ * `allCustomReports` positive grant, preventing redundant data from being saved.
65
+ *
66
+ * - If the cover rule has `manage` selected → every individual rule in that bucket is
67
+ * fully covered and dropped entirely.
68
+ * - Otherwise, only covered non-manage actions are stripped from individual rules.
69
+ * If `manage` was present and any non-manage action is stripped (breaking the
70
+ * "manage = all non-manage selected" invariant), `manage` is also stripped.
71
+ * Rules that end up with no remaining actions are dropped.
72
+ *
73
+ * Inverted rules and the cover subjects themselves pass through untouched.
74
+ *
75
+ * @param defaultReportSubjects Full set of subjects in the "Default Report" UI category —
76
+ * includes static hardcoded subjects AND dynamic reports with `isDefault: true`.
77
+ * Built by the caller from `portalTeamPermissions` + `customReportPermissions`.
78
+ */
79
+ export declare function filterRedundantReportPermissions(permissions: FdoPermissionRule[], defaultReportSubjects: Set<string>): FdoPermissionRule[];
49
80
  /**
50
81
  * Combine base permissions with override permissions to get effective permissions
51
82
  * @param basePermissions - Base permissions from permission sets
@@ -60,7 +91,7 @@ export declare function getEffectivePermissions(basePermissions: FdoPermissionRu
60
91
  * subject is NOT present in any base permission set (i.e. they target system-expanded subjects,
61
92
  * not permission-set-inherited subjects). These denials seed `visitedSetIds` in
62
93
  * `expandWithSystemPermissionSets` to block runtime re-expansion of system sets that the user
63
- * explicitly unchecked. Without them the editor would initialise without the denial guard and
94
+ * explicitly unchecked. Without them the editor would initialize without the denial guard and
64
95
  * those subjects would reappear as checked the next time the form opens.
65
96
  *
66
97
  * Inverted rules whose subject IS in base are handled correctly by `getEffectivePermissions`
@@ -0,0 +1 @@
1
+ export {};
@@ -26,4 +26,7 @@ export declare function fromValue(values: string[], maxDiscountPercentage: numbe
26
26
  conditions: object;
27
27
  }[];
28
28
  export declare function toRule(v: string): Rule;
29
- export declare function mapAndSortPermissions(permissions: Array<FdoPermissionRule | RawRule>): string[];
29
+ export declare function mapAndSortPermissions(permissions: Array<FdoPermissionRule | RawRule>, additionalPermissions?: ReadonlyArray<{
30
+ subject: string | string[];
31
+ label: string;
32
+ }>): string[];
@@ -7,7 +7,8 @@ export declare enum RouteName {
7
7
  AUDIT_LOG = "audit-log",
8
8
  TEAM = "team",
9
9
  TEAM_MEMBER = "team-member",
10
- TEAM_ROLE = "team-role"
10
+ TEAM_ROLE = "team-role",
11
+ POS_GRANT = "pos-grant"
11
12
  }
12
13
  declare const routes: RouteRecordRaw[];
13
14
  export { routes };
@@ -0,0 +1,86 @@
1
+ import type { IFdtoGrantUser, IFdtoCreateGrantUserReq } from '@/types/grant-user';
2
+ export declare const useGrantUserStore: import("pinia").StoreDefinition<"grantUser", Pick<{
3
+ grantUsers: import("vue").Ref<{
4
+ _id: string;
5
+ passcode: string;
6
+ name: string;
7
+ restaurantId: string;
8
+ roleId: string;
9
+ status: "active" | "used" | "revoked";
10
+ grantById: string;
11
+ grantByName: string;
12
+ createdAt: string;
13
+ updatedAt: string;
14
+ }[], IFdtoGrantUser[] | {
15
+ _id: string;
16
+ passcode: string;
17
+ name: string;
18
+ restaurantId: string;
19
+ roleId: string;
20
+ status: "active" | "used" | "revoked";
21
+ grantById: string;
22
+ grantByName: string;
23
+ createdAt: string;
24
+ updatedAt: string;
25
+ }[]>;
26
+ isLoading: import("vue").Ref<boolean, boolean>;
27
+ readGrantUsers: () => Promise<void>;
28
+ createGrantUser: (dto: IFdtoCreateGrantUserReq) => Promise<IFdtoGrantUser>;
29
+ revokeGrantUser: (id: string, restaurantId: string) => Promise<void>;
30
+ }, "isLoading" | "grantUsers">, Pick<{
31
+ grantUsers: import("vue").Ref<{
32
+ _id: string;
33
+ passcode: string;
34
+ name: string;
35
+ restaurantId: string;
36
+ roleId: string;
37
+ status: "active" | "used" | "revoked";
38
+ grantById: string;
39
+ grantByName: string;
40
+ createdAt: string;
41
+ updatedAt: string;
42
+ }[], IFdtoGrantUser[] | {
43
+ _id: string;
44
+ passcode: string;
45
+ name: string;
46
+ restaurantId: string;
47
+ roleId: string;
48
+ status: "active" | "used" | "revoked";
49
+ grantById: string;
50
+ grantByName: string;
51
+ createdAt: string;
52
+ updatedAt: string;
53
+ }[]>;
54
+ isLoading: import("vue").Ref<boolean, boolean>;
55
+ readGrantUsers: () => Promise<void>;
56
+ createGrantUser: (dto: IFdtoCreateGrantUserReq) => Promise<IFdtoGrantUser>;
57
+ revokeGrantUser: (id: string, restaurantId: string) => Promise<void>;
58
+ }, never>, Pick<{
59
+ grantUsers: import("vue").Ref<{
60
+ _id: string;
61
+ passcode: string;
62
+ name: string;
63
+ restaurantId: string;
64
+ roleId: string;
65
+ status: "active" | "used" | "revoked";
66
+ grantById: string;
67
+ grantByName: string;
68
+ createdAt: string;
69
+ updatedAt: string;
70
+ }[], IFdtoGrantUser[] | {
71
+ _id: string;
72
+ passcode: string;
73
+ name: string;
74
+ restaurantId: string;
75
+ roleId: string;
76
+ status: "active" | "used" | "revoked";
77
+ grantById: string;
78
+ grantByName: string;
79
+ createdAt: string;
80
+ updatedAt: string;
81
+ }[]>;
82
+ isLoading: import("vue").Ref<boolean, boolean>;
83
+ readGrantUsers: () => Promise<void>;
84
+ createGrantUser: (dto: IFdtoCreateGrantUserReq) => Promise<IFdtoGrantUser>;
85
+ revokeGrantUser: (id: string, restaurantId: string) => Promise<void>;
86
+ }, "readGrantUsers" | "createGrantUser" | "revokeGrantUser">>;
@@ -0,0 +1,27 @@
1
+ export interface IFdtoGrantUser {
2
+ _id: string;
3
+ passcode: string;
4
+ name: string;
5
+ restaurantId: string;
6
+ roleId: string;
7
+ status: 'active' | 'used' | 'revoked';
8
+ grantById: string;
9
+ grantByName: string;
10
+ createdAt: string;
11
+ updatedAt: string;
12
+ }
13
+ export interface IFdtoCreateGrantUserReq {
14
+ name: string;
15
+ restaurantId: string;
16
+ roleId: string;
17
+ }
18
+ export interface IFdtoBypassUser {
19
+ id: string;
20
+ name: string;
21
+ role: string;
22
+ passcode: string;
23
+ }
24
+ export interface IFdtoGrantValidationRes {
25
+ bypass: boolean;
26
+ user: IFdtoBypassUser;
27
+ }
@@ -3,4 +3,5 @@ export interface ReportPermissionItem {
3
3
  permissionKey: string;
4
4
  category: string;
5
5
  categoryName: string;
6
+ isDefault: boolean;
6
7
  }
@@ -0,0 +1,17 @@
1
+ declare function create(): void;
2
+ declare const _default: import("vue").DefineComponent<{}, {
3
+ create: typeof create;
4
+ filteredGrantUsers: import("vue").ComputedRef<{
5
+ _id: string;
6
+ passcode: string;
7
+ name: string;
8
+ restaurantId: string;
9
+ roleId: string;
10
+ status: "active" | "used" | "revoked";
11
+ grantById: string;
12
+ grantByName: string;
13
+ createdAt: string;
14
+ updatedAt: string;
15
+ }[]>;
16
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
17
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,17 @@
1
+ declare var __VLS_1: {
2
+ trigger: () => void;
3
+ };
4
+ type __VLS_Slots = {} & {
5
+ default?: (props: typeof __VLS_1) => any;
6
+ };
7
+ declare const __VLS_component: import("vue").DefineComponent<{}, {
8
+ show: import("vue").Ref<boolean, boolean>;
9
+ trigger: () => void;
10
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
11
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,232 @@
1
+ import * as enUS from './en-US.json';
2
+ export type AppMessagesSchema = typeof enUS;
3
+ export declare const i18nMessages: {
4
+ 'en-US': {
5
+ grantUser: {
6
+ title: string;
7
+ actions: {
8
+ create: string;
9
+ revoke: string;
10
+ };
11
+ form: {
12
+ title: string;
13
+ section: string;
14
+ name: string;
15
+ nameRequired: string;
16
+ restaurant: string;
17
+ selectRestaurant: string;
18
+ restaurantRequired: string;
19
+ role: string;
20
+ selectRole: string;
21
+ roleRequired: string;
22
+ };
23
+ columns: {
24
+ passcode: string;
25
+ name: string;
26
+ restaurant: string;
27
+ role: string;
28
+ status: string;
29
+ grantedBy: string;
30
+ createdAt: string;
31
+ };
32
+ status: {
33
+ active: string;
34
+ used: string;
35
+ revoked: string;
36
+ };
37
+ create: {
38
+ successMessage: string;
39
+ };
40
+ revoke: {
41
+ title: string;
42
+ message: string;
43
+ successMessage: string;
44
+ };
45
+ search: {
46
+ placeholder: string;
47
+ };
48
+ filter: {
49
+ selected_status_prefix: string;
50
+ status_placeholder: string;
51
+ };
52
+ noData: {
53
+ title: string;
54
+ subtitle: string;
55
+ };
56
+ passcode: {
57
+ copied: string;
58
+ };
59
+ };
60
+ };
61
+ 'zh-CN': {
62
+ grantUser: {
63
+ title: string;
64
+ actions: {
65
+ create: string;
66
+ revoke: string;
67
+ };
68
+ form: {
69
+ title: string;
70
+ section: string;
71
+ name: string;
72
+ nameRequired: string;
73
+ restaurant: string;
74
+ selectRestaurant: string;
75
+ restaurantRequired: string;
76
+ role: string;
77
+ selectRole: string;
78
+ roleRequired: string;
79
+ };
80
+ columns: {
81
+ passcode: string;
82
+ name: string;
83
+ restaurant: string;
84
+ role: string;
85
+ status: string;
86
+ grantedBy: string;
87
+ createdAt: string;
88
+ };
89
+ status: {
90
+ active: string;
91
+ used: string;
92
+ revoked: string;
93
+ };
94
+ create: {
95
+ successMessage: string;
96
+ };
97
+ revoke: {
98
+ title: string;
99
+ message: string;
100
+ successMessage: string;
101
+ };
102
+ search: {
103
+ placeholder: string;
104
+ };
105
+ filter: {
106
+ selected_status_prefix: string;
107
+ status_placeholder: string;
108
+ };
109
+ noData: {
110
+ title: string;
111
+ subtitle: string;
112
+ };
113
+ passcode: {
114
+ copied: string;
115
+ };
116
+ };
117
+ };
118
+ 'th-TH': {
119
+ grantUser: {
120
+ title: string;
121
+ actions: {
122
+ create: string;
123
+ revoke: string;
124
+ };
125
+ form: {
126
+ title: string;
127
+ section: string;
128
+ name: string;
129
+ nameRequired: string;
130
+ restaurant: string;
131
+ selectRestaurant: string;
132
+ restaurantRequired: string;
133
+ role: string;
134
+ selectRole: string;
135
+ roleRequired: string;
136
+ };
137
+ columns: {
138
+ passcode: string;
139
+ name: string;
140
+ restaurant: string;
141
+ role: string;
142
+ status: string;
143
+ grantedBy: string;
144
+ createdAt: string;
145
+ };
146
+ status: {
147
+ active: string;
148
+ used: string;
149
+ revoked: string;
150
+ };
151
+ create: {
152
+ successMessage: string;
153
+ };
154
+ revoke: {
155
+ title: string;
156
+ message: string;
157
+ successMessage: string;
158
+ };
159
+ search: {
160
+ placeholder: string;
161
+ };
162
+ filter: {
163
+ selected_status_prefix: string;
164
+ status_placeholder: string;
165
+ };
166
+ noData: {
167
+ title: string;
168
+ subtitle: string;
169
+ };
170
+ passcode: {
171
+ copied: string;
172
+ };
173
+ };
174
+ };
175
+ 'zh-Hant': {
176
+ grantUser: {
177
+ title: string;
178
+ actions: {
179
+ create: string;
180
+ revoke: string;
181
+ };
182
+ form: {
183
+ title: string;
184
+ section: string;
185
+ name: string;
186
+ nameRequired: string;
187
+ restaurant: string;
188
+ selectRestaurant: string;
189
+ restaurantRequired: string;
190
+ role: string;
191
+ selectRole: string;
192
+ roleRequired: string;
193
+ };
194
+ columns: {
195
+ passcode: string;
196
+ name: string;
197
+ restaurant: string;
198
+ role: string;
199
+ status: string;
200
+ grantedBy: string;
201
+ createdAt: string;
202
+ };
203
+ status: {
204
+ active: string;
205
+ used: string;
206
+ revoked: string;
207
+ };
208
+ create: {
209
+ successMessage: string;
210
+ };
211
+ revoke: {
212
+ title: string;
213
+ message: string;
214
+ successMessage: string;
215
+ };
216
+ search: {
217
+ placeholder: string;
218
+ };
219
+ filter: {
220
+ selected_status_prefix: string;
221
+ status_placeholder: string;
222
+ };
223
+ noData: {
224
+ title: string;
225
+ subtitle: string;
226
+ };
227
+ passcode: {
228
+ copied: string;
229
+ };
230
+ };
231
+ };
232
+ };
@@ -1,10 +1,18 @@
1
1
  import { type PropType } from 'vue';
2
+ import { type IFdtoPortalPermissionsWithVisibilityCondition } from '@feedmepos/hrm-permission';
2
3
  import type { FdoPermissionRule } from '@feedmepos/core/entity';
3
4
  declare var __VLS_9: `checkbox-${string}-append`, __VLS_10: {
4
5
  option: import("@/components/CheckboxInput.vue").CheckboxOption;
6
+ }, __VLS_29: `checkbox-${string}-append`, __VLS_30: {
7
+ option: {
8
+ label: string;
9
+ value: string;
10
+ };
5
11
  };
6
12
  type __VLS_Slots = {} & {
7
13
  [K in NonNullable<typeof __VLS_9>]?: (props: typeof __VLS_10) => any;
14
+ } & {
15
+ [K in NonNullable<typeof __VLS_29>]?: (props: typeof __VLS_30) => any;
8
16
  };
9
17
  declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
18
  modelValue: {
@@ -19,6 +27,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
19
27
  type: PropType<string[]>;
20
28
  required: true;
21
29
  };
30
+ additionalPermissions: {
31
+ type: PropType<IFdtoPortalPermissionsWithVisibilityCondition[]>;
32
+ default: () => never[];
33
+ };
22
34
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
23
35
  "update:model-value": (subject: {
24
36
  reason?: string | null | undefined;
@@ -42,6 +54,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
42
54
  type: PropType<string[]>;
43
55
  required: true;
44
56
  };
57
+ additionalPermissions: {
58
+ type: PropType<IFdtoPortalPermissionsWithVisibilityCondition[]>;
59
+ default: () => never[];
60
+ };
45
61
  }>> & Readonly<{
46
62
  "onUpdate:model-value"?: ((subject: {
47
63
  reason?: string | null | undefined;
@@ -54,6 +70,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
54
70
  }[]) => any) | undefined;
55
71
  }>, {
56
72
  disable: boolean;
73
+ additionalPermissions: IFdtoPortalPermissionsWithVisibilityCondition[];
57
74
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
58
75
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
59
76
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import { defineStore as d } from "pinia";
2
2
  import { ref as s, computed as o } from "vue";
3
- import { t as f } from "./index-CBxn7cxI.js";
3
+ import { t as f } from "./index-C2ubYSVV.js";
4
4
  const I = d("team", () => {
5
5
  const r = s([]), a = s(!1), m = o(
6
6
  () => Object.fromEntries(r.value.map((e) => [e.doc.userId, e.name]))
@@ -1,7 +1,8 @@
1
- import { d as i } from "./dayjs.min-LweNOSZ_.js";
1
+ import { d as i } from "./dayjs.min-C1rTVn8X.js";
2
2
  import { defineStore as p, storeToRefs as T } from "pinia";
3
3
  import { ref as l } from "vue";
4
- import { b as c, g as y, k as u, j as S, s as g } from "./index-CBxn7cxI.js";
4
+ import { b as c, g as y, s as S } from "./iteration-BSGKcAZm.js";
5
+ import { i as u, b as g } from "./index-C2ubYSVV.js";
5
6
  const f = {
6
7
  async readTimesheets(t, e) {
7
8
  return y(await c().get(`timesheet?start=${t}&end=${e}`));
@@ -11,17 +12,17 @@ const f = {
11
12
  }
12
13
  };
13
14
  function A(t) {
14
- const e = t.map((o) => {
15
- const { startedAt: s, endedAt: a } = o, r = i(u(s)), n = a ? i(u(a)) : null, m = (n == null ? void 0 : n.diff(r, "minute", !1)) || 0, h = n ? S(m) : "", d = "YYYY-MM-DD hh:mm a";
15
+ const e = t.map((n) => {
16
+ const { startedAt: s, endedAt: a } = n, r = i(u(s)), o = a ? i(u(a)) : null, m = (o == null ? void 0 : o.diff(r, "minute", !1)) || 0, h = o ? g(m) : "", d = "YYYY-MM-DD hh:mm a";
16
17
  return {
17
- ...o,
18
+ ...n,
18
19
  start: r.format(d),
19
- end: n ? n.format(d) : "",
20
+ end: o ? o.format(d) : "",
20
21
  totalMin: m,
21
22
  duration: h
22
23
  };
23
24
  });
24
- return g(e, { selector: "start" });
25
+ return S(e, { selector: "start" });
25
26
  }
26
27
  const D = p("timesheet", () => {
27
28
  const t = l([]);
@@ -32,7 +33,7 @@ const D = p("timesheet", () => {
32
33
  );
33
34
  t.value = A(r);
34
35
  }
35
- async function o(s, a, r) {
36
+ async function n(s, a, r) {
36
37
  await f.updateTimesheet(s.restaurantId, {
37
38
  id: s._id,
38
39
  startAt: a,
@@ -42,7 +43,7 @@ const D = p("timesheet", () => {
42
43
  return {
43
44
  timesheets: t,
44
45
  readTimesheet: e,
45
- updateTimesheet: o
46
+ updateTimesheet: n
46
47
  };
47
48
  }), M = () => {
48
49
  const t = D();