@flusys/ng-iam 7.1.0 → 8.0.0-beta.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.
- package/fesm2022/{flusys-ng-iam-action-form-page.component-Ci56tFEu.mjs → flusys-ng-iam-action-form-page.component-O7XSRAVo.mjs} +18 -15
- package/fesm2022/flusys-ng-iam-action-form-page.component-O7XSRAVo.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-action-list-page.component-BRi_CpGl.mjs → flusys-ng-iam-action-list-page.component-DfRFkfPh.mjs} +18 -10
- package/fesm2022/flusys-ng-iam-action-list-page.component-DfRFkfPh.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-flusys-ng-iam-BEAhj9ma.mjs → flusys-ng-iam-flusys-ng-iam--WniMPhV.mjs} +123 -168
- package/fesm2022/flusys-ng-iam-flusys-ng-iam--WniMPhV.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-iam-container.component-D0m8u6nu.mjs → flusys-ng-iam-iam-container.component-XBoIeQ0t.mjs} +4 -4
- package/fesm2022/{flusys-ng-iam-iam-container.component-D0m8u6nu.mjs.map → flusys-ng-iam-iam-container.component-XBoIeQ0t.mjs.map} +1 -1
- package/fesm2022/{flusys-ng-iam-permission-page.component-CVaxwwcS.mjs → flusys-ng-iam-permission-page.component-DhfA39qe.mjs} +12 -11
- package/fesm2022/flusys-ng-iam-permission-page.component-DhfA39qe.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-role-form-page.component-ByMbnQ53.mjs → flusys-ng-iam-role-form-page.component-BIgs_ePw.mjs} +20 -14
- package/fesm2022/flusys-ng-iam-role-form-page.component-BIgs_ePw.mjs.map +1 -0
- package/fesm2022/{flusys-ng-iam-role-list-page.component-BCtoWvFQ.mjs → flusys-ng-iam-role-list-page.component-CvJrtElJ.mjs} +17 -10
- package/fesm2022/flusys-ng-iam-role-list-page.component-CvJrtElJ.mjs.map +1 -0
- package/fesm2022/flusys-ng-iam.mjs +1 -1
- package/package.json +5 -5
- package/types/flusys-ng-iam.d.ts +4 -71
- package/fesm2022/flusys-ng-iam-action-form-page.component-Ci56tFEu.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-action-list-page.component-BRi_CpGl.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-flusys-ng-iam-BEAhj9ma.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-permission-page.component-CVaxwwcS.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-role-form-page.component-ByMbnQ53.mjs.map +0 -1
- package/fesm2022/flusys-ng-iam-role-list-page.component-BCtoWvFQ.mjs.map +0 -1
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
3
|
-
import { ApiResourceService, TranslateService, PermissionValidatorService,
|
|
2
|
+
import { Service, inject, signal, input, output, effect, Component, computed, DestroyRef, viewChild } from '@angular/core';
|
|
3
|
+
import { ApiResourceService, TranslateService, PermissionValidatorService, TranslatePipe, ROLE_ACTION_PERMISSIONS, HasPermissionDirective, COMPANY_ACTION_PERMISSIONS, COMPANY_API_PROVIDER, USER_ROLE_PERMISSIONS, USER_PERMISSION_PROVIDER, UserSelectComponent, USER_ACTION_PERMISSIONS, PROFILE_PERMISSION_PROVIDER, ACTION_PERMISSIONS, ROLE_PERMISSIONS, permissionGuard, anyPermissionGuard, resolveTranslationModule, SHARED_MESSAGES } from '@flusys/ng-shared';
|
|
4
4
|
import { APP_CONFIG, getServiceUrl, BaseApiService, isCompanyFeatureEnabled, getPermissionMode } from '@flusys/ng-core';
|
|
5
|
-
import
|
|
6
|
-
import { ConfirmationService, MessageService, UiModule } from '@flusys/ng-ui';
|
|
5
|
+
import { ConfirmationService, MessageService, FButtonDirective, SelectComponent, TooltipDirective, UiIconComponent, CheckboxComponent, TagComponent, TreeTableComponent, TreeTableTogglerComponent, TableComponent } from '@flusys/ng-ui';
|
|
7
6
|
import { HttpClient } from '@angular/common/http';
|
|
8
7
|
import { of, firstValueFrom, map as map$1 } from 'rxjs';
|
|
9
8
|
import { tap, catchError, map } from 'rxjs/operators';
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import * as i1$1 from '@angular/forms';
|
|
9
|
+
import { NgTemplateOutlet } from '@angular/common';
|
|
10
|
+
import * as i1 from '@angular/forms';
|
|
13
11
|
import { FormsModule } from '@angular/forms';
|
|
14
12
|
import { LAYOUT_AUTH_STATE } from '@flusys/ng-layout';
|
|
15
13
|
|
|
@@ -239,12 +237,11 @@ class RoleApiService extends ApiResourceService {
|
|
|
239
237
|
constructor() {
|
|
240
238
|
super('roles', 'iam');
|
|
241
239
|
}
|
|
242
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
243
|
-
static ɵprov = i0.ɵɵ
|
|
240
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RoleApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
241
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: RoleApiService });
|
|
244
242
|
}
|
|
245
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
246
|
-
type:
|
|
247
|
-
args: [{ providedIn: 'root' }]
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RoleApiService, decorators: [{
|
|
244
|
+
type: Service
|
|
248
245
|
}], ctorParameters: () => [] });
|
|
249
246
|
|
|
250
247
|
class ActionApiService extends ApiResourceService {
|
|
@@ -269,12 +266,11 @@ class ActionApiService extends ApiResourceService {
|
|
|
269
266
|
const iamBaseUrl = getServiceUrl(this.appConfig, 'iam');
|
|
270
267
|
return this.http.post(`${iamBaseUrl}/actions/tree`, body);
|
|
271
268
|
}
|
|
272
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
273
|
-
static ɵprov = i0.ɵɵ
|
|
269
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ActionApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
270
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: ActionApiService });
|
|
274
271
|
}
|
|
275
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
276
|
-
type:
|
|
277
|
-
args: [{ providedIn: 'root' }]
|
|
272
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ActionApiService, decorators: [{
|
|
273
|
+
type: Service
|
|
278
274
|
}], ctorParameters: () => [] });
|
|
279
275
|
|
|
280
276
|
function extractRequiredActionIds(logic) {
|
|
@@ -806,12 +802,11 @@ class ActionPermissionLogicService {
|
|
|
806
802
|
}
|
|
807
803
|
return `${indent}${this.t('iam.logic.invalid')}`;
|
|
808
804
|
}
|
|
809
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
810
|
-
static ɵprov = i0.ɵɵ
|
|
805
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ActionPermissionLogicService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
806
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: ActionPermissionLogicService });
|
|
811
807
|
}
|
|
812
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
813
|
-
type:
|
|
814
|
-
args: [{ providedIn: 'root' }]
|
|
808
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ActionPermissionLogicService, decorators: [{
|
|
809
|
+
type: Service
|
|
815
810
|
}] });
|
|
816
811
|
|
|
817
812
|
class PermissionApiService extends BaseApiService {
|
|
@@ -850,12 +845,11 @@ class PermissionApiService extends BaseApiService {
|
|
|
850
845
|
getMyActions() {
|
|
851
846
|
return this.http.post(this.getUrl('permissions/my-actions'), {});
|
|
852
847
|
}
|
|
853
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
854
|
-
static ɵprov = i0.ɵɵ
|
|
848
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PermissionApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
849
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: PermissionApiService });
|
|
855
850
|
}
|
|
856
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
857
|
-
type:
|
|
858
|
-
args: [{ providedIn: 'root' }]
|
|
851
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PermissionApiService, decorators: [{
|
|
852
|
+
type: Service
|
|
859
853
|
}], ctorParameters: () => [] });
|
|
860
854
|
|
|
861
855
|
/**
|
|
@@ -877,14 +871,11 @@ class MyPermissionsApiService {
|
|
|
877
871
|
getMyPermissions(dto = {}) {
|
|
878
872
|
return this.http.post(`${this.baseUrl}/my-permissions`, dto);
|
|
879
873
|
}
|
|
880
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
881
|
-
static ɵprov = i0.ɵɵ
|
|
874
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MyPermissionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
875
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: MyPermissionsApiService });
|
|
882
876
|
}
|
|
883
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
884
|
-
type:
|
|
885
|
-
args: [{
|
|
886
|
-
providedIn: 'root',
|
|
887
|
-
}]
|
|
877
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MyPermissionsApiService, decorators: [{
|
|
878
|
+
type: Service
|
|
888
879
|
}] });
|
|
889
880
|
|
|
890
881
|
class PermissionStateService {
|
|
@@ -913,12 +904,11 @@ class PermissionStateService {
|
|
|
913
904
|
isLoaded() {
|
|
914
905
|
return this._permissions() !== null && this.permissionValidator.isLoaded();
|
|
915
906
|
}
|
|
916
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
917
|
-
static ɵprov = i0.ɵɵ
|
|
907
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PermissionStateService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
908
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: PermissionStateService });
|
|
918
909
|
}
|
|
919
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
920
|
-
type:
|
|
921
|
-
args: [{ providedIn: 'root' }]
|
|
910
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PermissionStateService, decorators: [{
|
|
911
|
+
type: Service
|
|
922
912
|
}] });
|
|
923
913
|
|
|
924
914
|
// Role services
|
|
@@ -948,14 +938,12 @@ function createGroupNode(operator = 'AND') {
|
|
|
948
938
|
function createActionNode(actionId = '') {
|
|
949
939
|
return { id: crypto.randomUUID(), type: 'action', actionId };
|
|
950
940
|
}
|
|
951
|
-
/** Visual builder for AND/OR permission logic trees */
|
|
952
941
|
class LogicBuilderComponent {
|
|
953
942
|
logic = input(null, /* @ts-ignore */
|
|
954
943
|
...(ngDevMode ? [{ debugName: "logic" }] : /* istanbul ignore next */ []));
|
|
955
944
|
actions = input([], /* @ts-ignore */
|
|
956
945
|
...(ngDevMode ? [{ debugName: "actions" }] : /* istanbul ignore next */ []));
|
|
957
946
|
logicChange = output();
|
|
958
|
-
/** Internal builder tree state (private writable + public readonly pattern) */
|
|
959
947
|
_builderTree = signal(null, /* @ts-ignore */
|
|
960
948
|
...(ngDevMode ? [{ debugName: "_builderTree" }] : /* istanbul ignore next */ []));
|
|
961
949
|
builderLogic = this._builderTree.asReadonly();
|
|
@@ -1003,14 +991,12 @@ class LogicBuilderComponent {
|
|
|
1003
991
|
updateActionId(nodeId, actionId) {
|
|
1004
992
|
this.updateNode(nodeId, (node) => ({ ...node, actionId }));
|
|
1005
993
|
}
|
|
1006
|
-
/** Updates a node in the tree and emits the change */
|
|
1007
994
|
updateNode(nodeId, updater) {
|
|
1008
995
|
const tree = this._builderTree();
|
|
1009
996
|
if (!tree)
|
|
1010
997
|
return;
|
|
1011
998
|
this.updateTreeAndEmit(this.updateNodeInTree(tree, nodeId, updater));
|
|
1012
999
|
}
|
|
1013
|
-
/** Sets the tree and emits the change */
|
|
1014
1000
|
updateTreeAndEmit(tree) {
|
|
1015
1001
|
this._builderTree.set(tree);
|
|
1016
1002
|
this.logicChange.emit(toLogicNode(tree));
|
|
@@ -1035,8 +1021,8 @@ class LogicBuilderComponent {
|
|
|
1035
1021
|
.map((child) => this.removeNodeFromTree(child, targetId)),
|
|
1036
1022
|
};
|
|
1037
1023
|
}
|
|
1038
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1039
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
1024
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: LogicBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1025
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: LogicBuilderComponent, isStandalone: true, selector: "lib-logic-builder", inputs: { logic: { classPropertyName: "logic", publicName: "logic", isSignal: true, isRequired: false, transformFunction: null }, actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { logicChange: "logicChange" }, ngImport: i0, template: `
|
|
1040
1026
|
<div class="logic-builder">
|
|
1041
1027
|
<div class="flex justify-between items-center mb-3">
|
|
1042
1028
|
<h4 class="text-sm font-semibold m-0">
|
|
@@ -1074,10 +1060,8 @@ class LogicBuilderComponent {
|
|
|
1074
1060
|
<!-- Root Node -->
|
|
1075
1061
|
<div class="text-sm bg-surface-0 dark:bg-surface-900 rounded border border-surface">
|
|
1076
1062
|
<ng-container
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
context: { $implicit: builderLogic()!, depth: 0 }
|
|
1080
|
-
"
|
|
1063
|
+
[ngTemplateOutlet]="nodeTemplate"
|
|
1064
|
+
[ngTemplateOutletContext]="{ $implicit: builderLogic()!, depth: 0 }"
|
|
1081
1065
|
></ng-container>
|
|
1082
1066
|
</div>
|
|
1083
1067
|
</div>
|
|
@@ -1156,10 +1140,8 @@ class LogicBuilderComponent {
|
|
|
1156
1140
|
<div class="ml-5 mt-2 pl-3 border-l-2 border-surface">
|
|
1157
1141
|
@for (child of node.children; track child.id) {
|
|
1158
1142
|
<ng-container
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
context: { $implicit: child, depth: depth + 1 }
|
|
1162
|
-
"
|
|
1143
|
+
[ngTemplateOutlet]="nodeTemplate"
|
|
1144
|
+
[ngTemplateOutletContext]="{ $implicit: child, depth: depth + 1 }"
|
|
1163
1145
|
></ng-container>
|
|
1164
1146
|
}
|
|
1165
1147
|
</div>
|
|
@@ -1198,11 +1180,19 @@ class LogicBuilderComponent {
|
|
|
1198
1180
|
}
|
|
1199
1181
|
</div>
|
|
1200
1182
|
</ng-template>
|
|
1201
|
-
`, isInline: true, styles: [":host{display:block}.node-type{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:.25rem;font-weight:600;font-size:.75rem;text-transform:uppercase}.node-type.group{background-color:var(--f-blue-100, #dbeafe);color:var(--f-blue-700, #1e40af)}.node-type.action{background-color:var(--f-green-100, #d1fae5);color:var(--f-green-700, #065f46)}:host-context(.app-dark) .node-type.group{background-color:#3b82f633;color:var(--f-blue-400, #60a5fa)}:host-context(.app-dark) .node-type.action{background-color:#22c55e33;color:var(--f-green-400, #4ade80)}.operator-badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:9999px;font-weight:600;font-size:.75rem;cursor:pointer;transition:opacity .2s}.operator-badge.and{background-color:var(--f-yellow-100, #fef3c7);color:var(--f-yellow-700, #92400e)}.operator-badge.or{background-color:var(--f-indigo-100, #e0e7ff);color:var(--f-indigo-700, #3730a3)}:host-context(.app-dark) .operator-badge.and{background-color:#eab30833;color:var(--f-yellow-400, #facc15)}:host-context(.app-dark) .operator-badge.or{background-color:#6366f133;color:var(--f-indigo-400, #818cf8)}.operator-badge:hover{opacity:.8}.action-select{background-color:var(--f-surface-0, #ffffff);color:var(--f-text-color, #1f2937)}:host-context(.app-dark) .action-select{background-color:var(--f-surface-900, #1f2937);color:var(--f-text-color, #f9fafb)}.action-select:focus{outline:none;border-color:var(--f-primary-color, #3b82f6)}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
1183
|
+
`, isInline: true, styles: [":host{display:block}.node-type{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:.25rem;font-weight:600;font-size:.75rem;text-transform:uppercase}.node-type.group{background-color:var(--f-blue-100, #dbeafe);color:var(--f-blue-700, #1e40af)}.node-type.action{background-color:var(--f-green-100, #d1fae5);color:var(--f-green-700, #065f46)}:host-context(.app-dark) .node-type.group{background-color:#3b82f633;color:var(--f-blue-400, #60a5fa)}:host-context(.app-dark) .node-type.action{background-color:#22c55e33;color:var(--f-green-400, #4ade80)}.operator-badge{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:9999px;font-weight:600;font-size:.75rem;cursor:pointer;transition:opacity .2s}.operator-badge.and{background-color:var(--f-yellow-100, #fef3c7);color:var(--f-yellow-700, #92400e)}.operator-badge.or{background-color:var(--f-indigo-100, #e0e7ff);color:var(--f-indigo-700, #3730a3)}:host-context(.app-dark) .operator-badge.and{background-color:#eab30833;color:var(--f-yellow-400, #facc15)}:host-context(.app-dark) .operator-badge.or{background-color:#6366f133;color:var(--f-indigo-400, #818cf8)}.operator-badge:hover{opacity:.8}.action-select{background-color:var(--f-surface-0, #ffffff);color:var(--f-text-color, #1f2937)}:host-context(.app-dark) .action-select{background-color:var(--f-surface-900, #1f2937);color:var(--f-text-color, #f9fafb)}.action-select:focus{outline:none;border-color:var(--f-primary-color, #3b82f6)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1202
1184
|
}
|
|
1203
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1185
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: LogicBuilderComponent, decorators: [{
|
|
1204
1186
|
type: Component,
|
|
1205
|
-
args: [{ selector: 'lib-logic-builder', imports: [
|
|
1187
|
+
args: [{ selector: 'lib-logic-builder', imports: [
|
|
1188
|
+
FormsModule,
|
|
1189
|
+
NgTemplateOutlet,
|
|
1190
|
+
FButtonDirective,
|
|
1191
|
+
SelectComponent,
|
|
1192
|
+
TooltipDirective,
|
|
1193
|
+
UiIconComponent,
|
|
1194
|
+
TranslatePipe,
|
|
1195
|
+
], template: `
|
|
1206
1196
|
<div class="logic-builder">
|
|
1207
1197
|
<div class="flex justify-between items-center mb-3">
|
|
1208
1198
|
<h4 class="text-sm font-semibold m-0">
|
|
@@ -1240,10 +1230,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
1240
1230
|
<!-- Root Node -->
|
|
1241
1231
|
<div class="text-sm bg-surface-0 dark:bg-surface-900 rounded border border-surface">
|
|
1242
1232
|
<ng-container
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
context: { $implicit: builderLogic()!, depth: 0 }
|
|
1246
|
-
"
|
|
1233
|
+
[ngTemplateOutlet]="nodeTemplate"
|
|
1234
|
+
[ngTemplateOutletContext]="{ $implicit: builderLogic()!, depth: 0 }"
|
|
1247
1235
|
></ng-container>
|
|
1248
1236
|
</div>
|
|
1249
1237
|
</div>
|
|
@@ -1322,10 +1310,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
1322
1310
|
<div class="ml-5 mt-2 pl-3 border-l-2 border-surface">
|
|
1323
1311
|
@for (child of node.children; track child.id) {
|
|
1324
1312
|
<ng-container
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
context: { $implicit: child, depth: depth + 1 }
|
|
1328
|
-
"
|
|
1313
|
+
[ngTemplateOutlet]="nodeTemplate"
|
|
1314
|
+
[ngTemplateOutletContext]="{ $implicit: child, depth: depth + 1 }"
|
|
1329
1315
|
></ng-container>
|
|
1330
1316
|
}
|
|
1331
1317
|
</div>
|
|
@@ -1705,8 +1691,8 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
|
|
|
1705
1691
|
this.saving.set(false);
|
|
1706
1692
|
}
|
|
1707
1693
|
}
|
|
1708
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
1709
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
1694
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RoleActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1695
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: RoleActionSelectorComponent, isStandalone: true, selector: "flusys-role-action-selector", viewQueries: [{ propertyName: "roleSelectRef", first: true, predicate: ["roleSelect"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
1710
1696
|
<div class="role-action-selector">
|
|
1711
1697
|
<div class="surface-card p-4 rounded-border mb-4 shadow-sm">
|
|
1712
1698
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
|
|
@@ -1980,11 +1966,23 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
|
|
|
1980
1966
|
}
|
|
1981
1967
|
}
|
|
1982
1968
|
</div>
|
|
1983
|
-
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}.validation-warning{background-color:var(--f-yellow-50, #fefce8);border-left:4px solid var(--f-yellow-500, #eab308);color:var(--f-yellow-700, #a16207)}:host-context(.app-dark) .validation-warning{background-color:#eab3081a;color:var(--f-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--f-red-50, rgba(239, 68, 68, .1))!important}:host-context(.app-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1
|
|
1969
|
+
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}.validation-warning{background-color:var(--f-yellow-50, #fefce8);border-left:4px solid var(--f-yellow-500, #eab308);color:var(--f-yellow-700, #a16207)}:host-context(.app-dark) .validation-warning{background-color:#eab3081a;color:var(--f-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--f-red-50, rgba(239, 68, 68, .1))!important}:host-context(.app-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: TreeTableComponent, selector: "f-treetable", inputs: ["value", "loading", "dataKey", "styleClass", "tableStyle", "scrollable", "scrollHeight", "resizableColumns", "lazy", "totalRecords", "paginator", "first", "rows", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "globalFilterFields", "filterDelay", "selectionMode", "sortMode", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onNodeExpand", "onNodeCollapse", "onNodeSelect", "onNodeUnselect", "onRowContextMenu"] }, { kind: "component", type: TreeTableTogglerComponent, selector: "f-treetabletoggler", inputs: ["rowNode"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
1984
1970
|
}
|
|
1985
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
1971
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RoleActionSelectorComponent, decorators: [{
|
|
1986
1972
|
type: Component,
|
|
1987
|
-
args: [{ selector: 'flusys-role-action-selector', imports: [
|
|
1973
|
+
args: [{ selector: 'flusys-role-action-selector', imports: [
|
|
1974
|
+
FormsModule,
|
|
1975
|
+
CheckboxComponent,
|
|
1976
|
+
FButtonDirective,
|
|
1977
|
+
SelectComponent,
|
|
1978
|
+
TagComponent,
|
|
1979
|
+
TooltipDirective,
|
|
1980
|
+
TreeTableComponent,
|
|
1981
|
+
TreeTableTogglerComponent,
|
|
1982
|
+
UiIconComponent,
|
|
1983
|
+
HasPermissionDirective,
|
|
1984
|
+
TranslatePipe,
|
|
1985
|
+
], template: `
|
|
1988
1986
|
<div class="role-action-selector">
|
|
1989
1987
|
<div class="surface-card p-4 rounded-border mb-4 shadow-sm">
|
|
1990
1988
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
|
|
@@ -2422,8 +2420,8 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
|
|
|
2422
2420
|
},
|
|
2423
2421
|
});
|
|
2424
2422
|
}
|
|
2425
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
2426
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
2423
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2424
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: CompanyActionSelectorComponent, isStandalone: true, selector: "flusys-company-action-selector", viewQueries: [{ propertyName: "companySelectRef", first: true, predicate: ["companySelect"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
2427
2425
|
<div class="company-action-selector">
|
|
2428
2426
|
<div class="surface-card p-4 rounded-border mb-4 shadow-sm">
|
|
2429
2427
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
|
|
@@ -2690,11 +2688,23 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
|
|
|
2690
2688
|
}
|
|
2691
2689
|
}
|
|
2692
2690
|
</div>
|
|
2693
|
-
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}.validation-warning{background-color:var(--f-yellow-50, #fefce8);border-left:4px solid var(--f-yellow-500, #eab308);color:var(--f-yellow-700, #a16207)}:host-context(.app-dark) .validation-warning{background-color:#eab3081a;color:var(--f-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--f-red-50, rgba(239, 68, 68, .1))!important}:host-context(.app-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "
|
|
2691
|
+
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}.validation-warning{background-color:var(--f-yellow-50, #fefce8);border-left:4px solid var(--f-yellow-500, #eab308);color:var(--f-yellow-700, #a16207)}:host-context(.app-dark) .validation-warning{background-color:#eab3081a;color:var(--f-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--f-red-50, rgba(239, 68, 68, .1))!important}:host-context(.app-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: TreeTableComponent, selector: "f-treetable", inputs: ["value", "loading", "dataKey", "styleClass", "tableStyle", "scrollable", "scrollHeight", "resizableColumns", "lazy", "totalRecords", "paginator", "first", "rows", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "globalFilterFields", "filterDelay", "selectionMode", "sortMode", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onNodeExpand", "onNodeCollapse", "onNodeSelect", "onNodeUnselect", "onRowContextMenu"] }, { kind: "component", type: TreeTableTogglerComponent, selector: "f-treetabletoggler", inputs: ["rowNode"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
2694
2692
|
}
|
|
2695
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
2693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CompanyActionSelectorComponent, decorators: [{
|
|
2696
2694
|
type: Component,
|
|
2697
|
-
args: [{ selector: 'flusys-company-action-selector', imports: [
|
|
2695
|
+
args: [{ selector: 'flusys-company-action-selector', imports: [
|
|
2696
|
+
CheckboxComponent,
|
|
2697
|
+
FButtonDirective,
|
|
2698
|
+
SelectComponent,
|
|
2699
|
+
TagComponent,
|
|
2700
|
+
TooltipDirective,
|
|
2701
|
+
TreeTableComponent,
|
|
2702
|
+
TreeTableTogglerComponent,
|
|
2703
|
+
UiIconComponent,
|
|
2704
|
+
FormsModule,
|
|
2705
|
+
HasPermissionDirective,
|
|
2706
|
+
TranslatePipe,
|
|
2707
|
+
], template: `
|
|
2698
2708
|
<div class="company-action-selector">
|
|
2699
2709
|
<div class="surface-card p-4 rounded-border mb-4 shadow-sm">
|
|
2700
2710
|
<div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
|
|
@@ -2965,38 +2975,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
2965
2975
|
}], ctorParameters: () => [], propDecorators: { companySelectRef: [{ type: i0.ViewChild, args: ['companySelect', { isSignal: true }] }] } });
|
|
2966
2976
|
|
|
2967
2977
|
/**
|
|
2968
|
-
*
|
|
2969
|
-
*
|
|
2970
|
-
*
|
|
2971
|
-
*
|
|
2972
|
-
* **Architecture:**
|
|
2973
|
-
* - Presentation: DataTable for role list
|
|
2974
|
-
* - Business Logic: Role assignment without dependency validation
|
|
2975
|
-
* - State: Signals with computed dependencies
|
|
2976
|
-
*
|
|
2977
|
-
* **Core Features:**
|
|
2978
|
-
* - User dropdown with async loading
|
|
2979
|
-
* - Branch selector (if company feature enabled)
|
|
2980
|
-
* - Role assignment management (add/remove)
|
|
2981
|
-
* - Real-time change tracking
|
|
2982
|
-
*
|
|
2983
|
-
* **Granularity:**
|
|
2984
|
-
* - Company-wide: branchId = undefined
|
|
2985
|
-
* - Branch-specific: branchId = selected value
|
|
2986
|
-
*
|
|
2987
|
-
* **Performance:**
|
|
2988
|
-
* - Computed signals for reactive updates
|
|
2989
|
-
* - Branch filtering on company context change
|
|
2990
|
-
*
|
|
2991
|
-
* @example
|
|
2992
|
-
* ```html
|
|
2993
|
-
* <flusys-user-role-selector />
|
|
2994
|
-
* ```
|
|
2978
|
+
* Manages user role assignments with branch-level granularity:
|
|
2979
|
+
* `branchId === undefined` means a company-wide assignment, a set value
|
|
2980
|
+
* scopes the assignment to that specific branch.
|
|
2995
2981
|
*/
|
|
2996
2982
|
class UserRoleSelectorComponent {
|
|
2997
|
-
// Permission constants for template
|
|
2998
2983
|
USER_ROLE_PERMISSIONS = USER_ROLE_PERMISSIONS;
|
|
2999
|
-
// Dependencies
|
|
3000
2984
|
appConfig = inject(APP_CONFIG);
|
|
3001
2985
|
companyContext = inject(LAYOUT_AUTH_STATE);
|
|
3002
2986
|
userPermissionProvider = inject(USER_PERMISSION_PROVIDER);
|
|
@@ -3030,30 +3014,25 @@ class UserRoleSelectorComponent {
|
|
|
3030
3014
|
}
|
|
3031
3015
|
this.selectedUserId.set(userId);
|
|
3032
3016
|
}
|
|
3033
|
-
// State - User/Branch Selection
|
|
3034
3017
|
selectedUserId = signal(null, /* @ts-ignore */
|
|
3035
3018
|
...(ngDevMode ? [{ debugName: "selectedUserId" }] : /* istanbul ignore next */ []));
|
|
3036
3019
|
selectedBranchId = signal(undefined, /* @ts-ignore */
|
|
3037
3020
|
...(ngDevMode ? [{ debugName: "selectedBranchId" }] : /* istanbul ignore next */ []));
|
|
3038
3021
|
branches = signal([], /* @ts-ignore */
|
|
3039
3022
|
...(ngDevMode ? [{ debugName: "branches" }] : /* istanbul ignore next */ []));
|
|
3040
|
-
// State - Loading/Saving
|
|
3041
3023
|
loading = signal(false, /* @ts-ignore */
|
|
3042
3024
|
...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
3043
3025
|
saving = signal(false, /* @ts-ignore */
|
|
3044
3026
|
...(ngDevMode ? [{ debugName: "saving" }] : /* istanbul ignore next */ []));
|
|
3045
|
-
// State - Roles (Business Logic)
|
|
3046
3027
|
_roles = signal([], /* @ts-ignore */
|
|
3047
3028
|
...(ngDevMode ? [{ debugName: "_roles" }] : /* istanbul ignore next */ []));
|
|
3048
3029
|
roles = this._roles.asReadonly();
|
|
3049
|
-
// State - Selection
|
|
3050
3030
|
_selectionMap = signal({}, /* @ts-ignore */
|
|
3051
3031
|
...(ngDevMode ? [{ debugName: "_selectionMap" }] : /* istanbul ignore next */ []));
|
|
3052
3032
|
selectionMap = this._selectionMap.asReadonly();
|
|
3053
3033
|
_initialSelection = signal({}, /* @ts-ignore */
|
|
3054
3034
|
...(ngDevMode ? [{ debugName: "_initialSelection" }] : /* istanbul ignore next */ []));
|
|
3055
3035
|
initialSelection = this._initialSelection.asReadonly();
|
|
3056
|
-
// Computed - UI Flags
|
|
3057
3036
|
showBranchSelector = computed(() => isCompanyFeatureEnabled(this.appConfig) === true, /* @ts-ignore */
|
|
3058
3037
|
...(ngDevMode ? [{ debugName: "showBranchSelector" }] : /* istanbul ignore next */ []));
|
|
3059
3038
|
filteredBranches = computed(() => {
|
|
@@ -3063,7 +3042,6 @@ class UserRoleSelectorComponent {
|
|
|
3063
3042
|
return this.branches().filter((b) => b.companyId === currentCompanyId);
|
|
3064
3043
|
}, /* @ts-ignore */
|
|
3065
3044
|
...(ngDevMode ? [{ debugName: "filteredBranches" }] : /* istanbul ignore next */ []));
|
|
3066
|
-
// Computed - Selection State
|
|
3067
3045
|
allSelected = computed(() => {
|
|
3068
3046
|
const selMap = this.selectionMap();
|
|
3069
3047
|
const total = this.roles().length;
|
|
@@ -3073,7 +3051,6 @@ class UserRoleSelectorComponent {
|
|
|
3073
3051
|
return selected === total;
|
|
3074
3052
|
}, /* @ts-ignore */
|
|
3075
3053
|
...(ngDevMode ? [{ debugName: "allSelected" }] : /* istanbul ignore next */ []));
|
|
3076
|
-
// Computed - Change Detection
|
|
3077
3054
|
hasChanges = computed(() => {
|
|
3078
3055
|
const current = this.selectionMap();
|
|
3079
3056
|
const initial = this.initialSelection();
|
|
@@ -3084,7 +3061,6 @@ class UserRoleSelectorComponent {
|
|
|
3084
3061
|
return currentKeys.some((key) => current[key] !== initial[key]);
|
|
3085
3062
|
}, /* @ts-ignore */
|
|
3086
3063
|
...(ngDevMode ? [{ debugName: "hasChanges" }] : /* istanbul ignore next */ []));
|
|
3087
|
-
// Computed - Pending Changes
|
|
3088
3064
|
pendingAdd = computed(() => {
|
|
3089
3065
|
const current = this.selectionMap();
|
|
3090
3066
|
const initial = this.initialSelection();
|
|
@@ -3099,13 +3075,11 @@ class UserRoleSelectorComponent {
|
|
|
3099
3075
|
return allRoles.filter((role) => !current[role.id] && initial[role.id]);
|
|
3100
3076
|
}, /* @ts-ignore */
|
|
3101
3077
|
...(ngDevMode ? [{ debugName: "pendingRemove" }] : /* istanbul ignore next */ []));
|
|
3102
|
-
// Computed - Save Button State
|
|
3103
3078
|
canSave = computed(() => {
|
|
3104
3079
|
return this.hasChanges() && !this.saving();
|
|
3105
3080
|
}, /* @ts-ignore */
|
|
3106
3081
|
...(ngDevMode ? [{ debugName: "canSave" }] : /* istanbul ignore next */ []));
|
|
3107
3082
|
constructor() {
|
|
3108
|
-
// Effect: Load user branches and data when user changes
|
|
3109
3083
|
effect(() => {
|
|
3110
3084
|
const userId = this.selectedUserId();
|
|
3111
3085
|
if (userId) {
|
|
@@ -3120,7 +3094,6 @@ class UserRoleSelectorComponent {
|
|
|
3120
3094
|
this.resetState();
|
|
3121
3095
|
}
|
|
3122
3096
|
});
|
|
3123
|
-
// Effect: Reload data when branch changes
|
|
3124
3097
|
effect(() => {
|
|
3125
3098
|
const userId = this.selectedUserId();
|
|
3126
3099
|
const branchId = this.selectedBranchId();
|
|
@@ -3131,9 +3104,6 @@ class UserRoleSelectorComponent {
|
|
|
3131
3104
|
}
|
|
3132
3105
|
});
|
|
3133
3106
|
}
|
|
3134
|
-
/**
|
|
3135
|
-
* Load user's permitted branches
|
|
3136
|
-
*/
|
|
3137
3107
|
async loadUserBranches(userId) {
|
|
3138
3108
|
try {
|
|
3139
3109
|
const companyId = this.companyContext.currentCompanyInfo()?.id || undefined;
|
|
@@ -3153,9 +3123,6 @@ class UserRoleSelectorComponent {
|
|
|
3153
3123
|
// Error toast handled by global interceptor
|
|
3154
3124
|
}
|
|
3155
3125
|
}
|
|
3156
|
-
/**
|
|
3157
|
-
* Load roles and assignments for selected user
|
|
3158
|
-
*/
|
|
3159
3126
|
async loadData() {
|
|
3160
3127
|
const userId = this.selectedUserId();
|
|
3161
3128
|
if (!userId)
|
|
@@ -3163,19 +3130,16 @@ class UserRoleSelectorComponent {
|
|
|
3163
3130
|
const branchId = this.selectedBranchId();
|
|
3164
3131
|
this.loading.set(true);
|
|
3165
3132
|
try {
|
|
3166
|
-
// Load all roles
|
|
3167
3133
|
const rolesResponse = await this.roleApi.getAll({
|
|
3168
3134
|
pagination: { currentPage: 0, pageSize: MAX_DROPDOWN_ITEMS },
|
|
3169
3135
|
});
|
|
3170
3136
|
const rolesList = rolesResponse?.data ?? [];
|
|
3171
3137
|
this._roles.set(rolesList);
|
|
3172
|
-
// Load existing user-role assignments
|
|
3173
3138
|
const query = isCompanyFeatureEnabled(this.appConfig) && branchId
|
|
3174
3139
|
? { branchId }
|
|
3175
3140
|
: undefined;
|
|
3176
3141
|
const assignedResponse = await firstValueFrom(this.permissionApi.getUserRoles(userId, query));
|
|
3177
3142
|
const assignedIds = new Set((assignedResponse?.data || []).map((r) => r.roleId));
|
|
3178
|
-
// Build selection map
|
|
3179
3143
|
const selMap = {};
|
|
3180
3144
|
rolesList.forEach((role) => {
|
|
3181
3145
|
selMap[role.id] = assignedIds.has(role.id);
|
|
@@ -3190,9 +3154,6 @@ class UserRoleSelectorComponent {
|
|
|
3190
3154
|
this.loading.set(false);
|
|
3191
3155
|
}
|
|
3192
3156
|
}
|
|
3193
|
-
/**
|
|
3194
|
-
* Get tooltip for role checkbox
|
|
3195
|
-
*/
|
|
3196
3157
|
getTooltip(role) {
|
|
3197
3158
|
const selMap = this.selectionMap();
|
|
3198
3159
|
const isCurrentlySelected = selMap[role.id];
|
|
@@ -3201,23 +3162,14 @@ class UserRoleSelectorComponent {
|
|
|
3201
3162
|
}
|
|
3202
3163
|
return `[${this.translate('shared.add')}] ${this.translate('iam.tooltip.click.to.assign.role.to.user')}`;
|
|
3203
3164
|
}
|
|
3204
|
-
/**
|
|
3205
|
-
* Handle role checkbox toggle
|
|
3206
|
-
*/
|
|
3207
3165
|
onRoleToggle(role, newValue) {
|
|
3208
3166
|
const selMap = { ...this.selectionMap() };
|
|
3209
3167
|
selMap[role.id] = newValue;
|
|
3210
3168
|
this._selectionMap.set(selMap);
|
|
3211
3169
|
}
|
|
3212
|
-
/**
|
|
3213
|
-
* Toggle all roles
|
|
3214
|
-
*/
|
|
3215
3170
|
toggleAll() {
|
|
3216
3171
|
this.setAllSelections(!this.allSelected());
|
|
3217
3172
|
}
|
|
3218
|
-
/**
|
|
3219
|
-
* Set all role selections to a given value
|
|
3220
|
-
*/
|
|
3221
3173
|
setAllSelections(value) {
|
|
3222
3174
|
const selMap = {};
|
|
3223
3175
|
this.roles().forEach((role) => {
|
|
@@ -3225,16 +3177,12 @@ class UserRoleSelectorComponent {
|
|
|
3225
3177
|
});
|
|
3226
3178
|
this._selectionMap.set(selMap);
|
|
3227
3179
|
}
|
|
3228
|
-
/**
|
|
3229
|
-
* Save changes to backend
|
|
3230
|
-
*/
|
|
3231
3180
|
async saveChanges() {
|
|
3232
3181
|
const userId = this.selectedUserId();
|
|
3233
3182
|
if (!userId)
|
|
3234
3183
|
return;
|
|
3235
3184
|
const branchId = this.selectedBranchId();
|
|
3236
3185
|
const companyId = this.companyContext.currentCompanyInfo()?.id || undefined;
|
|
3237
|
-
// Validate company context if feature enabled
|
|
3238
3186
|
if (isCompanyFeatureEnabled(this.appConfig) && !companyId) {
|
|
3239
3187
|
this.messageService.add({
|
|
3240
3188
|
severity: 'warn',
|
|
@@ -3243,7 +3191,6 @@ class UserRoleSelectorComponent {
|
|
|
3243
3191
|
});
|
|
3244
3192
|
return;
|
|
3245
3193
|
}
|
|
3246
|
-
// Build payload
|
|
3247
3194
|
const items = [];
|
|
3248
3195
|
this.pendingAdd().forEach((role) => {
|
|
3249
3196
|
items.push({ id: role.id, action: 'add' });
|
|
@@ -3272,7 +3219,6 @@ class UserRoleSelectorComponent {
|
|
|
3272
3219
|
? this.translate(response.messageKey, response.messageVariables)
|
|
3273
3220
|
: response?.message,
|
|
3274
3221
|
});
|
|
3275
|
-
// Update baseline
|
|
3276
3222
|
this._initialSelection.set({ ...this.selectionMap() });
|
|
3277
3223
|
}
|
|
3278
3224
|
catch {
|
|
@@ -3282,16 +3228,13 @@ class UserRoleSelectorComponent {
|
|
|
3282
3228
|
this.saving.set(false);
|
|
3283
3229
|
}
|
|
3284
3230
|
}
|
|
3285
|
-
/**
|
|
3286
|
-
* Reset component state
|
|
3287
|
-
*/
|
|
3288
3231
|
resetState() {
|
|
3289
3232
|
this._roles.set([]);
|
|
3290
3233
|
this._selectionMap.set({});
|
|
3291
3234
|
this._initialSelection.set({});
|
|
3292
3235
|
}
|
|
3293
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
3294
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
3236
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserRoleSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3237
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UserRoleSelectorComponent, isStandalone: true, selector: "flusys-user-role-selector", viewQueries: [{ propertyName: "userSelectRef", first: true, predicate: ["userSelect"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
3295
3238
|
<div class="user-role-selector">
|
|
3296
3239
|
<!-- User and Branch Selectors -->
|
|
3297
3240
|
<div class="surface-card p-4 rounded-border mb-4 shadow-sm">
|
|
@@ -3565,14 +3508,18 @@ class UserRoleSelectorComponent {
|
|
|
3565
3508
|
}
|
|
3566
3509
|
}
|
|
3567
3510
|
</div>
|
|
3568
|
-
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
3511
|
+
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: UserSelectComponent, selector: "lib-user-select", inputs: ["showClear", "value"], outputs: ["valueChange", "userSelected"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
3569
3512
|
}
|
|
3570
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
3513
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserRoleSelectorComponent, decorators: [{
|
|
3571
3514
|
type: Component,
|
|
3572
3515
|
args: [{ selector: 'flusys-user-role-selector', imports: [
|
|
3573
|
-
CommonModule,
|
|
3574
3516
|
FormsModule,
|
|
3575
|
-
|
|
3517
|
+
CheckboxComponent,
|
|
3518
|
+
FButtonDirective,
|
|
3519
|
+
SelectComponent,
|
|
3520
|
+
TableComponent,
|
|
3521
|
+
TooltipDirective,
|
|
3522
|
+
UiIconComponent,
|
|
3576
3523
|
HasPermissionDirective,
|
|
3577
3524
|
UserSelectComponent,
|
|
3578
3525
|
TranslatePipe,
|
|
@@ -4066,8 +4013,8 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
|
|
|
4066
4013
|
this.saving.set(false);
|
|
4067
4014
|
}
|
|
4068
4015
|
}
|
|
4069
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
4070
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.
|
|
4016
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4017
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: UserActionSelectorComponent, isStandalone: true, selector: "flusys-user-action-selector", viewQueries: [{ propertyName: "userSelectRef", first: true, predicate: ["userSelect"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
4071
4018
|
<div class="user-action-selector">
|
|
4072
4019
|
<div class="surface-card p-4 rounded-border mb-4 shadow-sm">
|
|
4073
4020
|
<div
|
|
@@ -4398,13 +4345,20 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
|
|
|
4398
4345
|
}
|
|
4399
4346
|
}
|
|
4400
4347
|
</div>
|
|
4401
|
-
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}.validation-warning{background-color:var(--f-yellow-50, #fefce8);border-left:4px solid var(--f-yellow-500, #eab308);color:var(--f-yellow-700, #a16207)}:host-context(.app-dark) .validation-warning{background-color:#eab3081a;color:var(--f-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--f-red-50, rgba(239, 68, 68, .1))!important}:host-context(.app-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1
|
|
4348
|
+
`, isInline: true, styles: [":host{display:block}.empty-state-icon{width:3rem;height:3rem;border-radius:9999px;display:flex;align-items:center;justify-content:center;background-color:var(--f-primary-50, rgba(59, 130, 246, .08))}:host-context(.app-dark) .empty-state-icon{background-color:#60a5fa1f}.validation-warning{background-color:var(--f-yellow-50, #fefce8);border-left:4px solid var(--f-yellow-500, #eab308);color:var(--f-yellow-700, #a16207)}:host-context(.app-dark) .validation-warning{background-color:#eab3081a;color:var(--f-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--f-red-50, rgba(239, 68, 68, .1))!important}:host-context(.app-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "readonly", "inputId", "invalid", "indeterminate", "variant", "size", "touched", "styleClass", "style", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: TreeTableComponent, selector: "f-treetable", inputs: ["value", "loading", "dataKey", "styleClass", "tableStyle", "scrollable", "scrollHeight", "resizableColumns", "lazy", "totalRecords", "paginator", "first", "rows", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "globalFilterFields", "filterDelay", "selectionMode", "sortMode", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onNodeExpand", "onNodeCollapse", "onNodeSelect", "onNodeUnselect", "onRowContextMenu"] }, { kind: "component", type: TreeTableTogglerComponent, selector: "f-treetabletoggler", inputs: ["rowNode"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: UserSelectComponent, selector: "lib-user-select", inputs: ["showClear", "value"], outputs: ["valueChange", "userSelected"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
|
|
4402
4349
|
}
|
|
4403
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
4350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserActionSelectorComponent, decorators: [{
|
|
4404
4351
|
type: Component,
|
|
4405
4352
|
args: [{ selector: 'flusys-user-action-selector', imports: [
|
|
4406
4353
|
FormsModule,
|
|
4407
|
-
|
|
4354
|
+
CheckboxComponent,
|
|
4355
|
+
FButtonDirective,
|
|
4356
|
+
SelectComponent,
|
|
4357
|
+
TagComponent,
|
|
4358
|
+
TooltipDirective,
|
|
4359
|
+
TreeTableComponent,
|
|
4360
|
+
TreeTableTogglerComponent,
|
|
4361
|
+
UiIconComponent,
|
|
4408
4362
|
HasPermissionDirective,
|
|
4409
4363
|
UserSelectComponent,
|
|
4410
4364
|
TranslatePipe,
|
|
@@ -4794,11 +4748,12 @@ class ProfilePermissionProviderAdapter {
|
|
|
4794
4748
|
})),
|
|
4795
4749
|
})));
|
|
4796
4750
|
}
|
|
4797
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.
|
|
4798
|
-
static ɵprov = i0.ɵɵ
|
|
4751
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ProfilePermissionProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
4752
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.5", ngImport: i0, type: ProfilePermissionProviderAdapter, autoProvided: false });
|
|
4799
4753
|
}
|
|
4800
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.
|
|
4801
|
-
type:
|
|
4754
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: ProfilePermissionProviderAdapter, decorators: [{
|
|
4755
|
+
type: Service,
|
|
4756
|
+
args: [{ autoProvided: false }]
|
|
4802
4757
|
}] });
|
|
4803
4758
|
|
|
4804
4759
|
/** Registers IAM provider adapters for ng-shared interfaces */
|
|
@@ -4845,7 +4800,7 @@ const IAM_ROUTES = [
|
|
|
4845
4800
|
fallbackMessages: { ...IAM_MESSAGES, ...SHARED_MESSAGES },
|
|
4846
4801
|
}),
|
|
4847
4802
|
},
|
|
4848
|
-
loadComponent: () => import('./flusys-ng-iam-iam-container.component-
|
|
4803
|
+
loadComponent: () => import('./flusys-ng-iam-iam-container.component-XBoIeQ0t.mjs').then((m) => m.IamContainerComponent),
|
|
4849
4804
|
children: [
|
|
4850
4805
|
// Actions Management
|
|
4851
4806
|
{
|
|
@@ -4854,15 +4809,15 @@ const IAM_ROUTES = [
|
|
|
4854
4809
|
children: [
|
|
4855
4810
|
{
|
|
4856
4811
|
path: '',
|
|
4857
|
-
loadComponent: () => import('./flusys-ng-iam-action-list-page.component-
|
|
4812
|
+
loadComponent: () => import('./flusys-ng-iam-action-list-page.component-DfRFkfPh.mjs').then((m) => m.ActionListPageComponent),
|
|
4858
4813
|
},
|
|
4859
4814
|
{
|
|
4860
4815
|
path: 'new',
|
|
4861
|
-
loadComponent: () => import('./flusys-ng-iam-action-form-page.component-
|
|
4816
|
+
loadComponent: () => import('./flusys-ng-iam-action-form-page.component-O7XSRAVo.mjs').then((m) => m.ActionFormPageComponent),
|
|
4862
4817
|
},
|
|
4863
4818
|
{
|
|
4864
4819
|
path: ':id',
|
|
4865
|
-
loadComponent: () => import('./flusys-ng-iam-action-form-page.component-
|
|
4820
|
+
loadComponent: () => import('./flusys-ng-iam-action-form-page.component-O7XSRAVo.mjs').then((m) => m.ActionFormPageComponent),
|
|
4866
4821
|
},
|
|
4867
4822
|
],
|
|
4868
4823
|
},
|
|
@@ -4873,15 +4828,15 @@ const IAM_ROUTES = [
|
|
|
4873
4828
|
children: [
|
|
4874
4829
|
{
|
|
4875
4830
|
path: '',
|
|
4876
|
-
loadComponent: () => import('./flusys-ng-iam-role-list-page.component-
|
|
4831
|
+
loadComponent: () => import('./flusys-ng-iam-role-list-page.component-CvJrtElJ.mjs').then((m) => m.RoleListPageComponent),
|
|
4877
4832
|
},
|
|
4878
4833
|
{
|
|
4879
4834
|
path: 'new',
|
|
4880
|
-
loadComponent: () => import('./flusys-ng-iam-role-form-page.component-
|
|
4835
|
+
loadComponent: () => import('./flusys-ng-iam-role-form-page.component-BIgs_ePw.mjs').then((m) => m.RoleFormPageComponent),
|
|
4881
4836
|
},
|
|
4882
4837
|
{
|
|
4883
4838
|
path: ':id',
|
|
4884
|
-
loadComponent: () => import('./flusys-ng-iam-role-form-page.component-
|
|
4839
|
+
loadComponent: () => import('./flusys-ng-iam-role-form-page.component-BIgs_ePw.mjs').then((m) => m.RoleFormPageComponent),
|
|
4885
4840
|
},
|
|
4886
4841
|
],
|
|
4887
4842
|
},
|
|
@@ -4896,7 +4851,7 @@ const IAM_ROUTES = [
|
|
|
4896
4851
|
COMPANY_ACTION_PERMISSIONS.READ,
|
|
4897
4852
|
]),
|
|
4898
4853
|
],
|
|
4899
|
-
loadComponent: () => import('./flusys-ng-iam-permission-page.component-
|
|
4854
|
+
loadComponent: () => import('./flusys-ng-iam-permission-page.component-DhfA39qe.mjs').then((m) => m.PermissionPageComponent),
|
|
4900
4855
|
},
|
|
4901
4856
|
// Default redirect to the first tab the user has permission to see
|
|
4902
4857
|
{
|
|
@@ -4915,4 +4870,4 @@ const IAM_ROUTES = [
|
|
|
4915
4870
|
*/
|
|
4916
4871
|
|
|
4917
4872
|
export { ActionApiService as A, CompanyActionSelectorComponent as C, IAM_MESSAGES as I, LogicBuilderComponent as L, MAX_DROPDOWN_ITEMS as M, PermissionApiService as P, RoleApiService as R, UserRoleSelectorComponent as U, ActionType as a, buildActionParentTree as b, convertActionToTreeNode as c, RoleActionSelectorComponent as d, UserActionSelectorComponent as e, ActionPermissionLogicService as f, IAM_ROUTES as g, MyPermissionsApiService as h, PermissionStateService as i, ProfilePermissionProviderAdapter as j, provideIamProviders as p };
|
|
4918
|
-
//# sourceMappingURL=flusys-ng-iam-flusys-ng-iam
|
|
4873
|
+
//# sourceMappingURL=flusys-ng-iam-flusys-ng-iam--WniMPhV.mjs.map
|