@flusys/ng-auth 8.0.3 → 8.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ import { Router, RouterOutlet, ActivatedRoute, RouterLink } from '@angular/route
7
7
  import { PlatformService, PermissionValidatorService, ApiResourceService, CookieService, TranslateService, USER_PERMISSIONS, COMPANY_PERMISSIONS, BRANCH_PERMISSIONS, SOCIAL_AUTH_CONFIG_PERMISSIONS, resolveTranslationModule, SHARED_MESSAGES, permissionGuard, USER_PROVIDER, COMPANY_API_PROVIDER, USER_PERMISSION_PROVIDER, AUTH_STATE_PROVIDER, RouterTabsComponent, TranslatePipe, HasPermissionDirective, BaseFormComponent, BaseListComponent, BaseListTemplateDirective, FileUrlService, FILE_PROVIDER, PROFILE_PERMISSION_PROVIDER, FileUploaderComponent } from '@flusys/ng-shared';
8
8
  import { map as map$1, catchError as catchError$1, tap as tap$1 } from 'rxjs/operators';
9
9
  import { isPlatformBrowser, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
10
- import { MessageService, CardComponent, CheckboxComponent, FButtonDirective, InputTextDirective, SelectComponent, UiIconComponent, ConfirmationService, DialogComponent, ProgressSpinnerComponent, TooltipDirective, TableComponent, TagComponent, PasswordComponent, AvatarComponent, SkeletonComponent, TextareaDirective, ToggleSwitchComponent } from '@flusys/ng-ui';
10
+ import { MessageService, CardComponent, CheckboxComponent, FButtonDirective, InputTextDirective, SelectComponent, UiIconComponent, ConfirmationService, DialogComponent, ProgressSpinnerComponent, TooltipDirective, IconFieldComponent, InputIconComponent, TableComponent, TagComponent, PasswordComponent, AvatarComponent, SkeletonComponent, TextareaDirective, ToggleSwitchComponent } from '@flusys/ng-ui';
11
11
  import { LAYOUT_AUTH_STATE, LAYOUT_AUTH_API, AppFloatingConfigurator } from '@flusys/ng-layout';
12
12
  import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop';
13
13
  import { form, required, FormField, email, minLength } from '@angular/forms/signals';
@@ -2545,6 +2545,9 @@ class BranchListComponent {
2545
2545
  ...(ngDevMode ? [{ debugName: "permittedUsersDialogVisible" }] : /* istanbul ignore next */ []));
2546
2546
  selectedBranch = signal(null, /* @ts-ignore */
2547
2547
  ...(ngDevMode ? [{ debugName: "selectedBranch" }] : /* istanbul ignore next */ []));
2548
+ _searchTerm = signal('', /* @ts-ignore */
2549
+ ...(ngDevMode ? [{ debugName: "_searchTerm" }] : /* istanbul ignore next */ []));
2550
+ searchTerm = this._searchTerm.asReadonly();
2548
2551
  constructor() {
2549
2552
  effect(() => {
2550
2553
  const params = this.queryParamMap();
@@ -2570,7 +2573,7 @@ class BranchListComponent {
2570
2573
  const companyId = this.selectedCompanyId();
2571
2574
  if (!companyId)
2572
2575
  return;
2573
- this.branchService.fetchList('', {
2576
+ this.branchService.fetchList(this._searchTerm(), {
2574
2577
  filter: { companyId },
2575
2578
  pagination: { currentPage: page, pageSize },
2576
2579
  });
@@ -2583,6 +2586,10 @@ class BranchListComponent {
2583
2586
  const rows = event.rows ?? 10;
2584
2587
  this.loadBranches(Math.floor(first / rows), rows);
2585
2588
  }
2589
+ onSearchChange(value) {
2590
+ this._searchTerm.set(value);
2591
+ this.loadBranches(0);
2592
+ }
2586
2593
  onCreate() {
2587
2594
  this.router.navigate(['/administration/branch/new'], {
2588
2595
  queryParams: { companyId: this.selectedCompanyId() },
@@ -2651,17 +2658,29 @@ class BranchListComponent {
2651
2658
  />
2652
2659
  }
2653
2660
  </div>
2654
- <button
2655
- fButton
2656
- *hasPermission="BRANCH_PERMISSIONS.CREATE"
2657
- [disabled]="!selectedCompanyId()"
2658
- (click)="onCreate()"
2659
- >
2660
- <ui-icon pButtonIcon name="plus"></ui-icon>
2661
- <span pButtonLabel>{{
2662
- 'administrative.branch.add' | translate
2663
- }}</span>
2664
- </button>
2661
+ <div class="flex items-center gap-3 w-full sm:w-auto">
2662
+ <f-iconfield class="w-full sm:w-64">
2663
+ <f-inputicon><ui-icon name="search" class="text-sm"></ui-icon></f-inputicon>
2664
+ <input
2665
+ fInputText
2666
+ type="text"
2667
+ [ngModel]="searchTerm()"
2668
+ (ngModelChange)="onSearchChange($event)"
2669
+ [placeholder]="'shared.search' | translate"
2670
+ />
2671
+ </f-iconfield>
2672
+ <button
2673
+ fButton
2674
+ *hasPermission="BRANCH_PERMISSIONS.CREATE"
2675
+ [disabled]="!selectedCompanyId()"
2676
+ (click)="onCreate()"
2677
+ >
2678
+ <ui-icon pButtonIcon name="plus"></ui-icon>
2679
+ <span pButtonLabel>{{
2680
+ 'administrative.branch.add' | translate
2681
+ }}</span>
2682
+ </button>
2683
+ </div>
2665
2684
  </div>
2666
2685
  </ng-template>
2667
2686
 
@@ -2764,7 +2783,7 @@ class BranchListComponent {
2764
2783
  [branch]="selectedBranch()"
2765
2784
  (closed)="permittedUsersDialogVisible.set(false)"
2766
2785
  />
2767
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: BranchPermittedUsersDialogComponent, selector: "lib-branch-permitted-users-dialog", inputs: ["visible", "branch"], outputs: ["closed"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
2786
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: IconFieldComponent, selector: "f-iconfield", inputs: ["iconPosition", "styleClass"] }, { kind: "component", type: InputIconComponent, selector: "f-inputicon", inputs: ["icon", "position", "styleClass", "style"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: SelectComponent, selector: "f-select", inputs: ["options", "optionLabel", "optionValue", "placeholder", "disabled", "filter", "filterBy", "filterMatchMode", "filterLocale", "filterPlaceholder", "resetFilterOnHide", "autofocusFilter", "emptyMessage", "emptyFilterMessage", "showClear", "loading", "loadingIcon", "dropdownIcon", "clearIcon", "inputId", "invalid", "touched", "styleClass", "style", "appendTo", "editable", "readonly", "autofocus", "checkmark", "group", "optionGroupLabel", "optionGroupChildren", "virtualScroll", "virtualScrollItemSize", "lazy"], outputs: ["onFilter", "onChange", "onShow", "onHide", "onBlur", "onFocus", "onClear", "onLazyLoad"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: BranchPermittedUsersDialogComponent, selector: "lib-branch-permitted-users-dialog", inputs: ["visible", "branch"], outputs: ["closed"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
2768
2787
  }
2769
2788
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BranchListComponent, decorators: [{
2770
2789
  type: Component,
@@ -2774,6 +2793,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
2774
2793
  FormsModule,
2775
2794
  CardComponent,
2776
2795
  FButtonDirective,
2796
+ IconFieldComponent,
2797
+ InputIconComponent,
2798
+ InputTextDirective,
2777
2799
  SelectComponent,
2778
2800
  TableComponent,
2779
2801
  TagComponent,
@@ -2809,17 +2831,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
2809
2831
  />
2810
2832
  }
2811
2833
  </div>
2812
- <button
2813
- fButton
2814
- *hasPermission="BRANCH_PERMISSIONS.CREATE"
2815
- [disabled]="!selectedCompanyId()"
2816
- (click)="onCreate()"
2817
- >
2818
- <ui-icon pButtonIcon name="plus"></ui-icon>
2819
- <span pButtonLabel>{{
2820
- 'administrative.branch.add' | translate
2821
- }}</span>
2822
- </button>
2834
+ <div class="flex items-center gap-3 w-full sm:w-auto">
2835
+ <f-iconfield class="w-full sm:w-64">
2836
+ <f-inputicon><ui-icon name="search" class="text-sm"></ui-icon></f-inputicon>
2837
+ <input
2838
+ fInputText
2839
+ type="text"
2840
+ [ngModel]="searchTerm()"
2841
+ (ngModelChange)="onSearchChange($event)"
2842
+ [placeholder]="'shared.search' | translate"
2843
+ />
2844
+ </f-iconfield>
2845
+ <button
2846
+ fButton
2847
+ *hasPermission="BRANCH_PERMISSIONS.CREATE"
2848
+ [disabled]="!selectedCompanyId()"
2849
+ (click)="onCreate()"
2850
+ >
2851
+ <ui-icon pButtonIcon name="plus"></ui-icon>
2852
+ <span pButtonLabel>{{
2853
+ 'administrative.branch.add' | translate
2854
+ }}</span>
2855
+ </button>
2856
+ </div>
2823
2857
  </div>
2824
2858
  </ng-template>
2825
2859
 
@@ -3373,6 +3407,7 @@ class CompanyListComponent {
3373
3407
  [actions]="rowActions"
3374
3408
  [service]="companyService"
3375
3409
  [title]="'administrative.company.title' | translate"
3410
+ [searchable]="true"
3376
3411
  [showCreateButton]="canCreate()"
3377
3412
  [createButtonLabel]="'administrative.company.add' | translate"
3378
3413
  [createRoute]="'/administration/company/new'"
@@ -3418,6 +3453,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
3418
3453
  [actions]="rowActions"
3419
3454
  [service]="companyService"
3420
3455
  [title]="'administrative.company.title' | translate"
3456
+ [searchable]="true"
3421
3457
  [showCreateButton]="canCreate()"
3422
3458
  [createButtonLabel]="'administrative.company.add' | translate"
3423
3459
  [createRoute]="'/administration/company/new'"
@@ -10180,6 +10216,9 @@ class UserListComponent {
10180
10216
  ...(ngDevMode ? [{ debugName: "showUserDetailDialog" }] : /* istanbul ignore next */ []));
10181
10217
  selectedUser = signal(null, /* @ts-ignore */
10182
10218
  ...(ngDevMode ? [{ debugName: "selectedUser" }] : /* istanbul ignore next */ []));
10219
+ _searchTerm = signal('', /* @ts-ignore */
10220
+ ...(ngDevMode ? [{ debugName: "_searchTerm" }] : /* istanbul ignore next */ []));
10221
+ searchTerm = this._searchTerm.asReadonly();
10183
10222
  getFieldValue(user, field) {
10184
10223
  const parts = field.split('.');
10185
10224
  let value = user;
@@ -10214,18 +10253,20 @@ class UserListComponent {
10214
10253
  this.showUserDetailDialog.set(false);
10215
10254
  this.selectedUser.set(null);
10216
10255
  }
10217
- loadUsers() {
10218
- this.userService.fetchList('', {
10219
- pagination: { currentPage: 0, pageSize: 10 },
10256
+ loadUsers(page = 0, pageSize = 10) {
10257
+ this.userService.fetchList(this._searchTerm(), {
10258
+ pagination: { currentPage: page, pageSize },
10220
10259
  });
10221
10260
  }
10222
10261
  onLazyLoad(event) {
10223
10262
  const first = event.first ?? 0;
10224
10263
  const rows = event.rows ?? 10;
10225
10264
  const page = Math.floor(first / rows);
10226
- this.userService.fetchList('', {
10227
- pagination: { currentPage: page, pageSize: rows },
10228
- });
10265
+ this.loadUsers(page, rows);
10266
+ }
10267
+ onSearchChange(value) {
10268
+ this._searchTerm.set(value);
10269
+ this.loadUsers(0);
10229
10270
  }
10230
10271
  onCreate() {
10231
10272
  this.router.navigate(['/administration/users/new']);
@@ -10280,14 +10321,26 @@ class UserListComponent {
10280
10321
  <h2 class="text-xl font-semibold m-0">
10281
10322
  {{ 'administrative.user.title' | translate }}
10282
10323
  </h2>
10283
- <button
10284
- fButton
10285
- *hasPermission="USER_PERMISSIONS.CREATE"
10286
- (click)="onCreate()"
10287
- >
10288
- <ui-icon pButtonIcon name="plus"></ui-icon>
10289
- <span pButtonLabel>{{ 'administrative.user.add' | translate }}</span>
10290
- </button>
10324
+ <div class="flex items-center gap-3 w-full sm:w-auto">
10325
+ <f-iconfield class="w-full sm:w-64">
10326
+ <f-inputicon><ui-icon name="search" class="text-sm"></ui-icon></f-inputicon>
10327
+ <input
10328
+ fInputText
10329
+ type="text"
10330
+ [ngModel]="searchTerm()"
10331
+ (ngModelChange)="onSearchChange($event)"
10332
+ [placeholder]="'shared.search' | translate"
10333
+ />
10334
+ </f-iconfield>
10335
+ <button
10336
+ fButton
10337
+ *hasPermission="USER_PERMISSIONS.CREATE"
10338
+ (click)="onCreate()"
10339
+ >
10340
+ <ui-icon pButtonIcon name="plus"></ui-icon>
10341
+ <span pButtonLabel>{{ 'administrative.user.add' | translate }}</span>
10342
+ </button>
10343
+ </div>
10291
10344
  </div>
10292
10345
  </ng-template>
10293
10346
 
@@ -10561,7 +10614,7 @@ class UserListComponent {
10561
10614
  }
10562
10615
  </f-dialog>
10563
10616
  }
10564
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: UserCompanyPermissionDialogComponent, selector: "lib-user-company-permission-dialog", inputs: ["visible", "user"], outputs: ["closed", "permissionsChanged"] }, { kind: "component", type: UserBranchPermissionDialogComponent, selector: "lib-user-branch-permission-dialog", inputs: ["visible", "user"], outputs: ["closed", "permissionsChanged"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
10617
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CardComponent, selector: "f-card", inputs: ["header", "subheader", "styleClass", "style"] }, { kind: "component", type: DialogComponent, selector: "f-dialog", inputs: ["header", "visible", "modal", "closable", "closeOnEscape", "dismissableMask", "resizable", "draggable", "maximizable", "blockScroll", "returnFocusOnClose", "position", "style", "styleClass", "breakpoints"], outputs: ["visibleChange", "onShow", "onHide", "onMaximize"] }, { kind: "directive", type: FButtonDirective, selector: "[fButton]", inputs: ["severity", "text", "outlined", "link", "variant", "rounded", "raised", "fluid", "disabled", "loading", "loadingIcon", "size", "label", "icon", "iconPos", "ariaLabel", "plain"] }, { kind: "component", type: IconFieldComponent, selector: "f-iconfield", inputs: ["iconPosition", "styleClass"] }, { kind: "component", type: InputIconComponent, selector: "f-inputicon", inputs: ["icon", "position", "styleClass", "style"] }, { kind: "directive", type: InputTextDirective, selector: "[fInputText]", inputs: ["invalid", "touched", "variant", "size", "fluid"] }, { kind: "component", type: TableComponent, selector: "f-table", inputs: ["value", "lazy", "loading", "rows", "totalRecords", "rowHover", "dataKey", "scrollable", "scrollHeight", "paginator", "first", "rowsPerPageOptions", "showCurrentPageReport", "currentPageReportTemplate", "tableStyle", "styleClass", "globalFilterFields", "filterDelay", "responsiveLayout", "selectionMode", "sortMode", "rowExpandMode", "resizableColumns", "rowStyleClass", "virtualScroll", "virtualScrollItemSize", "sortField", "sortOrder", "multiSortMeta", "filters", "selection", "expandedRowKeys", "contextMenuSelection"], outputs: ["sortFieldChange", "sortOrderChange", "multiSortMetaChange", "filtersChange", "selectionChange", "expandedRowKeysChange", "contextMenuSelectionChange", "onLazyLoad", "onSort", "onFilter", "onRowSelect", "onRowUnselect", "onSelectAllChange", "onRowExpand", "onRowCollapse", "onColResize", "onRowContextMenu"] }, { kind: "component", type: TagComponent, selector: "f-tag", inputs: ["value", "severity", "icon", "rounded", "color", "styleClass", "style"] }, { kind: "directive", type: TooltipDirective, selector: "[fTooltip]", inputs: ["fTooltip", "tooltipPosition", "positionStyle", "tooltipStyleClass", "disabled", "tooltipEvent", "showDelay", "hideDelay", "life", "autoHide", "positionTop", "positionLeft", "escape"] }, { kind: "component", type: UiIconComponent, selector: "ui-icon", inputs: ["name", "size", "spin", "fill", "severity"] }, { kind: "directive", type: HasPermissionDirective, selector: "[hasPermission]", inputs: ["hasPermission"] }, { kind: "component", type: UserCompanyPermissionDialogComponent, selector: "lib-user-company-permission-dialog", inputs: ["visible", "user"], outputs: ["closed", "permissionsChanged"] }, { kind: "component", type: UserBranchPermissionDialogComponent, selector: "lib-user-branch-permission-dialog", inputs: ["visible", "user"], outputs: ["closed", "permissionsChanged"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }] });
10565
10618
  }
10566
10619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: UserListComponent, decorators: [{
10567
10620
  type: Component,
@@ -10569,9 +10622,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
10569
10622
  selector: 'lib-user-list',
10570
10623
  imports: [
10571
10624
  NgTemplateOutlet,
10625
+ FormsModule,
10572
10626
  CardComponent,
10573
10627
  DialogComponent,
10574
10628
  FButtonDirective,
10629
+ IconFieldComponent,
10630
+ InputIconComponent,
10631
+ InputTextDirective,
10575
10632
  TableComponent,
10576
10633
  TagComponent,
10577
10634
  TooltipDirective,
@@ -10590,14 +10647,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
10590
10647
  <h2 class="text-xl font-semibold m-0">
10591
10648
  {{ 'administrative.user.title' | translate }}
10592
10649
  </h2>
10593
- <button
10594
- fButton
10595
- *hasPermission="USER_PERMISSIONS.CREATE"
10596
- (click)="onCreate()"
10597
- >
10598
- <ui-icon pButtonIcon name="plus"></ui-icon>
10599
- <span pButtonLabel>{{ 'administrative.user.add' | translate }}</span>
10600
- </button>
10650
+ <div class="flex items-center gap-3 w-full sm:w-auto">
10651
+ <f-iconfield class="w-full sm:w-64">
10652
+ <f-inputicon><ui-icon name="search" class="text-sm"></ui-icon></f-inputicon>
10653
+ <input
10654
+ fInputText
10655
+ type="text"
10656
+ [ngModel]="searchTerm()"
10657
+ (ngModelChange)="onSearchChange($event)"
10658
+ [placeholder]="'shared.search' | translate"
10659
+ />
10660
+ </f-iconfield>
10661
+ <button
10662
+ fButton
10663
+ *hasPermission="USER_PERMISSIONS.CREATE"
10664
+ (click)="onCreate()"
10665
+ >
10666
+ <ui-icon pButtonIcon name="plus"></ui-icon>
10667
+ <span pButtonLabel>{{ 'administrative.user.add' | translate }}</span>
10668
+ </button>
10669
+ </div>
10601
10670
  </div>
10602
10671
  </ng-template>
10603
10672