@flusys/ng-iam 5.5.0 → 6.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/fesm2022/{flusys-ng-iam-action-form-page.component-BGEON5_n.mjs → flusys-ng-iam-action-form-page.component-DTJT8Dc-.mjs} +56 -66
  2. package/fesm2022/flusys-ng-iam-action-form-page.component-DTJT8Dc-.mjs.map +1 -0
  3. package/fesm2022/{flusys-ng-iam-action-list-page.component-BQvx2btD.mjs → flusys-ng-iam-action-list-page.component-B1hUE4lD.mjs} +39 -46
  4. package/fesm2022/flusys-ng-iam-action-list-page.component-B1hUE4lD.mjs.map +1 -0
  5. package/fesm2022/{flusys-ng-iam-flusys-ng-iam-C9rdGS64.mjs → flusys-ng-iam-flusys-ng-iam-DzIO0zsO.mjs} +325 -385
  6. package/fesm2022/flusys-ng-iam-flusys-ng-iam-DzIO0zsO.mjs.map +1 -0
  7. package/fesm2022/flusys-ng-iam-iam-container.component-D0m8u6nu.mjs +105 -0
  8. package/fesm2022/flusys-ng-iam-iam-container.component-D0m8u6nu.mjs.map +1 -0
  9. package/fesm2022/{flusys-ng-iam-permission-page.component-DV8qtLcu.mjs → flusys-ng-iam-permission-page.component-rcijgKmE.mjs} +17 -20
  10. package/fesm2022/flusys-ng-iam-permission-page.component-rcijgKmE.mjs.map +1 -0
  11. package/fesm2022/{flusys-ng-iam-role-form-page.component-CR1tl17E.mjs → flusys-ng-iam-role-form-page.component-DrUQ0taO.mjs} +24 -26
  12. package/fesm2022/flusys-ng-iam-role-form-page.component-DrUQ0taO.mjs.map +1 -0
  13. package/fesm2022/{flusys-ng-iam-role-list-page.component-DVto37LL.mjs → flusys-ng-iam-role-list-page.component-BcS9_ysT.mjs} +35 -42
  14. package/fesm2022/flusys-ng-iam-role-list-page.component-BcS9_ysT.mjs.map +1 -0
  15. package/fesm2022/flusys-ng-iam.mjs +1 -1
  16. package/package.json +5 -7
  17. package/types/flusys-ng-iam.d.ts +2 -2
  18. package/fesm2022/flusys-ng-iam-action-form-page.component-BGEON5_n.mjs.map +0 -1
  19. package/fesm2022/flusys-ng-iam-action-list-page.component-BQvx2btD.mjs.map +0 -1
  20. package/fesm2022/flusys-ng-iam-flusys-ng-iam-C9rdGS64.mjs.map +0 -1
  21. package/fesm2022/flusys-ng-iam-iam-container.component-DEuc_l2i.mjs +0 -119
  22. package/fesm2022/flusys-ng-iam-iam-container.component-DEuc_l2i.mjs.map +0 -1
  23. package/fesm2022/flusys-ng-iam-permission-page.component-DV8qtLcu.mjs.map +0 -1
  24. package/fesm2022/flusys-ng-iam-role-form-page.component-CR1tl17E.mjs.map +0 -1
  25. package/fesm2022/flusys-ng-iam-role-list-page.component-DVto37LL.mjs.map +0 -1
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, inject, signal, input, output, effect, Component, computed, DestroyRef } from '@angular/core';
3
- import { ApiResourceService, TranslateService, PermissionValidatorService, AngularModule, PrimeModule, TranslatePipe, ROLE_ACTION_PERMISSIONS, HasPermissionDirective, COMPANY_ACTION_PERMISSIONS, COMPANY_API_PROVIDER, USER_ROLE_PERMISSIONS, USER_PERMISSION_PROVIDER, UserSelectComponent, USER_ACTION_PERMISSIONS, PROFILE_PERMISSION_PROVIDER, permissionGuard, ACTION_PERMISSIONS, ROLE_PERMISSIONS, anyPermissionGuard, resolveTranslationModule, SHARED_MESSAGES } from '@flusys/ng-shared';
3
+ import { ApiResourceService, TranslateService, PermissionValidatorService, AngularModule, TranslatePipe, ROLE_ACTION_PERMISSIONS, HasPermissionDirective, COMPANY_ACTION_PERMISSIONS, COMPANY_API_PROVIDER, USER_ROLE_PERMISSIONS, USER_PERMISSION_PROVIDER, UserSelectComponent, USER_ACTION_PERMISSIONS, PROFILE_PERMISSION_PROVIDER, permissionGuard, ACTION_PERMISSIONS, ROLE_PERMISSIONS, anyPermissionGuard, resolveTranslationModule, SHARED_MESSAGES } from '@flusys/ng-shared';
4
4
  import { APP_CONFIG, getServiceUrl, BaseApiService, isCompanyFeatureEnabled } from '@flusys/ng-core';
5
- import { ConfirmationService, MessageService } from 'primeng/api';
5
+ import * as i2 from '@flusys/ng-ui';
6
+ import { ConfirmationService, MessageService, UiModule } from '@flusys/ng-ui';
6
7
  import { HttpClient } from '@angular/common/http';
7
8
  import { of, firstValueFrom, map as map$1 } from 'rxjs';
8
9
  import { tap, catchError, map } from 'rxjs/operators';
@@ -10,14 +11,7 @@ import * as i1 from '@angular/common';
10
11
  import { CommonModule } from '@angular/common';
11
12
  import * as i1$1 from '@angular/forms';
12
13
  import { FormsModule } from '@angular/forms';
13
- import * as i2 from 'primeng/button';
14
- import * as i6 from 'primeng/tooltip';
15
- import * as i3 from 'primeng/checkbox';
16
- import * as i4 from 'primeng/select';
17
- import * as i5 from 'primeng/tag';
18
- import * as i7 from 'primeng/treetable';
19
14
  import { LAYOUT_AUTH_STATE } from '@flusys/ng-layout';
20
- import * as i5$1 from 'primeng/table';
21
15
 
22
16
  /** Must match backend ActionType enum */
23
17
  var ActionType;
@@ -227,10 +221,10 @@ class RoleApiService extends ApiResourceService {
227
221
  constructor() {
228
222
  super('roles', 'iam');
229
223
  }
230
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RoleApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
231
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RoleApiService, providedIn: 'root' });
224
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: RoleApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
225
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: RoleApiService, providedIn: 'root' });
232
226
  }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RoleApiService, decorators: [{
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: RoleApiService, decorators: [{
234
228
  type: Injectable,
235
229
  args: [{ providedIn: 'root' }]
236
230
  }], ctorParameters: () => [] });
@@ -257,10 +251,10 @@ class ActionApiService extends ApiResourceService {
257
251
  const iamBaseUrl = getServiceUrl(this.appConfig, 'iam');
258
252
  return this.http.post(`${iamBaseUrl}/actions/tree`, body);
259
253
  }
260
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActionApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
261
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActionApiService, providedIn: 'root' });
254
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ActionApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
255
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ActionApiService, providedIn: 'root' });
262
256
  }
263
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActionApiService, decorators: [{
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ActionApiService, decorators: [{
264
258
  type: Injectable,
265
259
  args: [{ providedIn: 'root' }]
266
260
  }], ctorParameters: () => [] });
@@ -403,11 +397,11 @@ class ActionPermissionLogicService {
403
397
  this.confirmationService.confirm({
404
398
  header: this.t('iam.logic.validation.failed'),
405
399
  message: `${this.t('iam.logic.validation.failed.message')}<br/><br/><ul class="pl-4">${errorList}</ul><br/>${this.t('iam.logic.validation.failed.prompt')}`,
406
- icon: 'pi pi-exclamation-triangle',
400
+ icon: 'exclamation-triangle',
407
401
  acceptLabel: this.t('iam.logic.auto.fix'),
408
402
  rejectLabel: this.t('shared.cancel'),
409
- acceptIcon: 'pi pi-trash',
410
- rejectIcon: 'pi pi-times',
403
+ acceptIcon: 'trash',
404
+ rejectIcon: 'times',
411
405
  acceptButtonStyleClass: 'p-button-warning',
412
406
  closeOnEscape: false,
413
407
  closable: false,
@@ -419,7 +413,7 @@ class ActionPermissionLogicService {
419
413
  });
420
414
  onUpdate(selMap);
421
415
  this.messageService.add({
422
- severity: 'warning',
416
+ severity: 'warn',
423
417
  summary: this.t('iam.logic.invalid.actions.removed'),
424
418
  detail: this.t('iam.logic.removed.actions.detail', {
425
419
  count: invalidActions.length,
@@ -532,11 +526,11 @@ class ActionPermissionLogicService {
532
526
  this.confirmationService.confirm({
533
527
  header: this.t('iam.logic.missing.prerequisites'),
534
528
  message: `<strong>${sanitizedActionName}</strong> ${this.t('iam.logic.requires.conditions')}<br/><br/>${logicMessage}<br/><br/><strong>${autoSelectPrompt}</strong><br/>${this.t('iam.logic.would.you.continue')}`,
535
- icon: 'pi pi-exclamation-triangle',
529
+ icon: 'exclamation-triangle',
536
530
  acceptLabel,
537
531
  rejectLabel: this.t('shared.cancel'),
538
- acceptIcon: 'pi pi-check',
539
- rejectIcon: 'pi pi-times',
532
+ acceptIcon: 'check',
533
+ rejectIcon: 'times',
540
534
  closeOnEscape: false,
541
535
  closable: false,
542
536
  accept: () => {
@@ -584,13 +578,13 @@ class ActionPermissionLogicService {
584
578
  this.confirmationService.confirm({
585
579
  header: this.t('iam.logic.dependency.warning'),
586
580
  message,
587
- icon: 'pi pi-exclamation-triangle',
581
+ icon: 'exclamation-triangle',
588
582
  acceptLabel: alternatives.length > 0
589
583
  ? this.t('iam.logic.use.alternatives')
590
584
  : this.t('iam.logic.remove.all'),
591
585
  rejectLabel: this.t('shared.cancel'),
592
- acceptIcon: 'pi pi-check',
593
- rejectIcon: 'pi pi-times',
586
+ acceptIcon: 'check',
587
+ rejectIcon: 'times',
594
588
  closeOnEscape: false,
595
589
  closable: false,
596
590
  accept: () => {
@@ -794,10 +788,10 @@ class ActionPermissionLogicService {
794
788
  }
795
789
  return `${indent}${this.t('iam.logic.invalid')}`;
796
790
  }
797
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActionPermissionLogicService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
798
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActionPermissionLogicService, providedIn: 'root' });
791
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ActionPermissionLogicService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
792
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ActionPermissionLogicService, providedIn: 'root' });
799
793
  }
800
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ActionPermissionLogicService, decorators: [{
794
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ActionPermissionLogicService, decorators: [{
801
795
  type: Injectable,
802
796
  args: [{ providedIn: 'root' }]
803
797
  }] });
@@ -830,10 +824,10 @@ class PermissionApiService extends BaseApiService {
830
824
  getCompanyActions(companyId) {
831
825
  return this.http.post(this.getUrl('permissions/get-company-actions'), { companyId });
832
826
  }
833
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
834
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionApiService, providedIn: 'root' });
827
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
828
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionApiService, providedIn: 'root' });
835
829
  }
836
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionApiService, decorators: [{
830
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionApiService, decorators: [{
837
831
  type: Injectable,
838
832
  args: [{ providedIn: 'root' }]
839
833
  }], ctorParameters: () => [] });
@@ -857,10 +851,10 @@ class MyPermissionsApiService {
857
851
  getMyPermissions(dto = {}) {
858
852
  return this.http.post(`${this.baseUrl}/my-permissions`, dto);
859
853
  }
860
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: MyPermissionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
861
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: MyPermissionsApiService, providedIn: 'root' });
854
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MyPermissionsApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
855
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MyPermissionsApiService, providedIn: 'root' });
862
856
  }
