@feedmepos/mf-hrm-portal 2.2.1-dev.2 → 2.2.1-dev.4
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-DZajn7xx.js → ApprovalCodeList-CJpbX8H_.js} +5 -5
- package/dist/AuditLogList-A1217xlw.js +1722 -0
- package/dist/ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BWNAtv1G.js +438 -0
- package/dist/{EmployeeList-DDuxDdlJ.js → EmployeeList-Gh8aU7BY.js} +6 -6
- package/dist/{GrantUserList-735upmIE.js → GrantUserList-vpaCAv1u.js} +6 -6
- package/dist/{Main-tQ6MrkkP.js → Main-38YNSkW6.js} +11 -11
- package/dist/{Main-DyZ6dJ2d.js → Main-CXjbH7aE.js} +8 -8
- package/dist/{Main-CHHR0r5b.js → Main-GwRBJ3al.js} +5 -5
- package/dist/{PermissionSetList-ZxLNYPEB.js → PermissionSetList-CuzFQm7J.js} +7 -7
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-C9bkMb41.js +4169 -0
- package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DVVSBIx2.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-XHuHin8t.js} +1 -1
- package/dist/RoleList-C5VZbU3f.js +725 -0
- package/dist/{TeamMemberList-B58boeR9.js → TeamMemberList-ChrUNLsA.js} +9 -9
- package/dist/{TimesheetList-DMnNVVlB.js → TimesheetList-Dqx3RZ4c.js} +7 -7
- package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_2c7a177a_lang-Ch8Ng6wi.js → TimesheetList.vue_vue_type_style_index_0_scoped_2c7a177a_lang-rtbLyLSE.js} +3 -3
- package/dist/{app-CtuaUGnw.js → app-CPByRtdD.js} +10 -6
- package/dist/app.js +1 -1
- package/dist/{approval-code-Q4666xp5.js → approval-code-jIjkeVEb.js} +1 -1
- package/dist/{dayjs.min-9pRWRTS9.js → dayjs.min-DeAdykwc.js} +1 -1
- package/dist/{employee-JmfN-rQF.js → employee-dFHap_s3.js} +4 -4
- package/dist/{grant-user-CQZaTzVt.js → grant-user-SNiDV22U.js} +1 -1
- package/dist/{iteration-CkzTvtOv.js → iteration-B_EcCwqv.js} +1 -1
- package/dist/{lodash-BNBzabCH.js → lodash-C5UxxqU2.js} +1 -1
- package/dist/{restaurant-YOVMuuFY.js → restaurant-BTpBmfBV.js} +12 -14
- package/dist/role-8ZQb8Cap.js +92 -0
- package/dist/rule-DJZO_Kev.js +1094 -0
- package/dist/src/composables/useReportPermissions.d.ts +1 -0
- package/dist/src/helpers/rule.d.ts +10 -1
- package/dist/src/stores/role.d.ts +6 -6
- package/dist/src/views/audit-log/change-nodes.d.ts +14 -0
- package/dist/src/views/audit-log/locales/index.d.ts +4 -0
- package/dist/src/views/audit-log/operation-status.d.ts +2 -0
- package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +44 -0
- package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +39 -0
- package/dist/style.css +1 -1
- package/dist/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{useAppStore-DNTlIeMv.js → useAppStore-DCwd8GWN.js} +1 -1
- package/dist/{useLoading-BH02lYns.js → useLoading-CXzTpIVv.js} +1 -1
- package/dist/useReportPermissions-Phq7vqLK.js +71 -0
- package/package.json +1 -1
- package/dist/AuditLogList-CpKIq8I0.js +0 -1611
- package/dist/ConditionFormHost.vue_vue_type_script_setup_true_lang-DCfvikJB.js +0 -387
- package/dist/PortalPermissionEditor.vue_vue_type_script_setup_true_lang-MoFevdmL.js +0 -4122
- package/dist/RoleList-BZbEGpCi.js +0 -685
- package/dist/role-R_9sO2QD.js +0 -82
- package/dist/rule-D1pKbnKR.js +0 -1066
- package/dist/useReportPermissions-ByxRc3kz.js +0 -70
|
@@ -26,7 +26,16 @@ export declare function fromValue(values: string[], maxDiscountPercentage: numbe
|
|
|
26
26
|
actions: ("delete" | "create" | "update" | "read" | "manage")[];
|
|
27
27
|
conditions: object;
|
|
28
28
|
}[];
|
|
29
|
-
export declare function toRule(v: string): Rule;
|
|
29
|
+
export declare function toRule(v: string): Rule | undefined;
|
|
30
|
+
export interface RoleFormPermissionSplit {
|
|
31
|
+
/** Checkbox value strings the role form can render and round-trip. */
|
|
32
|
+
values: string[];
|
|
33
|
+
/** Valid rules the form has no checkbox for — must be saved back verbatim. */
|
|
34
|
+
passthrough: FdoPermissionRule[];
|
|
35
|
+
/** Corrupted rules (no subject / empty actions) — omitted on save to repair the doc. */
|
|
36
|
+
dropped: FdoPermissionRule[];
|
|
37
|
+
}
|
|
38
|
+
export declare function splitRoleFormPermissions(permissions: FdoPermissionRule[], knownValues: Set<string>): RoleFormPermissionSplit;
|
|
30
39
|
export declare function mapAndSortPermissions(permissions: Array<FdoPermissionRule | RawRule>, additionalPermissions?: ReadonlyArray<{
|
|
31
40
|
subject: string | string[];
|
|
32
41
|
label: string;
|
|
@@ -58,7 +58,7 @@ export declare const useRoleStore: () => {
|
|
|
58
58
|
permissions: Record<string, any>[];
|
|
59
59
|
}[]>;
|
|
60
60
|
isLoading: import("vue").Ref<boolean, boolean>;
|
|
61
|
-
readRoles: () => Promise<void>;
|
|
61
|
+
readRoles: (force?: boolean) => Promise<void>;
|
|
62
62
|
createRole: (dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
63
63
|
updateRole: (roleId: string, dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
64
64
|
deleteRole: (role: Role) => Promise<void>;
|
|
@@ -115,7 +115,7 @@ export declare const useRoleStore: () => {
|
|
|
115
115
|
permissions: Record<string, any>[];
|
|
116
116
|
}[]>;
|
|
117
117
|
isLoading: import("vue").Ref<boolean, boolean>;
|
|
118
|
-
readRoles: () => Promise<void>;
|
|
118
|
+
readRoles: (force?: boolean) => Promise<void>;
|
|
119
119
|
createRole: (dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
120
120
|
updateRole: (roleId: string, dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
121
121
|
deleteRole: (role: Role) => Promise<void>;
|
|
@@ -145,7 +145,7 @@ export declare const useRoleStore: () => {
|
|
|
145
145
|
permissions: Record<string, any>[];
|
|
146
146
|
}[]>;
|
|
147
147
|
isLoading: import("vue").Ref<boolean, boolean>;
|
|
148
|
-
readRoles: () => Promise<void>;
|
|
148
|
+
readRoles: (force?: boolean) => Promise<void>;
|
|
149
149
|
createRole: (dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
150
150
|
updateRole: (roleId: string, dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
151
151
|
deleteRole: (role: Role) => Promise<void>;
|
|
@@ -172,7 +172,7 @@ export declare const useRoleStore: () => {
|
|
|
172
172
|
permissions: Record<string, any>[];
|
|
173
173
|
}[]>;
|
|
174
174
|
isLoading: import("vue").Ref<boolean, boolean>;
|
|
175
|
-
readRoles: () => Promise<void>;
|
|
175
|
+
readRoles: (force?: boolean) => Promise<void>;
|
|
176
176
|
createRole: (dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
177
177
|
updateRole: (roleId: string, dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
178
178
|
deleteRole: (role: Role) => Promise<void>;
|
|
@@ -199,7 +199,7 @@ export declare const useRoleStore: () => {
|
|
|
199
199
|
permissions: Record<string, any>[];
|
|
200
200
|
}[]>;
|
|
201
201
|
isLoading: import("vue").Ref<boolean, boolean>;
|
|
202
|
-
readRoles: () => Promise<void>;
|
|
202
|
+
readRoles: (force?: boolean) => Promise<void>;
|
|
203
203
|
createRole: (dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
204
204
|
updateRole: (roleId: string, dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
205
205
|
deleteRole: (role: Role) => Promise<void>;
|
|
@@ -207,7 +207,7 @@ export declare const useRoleStore: () => {
|
|
|
207
207
|
$dispose(): void;
|
|
208
208
|
$id: "role";
|
|
209
209
|
_customProperties: Set<string>;
|
|
210
|
-
readRoles: () => Promise<void>;
|
|
210
|
+
readRoles: (force?: boolean) => Promise<void>;
|
|
211
211
|
createRole: (dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
212
212
|
updateRole: (roleId: string, dto: IFdtoUpdateRoleReq) => Promise<void>;
|
|
213
213
|
deleteRole: (role: Role) => Promise<void>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ChangeNode } from '@feedmepos/hrm-permission';
|
|
2
|
+
export interface ChangeNodeDisplay {
|
|
3
|
+
label: string;
|
|
4
|
+
labelKey?: string;
|
|
5
|
+
type: 'add' | 'remove' | 'update';
|
|
6
|
+
beforeDisplay: string;
|
|
7
|
+
afterDisplay: string;
|
|
8
|
+
}
|
|
9
|
+
/** Render a single ChangeNode value (string | string[] | undefined) as display text. */
|
|
10
|
+
export declare function formatChangeValue(value: string | string[] | undefined): string;
|
|
11
|
+
/** Convert a ChangeNode into a flat display object for the UI. */
|
|
12
|
+
export declare function prepareChangeNodeDisplay(node: ChangeNode): ChangeNodeDisplay;
|
|
13
|
+
/** Decide whether to render changeNodes table (true) or fall back to raw diff (false). */
|
|
14
|
+
export declare function shouldRenderChangeNodes(changeNodes: ChangeNode[] | undefined): boolean;
|
|
@@ -142,6 +142,7 @@ export declare const i18nMessages: {
|
|
|
142
142
|
rowHint: string;
|
|
143
143
|
unlabeled: string;
|
|
144
144
|
badge: string;
|
|
145
|
+
partialFailure: string;
|
|
145
146
|
sheetHeader: string;
|
|
146
147
|
entity: string;
|
|
147
148
|
duration: string;
|
|
@@ -352,6 +353,7 @@ export declare const i18nMessages: {
|
|
|
352
353
|
rowHint: string;
|
|
353
354
|
unlabeled: string;
|
|
354
355
|
badge: string;
|
|
356
|
+
partialFailure: string;
|
|
355
357
|
sheetHeader: string;
|
|
356
358
|
entity: string;
|
|
357
359
|
duration: string;
|
|
@@ -562,6 +564,7 @@ export declare const i18nMessages: {
|
|
|
562
564
|
rowHint: string;
|
|
563
565
|
unlabeled: string;
|
|
564
566
|
badge: string;
|
|
567
|
+
partialFailure: string;
|
|
565
568
|
sheetHeader: string;
|
|
566
569
|
entity: string;
|
|
567
570
|
duration: string;
|
|
@@ -772,6 +775,7 @@ export declare const i18nMessages: {
|
|
|
772
775
|
rowHint: string;
|
|
773
776
|
unlabeled: string;
|
|
774
777
|
badge: string;
|
|
778
|
+
partialFailure: string;
|
|
775
779
|
sheetHeader: string;
|
|
776
780
|
entity: string;
|
|
777
781
|
duration: string;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ConditionBuilder } from '@feedmepos/hrm-permission/condition-builder';
|
|
2
|
+
import type { CoverConditionEntry, useCoverConditionOverride } from '@/composables/useCoverConditionOverride';
|
|
3
|
+
type __VLS_Props = {
|
|
4
|
+
entry: CoverConditionEntry;
|
|
5
|
+
builders: ConditionBuilder[];
|
|
6
|
+
subject: string;
|
|
7
|
+
timeZone: string;
|
|
8
|
+
coverOverride: ReturnType<typeof useCoverConditionOverride>;
|
|
9
|
+
inheritModeFor: (builder: ConditionBuilder) => 'inherit' | 'custom';
|
|
10
|
+
formValueFor: (builder: ConditionBuilder) => unknown;
|
|
11
|
+
hasChanges: boolean;
|
|
12
|
+
disable?: boolean;
|
|
13
|
+
fullWidth?: boolean;
|
|
14
|
+
/** Forwarded to ConditionBuilderForm's own title. Leave unset when the
|
|
15
|
+
* caller already renders this same string as its own header (e.g. a
|
|
16
|
+
* bottom sheet), so it isn't shown twice. */
|
|
17
|
+
title?: string;
|
|
18
|
+
};
|
|
19
|
+
declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
20
|
+
apply: () => any;
|
|
21
|
+
"update-form": (payload: {
|
|
22
|
+
builder: ConditionBuilder;
|
|
23
|
+
form: unknown;
|
|
24
|
+
}) => any;
|
|
25
|
+
"update-inherit-mode": (payload: {
|
|
26
|
+
builder: ConditionBuilder;
|
|
27
|
+
mode: "inherit" | "custom";
|
|
28
|
+
}) => any;
|
|
29
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
30
|
+
onApply?: (() => any) | undefined;
|
|
31
|
+
"onUpdate-form"?: ((payload: {
|
|
32
|
+
builder: ConditionBuilder;
|
|
33
|
+
form: unknown;
|
|
34
|
+
}) => any) | undefined;
|
|
35
|
+
"onUpdate-inherit-mode"?: ((payload: {
|
|
36
|
+
builder: ConditionBuilder;
|
|
37
|
+
mode: "inherit" | "custom";
|
|
38
|
+
}) => any) | undefined;
|
|
39
|
+
}>, {
|
|
40
|
+
title: string;
|
|
41
|
+
disable: boolean;
|
|
42
|
+
fullWidth: boolean;
|
|
43
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
44
|
+
export default _default;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ConditionBuilder } from '@feedmepos/hrm-permission/condition-builder';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
builders: ConditionBuilder[];
|
|
4
|
+
formValueFor: (builder: ConditionBuilder) => unknown;
|
|
5
|
+
hasChanges: boolean;
|
|
6
|
+
title?: string;
|
|
7
|
+
disable?: boolean;
|
|
8
|
+
fullWidth?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare var __VLS_1: {
|
|
11
|
+
builder: ConditionBuilder<unknown, unknown, Record<string, unknown>>;
|
|
12
|
+
};
|
|
13
|
+
type __VLS_Slots = {} & {
|
|
14
|
+
section?: (props: typeof __VLS_1) => any;
|
|
15
|
+
};
|
|
16
|
+
declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
|
|
17
|
+
apply: () => any;
|
|
18
|
+
"update-form": (payload: {
|
|
19
|
+
builder: ConditionBuilder;
|
|
20
|
+
form: unknown;
|
|
21
|
+
}) => any;
|
|
22
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
23
|
+
onApply?: (() => any) | undefined;
|
|
24
|
+
"onUpdate-form"?: ((payload: {
|
|
25
|
+
builder: ConditionBuilder;
|
|
26
|
+
form: unknown;
|
|
27
|
+
}) => any) | undefined;
|
|
28
|
+
}>, {
|
|
29
|
+
title: string;
|
|
30
|
+
disable: boolean;
|
|
31
|
+
fullWidth: boolean;
|
|
32
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
33
|
+
declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
|
|
34
|
+
export default _default;
|
|
35
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
36
|
+
new (): {
|
|
37
|
+
$slots: S;
|
|
38
|
+
};
|
|
39
|
+
};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.employee-list-table[data-v-9cf34375] [class~=gap-24]>div:first-child{display:none}.timesheet-user-view[data-v-2c7a177a] .basis-72{display:none}.user-info-icon[data-v-827dfd60]{flex-shrink:0;cursor:pointer;font-size:.75rem;font-weight:600;line-height:1rem;letter-spacing:.02em;text-decoration-line:none;color:var(--fm-color-neutral-white);display:flex;align-items:center;justify-content:center;background:linear-gradient(201deg,#fc9b40 10.3%,#ff6052 98.36%)}.user-info-icon--md[data-v-827dfd60]{height:2.25rem;width:2.25rem;border-radius:8px}.user-info-icon--lg[data-v-827dfd60]{height:48px;width:48px;border-radius:16px}.profile-menu[data-v-827dfd60]{width:280px;padding-top:12px;padding-bottom:12px}.profile-menu--profile[data-v-827dfd60]>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(8px * var(--tw-space-x-reverse));margin-left:calc(8px * calc(1 - var(--tw-space-x-reverse)))}.profile-menu--profile[data-v-827dfd60]{padding:16px 16px 12px;border-radius:8px;display:flex;align-items:center;border-width:1px;border-color:var(--fm-color-neutral-gray-200)}.profile-menu--profile .profile-displayName[data-v-827dfd60]{font-size:1rem;font-weight:400;line-height:1.25rem;letter-spacing:.005em;text-decoration-line:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-menu--profile .profile-email[data-v-827dfd60],.profile-menu--profile .profile-phone[data-v-827dfd60]{font-size:.875rem;font-weight:400;line-height:1.125rem;letter-spacing:.0125em;text-decoration-line:none;color:var(--fm-color-neutral-gray-300);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-log-list-table[data-v-
|
|
1
|
+
.employee-list-table[data-v-9cf34375] [class~=gap-24]>div:first-child{display:none}.timesheet-user-view[data-v-2c7a177a] .basis-72{display:none}.user-info-icon[data-v-827dfd60]{flex-shrink:0;cursor:pointer;font-size:.75rem;font-weight:600;line-height:1rem;letter-spacing:.02em;text-decoration-line:none;color:var(--fm-color-neutral-white);display:flex;align-items:center;justify-content:center;background:linear-gradient(201deg,#fc9b40 10.3%,#ff6052 98.36%)}.user-info-icon--md[data-v-827dfd60]{height:2.25rem;width:2.25rem;border-radius:8px}.user-info-icon--lg[data-v-827dfd60]{height:48px;width:48px;border-radius:16px}.profile-menu[data-v-827dfd60]{width:280px;padding-top:12px;padding-bottom:12px}.profile-menu--profile[data-v-827dfd60]>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(8px * var(--tw-space-x-reverse));margin-left:calc(8px * calc(1 - var(--tw-space-x-reverse)))}.profile-menu--profile[data-v-827dfd60]{padding:16px 16px 12px;border-radius:8px;display:flex;align-items:center;border-width:1px;border-color:var(--fm-color-neutral-gray-200)}.profile-menu--profile .profile-displayName[data-v-827dfd60]{font-size:1rem;font-weight:400;line-height:1.25rem;letter-spacing:.005em;text-decoration-line:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-menu--profile .profile-email[data-v-827dfd60],.profile-menu--profile .profile-phone[data-v-827dfd60]{font-size:.875rem;font-weight:400;line-height:1.125rem;letter-spacing:.0125em;text-decoration-line:none;color:var(--fm-color-neutral-gray-300);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audit-log-list-table[data-v-9d69ce94] [class~=gap-24]>div:first-child{display:none}.audit-log-list-table[data-v-9d69ce94] tr:has(.audit-op-marker){background-color:var(--fm-color-neutral-gray-100);border-top:1px solid var(--fm-color-neutral-gray-200)}.audit-log-list-table[data-v-9d69ce94] tr:has(.audit-op-marker):hover{background-color:#e8e8ed}.audit-log-action-label[data-v-9d69ce94]{display:block;width:100%;max-width:100%;max-height:6.25rem;overflow-y:auto;white-space:pre-line;word-break:break-word;line-height:1.25rem;scrollbar-width:none;-ms-overflow-style:none}.audit-log-action-label[data-v-9d69ce94]::-webkit-scrollbar{display:none}.audit-log-operation-label-detail[data-v-9d69ce94]{max-height:6.875rem;overflow-y:auto;white-space:pre-line;word-break:break-word;line-height:1.375rem;scrollbar-width:none;-ms-overflow-style:none}.audit-log-operation-label-detail[data-v-9d69ce94]::-webkit-scrollbar{display:none}
|