@flusys/ng-iam 6.2.1 → 6.3.0
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/fesm2022/{flusys-ng-iam-action-form-page.component-CqrxA8bY.mjs → flusys-ng-iam-action-form-page.component-Cz7DY6JM.mjs} +16 -24
- package/fesm2022/flusys-ng-iam-action-form-page.component-Cz7DY6JM.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-action-list-page.component-P7YcQOur.mjs → flusys-ng-iam-action-list-page.component-D-Lhs8gW.mjs} +2 -2
- package/fesm2022/{flusys-ng-iam-action-list-page.component-P7YcQOur.mjs.map → flusys-ng-iam-action-list-page.component-D-Lhs8gW.mjs.map} +1 -1
- package/fesm2022/{flusys-ng-iam-flusys-ng-iam-D397Jg30.mjs → flusys-ng-iam-flusys-ng-iam-DW60PO5q.mjs} +287 -62
- package/fesm2022/flusys-ng-iam-flusys-ng-iam-DW60PO5q.mjs.map +1 -0
- package/fesm2022/flusys-ng-iam-permission-page.component-C1XE1Zes.mjs +203 -0
- package/fesm2022/flusys-ng-iam-permission-page.component-C1XE1Zes.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-role-form-page.component-Cw958yl1.mjs → flusys-ng-iam-role-form-page.component-DMDQjumX.mjs} +2 -2
- package/fesm2022/{flusys-ng-iam-role-form-page.component-Cw958yl1.mjs.map → flusys-ng-iam-role-form-page.component-DMDQjumX.mjs.map} +1 -1
- package/fesm2022/{flusys-ng-iam-role-list-page.component-Cu3NxRWX.mjs → flusys-ng-iam-role-list-page.component-CUzEIuzS.mjs} +2 -2
- package/fesm2022/{flusys-ng-iam-role-list-page.component-Cu3NxRWX.mjs.map → flusys-ng-iam-role-list-page.component-CUzEIuzS.mjs.map} +1 -1
- package/fesm2022/flusys-ng-iam.mjs +1 -1
- package/package.json +5 -5
- package/types/flusys-ng-iam.d.ts +28 -6
- package/fesm2022/flusys-ng-iam-action-form-page.component-CqrxA8bY.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-flusys-ng-iam-D397Jg30.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-permission-page.component-DhwjuKxl.mjs +0 -143
- package/fesm2022/flusys-ng-iam-permission-page.component-DhwjuKxl.mjs.map +0 -1
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, signal, computed, effect, untracked, Component } from '@angular/core';
|
|
3
|
-
import { COMPANY_ACTION_PERMISSIONS, USER_ACTION_PERMISSIONS, USER_ROLE_PERMISSIONS, ROLE_ACTION_PERMISSIONS, AngularModule, HasPermissionDirective, TranslatePipe } from '@flusys/ng-shared';
|
|
4
|
-
import { APP_CONFIG, getPermissionMode, isCompanyFeatureEnabled } from '@flusys/ng-core';
|
|
5
|
-
import { b as RoleActionSelectorComponent, C as CompanyActionSelectorComponent, U as UserRoleSelectorComponent, d as UserActionSelectorComponent } from './flusys-ng-iam-flusys-ng-iam-D397Jg30.mjs';
|
|
6
|
-
import * as i2 from '@flusys/ng-ui';
|
|
7
|
-
import { UiModule } from '@flusys/ng-ui';
|
|
8
|
-
|
|
9
|
-
/** Permission codes for each tab */
|
|
10
|
-
const TAB_PERMISSIONS = {
|
|
11
|
-
'role-actions': ROLE_ACTION_PERMISSIONS.READ,
|
|
12
|
-
'user-roles': USER_ROLE_PERMISSIONS.READ,
|
|
13
|
-
'user-actions': USER_ACTION_PERMISSIONS.READ,
|
|
14
|
-
'company-actions': COMPANY_ACTION_PERMISSIONS.READ,
|
|
15
|
-
};
|
|
16
|
-
/** Main permission management interface with tabs for role/user/company permission assignment */
|
|
17
|
-
class PermissionPageComponent {
|
|
18
|
-
appConfig = inject(APP_CONFIG);
|
|
19
|
-
activeTab = signal('', /* @ts-ignore */
|
|
20
|
-
...(ngDevMode ? [{ debugName: "activeTab" }] : /* istanbul ignore next */ []));
|
|
21
|
-
/** Available tabs based on permission mode */
|
|
22
|
-
availableTabs = computed(() => {
|
|
23
|
-
const permissionMode = getPermissionMode(this.appConfig);
|
|
24
|
-
const tabs = [];
|
|
25
|
-
if (permissionMode === 'rbac' || permissionMode === 'full') {
|
|
26
|
-
tabs.push({ id: 'role-actions', labelKey: 'iam.permission.role.actions', icon: 'shield', permission: TAB_PERMISSIONS['role-actions'] }, { id: 'user-roles', labelKey: 'iam.permission.user.roles', icon: 'user', permission: TAB_PERMISSIONS['user-roles'] });
|
|
27
|
-
}
|
|
28
|
-
if (permissionMode === 'direct' || permissionMode === 'full') {
|
|
29
|
-
tabs.push({ id: 'user-actions', labelKey: 'iam.permission.user.actions', icon: 'key', permission: TAB_PERMISSIONS['user-actions'] });
|
|
30
|
-
}
|
|
31
|
-
if (isCompanyFeatureEnabled(this.appConfig)) {
|
|
32
|
-
tabs.push({ id: 'company-actions', labelKey: 'iam.permission.company.actions', icon: 'building', permission: TAB_PERMISSIONS['company-actions'] });
|
|
33
|
-
}
|
|
34
|
-
return tabs;
|
|
35
|
-
}, /* @ts-ignore */
|
|
36
|
-
...(ngDevMode ? [{ debugName: "availableTabs" }] : /* istanbul ignore next */ []));
|
|
37
|
-
constructor() {
|
|
38
|
-
effect(() => {
|
|
39
|
-
const tabs = this.availableTabs();
|
|
40
|
-
const currentTab = untracked(() => this.activeTab());
|
|
41
|
-
if (!currentTab || !tabs.some((t) => t.id === currentTab)) {
|
|
42
|
-
if (tabs.length > 0) {
|
|
43
|
-
this.activeTab.set(tabs[0].id);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
setActiveTab(tabId) {
|
|
49
|
-
this.activeTab.set(tabId);
|
|
50
|
-
}
|
|
51
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: PermissionPageComponent, isStandalone: true, selector: "lib-permission-page", ngImport: i0, template: `
|
|
53
|
-
<div class="card">
|
|
54
|
-
<h3 class="text-xl font-semibold mb-4">{{ 'iam.permission.title' | translate }}</h3>
|
|
55
|
-
|
|
56
|
-
<div class="scrollbar-hide flex gap-2 mb-4 overflow-x-auto flex-nowrap">
|
|
57
|
-
@for (tab of availableTabs(); track tab.id) {
|
|
58
|
-
<button
|
|
59
|
-
fButton
|
|
60
|
-
*hasPermission="tab.permission"
|
|
61
|
-
[outlined]="activeTab() !== tab.id"
|
|
62
|
-
size="small"
|
|
63
|
-
class="shrink-0"
|
|
64
|
-
(click)="setActiveTab(tab.id)"
|
|
65
|
-
>
|
|
66
|
-
<ui-icon pButtonIcon [name]="tab.icon"></ui-icon>
|
|
67
|
-
<span pButtonLabel>{{ tab.labelKey | translate }}</span>
|
|
68
|
-
</button>
|
|
69
|
-
}
|
|
70
|
-
</div>
|
|
71
|
-
|
|
72
|
-
<div class="mt-4">
|
|
73
|
-
@switch (activeTab()) {
|
|
74
|
-
@case ('role-actions') {
|
|
75
|
-
<flusys-role-action-selector />
|
|
76
|
-
}
|
|
77
|
-
@case ('user-roles') {
|
|
78
|
-
<flusys-user-role-selector />
|
|
79
|
-
}
|
|
80
|
-
@case ('user-actions') {
|
|
81
|
-
<flusys-user-action-selector />
|
|
82
|
-
}
|
|
83
|
-
@case ('company-actions') {
|
|
84
|
-
<flusys-company-action-selector />
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
89
|
-
`, isInline: true, styles: [".scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}\n"], dependencies: [{ kind: "ngmodule", type: AngularModule }, { kind: "ngmodule", type: UiModule }, { kind: "directive", type: i2.FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: RoleActionSelectorComponent, selector: "flusys-role-action-selector" }, { kind: "component", type: CompanyActionSelectorComponent, selector: "flusys-company-action-selector" }, { kind: "component", type: UserRoleSelectorComponent, selector: "flusys-user-role-selector" }, { kind: "component", type: UserActionSelectorComponent, selector: "flusys-user-action-selector" }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
90
|
-
}
|
|
91
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionPageComponent, decorators: [{
|
|
92
|
-
type: Component,
|
|
93
|
-
args: [{ selector: 'lib-permission-page', imports: [
|
|
94
|
-
AngularModule,
|
|
95
|
-
UiModule,
|
|
96
|
-
HasPermissionDirective,
|
|
97
|
-
TranslatePipe,
|
|
98
|
-
RoleActionSelectorComponent,
|
|
99
|
-
CompanyActionSelectorComponent,
|
|
100
|
-
UserRoleSelectorComponent,
|
|
101
|
-
UserActionSelectorComponent
|
|
102
|
-
], template: `
|
|
103
|
-
<div class="card">
|
|
104
|
-
<h3 class="text-xl font-semibold mb-4">{{ 'iam.permission.title' | translate }}</h3>
|
|
105
|
-
|
|
106
|
-
<div class="scrollbar-hide flex gap-2 mb-4 overflow-x-auto flex-nowrap">
|
|
107
|
-
@for (tab of availableTabs(); track tab.id) {
|
|
108
|
-
<button
|
|
109
|
-
fButton
|
|
110
|
-
*hasPermission="tab.permission"
|
|
111
|
-
[outlined]="activeTab() !== tab.id"
|
|
112
|
-
size="small"
|
|
113
|
-
class="shrink-0"
|
|
114
|
-
(click)="setActiveTab(tab.id)"
|
|
115
|
-
>
|
|
116
|
-
<ui-icon pButtonIcon [name]="tab.icon"></ui-icon>
|
|
117
|
-
<span pButtonLabel>{{ tab.labelKey | translate }}</span>
|
|
118
|
-
</button>
|
|
119
|
-
}
|
|
120
|
-
</div>
|
|
121
|
-
|
|
122
|
-
<div class="mt-4">
|
|
123
|
-
@switch (activeTab()) {
|
|
124
|
-
@case ('role-actions') {
|
|
125
|
-
<flusys-role-action-selector />
|
|
126
|
-
}
|
|
127
|
-
@case ('user-roles') {
|
|
128
|
-
<flusys-user-role-selector />
|
|
129
|
-
}
|
|
130
|
-
@case ('user-actions') {
|
|
131
|
-
<flusys-user-action-selector />
|
|
132
|
-
}
|
|
133
|
-
@case ('company-actions') {
|
|
134
|
-
<flusys-company-action-selector />
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
</div>
|
|
138
|
-
</div>
|
|
139
|
-
`, styles: [".scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}\n"] }]
|
|
140
|
-
}], ctorParameters: () => [] });
|
|
141
|
-
|
|
142
|
-
export { PermissionPageComponent };
|
|
143
|
-
//# sourceMappingURL=flusys-ng-iam-permission-page.component-DhwjuKxl.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flusys-ng-iam-permission-page.component-DhwjuKxl.mjs","sources":["../../../projects/ng-iam/pages/permission/permission-page.component.ts"],"sourcesContent":["import { Component, computed, effect, inject, signal, untracked } from '@angular/core';\nimport {\n AngularModule,\n HasPermissionDirective,\n ROLE_ACTION_PERMISSIONS,\n USER_ROLE_PERMISSIONS,\n USER_ACTION_PERMISSIONS,\n COMPANY_ACTION_PERMISSIONS,\n TranslatePipe,\n} from '@flusys/ng-shared';\nimport { APP_CONFIG, getPermissionMode, isCompanyFeatureEnabled } from '@flusys/ng-core';\nimport { RoleActionSelectorComponent } from '../../components/role-action-selector.component';\nimport { CompanyActionSelectorComponent } from '../../components/company-action-selector.component';\nimport { UserRoleSelectorComponent } from '../../components/user-role-selector.component';\nimport { UserActionSelectorComponent } from '../../components/user-action-selector.component';\nimport { UiModule } from '@flusys/ng-ui';\n\n/** Permission codes for each tab */\nconst TAB_PERMISSIONS = {\n 'role-actions': ROLE_ACTION_PERMISSIONS.READ,\n 'user-roles': USER_ROLE_PERMISSIONS.READ,\n 'user-actions': USER_ACTION_PERMISSIONS.READ,\n 'company-actions': COMPANY_ACTION_PERMISSIONS.READ,\n} as const;\n\n/** Main permission management interface with tabs for role/user/company permission assignment */\n@Component({\n selector: 'lib-permission-page',\n imports: [\n AngularModule,\n UiModule,\n HasPermissionDirective,\n TranslatePipe,\n RoleActionSelectorComponent,\n CompanyActionSelectorComponent,\n UserRoleSelectorComponent,\n UserActionSelectorComponent\n ],\n styles: `\n .scrollbar-hide {\n -ms-overflow-style: none;\n scrollbar-width: none;\n &::-webkit-scrollbar { display: none; }\n }\n `,\n template: `\n <div class=\"card\">\n <h3 class=\"text-xl font-semibold mb-4\">{{ 'iam.permission.title' | translate }}</h3>\n\n <div class=\"scrollbar-hide flex gap-2 mb-4 overflow-x-auto flex-nowrap\">\n @for (tab of availableTabs(); track tab.id) {\n <button\n fButton\n *hasPermission=\"tab.permission\"\n [outlined]=\"activeTab() !== tab.id\"\n size=\"small\"\n class=\"shrink-0\"\n (click)=\"setActiveTab(tab.id)\"\n >\n <ui-icon pButtonIcon [name]=\"tab.icon\"></ui-icon>\n <span pButtonLabel>{{ tab.labelKey | translate }}</span>\n </button>\n }\n </div>\n\n <div class=\"mt-4\">\n @switch (activeTab()) {\n @case ('role-actions') {\n <flusys-role-action-selector />\n }\n @case ('user-roles') {\n <flusys-user-role-selector />\n }\n @case ('user-actions') {\n <flusys-user-action-selector />\n }\n @case ('company-actions') {\n <flusys-company-action-selector />\n }\n }\n </div>\n </div>\n `,\n})\nexport class PermissionPageComponent {\n private readonly appConfig = inject(APP_CONFIG);\n\n readonly activeTab = signal<string>('');\n\n /** Available tabs based on permission mode */\n readonly availableTabs = computed(() => {\n const permissionMode = getPermissionMode(this.appConfig);\n const tabs: Array<{ id: string; labelKey: string; icon: string; permission: string }> = [];\n\n if (permissionMode === 'rbac' || permissionMode === 'full') {\n tabs.push(\n { id: 'role-actions', labelKey: 'iam.permission.role.actions', icon: 'shield', permission: TAB_PERMISSIONS['role-actions'] },\n { id: 'user-roles', labelKey: 'iam.permission.user.roles', icon: 'user', permission: TAB_PERMISSIONS['user-roles'] }\n );\n }\n\n if (permissionMode === 'direct' || permissionMode === 'full') {\n tabs.push({ id: 'user-actions', labelKey: 'iam.permission.user.actions', icon: 'key', permission: TAB_PERMISSIONS['user-actions'] });\n }\n\n if (isCompanyFeatureEnabled(this.appConfig)) {\n tabs.push({ id: 'company-actions', labelKey: 'iam.permission.company.actions', icon: 'building', permission: TAB_PERMISSIONS['company-actions'] });\n }\n\n return tabs;\n });\n\n constructor() {\n effect(() => {\n const tabs = this.availableTabs();\n const currentTab = untracked(() => this.activeTab());\n if (!currentTab || !tabs.some((t) => t.id === currentTab)) {\n if (tabs.length > 0) {\n this.activeTab.set(tabs[0].id);\n }\n }\n });\n }\n\n setActiveTab(tabId: string): void {\n this.activeTab.set(tabId);\n }\n}\n"],"names":["i1"],"mappings":"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"}
|