863
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: MyPermissionsApiService, decorators: [{
857
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: MyPermissionsApiService, decorators: [{
864
858
  type: Injectable,
865
859
  args: [{
866
860
  providedIn: 'root',
@@ -893,10 +887,10 @@ class PermissionStateService {
893
887
  isLoaded() {
894
888
  return this._permissions() !== null && this.permissionValidator.isPermissionsLoaded();
895
889
  }
896
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
897
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionStateService, providedIn: 'root' });
890
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
891
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionStateService, providedIn: 'root' });
898
892
  }
899
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: PermissionStateService, decorators: [{
893
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: PermissionStateService, decorators: [{
900
894
  type: Injectable,
901
895
  args: [{ providedIn: 'root' }]
902
896
  }] });
@@ -1015,8 +1009,8 @@ class LogicBuilderComponent {
1015
1009
  .map((child) => this.removeNodeFromTree(child, targetId)),
1016
1010
  };
1017
1011
  }
1018
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: LogicBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1019
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.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: `
1012
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LogicBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1013
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", 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: `
1020
1014
  <div class="logic-builder">
1021
1015
  <div class="flex justify-between items-center mb-3">
1022
1016
  <h4 class="text-sm font-semibold m-0">
@@ -1024,22 +1018,22 @@ class LogicBuilderComponent {
1024
1018
  </h4>
1025
1019
  @if (!builderLogic()) {
1026
1020
  <button
1027
- pButton
1021
+ fButton
1028
1022
  size="small"
1029
1023
  (click)="initializeLogic()"
1030
1024
  >
1031
- <span pButtonIcon class="pi pi-plus"></span>
1025
+ <ui-icon pButtonIcon name="plus"></ui-icon>
1032
1026
  <span pButtonLabel>{{ 'iam.logic.add.logic' | translate }}</span>
1033
1027
  </button>
1034
1028
  } @else {
1035
1029
  <button
1036
- pButton
1030
+ fButton
1037
1031
  size="small"
1038
1032
  severity="danger"
1039
1033
  [outlined]="true"
1040
1034
  (click)="clearLogic()"
1041
1035
  >
1042
- <span pButtonIcon class="pi pi-trash"></span>
1036
+ <ui-icon pButtonIcon name="trash"></ui-icon>
1043
1037
  <span pButtonLabel>{{ 'iam.logic.clear.logic' | translate }}</span>
1044
1038
  </button>
1045
1039
  }
@@ -1087,7 +1081,7 @@ class LogicBuilderComponent {
1087
1081
  [class.and]="node.operator === 'AND'"
1088
1082
  [class.or]="node.operator !== 'AND'"
1089
1083
  (click)="toggleOperator(node.id)"
1090
- [title]="'iam.logic.click.to.toggle' | translate"
1084
+ [fTooltip]="'iam.logic.click.to.toggle' | translate"
1091
1085
  >
1092
1086
  {{ node.operator }}
1093
1087
  </span>
@@ -1100,35 +1094,29 @@ class LogicBuilderComponent {
1100
1094
  }
1101
1095
 
1102
1096
  @if (node.type === 'action') {
1103
- <!-- Action: show action selector -->
1104
- <select
1105
- class="action-select flex-1 p-2 border border-surface rounded text-sm"
1097
+ <f-select
1098
+ class="flex-1"
1099
+ [options]="actions()"
1100
+ optionLabel="name"
1101
+ optionValue="id"
1106
1102
  [ngModel]="node.actionId"
1107
1103
  (ngModelChange)="updateActionId(node.id, $event)"
1108
- >
1109
- <option [value]="null">
1110
- {{ 'iam.logic.select.action' | translate }} ({{
1111
- 'iam.logic.actions.available'
1112
- | translate: { count: actions().length }
1113
- }})
1114
- </option>
1115
- @for (action of actions(); track action.id) {
1116
- <option [ngValue]="action.id">{{ action.name }}</option>
1117
- }
1118
- </select>
1104
+ [placeholder]="'iam.logic.select.action' | translate"
1105
+ [filter]="true"
1106
+ />
1119
1107
  }
1120
1108
  </div>
1121
1109
 
1122
1110
  <div class="flex gap-1">
1123
1111
  <button
1124
- pButton
1112
+ fButton
1125
1113
  [text]="true"
1126
1114
  severity="danger"
1127
1115
  size="small"
1128
1116
  (click)="removeNode(node.id)"
1129
- [pTooltip]="'shared.remove' | translate"
1117
+ [fTooltip]="'shared.remove' | translate"
1130
1118
  >
1131
- <span pButtonIcon class="pi pi-trash"></span>
1119
+ <ui-icon pButtonIcon name="trash"></ui-icon>
1132
1120
  </button>
1133
1121
  </div>
1134
1122
  </div>
@@ -1159,22 +1147,22 @@ class LogicBuilderComponent {
1159
1147
  </div>
1160
1148
  <div class="flex gap-2 flex-wrap">
1161
1149
  <button
1162
- pButton
1150
+ fButton
1163
1151
  size="small"
1164
1152
  [outlined]="true"
1165
1153
  (click)="addChildNode(node.id, 'group')"
1166
1154
  >
1167
- <span pButtonIcon class="pi pi-sitemap"></span>
1155
+ <ui-icon pButtonIcon name="sitemap"></ui-icon>
1168
1156
  <span pButtonLabel>{{ 'iam.logic.group' | translate }}</span>
1169
1157
  </button>
1170
1158
  <button
1171
- pButton
1159
+ fButton
1172
1160
  size="small"
1173
1161
  severity="success"
1174
1162
  [outlined]="true"
1175
1163
  (click)="addChildNode(node.id, 'action')"
1176
1164
  >
1177
- <span pButtonIcon class="pi pi-bolt"></span>
1165
+ <ui-icon pButtonIcon name="bolt"></ui-icon>
1178
1166
  <span pButtonLabel>{{ 'iam.logic.action' | translate }}</span>
1179
1167
  </button>
1180
1168
  </div>
@@ -1182,11 +1170,11 @@ class LogicBuilderComponent {
1182
1170
  }
1183
1171
  </div>
1184
1172
  </ng-template>
1185
- `, 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(--p-blue-100, #dbeafe);color:var(--p-blue-700, #1e40af)}.node-type.action{background-color:var(--p-green-100, #d1fae5);color:var(--p-green-700, #065f46)}:host-context(.p-dark) .node-type.group{background-color:#3b82f633;color:var(--p-blue-400, #60a5fa)}:host-context(.p-dark) .node-type.action{background-color:#22c55e33;color:var(--p-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(--p-yellow-100, #fef3c7);color:var(--p-yellow-700, #92400e)}.operator-badge.or{background-color:var(--p-indigo-100, #e0e7ff);color:var(--p-indigo-700, #3730a3)}:host-context(.p-dark) .operator-badge.and{background-color:#eab30833;color:var(--p-yellow-400, #facc15)}:host-context(.p-dark) .operator-badge.or{background-color:#6366f133;color:var(--p-indigo-400, #818cf8)}.operator-badge:hover{opacity:.8}.action-select{background-color:var(--p-surface-0, #ffffff);color:var(--p-text-color, #1f2937)}:host-context(.p-dark) .action-select{background-color:var(--p-surface-900, #1f2937);color:var(--p-text-color, #f9fafb)}.action-select:focus{outline:none;border-color:var(--p-primary-color, #3b82f6)}\n"], dependencies: [{ kind: "ngmodule", type: AngularModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple]):not([ngNoCva])[formControlName],select:not([multiple]):not([ngNoCva])[formControl],select:not([multiple]):not([ngNoCva])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PrimeModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["pButton", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "link", "rounded", "fluid", "variant", "iconOnly", "loading", "severity"] }, { kind: "directive", type: i2.ButtonLabel, selector: "[pButtonLabel]", inputs: ["pButtonLabelPT", "pButtonLabelUnstyled"] }, { kind: "directive", type: i2.ButtonIcon, selector: "[pButtonIcon]", inputs: ["pButtonIconPT", "pButtonUnstyled"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
1173
+ `, 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(.p-dark) .node-type.group{background-color:#3b82f633;color:var(--f-blue-400, #60a5fa)}:host-context(.p-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(.p-dark) .operator-badge.and{background-color:#eab30833;color:var(--f-yellow-400, #facc15)}:host-context(.p-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(.p-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: AngularModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: UiModule }, { kind: "directive", type: i2.FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "rounded", "raised", "fluid", "disabled", "loading", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: i2.SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "showClear", "loading", "inputId", "invalid", "touched", "styleClass", "editable"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
1186
1174
  }
1187
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: LogicBuilderComponent, decorators: [{
1175
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: LogicBuilderComponent, decorators: [{
1188
1176
  type: Component,
1189
- args: [{ selector: 'lib-logic-builder', imports: [AngularModule, PrimeModule, TranslatePipe], template: `
1177
+ args: [{ selector: 'lib-logic-builder', imports: [AngularModule, UiModule, TranslatePipe], template: `
1190
1178
  <div class="logic-builder">
1191
1179
  <div class="flex justify-between items-center mb-3">
1192
1180
  <h4 class="text-sm font-semibold m-0">
@@ -1194,22 +1182,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1194
1182
  </h4>
1195
1183
  @if (!builderLogic()) {
1196
1184
  <button
1197
- pButton
1185
+ fButton
1198
1186
  size="small"
1199
1187
  (click)="initializeLogic()"
1200
1188
  >
1201
- <span pButtonIcon class="pi pi-plus"></span>
1189
+ <ui-icon pButtonIcon name="plus"></ui-icon>
1202
1190
  <span pButtonLabel>{{ 'iam.logic.add.logic' | translate }}</span>
1203
1191
  </button>
1204
1192
  } @else {
1205
1193
  <button
1206
- pButton
1194
+ fButton
1207
1195
  size="small"
1208
1196
  severity="danger"
1209
1197
  [outlined]="true"
1210
1198
  (click)="clearLogic()"
1211
1199
  >
1212
- <span pButtonIcon class="pi pi-trash"></span>
1200
+ <ui-icon pButtonIcon name="trash"></ui-icon>
1213
1201
  <span pButtonLabel>{{ 'iam.logic.clear.logic' | translate }}</span>
1214
1202
  </button>
1215
1203
  }
@@ -1257,7 +1245,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1257
1245
  [class.and]="node.operator === 'AND'"
1258
1246
  [class.or]="node.operator !== 'AND'"
1259
1247
  (click)="toggleOperator(node.id)"
1260
- [title]="'iam.logic.click.to.toggle' | translate"
1248
+ [fTooltip]="'iam.logic.click.to.toggle' | translate"
1261
1249
  >
1262
1250
  {{ node.operator }}
1263
1251
  </span>
@@ -1270,35 +1258,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1270
1258
  }
1271
1259
 
1272
1260
  @if (node.type === 'action') {
1273
- <!-- Action: show action selector -->
1274
- <select
1275
- class="action-select flex-1 p-2 border border-surface rounded text-sm"
1261
+ <f-select
1262
+ class="flex-1"
1263
+ [options]="actions()"
1264
+ optionLabel="name"
1265
+ optionValue="id"
1276
1266
  [ngModel]="node.actionId"
1277
1267
  (ngModelChange)="updateActionId(node.id, $event)"
1278
- >
1279
- <option [value]="null">
1280
- {{ 'iam.logic.select.action' | translate }} ({{
1281
- 'iam.logic.actions.available'
1282
- | translate: { count: actions().length }
1283
- }})
1284
- </option>
1285
- @for (action of actions(); track action.id) {
1286
- <option [ngValue]="action.id">{{ action.name }}</option>
1287
- }
1288
- </select>
1268
+ [placeholder]="'iam.logic.select.action' | translate"
1269
+ [filter]="true"
1270
+ />
1289
1271
  }
1290
1272
  </div>
1291
1273
 
1292
1274
  <div class="flex gap-1">
1293
1275
  <button
1294
- pButton
1276
+ fButton
1295
1277
  [text]="true"
1296
1278
  severity="danger"
1297
1279
  size="small"
1298
1280
  (click)="removeNode(node.id)"
1299
- [pTooltip]="'shared.remove' | translate"
1281
+ [fTooltip]="'shared.remove' | translate"
1300
1282
  >
1301
- <span pButtonIcon class="pi pi-trash"></span>
1283
+ <ui-icon pButtonIcon name="trash"></ui-icon>
1302
1284
  </button>
1303
1285
  </div>
1304
1286
  </div>
@@ -1329,22 +1311,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1329
1311
  </div>
1330
1312
  <div class="flex gap-2 flex-wrap">
1331
1313
  <button
1332
- pButton
1314
+ fButton
1333
1315
  size="small"
1334
1316
  [outlined]="true"
1335
1317
  (click)="addChildNode(node.id, 'group')"
1336
1318
  >
1337
- <span pButtonIcon class="pi pi-sitemap"></span>
1319
+ <ui-icon pButtonIcon name="sitemap"></ui-icon>
1338
1320
  <span pButtonLabel>{{ 'iam.logic.group' | translate }}</span>
1339
1321
  </button>
1340
1322
  <button
1341
- pButton
1323
+ fButton
1342
1324
  size="small"
1343
1325
  severity="success"
1344
1326
  [outlined]="true"
1345
1327
  (click)="addChildNode(node.id, 'action')"
1346
1328
  >
1347
- <span pButtonIcon class="pi pi-bolt"></span>
1329
+ <ui-icon pButtonIcon name="bolt"></ui-icon>
1348
1330
  <span pButtonLabel>{{ 'iam.logic.action' | translate }}</span>
1349
1331
  </button>
1350
1332
  </div>
@@ -1352,7 +1334,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1352
1334
  }
1353
1335
  </div>
1354
1336
  </ng-template>
1355
- `, 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(--p-blue-100, #dbeafe);color:var(--p-blue-700, #1e40af)}.node-type.action{background-color:var(--p-green-100, #d1fae5);color:var(--p-green-700, #065f46)}:host-context(.p-dark) .node-type.group{background-color:#3b82f633;color:var(--p-blue-400, #60a5fa)}:host-context(.p-dark) .node-type.action{background-color:#22c55e33;color:var(--p-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(--p-yellow-100, #fef3c7);color:var(--p-yellow-700, #92400e)}.operator-badge.or{background-color:var(--p-indigo-100, #e0e7ff);color:var(--p-indigo-700, #3730a3)}:host-context(.p-dark) .operator-badge.and{background-color:#eab30833;color:var(--p-yellow-400, #facc15)}:host-context(.p-dark) .operator-badge.or{background-color:#6366f133;color:var(--p-indigo-400, #818cf8)}.operator-badge:hover{opacity:.8}.action-select{background-color:var(--p-surface-0, #ffffff);color:var(--p-text-color, #1f2937)}:host-context(.p-dark) .action-select{background-color:var(--p-surface-900, #1f2937);color:var(--p-text-color, #f9fafb)}.action-select:focus{outline:none;border-color:var(--p-primary-color, #3b82f6)}\n"] }]
1337
+ `, 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(.p-dark) .node-type.group{background-color:#3b82f633;color:var(--f-blue-400, #60a5fa)}:host-context(.p-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(.p-dark) .operator-badge.and{background-color:#eab30833;color:var(--f-yellow-400, #facc15)}:host-context(.p-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(.p-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"] }]
1356
1338
  }], ctorParameters: () => [], propDecorators: { logic: [{ type: i0.Input, args: [{ isSignal: true, alias: "logic", required: false }] }], actions: [{ type: i0.Input, args: [{ isSignal: true, alias: "actions", required: false }] }], logicChange: [{ type: i0.Output, args: ["logicChange"] }] } });
1357
1339
 
1358
1340
  function flattenTree(tree) {
@@ -1656,8 +1638,8 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1656
1638
  this.saving.set(false);
1657
1639
  }
1658
1640
  }
1659
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RoleActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1660
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RoleActionSelectorComponent, isStandalone: true, selector: "flusys-role-action-selector", usesInheritance: true, ngImport: i0, template: `
1641
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: RoleActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1642
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: RoleActionSelectorComponent, isStandalone: true, selector: "flusys-role-action-selector", usesInheritance: true, ngImport: i0, template: `
1661
1643
  <div class="role-action-selector">
1662
1644
  <div class="mb-4">
1663
1645
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
@@ -1665,7 +1647,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1665
1647
  <label class="block font-semibold mb-2">{{
1666
1648
  'iam.permission.select.role' | translate
1667
1649
  }}</label>
1668
- <p-select
1650
+ <f-select
1669
1651
  [ngModel]="selectedRoleId()"
1670
1652
  (ngModelChange)="selectedRoleId.set($event)"
1671
1653
  [options]="roles()"
@@ -1687,7 +1669,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1687
1669
  <div
1688
1670
  class="surface-card p-5 rounded-border shadow-sm flex justify-center"
1689
1671
  >
1690
- <i class="pi pi-spin pi-spinner text-primary text-5xl"></i>
1672
+ <ui-icon name="loader-circle" spin class="text-primary text-5xl"></ui-icon>
1691
1673
  </div>
1692
1674
  }
1693
1675
 
@@ -1709,36 +1691,36 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1709
1691
  </div>
1710
1692
  <div class="flex flex-wrap gap-2">
1711
1693
  <button
1712
- pButton
1694
+ fButton
1713
1695
  [outlined]="true"
1714
1696
  size="small"
1715
1697
  severity="secondary"
1716
1698
  (click)="selectAll()"
1717
1699
  >
1718
- <span pButtonIcon class="pi pi-check"></span>
1700
+ <ui-icon pButtonIcon name="check"></ui-icon>
1719
1701
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
1720
1702
  </button>
1721
1703
  <button
1722
- pButton
1704
+ fButton
1723
1705
  [outlined]="true"
1724
1706
  size="small"
1725
1707
  severity="secondary"
1726
1708
  (click)="deselectAll()"
1727
1709
  >
1728
- <span pButtonIcon class="pi pi-times"></span>
1710
+ <ui-icon pButtonIcon name="times"></ui-icon>
1729
1711
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
1730
1712
  </button>
1731
1713
  <button
1732
- pButton
1714
+ fButton
1733
1715
  *hasPermission="ROLE_ACTION_PERMISSIONS.ASSIGN"
1734
1716
  [disabled]="!canSave() || saving()"
1735
1717
  size="small"
1736
1718
  (click)="saveChanges()"
1737
1719
  >
1738
1720
  @if (saving()) {
1739
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
1721
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
1740
1722
  } @else {
1741
- <span pButtonIcon class="pi pi-save"></span>
1723
+ <ui-icon pButtonIcon name="save"></ui-icon>
1742
1724
  }
1743
1725
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
1744
1726
  </button>
@@ -1748,7 +1730,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1748
1730
  @if (invalidActionsCount() > 0) {
1749
1731
  <div class="validation-warning rounded-border p-3 mb-4">
1750
1732
  <div class="flex items-start gap-2">
1751
- <i class="pi pi-exclamation-triangle text-xl"></i>
1733
+ <ui-icon name="exclamation-triangle" class="text-xl"></ui-icon>
1752
1734
  <div class="flex-1">
1753
1735
  <span class="font-semibold"
1754
1736
  >{{ 'iam.validation.warning.title' | translate }}:</span
@@ -1767,20 +1749,19 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1767
1749
  }
1768
1750
 
1769
1751
  <div class="overflow-x-auto -mx-4 sm:mx-0">
1770
- <p-treetable
1752
+ <f-treetable
1771
1753
  [value]="treeNodes()"
1772
1754
  dataKey="id"
1773
- class="p-treetable-sm"
1774
1755
  [tableStyle]="{ 'min-width': '50rem' }"
1775
1756
  >
1776
1757
  <ng-template #header>
1777
1758
  <tr>
1778
1759
  <th class="w-12">
1779
- <p-checkbox
1760
+ <f-checkbox
1780
1761
  [ngModel]="allSelected()"
1781
1762
  [binary]="true"
1782
1763
  (ngModelChange)="toggleAll()"
1783
- [pTooltip]="'shared.select.deselect.all' | translate"
1764
+ [fTooltip]="'shared.select.deselect.all' | translate"
1784
1765
  tooltipPosition="top"
1785
1766
  />
1786
1767
  </th>
@@ -1799,27 +1780,24 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1799
1780
  @let tooltip = getTooltip(rowData);
1800
1781
  <tr [class.highlight-warning]="hasUnmet">
1801
1782
  <td class="w-12">
1802
- <p-checkbox
1783
+ <f-checkbox
1803
1784
  [ngModel]="selectionMap()[rowData.id]"
1804
1785
  [binary]="true"
1805
1786
  (ngModelChange)="onActionToggle(rowData, $event)"
1806
- [pTooltip]="tooltip"
1787
+ [fTooltip]="tooltip"
1807
1788
  tooltipPosition="top"
1808
1789
  />
1809
1790
  </td>
1810
1791
  <td>
1811
- <p-treetabletoggler [rowNode]="rowNode" />
1792
+ <f-treetabletoggler [rowNode]="rowNode" />
1812
1793
  <span class="inline-flex items-center gap-2">
1813
1794
  {{ rowData.name }}
1814
1795
  @if (hasUnmet) {
1815
- <i
1816
- class="pi pi-exclamation-triangle text-orange-500"
1817
- [pTooltip]="
1796
+ <ui-icon name="exclamation-triangle" class="text-orange-500" [fTooltip]="
1818
1797
  'iam.validation.unmet.prerequisites.tooltip'
1819
1798
  | translate
1820
1799
  "
1821
- tooltipPosition="top"
1822
- ></i>
1800
+ tooltipPosition="top"></ui-icon>
1823
1801
  }
1824
1802
  </span>
1825
1803
  </td>
@@ -1827,7 +1805,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1827
1805
  {{ rowData.code || '-' }}
1828
1806
  </td>
1829
1807
  <td>
1830
- <p-tag
1808
+ <f-tag
1831
1809
  [value]="rowData.actionType"
1832
1810
  [severity]="
1833
1811
  rowData.actionType === 'backend' ? 'info' : 'success'
@@ -1849,7 +1827,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1849
1827
  <tr>
1850
1828
  <td colspan="5" class="text-center p-4 text-muted-color">
1851
1829
  @if (loading()) {
1852
- <i class="pi pi-spin pi-spinner"></i>
1830
+ <ui-icon name="loader-circle" spin></ui-icon>
1853
1831
  {{ 'shared.loading.actions' | translate }}
1854
1832
  } @else {
1855
1833
  {{ 'iam.permission.no.actions.available' | translate }}
@@ -1857,14 +1835,14 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1857
1835
  </td>
1858
1836
  </tr>
1859
1837
  </ng-template>
1860
- </p-treetable>
1838
+ </f-treetable>
1861
1839
  </div>
1862
1840
  </div>
1863
1841
 
1864
1842
  @if (hasChanges()) {
1865
1843
  <div class="border border-surface rounded-border p-3 mt-4">
1866
1844
  <div class="flex items-center gap-2 mb-3">
1867
- <i class="pi pi-info-circle text-primary"></i>
1845
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
1868
1846
  <span class="font-bold">{{
1869
1847
  'shared.pending.changes' | translate
1870
1848
  }}</span>
@@ -1873,7 +1851,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1873
1851
  @if (pendingAdd().length > 0) {
1874
1852
  <div>
1875
1853
  <div class="flex items-center gap-2 mb-2">
1876
- <i class="pi pi-plus-circle text-green-500"></i>
1854
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
1877
1855
  <strong class="text-sm"
1878
1856
  >{{ 'shared.to.add' | translate }} ({{
1879
1857
  pendingAdd().length
@@ -1890,7 +1868,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1890
1868
  @if (pendingRemove().length > 0) {
1891
1869
  <div>
1892
1870
  <div class="flex items-center gap-2 mb-2">
1893
- <i class="pi pi-minus-circle text-red-500"></i>
1871
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
1894
1872
  <strong class="text-sm"
1895
1873
  >{{ 'shared.to.remove' | translate }} ({{
1896
1874
  pendingRemove().length
@@ -1911,9 +1889,7 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1911
1889
 
1912
1890
  @if (!loading() && actions().length === 0) {
1913
1891
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
1914
- <i
1915
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
1916
- ></i>
1892
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
1917
1893
  <p class="text-muted-color m-0">
1918
1894
  {{ 'iam.permission.no.actions.for.role' | translate }}
1919
1895
  </p>
@@ -1921,11 +1897,11 @@ class RoleActionSelectorComponent extends BaseActionSelectorComponent {
1921
1897
  }
1922
1898
  }
1923
1899
  </div>
1924
- `, isInline: true, styles: [":host{display:block}.validation-warning{background-color:var(--p-yellow-50, #fefce8);border-left:4px solid var(--p-yellow-500, #eab308);color:var(--p-yellow-700, #a16207)}:host-context(.p-dark) .validation-warning{background-color:#eab3081a;color:var(--p-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--p-red-50, rgba(239, 68, 68, .1))!important}:host-context(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PrimeModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["pButton", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "link", "rounded", "fluid", "variant", "iconOnly", "loading", "severity"] }, { kind: "directive", type: i2.ButtonLabel, selector: "[pButtonLabel]", inputs: ["pButtonLabelPT", "pButtonLabelUnstyled"] }, { kind: "directive", type: i2.ButtonIcon, selector: "[pButtonIcon]", inputs: ["pButtonIconPT", "pButtonUnstyled"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: i4.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "multiple", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i5.Tag, selector: "p-tag", inputs: ["severity", "value", "icon", "rounded"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "component", type: i7.TreeTable, selector: "p-treetable, p-tree-table", inputs: ["columns", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "selectionKeys", "collapsedKeys", "showGridlines"], outputs: ["rowsChange", "selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel", "selectionKeysChange", "collapsedKeysChange"] }, { kind: "component", type: i7.TreeTableToggler, selector: "p-treetabletoggler, p-treetable-toggler", inputs: ["rowNode"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
1900
+ `, isInline: true, styles: [":host{display:block}.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(.p-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(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: UiModule }, { kind: "directive", type: i2.FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "rounded", "raised", "fluid", "disabled", "loading", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: i2.TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color"] }, { kind: "component", type: i2.CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "inputId", "invalid", "indeterminate", "touched", "styleClass", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "component", type: i2.SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "showClear", "loading", "inputId", "invalid", "touched", "styleClass", "editable"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay"] }, { kind: "component", type: i2.TreeTableComponent, selector: "f-treetable", inputs: ["value", "loading", "dataKey", "styleClass", "tableStyle", "scrollable"] }, { kind: "component", type: i2.TreeTableTogglerComponent, selector: "f-treetabletoggler", inputs: ["rowNode"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
1925
1901
  }
1926
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RoleActionSelectorComponent, decorators: [{
1902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: RoleActionSelectorComponent, decorators: [{
1927
1903
  type: Component,
1928
- args: [{ selector: 'flusys-role-action-selector', imports: [FormsModule, PrimeModule, HasPermissionDirective, TranslatePipe], template: `
1904
+ args: [{ selector: 'flusys-role-action-selector', imports: [FormsModule, UiModule, HasPermissionDirective, TranslatePipe], template: `
1929
1905
  <div class="role-action-selector">
1930
1906
  <div class="mb-4">
1931
1907
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
@@ -1933,7 +1909,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1933
1909
  <label class="block font-semibold mb-2">{{
1934
1910
  'iam.permission.select.role' | translate
1935
1911
  }}</label>
1936
- <p-select
1912
+ <f-select
1937
1913
  [ngModel]="selectedRoleId()"
1938
1914
  (ngModelChange)="selectedRoleId.set($event)"
1939
1915
  [options]="roles()"
@@ -1955,7 +1931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1955
1931
  <div
1956
1932
  class="surface-card p-5 rounded-border shadow-sm flex justify-center"
1957
1933
  >
1958
- <i class="pi pi-spin pi-spinner text-primary text-5xl"></i>
1934
+ <ui-icon name="loader-circle" spin class="text-primary text-5xl"></ui-icon>
1959
1935
  </div>
1960
1936
  }
1961
1937
 
@@ -1977,36 +1953,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
1977
1953
  </div>
1978
1954
  <div class="flex flex-wrap gap-2">
1979
1955
  <button
1980
- pButton
1956
+ fButton
1981
1957
  [outlined]="true"
1982
1958
  size="small"
1983
1959
  severity="secondary"
1984
1960
  (click)="selectAll()"
1985
1961
  >
1986
- <span pButtonIcon class="pi pi-check"></span>
1962
+ <ui-icon pButtonIcon name="check"></ui-icon>
1987
1963
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
1988
1964
  </button>
1989
1965
  <button
1990
- pButton
1966
+ fButton
1991
1967
  [outlined]="true"
1992
1968
  size="small"
1993
1969
  severity="secondary"
1994
1970
  (click)="deselectAll()"
1995
1971
  >
1996
- <span pButtonIcon class="pi pi-times"></span>
1972
+ <ui-icon pButtonIcon name="times"></ui-icon>
1997
1973
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
1998
1974
  </button>
1999
1975
  <button
2000
- pButton
1976
+ fButton
2001
1977
  *hasPermission="ROLE_ACTION_PERMISSIONS.ASSIGN"
2002
1978
  [disabled]="!canSave() || saving()"
2003
1979
  size="small"
2004
1980
  (click)="saveChanges()"
2005
1981
  >
2006
1982
  @if (saving()) {
2007
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
1983
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
2008
1984
  } @else {
2009
- <span pButtonIcon class="pi pi-save"></span>
1985
+ <ui-icon pButtonIcon name="save"></ui-icon>
2010
1986
  }
2011
1987
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
2012
1988
  </button>
@@ -2016,7 +1992,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2016
1992
  @if (invalidActionsCount() > 0) {
2017
1993
  <div class="validation-warning rounded-border p-3 mb-4">
2018
1994
  <div class="flex items-start gap-2">
2019
- <i class="pi pi-exclamation-triangle text-xl"></i>
1995
+ <ui-icon name="exclamation-triangle" class="text-xl"></ui-icon>
2020
1996
  <div class="flex-1">
2021
1997
  <span class="font-semibold"
2022
1998
  >{{ 'iam.validation.warning.title' | translate }}:</span
@@ -2035,20 +2011,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2035
2011
  }
2036
2012
 
2037
2013
  <div class="overflow-x-auto -mx-4 sm:mx-0">
2038
- <p-treetable
2014
+ <f-treetable
2039
2015
  [value]="treeNodes()"
2040
2016
  dataKey="id"
2041
- class="p-treetable-sm"
2042
2017
  [tableStyle]="{ 'min-width': '50rem' }"
2043
2018
  >
2044
2019
  <ng-template #header>
2045
2020
  <tr>
2046
2021
  <th class="w-12">
2047
- <p-checkbox
2022
+ <f-checkbox
2048
2023
  [ngModel]="allSelected()"
2049
2024
  [binary]="true"
2050
2025
  (ngModelChange)="toggleAll()"
2051
- [pTooltip]="'shared.select.deselect.all' | translate"
2026
+ [fTooltip]="'shared.select.deselect.all' | translate"
2052
2027
  tooltipPosition="top"
2053
2028
  />
2054
2029
  </th>
@@ -2067,27 +2042,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2067
2042
  @let tooltip = getTooltip(rowData);
2068
2043
  <tr [class.highlight-warning]="hasUnmet">
2069
2044
  <td class="w-12">
2070
- <p-checkbox
2045
+ <f-checkbox
2071
2046
  [ngModel]="selectionMap()[rowData.id]"
2072
2047
  [binary]="true"
2073
2048
  (ngModelChange)="onActionToggle(rowData, $event)"
2074
- [pTooltip]="tooltip"
2049
+ [fTooltip]="tooltip"
2075
2050
  tooltipPosition="top"
2076
2051
  />
2077
2052
  </td>
2078
2053
  <td>
2079
- <p-treetabletoggler [rowNode]="rowNode" />
2054
+ <f-treetabletoggler [rowNode]="rowNode" />
2080
2055
  <span class="inline-flex items-center gap-2">
2081
2056
  {{ rowData.name }}
2082
2057
  @if (hasUnmet) {
2083
- <i
2084
- class="pi pi-exclamation-triangle text-orange-500"
2085
- [pTooltip]="
2058
+ <ui-icon name="exclamation-triangle" class="text-orange-500" [fTooltip]="
2086
2059
  'iam.validation.unmet.prerequisites.tooltip'
2087
2060
  | translate
2088
2061
  "
2089
- tooltipPosition="top"
2090
- ></i>
2062
+ tooltipPosition="top"></ui-icon>
2091
2063
  }
2092
2064
  </span>
2093
2065
  </td>
@@ -2095,7 +2067,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2095
2067
  {{ rowData.code || '-' }}
2096
2068
  </td>
2097
2069
  <td>
2098
- <p-tag
2070
+ <f-tag
2099
2071
  [value]="rowData.actionType"
2100
2072
  [severity]="
2101
2073
  rowData.actionType === 'backend' ? 'info' : 'success'
@@ -2117,7 +2089,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2117
2089
  <tr>
2118
2090
  <td colspan="5" class="text-center p-4 text-muted-color">
2119
2091
  @if (loading()) {
2120
- <i class="pi pi-spin pi-spinner"></i>
2092
+ <ui-icon name="loader-circle" spin></ui-icon>
2121
2093
  {{ 'shared.loading.actions' | translate }}
2122
2094
  } @else {
2123
2095
  {{ 'iam.permission.no.actions.available' | translate }}
@@ -2125,14 +2097,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2125
2097
  </td>
2126
2098
  </tr>
2127
2099
  </ng-template>
2128
- </p-treetable>
2100
+ </f-treetable>
2129
2101
  </div>
2130
2102
  </div>
2131
2103
 
2132
2104
  @if (hasChanges()) {
2133
2105
  <div class="border border-surface rounded-border p-3 mt-4">
2134
2106
  <div class="flex items-center gap-2 mb-3">
2135
- <i class="pi pi-info-circle text-primary"></i>
2107
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
2136
2108
  <span class="font-bold">{{
2137
2109
  'shared.pending.changes' | translate
2138
2110
  }}</span>
@@ -2141,7 +2113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2141
2113
  @if (pendingAdd().length > 0) {
2142
2114
  <div>
2143
2115
  <div class="flex items-center gap-2 mb-2">
2144
- <i class="pi pi-plus-circle text-green-500"></i>
2116
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
2145
2117
  <strong class="text-sm"
2146
2118
  >{{ 'shared.to.add' | translate }} ({{
2147
2119
  pendingAdd().length
@@ -2158,7 +2130,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2158
2130
  @if (pendingRemove().length > 0) {
2159
2131
  <div>
2160
2132
  <div class="flex items-center gap-2 mb-2">
2161
- <i class="pi pi-minus-circle text-red-500"></i>
2133
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
2162
2134
  <strong class="text-sm"
2163
2135
  >{{ 'shared.to.remove' | translate }} ({{
2164
2136
  pendingRemove().length
@@ -2179,9 +2151,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2179
2151
 
2180
2152
  @if (!loading() && actions().length === 0) {
2181
2153
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
2182
- <i
2183
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
2184
- ></i>
2154
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
2185
2155
  <p class="text-muted-color m-0">
2186
2156
  {{ 'iam.permission.no.actions.for.role' | translate }}
2187
2157
  </p>
@@ -2189,7 +2159,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2189
2159
  }
2190
2160
  }
2191
2161
  </div>
2192
- `, styles: [":host{display:block}.validation-warning{background-color:var(--p-yellow-50, #fefce8);border-left:4px solid var(--p-yellow-500, #eab308);color:var(--p-yellow-700, #a16207)}:host-context(.p-dark) .validation-warning{background-color:#eab3081a;color:var(--p-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--p-red-50, rgba(239, 68, 68, .1))!important}:host-context(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"] }]
2162
+ `, styles: [":host{display:block}.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(.p-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(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"] }]
2193
2163
  }], ctorParameters: () => [] });
2194
2164
 
2195
2165
  class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
@@ -2317,11 +2287,11 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2317
2287
  this.confirmationService.confirm({
2318
2288
  header: this.translate('iam.permission.prerequisite.validation.failed'),
2319
2289
  message: `${this.translate('iam.permission.prerequisite.error.message')}\n\n${errorList}\n\n${this.translate('iam.permission.auto.select.prompt')}`,
2320
- icon: 'pi pi-exclamation-triangle',
2290
+ icon: 'exclamation-triangle',
2321
2291
  acceptLabel: this.translate('iam.permission.auto.select.required'),
2322
2292
  rejectLabel: this.translate('shared.cancel'),
2323
- acceptIcon: 'pi pi-check',
2324
- rejectIcon: 'pi pi-times',
2293
+ acceptIcon: 'check',
2294
+ rejectIcon: 'times',
2325
2295
  accept: () => {
2326
2296
  const selMap = { ...this.selectionMap() };
2327
2297
  prerequisiteErrors.forEach((error) => {
@@ -2346,8 +2316,8 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2346
2316
  },
2347
2317
  });
2348
2318
  }
2349
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CompanyActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2350
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: CompanyActionSelectorComponent, isStandalone: true, selector: "flusys-company-action-selector", usesInheritance: true, ngImport: i0, template: `
2319
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CompanyActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2320
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: CompanyActionSelectorComponent, isStandalone: true, selector: "flusys-company-action-selector", usesInheritance: true, ngImport: i0, template: `
2351
2321
  <div class="company-action-selector">
2352
2322
  <div class="mb-4">
2353
2323
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
@@ -2355,7 +2325,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2355
2325
  <label class="block font-semibold mb-2">{{
2356
2326
  'iam.permission.select.company' | translate
2357
2327
  }}</label>
2358
- <p-select
2328
+ <f-select
2359
2329
  [ngModel]="selectedCompanyId()"
2360
2330
  (ngModelChange)="selectedCompanyId.set($event)"
2361
2331
  [options]="companies()"
@@ -2377,7 +2347,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2377
2347
  <div
2378
2348
  class="surface-card p-5 rounded-border shadow-sm flex justify-center"
2379
2349
  >
2380
- <i class="pi pi-spin pi-spinner text-primary text-5xl"></i>
2350
+ <ui-icon name="loader-circle" spin class="text-primary text-5xl"></ui-icon>
2381
2351
  </div>
2382
2352
  }
2383
2353
 
@@ -2399,36 +2369,36 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2399
2369
  </div>
2400
2370
  <div class="flex flex-wrap gap-2">
2401
2371
  <button
2402
- pButton
2372
+ fButton
2403
2373
  [outlined]="true"
2404
2374
  size="small"
2405
2375
  severity="secondary"
2406
2376
  (click)="selectAll()"
2407
2377
  >
2408
- <span pButtonIcon class="pi pi-check"></span>
2378
+ <ui-icon pButtonIcon name="check"></ui-icon>
2409
2379
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
2410
2380
  </button>
2411
2381
  <button
2412
- pButton
2382
+ fButton
2413
2383
  [outlined]="true"
2414
2384
  size="small"
2415
2385
  severity="secondary"
2416
2386
  (click)="deselectAll()"
2417
2387
  >
2418
- <span pButtonIcon class="pi pi-times"></span>
2388
+ <ui-icon pButtonIcon name="times"></ui-icon>
2419
2389
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
2420
2390
  </button>
2421
2391
  <button
2422
- pButton
2392
+ fButton
2423
2393
  *hasPermission="COMPANY_ACTION_PERMISSIONS.ASSIGN"
2424
2394
  [disabled]="!canSave() || saving()"
2425
2395
  size="small"
2426
2396
  (click)="saveChanges()"
2427
2397
  >
2428
2398
  @if (saving()) {
2429
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
2399
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
2430
2400
  } @else {
2431
- <span pButtonIcon class="pi pi-save"></span>
2401
+ <ui-icon pButtonIcon name="save"></ui-icon>
2432
2402
  }
2433
2403
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
2434
2404
  </button>
@@ -2438,7 +2408,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2438
2408
  @if (invalidActionsCount() > 0) {
2439
2409
  <div class="validation-warning rounded-border p-3 mb-4">
2440
2410
  <div class="flex items-start gap-2">
2441
- <i class="pi pi-exclamation-triangle text-xl"></i>
2411
+ <ui-icon name="exclamation-triangle" class="text-xl"></ui-icon>
2442
2412
  <div class="flex-1">
2443
2413
  <span class="font-semibold"
2444
2414
  >{{ 'iam.validation.warning.title' | translate }}:</span
@@ -2457,20 +2427,19 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2457
2427
  }
2458
2428
 
2459
2429
  <div class="overflow-x-auto -mx-4 sm:mx-0">
2460
- <p-treetable
2430
+ <f-treetable
2461
2431
  [value]="treeNodes()"
2462
2432
  dataKey="id"
2463
- class="p-treetable-sm"
2464
2433
  [tableStyle]="{ 'min-width': '50rem' }"
2465
2434
  >
2466
2435
  <ng-template #header>
2467
2436
  <tr>
2468
2437
  <th class="w-12">
2469
- <p-checkbox
2438
+ <f-checkbox
2470
2439
  [ngModel]="allSelected()"
2471
2440
  [binary]="true"
2472
2441
  (ngModelChange)="toggleAll()"
2473
- [pTooltip]="'shared.select.deselect.all' | translate"
2442
+ [fTooltip]="'shared.select.deselect.all' | translate"
2474
2443
  tooltipPosition="top"
2475
2444
  />
2476
2445
  </th>
@@ -2488,27 +2457,24 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2488
2457
  @let hasUnmet = hasUnmetPrerequisites(rowData);
2489
2458
  <tr [class.highlight-warning]="hasUnmet">
2490
2459
  <td class="w-12">
2491
- <p-checkbox
2460
+ <f-checkbox
2492
2461
  [ngModel]="selectionMap()[rowData.id]"
2493
2462
  [binary]="true"
2494
2463
  (ngModelChange)="onActionToggle(rowData, $event)"
2495
- [pTooltip]="getTooltip(rowData)"
2464
+ [fTooltip]="getTooltip(rowData)"
2496
2465
  tooltipPosition="top"
2497
2466
  />
2498
2467
  </td>
2499
2468
  <td>
2500
- <p-treetabletoggler [rowNode]="rowNode" />
2469
+ <f-treetabletoggler [rowNode]="rowNode" />
2501
2470
  <span class="inline-flex items-center gap-2">
2502
2471
  {{ rowData.name }}
2503
2472
  @if (hasUnmet) {
2504
- <i
2505
- class="pi pi-exclamation-triangle text-orange-500"
2506
- [pTooltip]="
2473
+ <ui-icon name="exclamation-triangle" class="text-orange-500" [fTooltip]="
2507
2474
  'iam.validation.unmet.prerequisites.tooltip'
2508
2475
  | translate
2509
2476
  "
2510
- tooltipPosition="top"
2511
- ></i>
2477
+ tooltipPosition="top"></ui-icon>
2512
2478
  }
2513
2479
  </span>
2514
2480
  </td>
@@ -2516,7 +2482,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2516
2482
  {{ rowData.code || '-' }}
2517
2483
  </td>
2518
2484
  <td>
2519
- <p-tag
2485
+ <f-tag
2520
2486
  [value]="rowData.actionType"
2521
2487
  [severity]="
2522
2488
  rowData.actionType === 'backend' ? 'info' : 'success'
@@ -2532,7 +2498,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2532
2498
  <tr>
2533
2499
  <td colspan="5" class="text-center p-4 text-muted-color">
2534
2500
  @if (loading()) {
2535
- <i class="pi pi-spin pi-spinner"></i>
2501
+ <ui-icon name="loader-circle" spin></ui-icon>
2536
2502
  {{ 'shared.loading.actions' | translate }}
2537
2503
  } @else {
2538
2504
  {{ 'iam.permission.no.actions.available' | translate }}
@@ -2540,14 +2506,14 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2540
2506
  </td>
2541
2507
  </tr>
2542
2508
  </ng-template>
2543
- </p-treetable>
2509
+ </f-treetable>
2544
2510
  </div>
2545
2511
  </div>
2546
2512
 
2547
2513
  @if (hasChanges()) {
2548
2514
  <div class="border border-surface rounded-border p-3 mt-4">
2549
2515
  <div class="flex items-center gap-2 mb-3">
2550
- <i class="pi pi-info-circle text-primary"></i>
2516
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
2551
2517
  <span class="font-bold">{{
2552
2518
  'shared.pending.changes' | translate
2553
2519
  }}</span>
@@ -2556,7 +2522,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2556
2522
  @if (pendingAdd().length > 0) {
2557
2523
  <div>
2558
2524
  <div class="flex items-center gap-2 mb-2">
2559
- <i class="pi pi-plus-circle text-green-500"></i>
2525
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
2560
2526
  <strong class="text-sm"
2561
2527
  >{{ 'shared.to.whitelist' | translate }} ({{
2562
2528
  pendingAdd().length
@@ -2573,7 +2539,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2573
2539
  @if (pendingRemove().length > 0) {
2574
2540
  <div>
2575
2541
  <div class="flex items-center gap-2 mb-2">
2576
- <i class="pi pi-minus-circle text-red-500"></i>
2542
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
2577
2543
  <strong class="text-sm"
2578
2544
  >{{ 'shared.to.remove' | translate }} ({{
2579
2545
  pendingRemove().length
@@ -2594,9 +2560,7 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2594
2560
 
2595
2561
  @if (!loading() && actions().length === 0) {
2596
2562
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
2597
- <i
2598
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
2599
- ></i>
2563
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
2600
2564
  <p class="text-muted-color m-0">
2601
2565
  {{ 'iam.permission.no.actions.for.company' | translate }}
2602
2566
  </p>
@@ -2604,11 +2568,11 @@ class CompanyActionSelectorComponent extends BaseActionSelectorComponent {
2604
2568
  }
2605
2569
  }
2606
2570
  </div>
2607
- `, isInline: true, styles: [":host{display:block}.validation-warning{background-color:var(--p-yellow-50, #fefce8);border-left:4px solid var(--p-yellow-500, #eab308);color:var(--p-yellow-700, #a16207)}:host-context(.p-dark) .validation-warning{background-color:#eab3081a;color:var(--p-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--p-red-50, rgba(239, 68, 68, .1))!important}:host-context(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PrimeModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["pButton", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "link", "rounded", "fluid", "variant", "iconOnly", "loading", "severity"] }, { kind: "directive", type: i2.ButtonLabel, selector: "[pButtonLabel]", inputs: ["pButtonLabelPT", "pButtonLabelUnstyled"] }, { kind: "directive", type: i2.ButtonIcon, selector: "[pButtonIcon]", inputs: ["pButtonIconPT", "pButtonUnstyled"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: i4.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "multiple", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i5.Tag, selector: "p-tag", inputs: ["severity", "value", "icon", "rounded"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "component", type: i7.TreeTable, selector: "p-treetable, p-tree-table", inputs: ["columns", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "selectionKeys", "collapsedKeys", "showGridlines"], outputs: ["rowsChange", "selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel", "selectionKeysChange", "collapsedKeysChange"] }, { kind: "component", type: i7.TreeTableToggler, selector: "p-treetabletoggler, p-treetable-toggler", inputs: ["rowNode"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
2571
+ `, isInline: true, styles: [":host{display:block}.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(.p-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(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: UiModule }, { kind: "directive", type: i2.FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "rounded", "raised", "fluid", "disabled", "loading", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: i2.TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color"] }, { kind: "component", type: i2.CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "inputId", "invalid", "indeterminate", "touched", "styleClass", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "component", type: i2.SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "showClear", "loading", "inputId", "invalid", "touched", "styleClass", "editable"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay"] }, { kind: "component", type: i2.TreeTableComponent, selector: "f-treetable", inputs: ["value", "loading", "dataKey", "styleClass", "tableStyle", "scrollable"] }, { kind: "component", type: i2.TreeTableTogglerComponent, selector: "f-treetabletoggler", inputs: ["rowNode"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.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" }] });
2608
2572
  }
2609
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: CompanyActionSelectorComponent, decorators: [{
2573
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: CompanyActionSelectorComponent, decorators: [{
2610
2574
  type: Component,
2611
- args: [{ selector: 'flusys-company-action-selector', imports: [FormsModule, PrimeModule, HasPermissionDirective, TranslatePipe], template: `
2575
+ args: [{ selector: 'flusys-company-action-selector', imports: [UiModule, FormsModule, HasPermissionDirective, TranslatePipe], template: `
2612
2576
  <div class="company-action-selector">
2613
2577
  <div class="mb-4">
2614
2578
  <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
@@ -2616,7 +2580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2616
2580
  <label class="block font-semibold mb-2">{{
2617
2581
  'iam.permission.select.company' | translate
2618
2582
  }}</label>
2619
- <p-select
2583
+ <f-select
2620
2584
  [ngModel]="selectedCompanyId()"
2621
2585
  (ngModelChange)="selectedCompanyId.set($event)"
2622
2586
  [options]="companies()"
@@ -2638,7 +2602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2638
2602
  <div
2639
2603
  class="surface-card p-5 rounded-border shadow-sm flex justify-center"
2640
2604
  >
2641
- <i class="pi pi-spin pi-spinner text-primary text-5xl"></i>
2605
+ <ui-icon name="loader-circle" spin class="text-primary text-5xl"></ui-icon>
2642
2606
  </div>
2643
2607
  }
2644
2608
 
@@ -2660,36 +2624,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2660
2624
  </div>
2661
2625
  <div class="flex flex-wrap gap-2">
2662
2626
  <button
2663
- pButton
2627
+ fButton
2664
2628
  [outlined]="true"
2665
2629
  size="small"
2666
2630
  severity="secondary"
2667
2631
  (click)="selectAll()"
2668
2632
  >
2669
- <span pButtonIcon class="pi pi-check"></span>
2633
+ <ui-icon pButtonIcon name="check"></ui-icon>
2670
2634
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
2671
2635
  </button>
2672
2636
  <button
2673
- pButton
2637
+ fButton
2674
2638
  [outlined]="true"
2675
2639
  size="small"
2676
2640
  severity="secondary"
2677
2641
  (click)="deselectAll()"
2678
2642
  >
2679
- <span pButtonIcon class="pi pi-times"></span>
2643
+ <ui-icon pButtonIcon name="times"></ui-icon>
2680
2644
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
2681
2645
  </button>
2682
2646
  <button
2683
- pButton
2647
+ fButton
2684
2648
  *hasPermission="COMPANY_ACTION_PERMISSIONS.ASSIGN"
2685
2649
  [disabled]="!canSave() || saving()"
2686
2650
  size="small"
2687
2651
  (click)="saveChanges()"
2688
2652
  >
2689
2653
  @if (saving()) {
2690
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
2654
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
2691
2655
  } @else {
2692
- <span pButtonIcon class="pi pi-save"></span>
2656
+ <ui-icon pButtonIcon name="save"></ui-icon>
2693
2657
  }
2694
2658
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
2695
2659
  </button>
@@ -2699,7 +2663,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2699
2663
  @if (invalidActionsCount() > 0) {
2700
2664
  <div class="validation-warning rounded-border p-3 mb-4">
2701
2665
  <div class="flex items-start gap-2">
2702
- <i class="pi pi-exclamation-triangle text-xl"></i>
2666
+ <ui-icon name="exclamation-triangle" class="text-xl"></ui-icon>
2703
2667
  <div class="flex-1">
2704
2668
  <span class="font-semibold"
2705
2669
  >{{ 'iam.validation.warning.title' | translate }}:</span
@@ -2718,20 +2682,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2718
2682
  }
2719
2683
 
2720
2684
  <div class="overflow-x-auto -mx-4 sm:mx-0">
2721
- <p-treetable
2685
+ <f-treetable
2722
2686
  [value]="treeNodes()"
2723
2687
  dataKey="id"
2724
- class="p-treetable-sm"
2725
2688
  [tableStyle]="{ 'min-width': '50rem' }"
2726
2689
  >
2727
2690
  <ng-template #header>
2728
2691
  <tr>
2729
2692
  <th class="w-12">
2730
- <p-checkbox
2693
+ <f-checkbox
2731
2694
  [ngModel]="allSelected()"
2732
2695
  [binary]="true"
2733
2696
  (ngModelChange)="toggleAll()"
2734
- [pTooltip]="'shared.select.deselect.all' | translate"
2697
+ [fTooltip]="'shared.select.deselect.all' | translate"
2735
2698
  tooltipPosition="top"
2736
2699
  />
2737
2700
  </th>
@@ -2749,27 +2712,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2749
2712
  @let hasUnmet = hasUnmetPrerequisites(rowData);
2750
2713
  <tr [class.highlight-warning]="hasUnmet">
2751
2714
  <td class="w-12">
2752
- <p-checkbox
2715
+ <f-checkbox
2753
2716
  [ngModel]="selectionMap()[rowData.id]"
2754
2717
  [binary]="true"
2755
2718
  (ngModelChange)="onActionToggle(rowData, $event)"
2756
- [pTooltip]="getTooltip(rowData)"
2719
+ [fTooltip]="getTooltip(rowData)"
2757
2720
  tooltipPosition="top"
2758
2721
  />
2759
2722
  </td>
2760
2723
  <td>
2761
- <p-treetabletoggler [rowNode]="rowNode" />
2724
+ <f-treetabletoggler [rowNode]="rowNode" />
2762
2725
  <span class="inline-flex items-center gap-2">
2763
2726
  {{ rowData.name }}
2764
2727
  @if (hasUnmet) {
2765
- <i
2766
- class="pi pi-exclamation-triangle text-orange-500"
2767
- [pTooltip]="
2728
+ <ui-icon name="exclamation-triangle" class="text-orange-500" [fTooltip]="
2768
2729
  'iam.validation.unmet.prerequisites.tooltip'
2769
2730
  | translate
2770
2731
  "
2771
- tooltipPosition="top"
2772
- ></i>
2732
+ tooltipPosition="top"></ui-icon>
2773
2733
  }
2774
2734
  </span>
2775
2735
  </td>
@@ -2777,7 +2737,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2777
2737
  {{ rowData.code || '-' }}
2778
2738
  </td>
2779
2739
  <td>
2780
- <p-tag
2740
+ <f-tag
2781
2741
  [value]="rowData.actionType"
2782
2742
  [severity]="
2783
2743
  rowData.actionType === 'backend' ? 'info' : 'success'
@@ -2793,7 +2753,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2793
2753
  <tr>
2794
2754
  <td colspan="5" class="text-center p-4 text-muted-color">
2795
2755
  @if (loading()) {
2796
- <i class="pi pi-spin pi-spinner"></i>
2756
+ <ui-icon name="loader-circle" spin></ui-icon>
2797
2757
  {{ 'shared.loading.actions' | translate }}
2798
2758
  } @else {
2799
2759
  {{ 'iam.permission.no.actions.available' | translate }}
@@ -2801,14 +2761,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2801
2761
  </td>
2802
2762
  </tr>
2803
2763
  </ng-template>
2804
- </p-treetable>
2764
+ </f-treetable>
2805
2765
  </div>
2806
2766
  </div>
2807
2767
 
2808
2768
  @if (hasChanges()) {
2809
2769
  <div class="border border-surface rounded-border p-3 mt-4">
2810
2770
  <div class="flex items-center gap-2 mb-3">
2811
- <i class="pi pi-info-circle text-primary"></i>
2771
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
2812
2772
  <span class="font-bold">{{
2813
2773
  'shared.pending.changes' | translate
2814
2774
  }}</span>
@@ -2817,7 +2777,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2817
2777
  @if (pendingAdd().length > 0) {
2818
2778
  <div>
2819
2779
  <div class="flex items-center gap-2 mb-2">
2820
- <i class="pi pi-plus-circle text-green-500"></i>
2780
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
2821
2781
  <strong class="text-sm"
2822
2782
  >{{ 'shared.to.whitelist' | translate }} ({{
2823
2783
  pendingAdd().length
@@ -2834,7 +2794,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2834
2794
  @if (pendingRemove().length > 0) {
2835
2795
  <div>
2836
2796
  <div class="flex items-center gap-2 mb-2">
2837
- <i class="pi pi-minus-circle text-red-500"></i>
2797
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
2838
2798
  <strong class="text-sm"
2839
2799
  >{{ 'shared.to.remove' | translate }} ({{
2840
2800
  pendingRemove().length
@@ -2855,9 +2815,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2855
2815
 
2856
2816
  @if (!loading() && actions().length === 0) {
2857
2817
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
2858
- <i
2859
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
2860
- ></i>
2818
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
2861
2819
  <p class="text-muted-color m-0">
2862
2820
  {{ 'iam.permission.no.actions.for.company' | translate }}
2863
2821
  </p>
@@ -2865,7 +2823,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
2865
2823
  }
2866
2824
  }
2867
2825
  </div>
2868
- `, styles: [":host{display:block}.validation-warning{background-color:var(--p-yellow-50, #fefce8);border-left:4px solid var(--p-yellow-500, #eab308);color:var(--p-yellow-700, #a16207)}:host-context(.p-dark) .validation-warning{background-color:#eab3081a;color:var(--p-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--p-red-50, rgba(239, 68, 68, .1))!important}:host-context(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"] }]
2826
+ `, styles: [":host{display:block}.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(.p-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(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"] }]
2869
2827
  }], ctorParameters: () => [] });
2870
2828
 
2871
2829
  /**
@@ -3185,15 +3143,15 @@ class UserRoleSelectorComponent {
3185
3143
  this._selectionMap.set({});
3186
3144
  this._initialSelection.set({});
3187
3145
  }
3188
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: UserRoleSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3189
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: UserRoleSelectorComponent, isStandalone: true, selector: "flusys-user-role-selector", ngImport: i0, template: `
3146
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UserRoleSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3147
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: UserRoleSelectorComponent, isStandalone: true, selector: "flusys-user-role-selector", ngImport: i0, template: `
3190
3148
  <div class="user-role-selector">
3191
3149
  <!-- User and Branch Selectors -->
3192
3150
  <div class="surface-card p-4 rounded-border mb-4 shadow-sm">
3193
3151
  <div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
3194
3152
  <div>
3195
3153
  <label class="block font-semibold mb-2">
3196
- <i class="pi pi-user mr-2 text-primary"></i>
3154
+ <ui-icon name="user" class="mr-2 text-primary"></ui-icon>
3197
3155
  {{ 'iam.permission.select.user' | translate }}
3198
3156
  </label>
3199
3157
  <lib-user-select
@@ -3209,10 +3167,10 @@ class UserRoleSelectorComponent {
3209
3167
  @if (showBranchSelector()) {
3210
3168
  <div>
3211
3169
  <label class="block font-semibold mb-2">
3212
- <i class="pi pi-building mr-2 text-primary"></i>
3170
+ <ui-icon name="building" class="mr-2 text-primary"></ui-icon>
3213
3171
  {{ 'iam.permission.select.branch' | translate }}
3214
3172
  </label>
3215
- <p-select
3173
+ <f-select
3216
3174
  [ngModel]="selectedBranchId()"
3217
3175
  (ngModelChange)="selectedBranchId.set($event)"
3218
3176
  [options]="filteredBranches()"
@@ -3228,18 +3186,18 @@ class UserRoleSelectorComponent {
3228
3186
  <ng-template #selectedItem let-branch>
3229
3187
  @if (branch) {
3230
3188
  <div class="flex items-center gap-2">
3231
- <i class="pi pi-building text-primary"></i>
3189
+ <ui-icon name="building" class="text-primary"></ui-icon>
3232
3190
  <span class="font-semibold">{{ branch.name }}</span>
3233
3191
  </div>
3234
3192
  }
3235
3193
  </ng-template>
3236
3194
  <ng-template #item let-branch>
3237
3195
  <div class="flex items-center gap-2">
3238
- <i class="pi pi-building text-muted-color"></i>
3196
+ <ui-icon name="building" class="text-muted-color"></ui-icon>
3239
3197
  <span>{{ branch.name }}</span>
3240
3198
  </div>
3241
3199
  </ng-template>
3242
- </p-select>
3200
+ </f-select>
3243
3201
  <small class="text-muted-color block mt-1">
3244
3202
  {{
3245
3203
  (filteredBranches().length !== 1
@@ -3259,7 +3217,7 @@ class UserRoleSelectorComponent {
3259
3217
  <div
3260
3218
  class="surface-card p-5 rounded-border shadow-sm flex justify-center"
3261
3219
  >
3262
- <i class="pi pi-spin pi-spinner text-primary text-5xl"></i>
3220
+ <ui-icon name="loader-circle" spin class="text-primary text-5xl"></ui-icon>
3263
3221
  </div>
3264
3222
  }
3265
3223
 
@@ -3282,36 +3240,36 @@ class UserRoleSelectorComponent {
3282
3240
  </div>
3283
3241
  <div class="flex flex-wrap gap-2">
3284
3242
  <button
3285
- pButton
3243
+ fButton
3286
3244
  [outlined]="true"
3287
3245
  size="small"
3288
3246
  severity="secondary"
3289
3247
  (click)="selectAll()"
3290
3248
  >
3291
- <span pButtonIcon class="pi pi-check"></span>
3249
+ <ui-icon pButtonIcon name="check"></ui-icon>
3292
3250
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
3293
3251
  </button>
3294
3252
  <button
3295
- pButton
3253
+ fButton
3296
3254
  [outlined]="true"
3297
3255
  size="small"
3298
3256
  severity="secondary"
3299
3257
  (click)="deselectAll()"
3300
3258
  >
3301
- <span pButtonIcon class="pi pi-times"></span>
3259
+ <ui-icon pButtonIcon name="times"></ui-icon>
3302
3260
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
3303
3261
  </button>
3304
3262
  <button
3305
- pButton
3263
+ fButton
3306
3264
  *hasPermission="USER_ROLE_PERMISSIONS.ASSIGN"
3307
3265
  [disabled]="!canSave() || saving()"
3308
3266
  size="small"
3309
3267
  (click)="saveChanges()"
3310
3268
  >
3311
3269
  @if (saving()) {
3312
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
3270
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
3313
3271
  } @else {
3314
- <span pButtonIcon class="pi pi-save"></span>
3272
+ <ui-icon pButtonIcon name="save"></ui-icon>
3315
3273
  }
3316
3274
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
3317
3275
  </button>
@@ -3320,7 +3278,7 @@ class UserRoleSelectorComponent {
3320
3278
 
3321
3279
  <!-- Role Table -->
3322
3280
  <div class="overflow-x-auto -mx-4 sm:mx-0">
3323
- <p-table
3281
+ <f-table
3324
3282
  [value]="roles()"
3325
3283
  [rows]="10"
3326
3284
  [paginator]="roles().length > 10"
@@ -3330,17 +3288,16 @@ class UserRoleSelectorComponent {
3330
3288
  [currentPageReportTemplate]="
3331
3289
  'iam.pagination.roles.template' | translate
3332
3290
  "
3333
- styleClass="p-datatable-sm"
3334
3291
  [tableStyle]="{ 'min-width': '35rem' }"
3335
3292
  >
3336
3293
  <ng-template #header>
3337
3294
  <tr>
3338
3295
  <th style="width: 3rem">
3339
- <p-checkbox
3296
+ <f-checkbox
3340
3297
  [ngModel]="allSelected()"
3341
3298
  [binary]="true"
3342
3299
  (ngModelChange)="toggleAll()"
3343
- [pTooltip]="'shared.select.deselect.all' | translate"
3300
+ [fTooltip]="'shared.select.deselect.all' | translate"
3344
3301
  tooltipPosition="top"
3345
3302
  />
3346
3303
  </th>
@@ -3356,11 +3313,11 @@ class UserRoleSelectorComponent {
3356
3313
  <ng-template #body let-role>
3357
3314
  <tr>
3358
3315
  <td>
3359
- <p-checkbox
3316
+ <f-checkbox
3360
3317
  [ngModel]="selectionMap()[role.id]"
3361
3318
  [binary]="true"
3362
3319
  (ngModelChange)="onRoleToggle(role, $event)"
3363
- [pTooltip]="getTooltip(role)"
3320
+ [fTooltip]="getTooltip(role)"
3364
3321
  tooltipPosition="top"
3365
3322
  />
3366
3323
  </td>
@@ -3375,7 +3332,7 @@ class UserRoleSelectorComponent {
3375
3332
  <tr>
3376
3333
  <td colspan="4" class="text-center p-4 text-muted-color">
3377
3334
  @if (loading()) {
3378
- <i class="pi pi-spin pi-spinner"></i>
3335
+ <ui-icon name="loader-circle" spin></ui-icon>
3379
3336
  {{ 'shared.loading.roles' | translate }}
3380
3337
  } @else {
3381
3338
  {{ 'iam.permission.no.roles.available' | translate }}
@@ -3383,7 +3340,7 @@ class UserRoleSelectorComponent {
3383
3340
  </td>
3384
3341
  </tr>
3385
3342
  </ng-template>
3386
- </p-table>
3343
+ </f-table>
3387
3344
  </div>
3388
3345
  </div>
3389
3346
 
@@ -3391,7 +3348,7 @@ class UserRoleSelectorComponent {
3391
3348
  @if (hasChanges()) {
3392
3349
  <div class="border border-surface rounded-border p-3 mt-4">
3393
3350
  <div class="flex items-center gap-2 mb-3">
3394
- <i class="pi pi-info-circle text-primary"></i>
3351
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
3395
3352
  <span class="font-bold">{{
3396
3353
  'shared.pending.changes' | translate
3397
3354
  }}</span>
@@ -3400,7 +3357,7 @@ class UserRoleSelectorComponent {
3400
3357
  @if (pendingAdd().length > 0) {
3401
3358
  <div>
3402
3359
  <div class="flex items-center gap-2 mb-2">
3403
- <i class="pi pi-plus-circle text-green-500"></i>
3360
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
3404
3361
  <strong class="text-sm"
3405
3362
  >{{ 'shared.to.assign' | translate }} ({{
3406
3363
  pendingAdd().length
@@ -3417,7 +3374,7 @@ class UserRoleSelectorComponent {
3417
3374
  @if (pendingRemove().length > 0) {
3418
3375
  <div>
3419
3376
  <div class="flex items-center gap-2 mb-2">
3420
- <i class="pi pi-minus-circle text-red-500"></i>
3377
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
3421
3378
  <strong class="text-sm"
3422
3379
  >{{ 'shared.to.remove' | translate }} ({{
3423
3380
  pendingRemove().length
@@ -3438,9 +3395,7 @@ class UserRoleSelectorComponent {
3438
3395
 
3439
3396
  @if (!loading() && roles().length === 0) {
3440
3397
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
3441
- <i
3442
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
3443
- ></i>
3398
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
3444
3399
  <p class="text-muted-color m-0">
3445
3400
  {{ 'iam.permission.no.roles.for.user' | translate }}
3446
3401
  </p>
@@ -3448,14 +3403,14 @@ class UserRoleSelectorComponent {
3448
3403
  }
3449
3404
  }
3450
3405
  </div>
3451
- `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PrimeModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["pButton", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "link", "rounded", "fluid", "variant", "iconOnly", "loading", "severity"] }, { kind: "directive", type: i2.ButtonLabel, selector: "[pButtonLabel]", inputs: ["pButtonLabelPT", "pButtonLabelUnstyled"] }, { kind: "directive", type: i2.ButtonIcon, selector: "[pButtonIcon]", inputs: ["pButtonIconPT", "pButtonUnstyled"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: i4.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "multiple", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i5$1.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "size", "showGridlines", "stripedRows", "groupRowsByOrder", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["contextMenuSelectionChange", "firstChange", "rowsChange", "totalRecordsChange", "selectionChange", "selectAllChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "pTooltipPT", "pTooltipUnstyled"] }, { 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" }] });
3406
+ `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: UiModule }, { kind: "directive", type: i2.FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "rounded", "raised", "fluid", "disabled", "loading", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: i2.CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "inputId", "invalid", "indeterminate", "touched", "styleClass", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "component", type: i2.SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "showClear", "loading", "inputId", "invalid", "touched", "styleClass", "editable"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur"] }, { kind: "component", type: i2.TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "sortField", "sortOrder"], outputs: ["sortFieldChange", "sortOrderChange", "onLazyLoad", "onSort"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { 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" }] });
3452
3407
  }
3453
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: UserRoleSelectorComponent, decorators: [{
3408
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UserRoleSelectorComponent, decorators: [{
3454
3409
  type: Component,
3455
3410
  args: [{ selector: 'flusys-user-role-selector', imports: [
3456
3411
  CommonModule,
3457
3412
  FormsModule,
3458
- PrimeModule,
3413
+ UiModule,
3459
3414
  HasPermissionDirective,
3460
3415
  UserSelectComponent,
3461
3416
  TranslatePipe,
@@ -3466,7 +3421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3466
3421
  <div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
3467
3422
  <div>
3468
3423
  <label class="block font-semibold mb-2">
3469
- <i class="pi pi-user mr-2 text-primary"></i>
3424
+ <ui-icon name="user" class="mr-2 text-primary"></ui-icon>
3470
3425
  {{ 'iam.permission.select.user' | translate }}
3471
3426
  </label>
3472
3427
  <lib-user-select
@@ -3482,10 +3437,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3482
3437
  @if (showBranchSelector()) {
3483
3438
  <div>
3484
3439
  <label class="block font-semibold mb-2">
3485
- <i class="pi pi-building mr-2 text-primary"></i>
3440
+ <ui-icon name="building" class="mr-2 text-primary"></ui-icon>
3486
3441
  {{ 'iam.permission.select.branch' | translate }}
3487
3442
  </label>
3488
- <p-select
3443
+ <f-select
3489
3444
  [ngModel]="selectedBranchId()"
3490
3445
  (ngModelChange)="selectedBranchId.set($event)"
3491
3446
  [options]="filteredBranches()"
@@ -3501,18 +3456,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3501
3456
  <ng-template #selectedItem let-branch>
3502
3457
  @if (branch) {
3503
3458
  <div class="flex items-center gap-2">
3504
- <i class="pi pi-building text-primary"></i>
3459
+ <ui-icon name="building" class="text-primary"></ui-icon>
3505
3460
  <span class="font-semibold">{{ branch.name }}</span>
3506
3461
  </div>
3507
3462
  }
3508
3463
  </ng-template>
3509
3464
  <ng-template #item let-branch>
3510
3465
  <div class="flex items-center gap-2">
3511
- <i class="pi pi-building text-muted-color"></i>
3466
+ <ui-icon name="building" class="text-muted-color"></ui-icon>
3512
3467
  <span>{{ branch.name }}</span>
3513
3468
  </div>
3514
3469
  </ng-template>
3515
- </p-select>
3470
+ </f-select>
3516
3471
  <small class="text-muted-color block mt-1">
3517
3472
  {{
3518
3473
  (filteredBranches().length !== 1
@@ -3532,7 +3487,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3532
3487
  <div
3533
3488
  class="surface-card p-5 rounded-border shadow-sm flex justify-center"
3534
3489
  >
3535
- <i class="pi pi-spin pi-spinner text-primary text-5xl"></i>
3490
+ <ui-icon name="loader-circle" spin class="text-primary text-5xl"></ui-icon>
3536
3491
  </div>
3537
3492
  }
3538
3493
 
@@ -3555,36 +3510,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3555
3510
  </div>
3556
3511
  <div class="flex flex-wrap gap-2">
3557
3512
  <button
3558
- pButton
3513
+ fButton
3559
3514
  [outlined]="true"
3560
3515
  size="small"
3561
3516
  severity="secondary"
3562
3517
  (click)="selectAll()"
3563
3518
  >
3564
- <span pButtonIcon class="pi pi-check"></span>
3519
+ <ui-icon pButtonIcon name="check"></ui-icon>
3565
3520
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
3566
3521
  </button>
3567
3522
  <button
3568
- pButton
3523
+ fButton
3569
3524
  [outlined]="true"
3570
3525
  size="small"
3571
3526
  severity="secondary"
3572
3527
  (click)="deselectAll()"
3573
3528
  >
3574
- <span pButtonIcon class="pi pi-times"></span>
3529
+ <ui-icon pButtonIcon name="times"></ui-icon>
3575
3530
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
3576
3531
  </button>
3577
3532
  <button
3578
- pButton
3533
+ fButton
3579
3534
  *hasPermission="USER_ROLE_PERMISSIONS.ASSIGN"
3580
3535
  [disabled]="!canSave() || saving()"
3581
3536
  size="small"
3582
3537
  (click)="saveChanges()"
3583
3538
  >
3584
3539
  @if (saving()) {
3585
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
3540
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
3586
3541
  } @else {
3587
- <span pButtonIcon class="pi pi-save"></span>
3542
+ <ui-icon pButtonIcon name="save"></ui-icon>
3588
3543
  }
3589
3544
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
3590
3545
  </button>
@@ -3593,7 +3548,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3593
3548
 
3594
3549
  <!-- Role Table -->
3595
3550
  <div class="overflow-x-auto -mx-4 sm:mx-0">
3596
- <p-table
3551
+ <f-table
3597
3552
  [value]="roles()"
3598
3553
  [rows]="10"
3599
3554
  [paginator]="roles().length > 10"
@@ -3603,17 +3558,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3603
3558
  [currentPageReportTemplate]="
3604
3559
  'iam.pagination.roles.template' | translate
3605
3560
  "
3606
- styleClass="p-datatable-sm"
3607
3561
  [tableStyle]="{ 'min-width': '35rem' }"
3608
3562
  >
3609
3563
  <ng-template #header>
3610
3564
  <tr>
3611
3565
  <th style="width: 3rem">
3612
- <p-checkbox
3566
+ <f-checkbox
3613
3567
  [ngModel]="allSelected()"
3614
3568
  [binary]="true"
3615
3569
  (ngModelChange)="toggleAll()"
3616
- [pTooltip]="'shared.select.deselect.all' | translate"
3570
+ [fTooltip]="'shared.select.deselect.all' | translate"
3617
3571
  tooltipPosition="top"
3618
3572
  />
3619
3573
  </th>
@@ -3629,11 +3583,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3629
3583
  <ng-template #body let-role>
3630
3584
  <tr>
3631
3585
  <td>
3632
- <p-checkbox
3586
+ <f-checkbox
3633
3587
  [ngModel]="selectionMap()[role.id]"
3634
3588
  [binary]="true"
3635
3589
  (ngModelChange)="onRoleToggle(role, $event)"
3636
- [pTooltip]="getTooltip(role)"
3590
+ [fTooltip]="getTooltip(role)"
3637
3591
  tooltipPosition="top"
3638
3592
  />
3639
3593
  </td>
@@ -3648,7 +3602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3648
3602
  <tr>
3649
3603
  <td colspan="4" class="text-center p-4 text-muted-color">
3650
3604
  @if (loading()) {
3651
- <i class="pi pi-spin pi-spinner"></i>
3605
+ <ui-icon name="loader-circle" spin></ui-icon>
3652
3606
  {{ 'shared.loading.roles' | translate }}
3653
3607
  } @else {
3654
3608
  {{ 'iam.permission.no.roles.available' | translate }}
@@ -3656,7 +3610,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3656
3610
  </td>
3657
3611
  </tr>
3658
3612
  </ng-template>
3659
- </p-table>
3613
+ </f-table>
3660
3614
  </div>
3661
3615
  </div>
3662
3616
 
@@ -3664,7 +3618,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3664
3618
  @if (hasChanges()) {
3665
3619
  <div class="border border-surface rounded-border p-3 mt-4">
3666
3620
  <div class="flex items-center gap-2 mb-3">
3667
- <i class="pi pi-info-circle text-primary"></i>
3621
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
3668
3622
  <span class="font-bold">{{
3669
3623
  'shared.pending.changes' | translate
3670
3624
  }}</span>
@@ -3673,7 +3627,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3673
3627
  @if (pendingAdd().length > 0) {
3674
3628
  <div>
3675
3629
  <div class="flex items-center gap-2 mb-2">
3676
- <i class="pi pi-plus-circle text-green-500"></i>
3630
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
3677
3631
  <strong class="text-sm"
3678
3632
  >{{ 'shared.to.assign' | translate }} ({{
3679
3633
  pendingAdd().length
@@ -3690,7 +3644,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3690
3644
  @if (pendingRemove().length > 0) {
3691
3645
  <div>
3692
3646
  <div class="flex items-center gap-2 mb-2">
3693
- <i class="pi pi-minus-circle text-red-500"></i>
3647
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
3694
3648
  <strong class="text-sm"
3695
3649
  >{{ 'shared.to.remove' | translate }} ({{
3696
3650
  pendingRemove().length
@@ -3711,9 +3665,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
3711
3665
 
3712
3666
  @if (!loading() && roles().length === 0) {
3713
3667
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
3714
- <i
3715
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
3716
- ></i>
3668
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
3717
3669
  <p class="text-muted-color m-0">
3718
3670
  {{ 'iam.permission.no.roles.for.user' | translate }}
3719
3671
  </p>
@@ -3867,14 +3819,14 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
3867
3819
  this.saving.set(false);
3868
3820
  }
3869
3821
  }
3870
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: UserActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3871
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: UserActionSelectorComponent, isStandalone: true, selector: "flusys-user-action-selector", usesInheritance: true, ngImport: i0, template: `
3822
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UserActionSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3823
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.6", type: UserActionSelectorComponent, isStandalone: true, selector: "flusys-user-action-selector", usesInheritance: true, ngImport: i0, template: `
3872
3824
  <div class="user-action-selector">
3873
3825
  <div class="surface-card p-4 rounded-border mb-4 shadow-sm">
3874
3826
  <div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
3875
3827
  <div>
3876
3828
  <label class="block font-semibold mb-2">
3877
- <i class="pi pi-user mr-2 text-primary"></i>
3829
+ <ui-icon name="user" class="mr-2 text-primary"></ui-icon>
3878
3830
  {{ 'iam.permission.select.user' | translate }}
3879
3831
  </label>
3880
3832
  <lib-user-select
@@ -3890,10 +3842,10 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
3890
3842
  @if (showBranchSelector()) {
3891
3843
  <div>
3892
3844
  <label class="block font-semibold mb-2">
3893
- <i class="pi pi-building mr-2 text-primary"></i>
3845
+ <ui-icon name="building" class="mr-2 text-primary"></ui-icon>
3894
3846
  {{ 'iam.permission.select.branch' | translate }}
3895
3847
  </label>
3896
- <p-select
3848
+ <f-select
3897
3849
  [ngModel]="selectedBranchId()"
3898
3850
  (ngModelChange)="selectedBranchId.set($event)"
3899
3851
  [options]="filteredBranches()"
@@ -3909,18 +3861,18 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
3909
3861
  <ng-template #selectedItem let-branch>
3910
3862
  @if (branch) {
3911
3863
  <div class="flex items-center gap-2">
3912
- <i class="pi pi-building text-primary"></i>
3864
+ <ui-icon name="building" class="text-primary"></ui-icon>
3913
3865
  <span class="font-semibold">{{ branch.name }}</span>
3914
3866
  </div>
3915
3867
  }
3916
3868
  </ng-template>
3917
3869
  <ng-template #item let-branch>
3918
3870
  <div class="flex items-center gap-2">
3919
- <i class="pi pi-building text-muted-color"></i>
3871
+ <ui-icon name="building" class="text-muted-color"></ui-icon>
3920
3872
  <span>{{ branch.name }}</span>
3921
3873
  </div>
3922
3874
  </ng-template>
3923
- </p-select>
3875
+ </f-select>
3924
3876
  <small class="text-muted-color block mt-1">
3925
3877
  {{
3926
3878
  (filteredBranches().length !== 1
@@ -3937,7 +3889,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
3937
3889
  @if (selectedUserId()) {
3938
3890
  @if (loading()) {
3939
3891
  <div class="flex justify-center p-5">
3940
- <i class="pi pi-spin pi-spinner text-4xl"></i>
3892
+ <ui-icon name="loader-circle" spin class="text-4xl"></ui-icon>
3941
3893
  </div>
3942
3894
  }
3943
3895
 
@@ -3959,36 +3911,36 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
3959
3911
  </div>
3960
3912
  <div class="flex flex-wrap gap-2">
3961
3913
  <button
3962
- pButton
3914
+ fButton
3963
3915
  [outlined]="true"
3964
3916
  size="small"
3965
3917
  severity="secondary"
3966
3918
  (click)="selectAll()"
3967
3919
  >
3968
- <span pButtonIcon class="pi pi-check"></span>
3920
+ <ui-icon pButtonIcon name="check"></ui-icon>
3969
3921
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
3970
3922
  </button>
3971
3923
  <button
3972
- pButton
3924
+ fButton
3973
3925
  [outlined]="true"
3974
3926
  size="small"
3975
3927
  severity="secondary"
3976
3928
  (click)="deselectAll()"
3977
3929
  >
3978
- <span pButtonIcon class="pi pi-times"></span>
3930
+ <ui-icon pButtonIcon name="times"></ui-icon>
3979
3931
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
3980
3932
  </button>
3981
3933
  <button
3982
- pButton
3934
+ fButton
3983
3935
  *hasPermission="USER_ACTION_PERMISSIONS.ASSIGN"
3984
3936
  [disabled]="!canSave() || saving()"
3985
3937
  size="small"
3986
3938
  (click)="saveChanges()"
3987
3939
  >
3988
3940
  @if (saving()) {
3989
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
3941
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
3990
3942
  } @else {
3991
- <span pButtonIcon class="pi pi-save"></span>
3943
+ <ui-icon pButtonIcon name="save"></ui-icon>
3992
3944
  }
3993
3945
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
3994
3946
  </button>
@@ -3998,7 +3950,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
3998
3950
  @if (invalidActionsCount() > 0) {
3999
3951
  <div class="validation-warning rounded-border p-3 mb-4">
4000
3952
  <div class="flex items-start gap-2">
4001
- <i class="pi pi-exclamation-triangle text-xl"></i>
3953
+ <ui-icon name="exclamation-triangle" class="text-xl"></ui-icon>
4002
3954
  <div class="flex-1">
4003
3955
  <span class="font-semibold"
4004
3956
  >{{ 'iam.validation.warning.title' | translate }}:</span
@@ -4017,20 +3969,19 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4017
3969
  }
4018
3970
 
4019
3971
  <div class="overflow-x-auto -mx-4 sm:mx-0">
4020
- <p-treetable
3972
+ <f-treetable
4021
3973
  [value]="treeNodes()"
4022
3974
  dataKey="id"
4023
- class="p-treetable-sm"
4024
3975
  [tableStyle]="{ 'min-width': '50rem' }"
4025
3976
  >
4026
3977
  <ng-template #header>
4027
3978
  <tr>
4028
3979
  <th class="w-12">
4029
- <p-checkbox
3980
+ <f-checkbox
4030
3981
  [ngModel]="allSelected()"
4031
3982
  [binary]="true"
4032
3983
  (ngModelChange)="toggleAll()"
4033
- [pTooltip]="'shared.select.deselect.all' | translate"
3984
+ [fTooltip]="'shared.select.deselect.all' | translate"
4034
3985
  tooltipPosition="top"
4035
3986
  />
4036
3987
  </th>
@@ -4049,27 +4000,24 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4049
4000
  @let tooltip = getTooltip(rowData);
4050
4001
  <tr [class.highlight-warning]="hasUnmet">
4051
4002
  <td class="w-12">
4052
- <p-checkbox
4003
+ <f-checkbox
4053
4004
  [ngModel]="selectionMap()[rowData.id]"
4054
4005
  [binary]="true"
4055
4006
  (ngModelChange)="onActionToggle(rowData, $event)"
4056
- [pTooltip]="tooltip"
4007
+ [fTooltip]="tooltip"
4057
4008
  tooltipPosition="top"
4058
4009
  />
4059
4010
  </td>
4060
4011
  <td>
4061
- <p-treetabletoggler [rowNode]="rowNode" />
4012
+ <f-treetabletoggler [rowNode]="rowNode" />
4062
4013
  <span class="inline-flex items-center gap-2">
4063
4014
  {{ rowData.name }}
4064
4015
  @if (hasUnmet) {
4065
- <i
4066
- class="pi pi-exclamation-triangle text-orange-500"
4067
- [pTooltip]="
4016
+ <ui-icon name="exclamation-triangle" class="text-orange-500" [fTooltip]="
4068
4017
  'iam.validation.unmet.prerequisites.tooltip'
4069
4018
  | translate
4070
4019
  "
4071
- tooltipPosition="top"
4072
- ></i>
4020
+ tooltipPosition="top"></ui-icon>
4073
4021
  }
4074
4022
  </span>
4075
4023
  </td>
@@ -4077,7 +4025,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4077
4025
  {{ rowData.code || '-' }}
4078
4026
  </td>
4079
4027
  <td>
4080
- <p-tag
4028
+ <f-tag
4081
4029
  [value]="rowData.actionType"
4082
4030
  [severity]="
4083
4031
  rowData.actionType === 'backend' ? 'info' : 'success'
@@ -4093,7 +4041,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4093
4041
  <tr>
4094
4042
  <td colspan="5" class="text-center p-4 text-muted-color">
4095
4043
  @if (loading()) {
4096
- <i class="pi pi-spin pi-spinner"></i>
4044
+ <ui-icon name="loader-circle" spin></ui-icon>
4097
4045
  {{ 'shared.loading.actions' | translate }}
4098
4046
  } @else {
4099
4047
  {{ 'iam.permission.no.actions.available' | translate }}
@@ -4101,14 +4049,14 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4101
4049
  </td>
4102
4050
  </tr>
4103
4051
  </ng-template>
4104
- </p-treetable>
4052
+ </f-treetable>
4105
4053
  </div>
4106
4054
  </div>
4107
4055
 
4108
4056
  @if (hasChanges()) {
4109
4057
  <div class="border border-surface rounded-border p-3 mt-4">
4110
4058
  <div class="flex items-center gap-2 mb-3">
4111
- <i class="pi pi-info-circle text-primary"></i>
4059
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
4112
4060
  <span class="font-bold">{{
4113
4061
  'shared.pending.changes' | translate
4114
4062
  }}</span>
@@ -4117,7 +4065,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4117
4065
  @if (pendingAdd().length > 0) {
4118
4066
  <div>
4119
4067
  <div class="flex items-center gap-2 mb-2">
4120
- <i class="pi pi-plus-circle text-green-500"></i>
4068
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
4121
4069
  <strong class="text-sm"
4122
4070
  >{{ 'shared.to.assign' | translate }} ({{
4123
4071
  pendingAdd().length
@@ -4134,7 +4082,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4134
4082
  @if (pendingRemove().length > 0) {
4135
4083
  <div>
4136
4084
  <div class="flex items-center gap-2 mb-2">
4137
- <i class="pi pi-minus-circle text-red-500"></i>
4085
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
4138
4086
  <strong class="text-sm"
4139
4087
  >{{ 'shared.to.remove' | translate }} ({{
4140
4088
  pendingRemove().length
@@ -4155,9 +4103,7 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4155
4103
 
4156
4104
  @if (!loading() && actions().length === 0) {
4157
4105
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
4158
- <i
4159
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
4160
- ></i>
4106
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
4161
4107
  <p class="text-muted-color m-0">
4162
4108
  {{ 'iam.permission.no.actions.for.user' | translate }}
4163
4109
  </p>
@@ -4165,13 +4111,13 @@ class UserActionSelectorComponent extends BaseActionSelectorComponent {
4165
4111
  }
4166
4112
  }
4167
4113
  </div>
4168
- `, isInline: true, styles: [":host{display:block}.validation-warning{background-color:var(--p-yellow-50, #fefce8);border-left:4px solid var(--p-yellow-500, #eab308);color:var(--p-yellow-700, #a16207)}:host-context(.p-dark) .validation-warning{background-color:#eab3081a;color:var(--p-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--p-red-50, rgba(239, 68, 68, .1))!important}:host-context(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PrimeModule }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["pButton", "pButtonPT", "pButtonUnstyled", "hostName", "text", "plain", "raised", "size", "outlined", "link", "rounded", "fluid", "variant", "iconOnly", "loading", "severity"] }, { kind: "directive", type: i2.ButtonLabel, selector: "[pButtonLabel]", inputs: ["pButtonLabelPT", "pButtonLabelUnstyled"] }, { kind: "directive", type: i2.ButtonIcon, selector: "[pButtonIcon]", inputs: ["pButtonIconPT", "pButtonUnstyled"] }, { kind: "component", type: i3.Checkbox, selector: "p-checkbox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "component", type: i4.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "multiple", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo", "motionOptions"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "component", type: i5.Tag, selector: "p-tag", inputs: ["severity", "value", "icon", "rounded"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "showOnEllipsis", "pTooltip", "tooltipDisabled", "tooltipOptions", "appendTo", "pTooltipPT", "pTooltipUnstyled"] }, { kind: "component", type: i7.TreeTable, selector: "p-treetable, p-tree-table", inputs: ["columns", "tableStyle", "tableStyleClass", "autoLayout", "lazy", "lazyLoadOnInit", "paginator", "rows", "first", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "customSort", "selectionMode", "contextMenuSelection", "dataKey", "metaKeySelection", "compareSelectionBy", "rowHover", "loading", "loadingIcon", "showLoader", "scrollable", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "frozenColumns", "resizableColumns", "columnResizeMode", "reorderableColumns", "contextMenu", "rowTrackBy", "filters", "globalFilterFields", "filterDelay", "filterMode", "filterLocale", "paginatorLocale", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "value", "selectionKeys", "collapsedKeys", "showGridlines"], outputs: ["rowsChange", "selectionChange", "contextMenuSelectionChange", "onFilter", "onNodeExpand", "onNodeCollapse", "onPage", "onSort", "onLazyLoad", "sortFunction", "onColResize", "onColReorder", "onNodeSelect", "onNodeUnselect", "onContextMenuSelect", "onHeaderCheckboxToggle", "onEditInit", "onEditComplete", "onEditCancel", "selectionKeysChange", "collapsedKeysChange"] }, { kind: "component", type: i7.TreeTableToggler, selector: "p-treetabletoggler, p-treetable-toggler", inputs: ["rowNode"] }, { 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" }] });
4114
+ `, isInline: true, styles: [":host{display:block}.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(.p-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(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: UiModule }, { kind: "directive", type: i2.FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "rounded", "raised", "fluid", "disabled", "loading", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: i2.TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color"] }, { kind: "component", type: i2.CheckboxComponent, selector: "f-checkbox", inputs: ["label", "binary", "disabled", "inputId", "invalid", "indeterminate", "touched", "styleClass", "checked"], outputs: ["onChange", "onBlur", "touch", "checkedChange"] }, { kind: "component", type: i2.SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "showClear", "loading", "inputId", "invalid", "touched", "styleClass", "editable"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur"] }, { kind: "directive", type: i2.TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay"] }, { kind: "component", type: i2.TreeTableComponent, selector: "f-treetable", inputs: ["value", "loading", "dataKey", "styleClass", "tableStyle", "scrollable"] }, { kind: "component", type: i2.TreeTableTogglerComponent, selector: "f-treetabletoggler", inputs: ["rowNode"] }, { kind: "component", type: i2.UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill"] }, { 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" }] });
4169
4115
  }
4170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: UserActionSelectorComponent, decorators: [{
4116
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: UserActionSelectorComponent, decorators: [{
4171
4117
  type: Component,
4172
4118
  args: [{ selector: 'flusys-user-action-selector', imports: [
4173
4119
  FormsModule,
4174
- PrimeModule,
4120
+ UiModule,
4175
4121
  HasPermissionDirective,
4176
4122
  UserSelectComponent,
4177
4123
  TranslatePipe,
@@ -4181,7 +4127,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4181
4127
  <div class="grid grid-cols-1 sm:grid-cols-2 gap-5">
4182
4128
  <div>
4183
4129
  <label class="block font-semibold mb-2">
4184
- <i class="pi pi-user mr-2 text-primary"></i>
4130
+ <ui-icon name="user" class="mr-2 text-primary"></ui-icon>
4185
4131
  {{ 'iam.permission.select.user' | translate }}
4186
4132
  </label>
4187
4133
  <lib-user-select
@@ -4197,10 +4143,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4197
4143
  @if (showBranchSelector()) {
4198
4144
  <div>
4199
4145
  <label class="block font-semibold mb-2">
4200
- <i class="pi pi-building mr-2 text-primary"></i>
4146
+ <ui-icon name="building" class="mr-2 text-primary"></ui-icon>
4201
4147
  {{ 'iam.permission.select.branch' | translate }}
4202
4148
  </label>
4203
- <p-select
4149
+ <f-select
4204
4150
  [ngModel]="selectedBranchId()"
4205
4151
  (ngModelChange)="selectedBranchId.set($event)"
4206
4152
  [options]="filteredBranches()"
@@ -4216,18 +4162,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4216
4162
  <ng-template #selectedItem let-branch>
4217
4163
  @if (branch) {
4218
4164
  <div class="flex items-center gap-2">
4219
- <i class="pi pi-building text-primary"></i>
4165
+ <ui-icon name="building" class="text-primary"></ui-icon>
4220
4166
  <span class="font-semibold">{{ branch.name }}</span>
4221
4167
  </div>
4222
4168
  }
4223
4169
  </ng-template>
4224
4170
  <ng-template #item let-branch>
4225
4171
  <div class="flex items-center gap-2">
4226
- <i class="pi pi-building text-muted-color"></i>
4172
+ <ui-icon name="building" class="text-muted-color"></ui-icon>
4227
4173
  <span>{{ branch.name }}</span>
4228
4174
  </div>
4229
4175
  </ng-template>
4230
- </p-select>
4176
+ </f-select>
4231
4177
  <small class="text-muted-color block mt-1">
4232
4178
  {{
4233
4179
  (filteredBranches().length !== 1
@@ -4244,7 +4190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4244
4190
  @if (selectedUserId()) {
4245
4191
  @if (loading()) {
4246
4192
  <div class="flex justify-center p-5">
4247
- <i class="pi pi-spin pi-spinner text-4xl"></i>
4193
+ <ui-icon name="loader-circle" spin class="text-4xl"></ui-icon>
4248
4194
  </div>
4249
4195
  }
4250
4196
 
@@ -4266,36 +4212,36 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4266
4212
  </div>
4267
4213
  <div class="flex flex-wrap gap-2">
4268
4214
  <button
4269
- pButton
4215
+ fButton
4270
4216
  [outlined]="true"
4271
4217
  size="small"
4272
4218
  severity="secondary"
4273
4219
  (click)="selectAll()"
4274
4220
  >
4275
- <span pButtonIcon class="pi pi-check"></span>
4221
+ <ui-icon pButtonIcon name="check"></ui-icon>
4276
4222
  <span pButtonLabel>{{ 'shared.select.all' | translate }}</span>
4277
4223
  </button>
4278
4224
  <button
4279
- pButton
4225
+ fButton
4280
4226
  [outlined]="true"
4281
4227
  size="small"
4282
4228
  severity="secondary"
4283
4229
  (click)="deselectAll()"
4284
4230
  >
4285
- <span pButtonIcon class="pi pi-times"></span>
4231
+ <ui-icon pButtonIcon name="times"></ui-icon>
4286
4232
  <span pButtonLabel>{{ 'shared.deselect.all' | translate }}</span>
4287
4233
  </button>
4288
4234
  <button
4289
- pButton
4235
+ fButton
4290
4236
  *hasPermission="USER_ACTION_PERMISSIONS.ASSIGN"
4291
4237
  [disabled]="!canSave() || saving()"
4292
4238
  size="small"
4293
4239
  (click)="saveChanges()"
4294
4240
  >
4295
4241
  @if (saving()) {
4296
- <span pButtonIcon class="pi pi-spinner pi-spin"></span>
4242
+ <ui-icon pButtonIcon name="spinner" [spin]="true"></ui-icon>
4297
4243
  } @else {
4298
- <span pButtonIcon class="pi pi-save"></span>
4244
+ <ui-icon pButtonIcon name="save"></ui-icon>
4299
4245
  }
4300
4246
  <span pButtonLabel>{{ 'shared.save.changes' | translate }}</span>
4301
4247
  </button>
@@ -4305,7 +4251,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4305
4251
  @if (invalidActionsCount() > 0) {
4306
4252
  <div class="validation-warning rounded-border p-3 mb-4">
4307
4253
  <div class="flex items-start gap-2">
4308
- <i class="pi pi-exclamation-triangle text-xl"></i>
4254
+ <ui-icon name="exclamation-triangle" class="text-xl"></ui-icon>
4309
4255
  <div class="flex-1">
4310
4256
  <span class="font-semibold"
4311
4257
  >{{ 'iam.validation.warning.title' | translate }}:</span
@@ -4324,20 +4270,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4324
4270
  }
4325
4271
 
4326
4272
  <div class="overflow-x-auto -mx-4 sm:mx-0">
4327
- <p-treetable
4273
+ <f-treetable
4328
4274
  [value]="treeNodes()"
4329
4275
  dataKey="id"
4330
- class="p-treetable-sm"
4331
4276
  [tableStyle]="{ 'min-width': '50rem' }"
4332
4277
  >
4333
4278
  <ng-template #header>
4334
4279
  <tr>
4335
4280
  <th class="w-12">
4336
- <p-checkbox
4281
+ <f-checkbox
4337
4282
  [ngModel]="allSelected()"
4338
4283
  [binary]="true"
4339
4284
  (ngModelChange)="toggleAll()"
4340
- [pTooltip]="'shared.select.deselect.all' | translate"
4285
+ [fTooltip]="'shared.select.deselect.all' | translate"
4341
4286
  tooltipPosition="top"
4342
4287
  />
4343
4288
  </th>
@@ -4356,27 +4301,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4356
4301
  @let tooltip = getTooltip(rowData);
4357
4302
  <tr [class.highlight-warning]="hasUnmet">
4358
4303
  <td class="w-12">
4359
- <p-checkbox
4304
+ <f-checkbox
4360
4305
  [ngModel]="selectionMap()[rowData.id]"
4361
4306
  [binary]="true"
4362
4307
  (ngModelChange)="onActionToggle(rowData, $event)"
4363
- [pTooltip]="tooltip"
4308
+ [fTooltip]="tooltip"
4364
4309
  tooltipPosition="top"
4365
4310
  />
4366
4311
  </td>
4367
4312
  <td>
4368
- <p-treetabletoggler [rowNode]="rowNode" />
4313
+ <f-treetabletoggler [rowNode]="rowNode" />
4369
4314
  <span class="inline-flex items-center gap-2">
4370
4315
  {{ rowData.name }}
4371
4316
  @if (hasUnmet) {
4372
- <i
4373
- class="pi pi-exclamation-triangle text-orange-500"
4374
- [pTooltip]="
4317
+ <ui-icon name="exclamation-triangle" class="text-orange-500" [fTooltip]="
4375
4318
  'iam.validation.unmet.prerequisites.tooltip'
4376
4319
  | translate
4377
4320
  "
4378
- tooltipPosition="top"
4379
- ></i>
4321
+ tooltipPosition="top"></ui-icon>
4380
4322
  }
4381
4323
  </span>
4382
4324
  </td>
@@ -4384,7 +4326,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4384
4326
  {{ rowData.code || '-' }}
4385
4327
  </td>
4386
4328
  <td>
4387
- <p-tag
4329
+ <f-tag
4388
4330
  [value]="rowData.actionType"
4389
4331
  [severity]="
4390
4332
  rowData.actionType === 'backend' ? 'info' : 'success'
@@ -4400,7 +4342,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4400
4342
  <tr>
4401
4343
  <td colspan="5" class="text-center p-4 text-muted-color">
4402
4344
  @if (loading()) {
4403
- <i class="pi pi-spin pi-spinner"></i>
4345
+ <ui-icon name="loader-circle" spin></ui-icon>
4404
4346
  {{ 'shared.loading.actions' | translate }}
4405
4347
  } @else {
4406
4348
  {{ 'iam.permission.no.actions.available' | translate }}
@@ -4408,14 +4350,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4408
4350
  </td>
4409
4351
  </tr>
4410
4352
  </ng-template>
4411
- </p-treetable>
4353
+ </f-treetable>
4412
4354
  </div>
4413
4355
  </div>
4414
4356
 
4415
4357
  @if (hasChanges()) {
4416
4358
  <div class="border border-surface rounded-border p-3 mt-4">
4417
4359
  <div class="flex items-center gap-2 mb-3">
4418
- <i class="pi pi-info-circle text-primary"></i>
4360
+ <ui-icon name="info-circle" class="text-primary"></ui-icon>
4419
4361
  <span class="font-bold">{{
4420
4362
  'shared.pending.changes' | translate
4421
4363
  }}</span>
@@ -4424,7 +4366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4424
4366
  @if (pendingAdd().length > 0) {
4425
4367
  <div>
4426
4368
  <div class="flex items-center gap-2 mb-2">
4427
- <i class="pi pi-plus-circle text-green-500"></i>
4369
+ <ui-icon name="plus-circle" class="text-green-500"></ui-icon>
4428
4370
  <strong class="text-sm"
4429
4371
  >{{ 'shared.to.assign' | translate }} ({{
4430
4372
  pendingAdd().length
@@ -4441,7 +4383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4441
4383
  @if (pendingRemove().length > 0) {
4442
4384
  <div>
4443
4385
  <div class="flex items-center gap-2 mb-2">
4444
- <i class="pi pi-minus-circle text-red-500"></i>
4386
+ <ui-icon name="minus-circle" class="text-red-500"></ui-icon>
4445
4387
  <strong class="text-sm"
4446
4388
  >{{ 'shared.to.remove' | translate }} ({{
4447
4389
  pendingRemove().length
@@ -4462,9 +4404,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4462
4404
 
4463
4405
  @if (!loading() && actions().length === 0) {
4464
4406
  <div class="surface-card p-5 rounded-border shadow-sm text-center">
4465
- <i
4466
- class="pi pi-info-circle text-muted-color mb-3 block text-5xl"
4467
- ></i>
4407
+ <ui-icon name="info-circle" class="text-muted-color mb-3 block text-5xl"></ui-icon>
4468
4408
  <p class="text-muted-color m-0">
4469
4409
  {{ 'iam.permission.no.actions.for.user' | translate }}
4470
4410
  </p>
@@ -4472,7 +4412,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
4472
4412
  }
4473
4413
  }
4474
4414
  </div>
4475
- `, styles: [":host{display:block}.validation-warning{background-color:var(--p-yellow-50, #fefce8);border-left:4px solid var(--p-yellow-500, #eab308);color:var(--p-yellow-700, #a16207)}:host-context(.p-dark) .validation-warning{background-color:#eab3081a;color:var(--p-yellow-400, #facc15)}:host ::ng-deep tr.highlight-warning{background-color:var(--p-red-50, rgba(239, 68, 68, .1))!important}:host-context(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"] }]
4415
+ `, styles: [":host{display:block}.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(.p-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(.p-dark) ::ng-deep tr.highlight-warning{background-color:#ef444426!important}\n"] }]
4476
4416
  }], ctorParameters: () => [] });
4477
4417
 
4478
4418
  // Logic Builder Component
@@ -4522,10 +4462,10 @@ class ProfilePermissionProviderAdapter {
4522
4462
  })),
4523
4463
  })));
4524
4464
  }
4525
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ProfilePermissionProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4526
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ProfilePermissionProviderAdapter });
4465
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ProfilePermissionProviderAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4466
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ProfilePermissionProviderAdapter });
4527
4467
  }
4528
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: ProfilePermissionProviderAdapter, decorators: [{
4468
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImport: i0, type: ProfilePermissionProviderAdapter, decorators: [{
4529
4469
  type: Injectable
4530
4470
  }] });
4531
4471
 
@@ -4548,7 +4488,7 @@ const IAM_ROUTES = [
4548
4488
  {
4549
4489
  path: '',
4550
4490
  resolve: { translations: resolveTranslationModule({ modules: ['iam'], fallbackMessages: { ...IAM_MESSAGES, ...SHARED_MESSAGES } }) },
4551
- loadComponent: () => import('./flusys-ng-iam-iam-container.component-DEuc_l2i.mjs').then((m) => m.IamContainerComponent),
4491
+ loadComponent: () => import('./flusys-ng-iam-iam-container.component-D0m8u6nu.mjs').then((m) => m.IamContainerComponent),
4552
4492
  children: [
4553
4493
  // Actions Management
4554
4494
  {
@@ -4557,15 +4497,15 @@ const IAM_ROUTES = [
4557
4497
  children: [
4558
4498
  {
4559
4499
  path: '',
4560
- loadComponent: () => import('./flusys-ng-iam-action-list-page.component-BQvx2btD.mjs').then((m) => m.ActionListPageComponent),
4500
+ loadComponent: () => import('./flusys-ng-iam-action-list-page.component-B1hUE4lD.mjs').then((m) => m.ActionListPageComponent),
4561
4501
  },
4562
4502
  {
4563
4503
  path: 'new',
4564
- loadComponent: () => import('./flusys-ng-iam-action-form-page.component-BGEON5_n.mjs').then((m) => m.ActionFormPageComponent),
4504
+ loadComponent: () => import('./flusys-ng-iam-action-form-page.component-DTJT8Dc-.mjs').then((m) => m.ActionFormPageComponent),
4565
4505
  },
4566
4506
  {
4567
4507
  path: ':id',
4568
- loadComponent: () => import('./flusys-ng-iam-action-form-page.component-BGEON5_n.mjs').then((m) => m.ActionFormPageComponent),
4508
+ loadComponent: () => import('./flusys-ng-iam-action-form-page.component-DTJT8Dc-.mjs').then((m) => m.ActionFormPageComponent),
4569
4509
  },
4570
4510
  ],
4571
4511
  },
@@ -4576,15 +4516,15 @@ const IAM_ROUTES = [
4576
4516
  children: [
4577
4517
  {
4578
4518
  path: '',
4579
- loadComponent: () => import('./flusys-ng-iam-role-list-page.component-DVto37LL.mjs').then((m) => m.RoleListPageComponent),
4519
+ loadComponent: () => import('./flusys-ng-iam-role-list-page.component-BcS9_ysT.mjs').then((m) => m.RoleListPageComponent),
4580
4520
  },
4581
4521
  {
4582
4522
  path: 'new',
4583
- loadComponent: () => import('./flusys-ng-iam-role-form-page.component-CR1tl17E.mjs').then((m) => m.RoleFormPageComponent),
4523
+ loadComponent: () => import('./flusys-ng-iam-role-form-page.component-DrUQ0taO.mjs').then((m) => m.RoleFormPageComponent),
4584
4524
  },
4585
4525
  {
4586
4526
  path: ':id',
4587
- loadComponent: () => import('./flusys-ng-iam-role-form-page.component-CR1tl17E.mjs').then((m) => m.RoleFormPageComponent),
4527
+ loadComponent: () => import('./flusys-ng-iam-role-form-page.component-DrUQ0taO.mjs').then((m) => m.RoleFormPageComponent),
4588
4528
  },
4589
4529
  ],
4590
4530
  },
@@ -4599,7 +4539,7 @@ const IAM_ROUTES = [
4599
4539
  COMPANY_ACTION_PERMISSIONS.READ,
4600
4540
  ]),
4601
4541
  ],
4602
- loadComponent: () => import('./flusys-ng-iam-permission-page.component-DV8qtLcu.mjs').then((m) => m.PermissionPageComponent),
4542
+ loadComponent: () => import('./flusys-ng-iam-permission-page.component-rcijgKmE.mjs').then((m) => m.PermissionPageComponent),
4603
4543
  },
4604
4544
  // Default redirect to actions
4605
4545
  {
@@ -4618,4 +4558,4 @@ const IAM_ROUTES = [
4618
4558
  */
4619
4559
 
4620
4560
  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, RoleActionSelectorComponent as b, convertActionToTreeNode as c, UserActionSelectorComponent as d, ActionPermissionLogicService as e, IAM_ROUTES as f, MyPermissionsApiService as g, PermissionStateService as h, ProfilePermissionProviderAdapter as i, provideIamProviders as p };
4621
- //# sourceMappingURL=flusys-ng-iam-flusys-ng-iam-C9rdGS64.mjs.map
4561
+ //# sourceMappingURL=flusys-ng-iam-flusys-ng-iam-DzIO0zsO.mjs.map