@firestitch/filter 18.0.46 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/app/components/action-button/action-button.component.d.ts +1 -1
  2. package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +1 -1
  3. package/app/components/actions/actions.component.d.ts +1 -1
  4. package/app/components/filter/filter.component.d.ts +16 -20
  5. package/app/components/filter-chip/filter-chip.component.d.ts +1 -1
  6. package/app/components/filter-chip-content/filter-chip-content.component.d.ts +1 -1
  7. package/app/components/filter-chips/filter-chips.component.d.ts +1 -1
  8. package/app/components/filter-drawer/filter-drawer.component.d.ts +17 -11
  9. package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +5 -1
  10. package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +1 -1
  11. package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +1 -1
  12. package/app/components/filters-item/base-item/base-item.component.d.ts +1 -1
  13. package/app/components/filters-item/checkbox/checkbox.component.d.ts +1 -1
  14. package/app/components/filters-item/chips/chips.component.d.ts +2 -3
  15. package/app/components/filters-item/date/date.component.d.ts +1 -1
  16. package/app/components/filters-item/date-range/date-range.component.d.ts +1 -1
  17. package/app/components/filters-item/filter-item.component.d.ts +1 -1
  18. package/app/components/filters-item/range/range.component.d.ts +1 -1
  19. package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +1 -1
  20. package/app/components/filters-item/select/groups/groups.component.d.ts +1 -1
  21. package/app/components/filters-item/select/multiple/multiple.component.d.ts +1 -1
  22. package/app/components/filters-item/select/select.component.d.ts +1 -1
  23. package/app/components/filters-item/select/simple/simple.component.d.ts +1 -1
  24. package/app/components/filters-item/text/text.component.d.ts +1 -1
  25. package/app/components/filters-item/week/week.component.d.ts +1 -1
  26. package/app/components/saved-filter/index.d.ts +1 -1
  27. package/app/components/saved-filter/saved-filter-autocomplete-chips/index.d.ts +1 -0
  28. package/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.d.ts +32 -0
  29. package/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.d.ts +1 -1
  30. package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +12 -9
  31. package/app/consts/filter-icon.d.ts +1 -0
  32. package/app/consts/index.d.ts +2 -0
  33. package/app/directives/focus-to-item/focus-to-item.directive.d.ts +1 -1
  34. package/app/directives/status-bar/status-bar.directive.d.ts +1 -1
  35. package/app/fs-filter.module.d.ts +28 -59
  36. package/app/helpers/build-query-params.d.ts +2 -1
  37. package/app/helpers/create-filter-item.d.ts +1 -1
  38. package/app/injectors/filter-drawer-overlay.d.ts +2 -1
  39. package/app/interfaces/external-params.interface.d.ts +1 -1
  40. package/app/interfaces/saved-filters.interface.d.ts +10 -5
  41. package/app/models/items/autocomplete/index.d.ts +1 -0
  42. package/app/models/items/date/index.d.ts +1 -0
  43. package/app/models/items/date-range/index.d.ts +1 -0
  44. package/app/models/items/index.d.ts +17 -0
  45. package/app/models/items/select/index.d.ts +3 -0
  46. package/app/pipes/remove-isolate-value.pipe.d.ts +1 -1
  47. package/app/services/external-params-controller.service.d.ts +5 -12
  48. package/app/services/filter-overlay.service.d.ts +7 -11
  49. package/app/services/index.d.ts +7 -0
  50. package/app/services/items-store.service.d.ts +3 -1
  51. package/app/services/{external-params/query-params-controller.service.d.ts → query-params-controller.service.d.ts} +1 -1
  52. package/app/services/{external-params/query-persistance-controller.service.d.ts → query-persistance-controller.service.d.ts} +1 -1
  53. package/app/services/{external-params/saved-filters-controller.service.d.ts → saved-filters-controller.service.d.ts} +15 -9
  54. package/esm2022/app/components/action-button/action-button.component.mjs +22 -7
  55. package/esm2022/app/components/action-kebab-actions/action-kebab-actions.component.mjs +13 -7
  56. package/esm2022/app/components/actions/actions.component.mjs +35 -15
  57. package/esm2022/app/components/filter/filter.component.mjs +54 -53
  58. package/esm2022/app/components/filter-chip/filter-chip.component.mjs +12 -6
  59. package/esm2022/app/components/filter-chip-content/filter-chip-content.component.mjs +3 -3
  60. package/esm2022/app/components/filter-chips/filter-chips.component.mjs +5 -5
  61. package/esm2022/app/components/filter-drawer/filter-drawer.component.mjs +66 -32
  62. package/esm2022/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +27 -7
  63. package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +14 -6
  64. package/esm2022/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +14 -6
  65. package/esm2022/app/components/filters-item/base-item/base-item.component.mjs +3 -2
  66. package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +15 -7
  67. package/esm2022/app/components/filters-item/chips/chips.component.mjs +19 -14
  68. package/esm2022/app/components/filters-item/date/date.component.mjs +19 -8
  69. package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +19 -8
  70. package/esm2022/app/components/filters-item/filter-item.component.mjs +24 -14
  71. package/esm2022/app/components/filters-item/range/range.component.mjs +19 -9
  72. package/esm2022/app/components/filters-item/select/backdrop/backdrop.component.mjs +3 -3
  73. package/esm2022/app/components/filters-item/select/groups/groups.component.mjs +21 -10
  74. package/esm2022/app/components/filters-item/select/multiple/multiple.component.mjs +25 -12
  75. package/esm2022/app/components/filters-item/select/select.component.mjs +17 -9
  76. package/esm2022/app/components/filters-item/select/simple/simple.component.mjs +24 -12
  77. package/esm2022/app/components/filters-item/text/text.component.mjs +17 -9
  78. package/esm2022/app/components/filters-item/week/week.component.mjs +19 -8
  79. package/esm2022/app/components/saved-filter/index.mjs +2 -2
  80. package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/index.mjs +2 -0
  81. package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.mjs +122 -0
  82. package/esm2022/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +29 -12
  83. package/esm2022/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +37 -29
  84. package/esm2022/app/consts/filter-icon.mjs +2 -0
  85. package/esm2022/app/consts/index.mjs +3 -0
  86. package/esm2022/app/directives/focus-to-item/focus-to-item.directive.mjs +3 -2
  87. package/esm2022/app/directives/status-bar/status-bar.directive.mjs +3 -2
  88. package/esm2022/app/fs-filter.module.mjs +32 -138
  89. package/esm2022/app/helpers/build-query-params.mjs +8 -3
  90. package/esm2022/app/helpers/compare.mjs +2 -2
  91. package/esm2022/app/injectors/filter-drawer-overlay.mjs +1 -1
  92. package/esm2022/app/interfaces/external-params.interface.mjs +1 -1
  93. package/esm2022/app/interfaces/saved-filters.interface.mjs +1 -1
  94. package/esm2022/app/models/items/autocomplete/index.mjs +2 -0
  95. package/esm2022/app/models/items/date/index.mjs +2 -0
  96. package/esm2022/app/models/items/date-range/index.mjs +2 -0
  97. package/esm2022/app/models/items/index.mjs +18 -0
  98. package/esm2022/app/models/items/select/index.mjs +4 -0
  99. package/esm2022/app/pipes/remove-isolate-value.pipe.mjs +3 -2
  100. package/esm2022/app/services/external-params-controller.service.mjs +20 -49
  101. package/esm2022/app/services/filter-overlay.service.mjs +10 -21
  102. package/esm2022/app/services/index.mjs +8 -0
  103. package/esm2022/app/services/items-store.service.mjs +12 -1
  104. package/esm2022/app/services/query-params-controller.service.mjs +65 -0
  105. package/esm2022/app/services/query-persistance-controller.service.mjs +65 -0
  106. package/esm2022/app/services/saved-filters-controller.service.mjs +210 -0
  107. package/esm2022/public_api.mjs +2 -3
  108. package/fesm2022/firestitch-filter.mjs +2706 -2478
  109. package/fesm2022/firestitch-filter.mjs.map +1 -1
  110. package/package.json +1 -1
  111. package/public_api.d.ts +1 -2
  112. package/app/components/saved-filter/saved-filters-menu/index.d.ts +0 -1
  113. package/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.d.ts +0 -24
  114. package/app/services/external-params/index.d.ts +0 -3
  115. package/esm2022/app/components/saved-filter/saved-filters-menu/index.mjs +0 -2
  116. package/esm2022/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +0 -61
  117. package/esm2022/app/services/external-params/index.mjs +0 -4
  118. package/esm2022/app/services/external-params/query-params-controller.service.mjs +0 -65
  119. package/esm2022/app/services/external-params/query-persistance-controller.service.mjs +0 -65
  120. package/esm2022/app/services/external-params/saved-filters-controller.service.mjs +0 -165
@@ -0,0 +1 @@
1
+ export * from './base-autocomplete-item';
@@ -0,0 +1 @@
1
+ export * from './base-date-item';
@@ -0,0 +1 @@
1
+ export * from './base-date-range-item';
@@ -0,0 +1,17 @@
1
+ export * from './autocomplete';
2
+ export * from './autocomplete-chips-item';
3
+ export * from './autocomplete-item';
4
+ export * from './base-item';
5
+ export * from './checkbox-item';
6
+ export * from './chips-item';
7
+ export * from './date';
8
+ export * from './date-item';
9
+ export * from './date-range';
10
+ export * from './date-range-item';
11
+ export * from './date-time-item';
12
+ export * from './date-time-range-item';
13
+ export * from './range-item';
14
+ export * from './select';
15
+ export * from './select-item';
16
+ export * from './text-item';
17
+ export * from './week-item';
@@ -0,0 +1,3 @@
1
+ export * from './base-select-item';
2
+ export * from './multiple-select-item';
3
+ export * from './simple-select-item';
@@ -4,5 +4,5 @@ import * as i0 from "@angular/core";
4
4
  export declare class FsFilterIsolateValues implements PipeTransform {
5
5
  transform(values: BaseItem<any>[], isolate: any): BaseItem<any>[];
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFilterIsolateValues, never>;
7
- static ɵpipe: i0.ɵɵPipeDeclaration<FsFilterIsolateValues, "fsFilterIsolateValues", false>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<FsFilterIsolateValues, "fsFilterIsolateValues", true>;
8
8
  }
@@ -1,36 +1,29 @@
1
1
  import { OnDestroy } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
3
  import { IFilterExternalParams, IFilterSavedFilter } from '../interfaces';
4
- import { QueryParamsController, QueryPersistanceController, SavedFiltersController } from './external-params';
5
- import { FsFilterItemsStore } from './items-store.service';
6
4
  import * as i0 from "@angular/core";
7
5
  export declare class ExternalParamsController implements OnDestroy {
8
- private _itemsStore;
9
- private _persistanceStore;
10
- private _queryParams;
11
- private _savedFilters;
12
6
  protected _init: any;
13
7
  private _pending$;
14
- private _shouldResetSavedFilters;
15
8
  private _config;
16
9
  private _destroy$;
17
- constructor(_itemsStore: FsFilterItemsStore, _persistanceStore: QueryPersistanceController, _queryParams: QueryParamsController, _savedFilters: SavedFiltersController);
10
+ private _itemsStore;
11
+ private _persistanceStore;
12
+ private _queryParams;
13
+ private _savedFiltersController;
18
14
  get params(): IFilterExternalParams;
19
15
  get pending(): boolean;
20
16
  get pending$(): Observable<boolean>;
21
- get savedFiltersController(): SavedFiltersController;
22
- get savedFiltersEnabled(): boolean;
23
17
  ngOnDestroy(): void;
24
18
  setConfig(config: any): void;
25
19
  setActiveSavedFilter(savedFilter: IFilterSavedFilter): void;
26
- reloadFiltersWithValues(params: IFilterExternalParams, shouldResetSavedFilters?: boolean): void;
20
+ reloadFiltersWithValues(params: IFilterExternalParams): void;
27
21
  initItems(): void;
28
22
  _initItemsValues(): void;
29
23
  fetchQueryParams(): void;
30
24
  private _initQueryParams;
31
25
  private _initSavedFilters;
32
26
  private _listenItemsChange;
33
- private _listenAndResetSavedFilters;
34
27
  private _saveQueryParams;
35
28
  private _savePersistedParams;
36
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ExternalParamsController, never>;
@@ -1,24 +1,20 @@
1
- import { Injector, OnDestroy } from '@angular/core';
2
- import { Overlay } from '@angular/cdk/overlay';
3
- import { HtmlClassRenderer } from '@firestitch/html';
1
+ import { OnDestroy } from '@angular/core';
4
2
  import { Observable } from 'rxjs';
5
3
  import { FilterDrawerComponent } from '../components/filter-drawer/filter-drawer.component';
6
- import { FsFilterMeta } from '../providers/filter-meta';
7
- import { FocusControllerService } from './focus-controller.service';
8
4
  import * as i0 from "@angular/core";
9
5
  export declare class FsFilterOverlayService implements OnDestroy {
10
- private _filterMeta;
11
- private _injector;
12
- private _overlay;
13
- private _focusController;
14
- private _htmlClassRenderer;
15
6
  private _detach$;
16
7
  private _attach$;
17
8
  private _clearFn;
18
9
  private _doneFn;
19
10
  private _destroy$;
20
11
  private _overlayRef;
21
- constructor(_filterMeta: FsFilterMeta, _injector: Injector, _overlay: Overlay, _focusController: FocusControllerService, _htmlClassRenderer: HtmlClassRenderer);
12
+ private _injector;
13
+ private _overlay;
14
+ private _focusController;
15
+ private _htmlClassRenderer;
16
+ private _filterMeta;
17
+ constructor();
22
18
  get detach$(): Observable<void>;
23
19
  get attach$(): Observable<void>;
24
20
  get isOpened(): boolean;
@@ -0,0 +1,7 @@
1
+ export * from './external-params-controller.service';
2
+ export * from './filter-overlay.service';
3
+ export * from './focus-controller.service';
4
+ export * from './items-store.service';
5
+ export * from './query-params-controller.service';
6
+ export * from './query-persistance-controller.service';
7
+ export * from './saved-filters-controller.service';
@@ -38,6 +38,7 @@ export declare class FsFilterItemsStore implements OnDestroy {
38
38
  setConfig(config: any): void;
39
39
  getItemByName(name: string): BaseItem<IFilterConfigItem>;
40
40
  initItems(items: IFilterConfigItem[]): void;
41
+ queryParams(): IFilterExternalParams;
41
42
  filtersClear(): void;
42
43
  loadAsyncValues(): void;
43
44
  loadAsyncDefaults(): void;
@@ -46,7 +47,8 @@ export declare class FsFilterItemsStore implements OnDestroy {
46
47
  getSortDirectionValue(): any;
47
48
  updateSort(sort: ISortingChangeEvent): void;
48
49
  values(onlyPresented?: boolean): Record<string, unknown>;
49
- valuesAsQuery({ onlyPresented, items, persisted, }?: IValueAsQuery): Record<string, unknown>;
50
+ models(): Record<string, unknown>;
51
+ valuesAsQuery({ onlyPresented, items, persisted, }?: IValueAsQuery): IFilterExternalParams;
50
52
  init(p: IFilterExternalParams): void;
51
53
  updateItemsWithValues(values: IFilterExternalParams): void;
52
54
  updateSortingItemsValues(items: SortItem[]): void;
@@ -1,5 +1,5 @@
1
1
  import { ActivatedRoute } from '@angular/router';
2
- import { FsFilterItemsStore } from '../items-store.service';
2
+ import { FsFilterItemsStore } from './items-store.service';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class QueryParamsController {
5
5
  private _route;
@@ -1,4 +1,4 @@
1
- import { FsFilterConfig } from '../../models/filter-config';
1
+ import { FsFilterConfig } from '../models/filter-config';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class QueryPersistanceController {
4
4
  queryEnabled: boolean;
@@ -1,19 +1,23 @@
1
1
  import { OnDestroy } from '@angular/core';
2
- import { MatDialog } from '@angular/material/dialog';
3
2
  import { Observable } from 'rxjs';
4
- import { IFilterExternalParams } from '../../interfaces/external-params.interface';
5
- import { IFilterSavedFilter, IFilterSavedFiltersConfig } from '../../interfaces/saved-filters.interface';
6
- import { FsFilterItemsStore } from '../items-store.service';
3
+ import { IFilterExternalParams } from '../interfaces/external-params.interface';
4
+ import { IFilterSavedFilter, IFilterSavedFiltersConfig } from '../interfaces/saved-filters.interface';
7
5
  import * as i0 from "@angular/core";
8
6
  export declare class SavedFiltersController implements OnDestroy {
9
- private _itemsStore;
10
- private _dialog;
11
- protected _config: IFilterSavedFiltersConfig;
7
+ private _config;
12
8
  private _savedFilters$;
13
9
  private _activeFilter$;
14
10
  private _enabled$;
15
11
  private _destroy$;
16
- constructor(_itemsStore: FsFilterItemsStore, _dialog: MatDialog);
12
+ private _itemsStore;
13
+ private _dialog;
14
+ private _prompt;
15
+ private _message;
16
+ get singularLabel(): string;
17
+ get singularLabelLower(): string;
18
+ get labelIcon(): string;
19
+ get pluralLabel(): string;
20
+ get pluralLabelLower(): string;
17
21
  get enabled(): boolean;
18
22
  get enabled$(): Observable<boolean>;
19
23
  get savedFilters(): IFilterSavedFilter[];
@@ -23,10 +27,12 @@ export declare class SavedFiltersController implements OnDestroy {
23
27
  get activeFilter$(): Observable<IFilterSavedFilter>;
24
28
  get activeFilterData(): IFilterExternalParams;
25
29
  ngOnDestroy(): void;
26
- init(remoteParamsConfig: IFilterSavedFiltersConfig): void;
30
+ init(filterSavedFiltersConfig: IFilterSavedFiltersConfig): void;
27
31
  initSavedFilters(filters: IFilterSavedFilter[]): void;
28
32
  load(): Observable<IFilterSavedFilter[]>;
33
+ create(): Observable<IFilterSavedFilter>;
29
34
  save(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter>;
35
+ get orderable(): boolean;
30
36
  order(savedFilters: IFilterSavedFilter[]): Observable<IFilterSavedFilter[]>;
31
37
  delete(savedFilter: IFilterSavedFilter): Observable<IFilterSavedFilter>;
32
38
  setActiveFilter(savedFilter: IFilterSavedFilter): void;
@@ -1,21 +1,36 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
2
  import { ButtonStyle } from '../../enums';
3
3
  import { Action } from '../../models/action.model';
4
+ import { NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, NgSwitchDefault, NgIf, AsyncPipe } from '@angular/common';
5
+ import { MatIconButton, MatFabButton, MatMiniFabButton, MatButton } from '@angular/material/button';
6
+ import { FsFormModule } from '@firestitch/form';
7
+ import { MatIcon } from '@angular/material/icon';
4
8
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "@angular/material/icon";
7
- import * as i3 from "@angular/material/button";
8
- import * as i4 from "@firestitch/form";
9
+ import * as i1 from "@firestitch/form";
9
10
  export class FsFilterActionButtonComponent {
10
11
  ButtonStyle = ButtonStyle;
11
12
  action;
12
13
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterActionButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
13
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FsFilterActionButtonComponent, selector: "fs-filter-action-button", inputs: { action: "action" }, host: { classAttribute: "action-button" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>", styles: [":host ::ng-deep .button-basic .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .button-basic .mdc-button__label mat-icon{flex-shrink:0}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label{flex-direction:row-reverse}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label mat-icon{margin-left:5px}:host ::ng-deep .button-basic:not(.icon-placement-right) .mdc-button__label mat-icon{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "directive", type: i4.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FsFilterActionButtonComponent, isStandalone: true, selector: "fs-filter-action-button", inputs: { action: "action" }, host: { classAttribute: "action-button" }, ngImport: i0, template: "<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>", styles: [":host ::ng-deep .button-basic .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .button-basic .mdc-button__label mat-icon{flex-shrink:0}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label{flex-direction:row-reverse}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label mat-icon{margin-left:5px}:host ::ng-deep .button-basic:not(.icon-placement-right) .mdc-button__label mat-icon{margin-right:5px}\n"], dependencies: [{ kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "directive", type: NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i1.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
14
15
  }
15
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterActionButtonComponent, decorators: [{
16
17
  type: Component,
17
- args: [{ selector: 'fs-filter-action-button', host: { class: 'action-button' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>", styles: [":host ::ng-deep .button-basic .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .button-basic .mdc-button__label mat-icon{flex-shrink:0}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label{flex-direction:row-reverse}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label mat-icon{margin-left:5px}:host ::ng-deep .button-basic:not(.icon-placement-right) .mdc-button__label mat-icon{margin-right:5px}\n"] }]
18
+ args: [{ selector: 'fs-filter-action-button', host: { class: 'action-button' }, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
19
+ NgSwitch,
20
+ NgSwitchCase,
21
+ MatIconButton,
22
+ NgClass,
23
+ NgTemplateOutlet,
24
+ MatFabButton,
25
+ MatMiniFabButton,
26
+ NgSwitchDefault,
27
+ MatButton,
28
+ FsFormModule,
29
+ NgIf,
30
+ MatIcon,
31
+ AsyncPipe,
32
+ ], template: "<ng-container [ngSwitch]=\"action.style\">\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Icon\"\n mat-icon-button\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.Fab\"\n mat-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <!-- Mini Fab button -->\n <button\n type=\"button\"\n *ngSwitchCase=\"ButtonStyle.MiniFab\"\n mat-mini-fab\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [ngClass]=\"action.classArray\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <button\n type=\"button\"\n *ngSwitchDefault\n mat-button\n class=\"button-basic\"\n [ngClass]=\"{ \n 'mat-mdc-raised-button': action.style === ButtonStyle.Raised,\n 'mat-mdc-unelevated-button': action.style === ButtonStyle.Flat,\n 'mat-mdc-outlined-button': action.style === ButtonStyle.Stroked,\n 'mat-mdc-icon-button': action.style === ButtonStyle.Icon,\n 'icon-placement-right': action.iconPlacement === 'right'\n }\"\n (click)=\"action.click && action.click($event)\"\n [color]=\"action.color\"\n [class]=\"action.classArray.join(' ')\"\n [disabled]=\"action.disabled$ | async\"\n [tabIndex]=\"action.tabIndex\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.icon else withIcon\">\n {{ action.label }}\n </ng-container>\n <ng-template #withIcon>\n <mat-icon>\n {{ action.icon }}\n </mat-icon>\n {{ action.label }}\n </ng-template>\n </ng-template>\n</ng-container>", styles: [":host ::ng-deep .button-basic .mdc-button__label{display:flex;align-items:center}:host ::ng-deep .button-basic .mdc-button__label mat-icon{flex-shrink:0}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label{flex-direction:row-reverse}:host ::ng-deep .button-basic.icon-placement-right .mdc-button__label mat-icon{margin-left:5px}:host ::ng-deep .button-basic:not(.icon-placement-right) .mdc-button__label mat-icon{margin-right:5px}\n"] }]
18
33
  }], propDecorators: { action: [{
19
34
  type: Input
20
35
  }] } });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYWN0aW9uLWJ1dHRvbi9hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY3Rpb24tYnV0dG9uL2FjdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7OztBQVVuRCxNQUFNLE9BQU8sNkJBQTZCO0lBRWpDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFHMUIsTUFBTSxDQUFTO3dHQUxYLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLHdJQ2IxQyw4MEVBa0VlOzs0RkRyREYsNkJBQTZCO2tCQVB6QyxTQUFTOytCQUNFLHlCQUF5QixRQUc3QixFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsbUJBQ2YsdUJBQXVCLENBQUMsTUFBTTs4QkFPeEMsTUFBTTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uU3R5bGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uLm1vZGVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXItYWN0aW9uLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2FjdGlvbi1idXR0b24uY29tcG9uZW50LnNjc3MnLFxuICBob3N0OiB7IGNsYXNzOiAnYWN0aW9uLWJ1dHRvbicgfSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyQWN0aW9uQnV0dG9uQ29tcG9uZW50IHtcblxuICBwdWJsaWMgQnV0dG9uU3R5bGUgPSBCdXR0b25TdHlsZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYWN0aW9uOiBBY3Rpb247XG5cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjdGlvbi5zdHlsZVwiPlxuICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJCdXR0b25TdHlsZS5JY29uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGljayAmJiBhY3Rpb24uY2xpY2soJGV2ZW50KVwiXG4gICAgICBbY29sb3JdPVwiYWN0aW9uLmNvbG9yXCJcbiAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbi5jbGFzc0FycmF5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgW3RhYkluZGV4XT1cImFjdGlvbi50YWJJbmRleFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG4gIDwhLS0gRmFiIGJ1dHRvbiAtLT5cbiAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQnV0dG9uU3R5bGUuRmFiXCJcbiAgICAgIG1hdC1mYWJcbiAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2sgJiYgYWN0aW9uLmNsaWNrKCRldmVudClcIlxuICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiXG4gICAgICBbbmdDbGFzc109XCJhY3Rpb24uY2xhc3NBcnJheVwiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFt0YWJJbmRleF09XCJhY3Rpb24udGFiSW5kZXhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuICA8IS0tIE1pbmkgRmFiIGJ1dHRvbiAtLT5cbiAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQnV0dG9uU3R5bGUuTWluaUZhYlwiXG4gICAgICBtYXQtbWluaS1mYWJcbiAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2sgJiYgYWN0aW9uLmNsaWNrKCRldmVudClcIlxuICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiXG4gICAgICBbbmdDbGFzc109XCJhY3Rpb24uY2xhc3NBcnJheVwiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFt0YWJJbmRleF09XCJhY3Rpb24udGFiSW5kZXhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgIG1hdC1idXR0b25cbiAgICAgIGNsYXNzPVwiYnV0dG9uLWJhc2ljXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgICAgICAgIFxuICAgICAgICAnbWF0LW1kYy1yYWlzZWQtYnV0dG9uJzogYWN0aW9uLnN0eWxlID09PSBCdXR0b25TdHlsZS5SYWlzZWQsXG4gICAgICAgICdtYXQtbWRjLXVuZWxldmF0ZWQtYnV0dG9uJzogYWN0aW9uLnN0eWxlID09PSBCdXR0b25TdHlsZS5GbGF0LFxuICAgICAgICAnbWF0LW1kYy1vdXRsaW5lZC1idXR0b24nOiBhY3Rpb24uc3R5bGUgPT09IEJ1dHRvblN0eWxlLlN0cm9rZWQsXG4gICAgICAgICdtYXQtbWRjLWljb24tYnV0dG9uJzogYWN0aW9uLnN0eWxlID09PSBCdXR0b25TdHlsZS5JY29uLFxuICAgICAgICAnaWNvbi1wbGFjZW1lbnQtcmlnaHQnOiBhY3Rpb24uaWNvblBsYWNlbWVudCA9PT0gJ3JpZ2h0J1xuICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwiYWN0aW9uLmNsaWNrICYmIGFjdGlvbi5jbGljaygkZXZlbnQpXCJcbiAgICAgIFtjb2xvcl09XCJhY3Rpb24uY29sb3JcIlxuICAgICAgW2NsYXNzXT1cImFjdGlvbi5jbGFzc0FycmF5LmpvaW4oJyAnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFt0YWJJbmRleF09XCJhY3Rpb24udGFiSW5kZXhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuICA8bmctdGVtcGxhdGUgI2J1dHRvbkNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb24uaWNvbiBlbHNlIHdpdGhJY29uXCI+XG4gICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3dpdGhJY29uPlxuICAgICAgPG1hdC1pY29uPlxuICAgICAgICB7eyBhY3Rpb24uaWNvbiB9fVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIHt7IGFjdGlvbi5sYWJlbCB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj4iXX0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvYWN0aW9uLWJ1dHRvbi9hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY3Rpb24tYnV0dG9uL2FjdGlvbi1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEgsT0FBTyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDcEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBMEJqRCxNQUFNLE9BQU8sNkJBQTZCO0lBRWpDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFHMUIsTUFBTSxDQUFTO3dHQUxYLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLDRKQ2pDMUMsODBFQWtFZSwyZkRoRFAsUUFBUSw2RUFDUixZQUFZLHFGQUNaLGFBQWEsNkZBQ2IsT0FBTyxvRkFDUCxnQkFBZ0Isb0pBQ2hCLFlBQVksMkdBQ1osZ0JBQWdCLDBGQUNoQixlQUFlLDhEQUNmLFNBQVMsZ0xBQ1QsWUFBWSx3TUFDWixJQUFJLDZGQUNKLE9BQU8sc0lBQ1AsU0FBUzs7NEZBR0osNkJBQTZCO2tCQXZCekMsU0FBUzsrQkFDSSx5QkFBeUIsUUFHN0IsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLG1CQUNmLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLFFBQVE7d0JBQ1IsWUFBWTt3QkFDWixhQUFhO3dCQUNiLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixTQUFTO3dCQUNULFlBQVk7d0JBQ1osSUFBSTt3QkFDSixPQUFPO3dCQUNQLFNBQVM7cUJBQ1o7OEJBT0ksTUFBTTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQnV0dG9uU3R5bGUgfSBmcm9tICcuLi8uLi9lbnVtcyc7XG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQsIE5nU3dpdGNoRGVmYXVsdCwgTmdJZiwgQXN5bmNQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdEljb25CdXR0b24sIE1hdEZhYkJ1dHRvbiwgTWF0TWluaUZhYkJ1dHRvbiwgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZnMtZmlsdGVyLWFjdGlvbi1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9hY3Rpb24tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYWN0aW9uLWJ1dHRvbi5jb21wb25lbnQuc2NzcycsXG4gICAgaG9zdDogeyBjbGFzczogJ2FjdGlvbi1idXR0b24nIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nU3dpdGNoLFxuICAgICAgICBOZ1N3aXRjaENhc2UsXG4gICAgICAgIE1hdEljb25CdXR0b24sXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIE1hdEZhYkJ1dHRvbixcbiAgICAgICAgTWF0TWluaUZhYkJ1dHRvbixcbiAgICAgICAgTmdTd2l0Y2hEZWZhdWx0LFxuICAgICAgICBNYXRCdXR0b24sXG4gICAgICAgIEZzRm9ybU1vZHVsZSxcbiAgICAgICAgTmdJZixcbiAgICAgICAgTWF0SWNvbixcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyQWN0aW9uQnV0dG9uQ29tcG9uZW50IHtcblxuICBwdWJsaWMgQnV0dG9uU3R5bGUgPSBCdXR0b25TdHlsZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgYWN0aW9uOiBBY3Rpb247XG5cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjdGlvbi5zdHlsZVwiPlxuICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCJCdXR0b25TdHlsZS5JY29uXCJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGljayAmJiBhY3Rpb24uY2xpY2soJGV2ZW50KVwiXG4gICAgICBbY29sb3JdPVwiYWN0aW9uLmNvbG9yXCJcbiAgICAgIFtuZ0NsYXNzXT1cImFjdGlvbi5jbGFzc0FycmF5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgW3RhYkluZGV4XT1cImFjdGlvbi50YWJJbmRleFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9idXR0b24+XG4gIDwhLS0gRmFiIGJ1dHRvbiAtLT5cbiAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQnV0dG9uU3R5bGUuRmFiXCJcbiAgICAgIG1hdC1mYWJcbiAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2sgJiYgYWN0aW9uLmNsaWNrKCRldmVudClcIlxuICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiXG4gICAgICBbbmdDbGFzc109XCJhY3Rpb24uY2xhc3NBcnJheVwiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFt0YWJJbmRleF09XCJhY3Rpb24udGFiSW5kZXhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuICA8IS0tIE1pbmkgRmFiIGJ1dHRvbiAtLT5cbiAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiQnV0dG9uU3R5bGUuTWluaUZhYlwiXG4gICAgICBtYXQtbWluaS1mYWJcbiAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2sgJiYgYWN0aW9uLmNsaWNrKCRldmVudClcIlxuICAgICAgW2NvbG9yXT1cImFjdGlvbi5jb2xvclwiXG4gICAgICBbbmdDbGFzc109XCJhY3Rpb24uY2xhc3NBcnJheVwiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFt0YWJJbmRleF09XCJhY3Rpb24udGFiSW5kZXhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICpuZ1N3aXRjaERlZmF1bHRcbiAgICAgIG1hdC1idXR0b25cbiAgICAgIGNsYXNzPVwiYnV0dG9uLWJhc2ljXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgICAgICAgIFxuICAgICAgICAnbWF0LW1kYy1yYWlzZWQtYnV0dG9uJzogYWN0aW9uLnN0eWxlID09PSBCdXR0b25TdHlsZS5SYWlzZWQsXG4gICAgICAgICdtYXQtbWRjLXVuZWxldmF0ZWQtYnV0dG9uJzogYWN0aW9uLnN0eWxlID09PSBCdXR0b25TdHlsZS5GbGF0LFxuICAgICAgICAnbWF0LW1kYy1vdXRsaW5lZC1idXR0b24nOiBhY3Rpb24uc3R5bGUgPT09IEJ1dHRvblN0eWxlLlN0cm9rZWQsXG4gICAgICAgICdtYXQtbWRjLWljb24tYnV0dG9uJzogYWN0aW9uLnN0eWxlID09PSBCdXR0b25TdHlsZS5JY29uLFxuICAgICAgICAnaWNvbi1wbGFjZW1lbnQtcmlnaHQnOiBhY3Rpb24uaWNvblBsYWNlbWVudCA9PT0gJ3JpZ2h0J1xuICAgICAgfVwiXG4gICAgICAoY2xpY2spPVwiYWN0aW9uLmNsaWNrICYmIGFjdGlvbi5jbGljaygkZXZlbnQpXCJcbiAgICAgIFtjb2xvcl09XCJhY3Rpb24uY29sb3JcIlxuICAgICAgW2NsYXNzXT1cImFjdGlvbi5jbGFzc0FycmF5LmpvaW4oJyAnKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiYWN0aW9uLmRpc2FibGVkJCB8IGFzeW5jXCJcbiAgICAgIFt0YWJJbmRleF09XCJhY3Rpb24udGFiSW5kZXhcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYnV0dG9uQ29udGVudFwiPjwvbmctdGVtcGxhdGU+XG4gIDwvYnV0dG9uPlxuICA8bmctdGVtcGxhdGUgI2J1dHRvbkNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb24uaWNvbiBlbHNlIHdpdGhJY29uXCI+XG4gICAgICB7eyBhY3Rpb24ubGFiZWwgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI3dpdGhJY29uPlxuICAgICAgPG1hdC1pY29uPlxuICAgICAgICB7eyBhY3Rpb24uaWNvbiB9fVxuICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIHt7IGFjdGlvbi5sYWJlbCB9fVxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,9 +1,10 @@
1
1
  import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { MatIconButton } from '@angular/material/button';
3
+ import { FsMenuModule } from '@firestitch/menu';
4
+ import { MatIcon } from '@angular/material/icon';
5
+ import { AsyncPipe } from '@angular/common';
2
6
  import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "@angular/material/icon";
5
- import * as i3 from "@angular/material/button";
6
- import * as i4 from "@firestitch/menu";
7
+ import * as i1 from "@firestitch/menu";
7
8
  export class FsFilterActionKebabActionsComponent {
8
9
  kebabActions;
9
10
  actionClick(action, event) {
@@ -12,12 +13,17 @@ export class FsFilterActionKebabActionsComponent {
12
13
  }
13
14
  }
14
15
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterActionKebabActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FsFilterActionKebabActionsComponent, selector: "fs-filter-action-kebab-actions", inputs: { kebabActions: "kebabActions" }, ngImport: i0, template: "<button \n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template \n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"actionClick(subAction, $event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template \n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"actionClick(childAction, $event)\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template \n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template \n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i4.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i4.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i4.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i4.FsMenuFileItemDirective, selector: "[fs-menu-file-item]", inputs: ["multiple", "accept", "minWidth", "minHeight", "imageWidth", "imageHeight"], outputs: ["select", "error"] }, { kind: "directive", type: i4.FsGroupMenuItemTemplateDirective, selector: "[fs-group-menu-item-template]" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterActionKebabActionsComponent, isStandalone: true, selector: "fs-filter-action-kebab-actions", inputs: { kebabActions: "kebabActions" }, ngImport: i0, template: "<button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n @for (action of kebabActions; track action) {\n @switch (action.mode) {\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n @case ('menu') {\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n @for (subAction of childAction.items; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>{{subAction.icon}}</mat-icon>\n }\n {{subAction.label}}\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"actionClick(childAction, $event)\">\n @if (childAction.icon) {\n <mat-icon>{{childAction.icon}}</mat-icon>\n }\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n }\n }\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n @default {\n <ng-template\n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n }\n }\n </fs-menu>\n", styles: [""], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i1.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i1.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i1.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i1.FsMenuFileItemDirective, selector: "[fs-menu-file-item]", inputs: ["multiple", "accept", "minWidth", "minHeight", "imageWidth", "imageHeight"], outputs: ["select", "error"] }, { kind: "directive", type: i1.FsGroupMenuItemTemplateDirective, selector: "[fs-group-menu-item-template]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
17
  }
17
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterActionKebabActionsComponent, decorators: [{
18
19
  type: Component,
19
- args: [{ selector: 'fs-filter-action-kebab-actions', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button \n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n <ng-container *ngFor=\"let action of kebabActions\">\n <ng-container [ngSwitch]=\"action.mode\">\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n <ng-container *ngSwitchCase=\"'menu'\">\n <ng-container *ngFor=\"let childAction of action.items\">\n <ng-container *ngIf=\"childAction.isGroup else simpleMenuItem\">\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n <ng-container *ngFor=\"let subAction of childAction.items\">\n <ng-template \n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"actionClick(subAction, $event)\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template \n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"actionClick(childAction, $event)\">\n <mat-icon *ngIf=\"childAction.icon\">{{childAction.icon}}</mat-icon>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'file'\">\n <ng-template \n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-template \n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon> {{action.label}}\n </ng-template>\n </ng-container>\n\n </ng-container>\n </ng-container>\n</fs-menu>\n" }]
20
+ args: [{ selector: 'fs-filter-action-kebab-actions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
21
+ MatIconButton,
22
+ FsMenuModule,
23
+ MatIcon,
24
+ AsyncPipe,
25
+ ], template: "<button\n type=\"button\"\n mat-icon-button\n class=\"menu-button\"\n [fsMenuTriggerFor]=\"kebabActionsMenu\">\n <mat-icon>more_vert</mat-icon>\n</button>\n<fs-menu #kebabActionsMenu>\n @for (action of kebabActions; track action) {\n @switch (action.mode) {\n <!-- Case when actions was collapsed from action with mode = 'menu'-->\n @case ('menu') {\n @for (childAction of action.items; track childAction) {\n @if (childAction.isGroup) {\n <fs-menu-group>\n <ng-template fs-group-menu-item-template>\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon> {{childAction.label}}\n </ng-template>\n @for (subAction of childAction.items; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [hidden]=\"!(subAction.visible$ | async)\"\n (click)=\"actionClick(subAction, $event)\">\n @if (subAction.icon) {\n <mat-icon>{{subAction.icon}}</mat-icon>\n }\n {{subAction.label}}\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"childAction.routerLink?.link\"\n [queryParams]=\"childAction.routerLink?.queryParams\"\n [hidden]=\"!(childAction.visible$ | async)\"\n (click)=\"actionClick(childAction, $event)\">\n @if (childAction.icon) {\n <mat-icon>{{childAction.icon}}</mat-icon>\n }\n {{ action.label }} <mat-icon style=\"margin: 0;\">arrow_right</mat-icon>{{ childAction.label }}\n </ng-template>\n }\n }\n }\n @case ('file') {\n <ng-template\n fs-menu-file-item\n [fsClass]=\"action.classArray\"\n [multiple]=\"action.multiple\"\n [accept]=\"action.accept || '*'\"\n [minWidth]=\"action.minWidth\"\n [minHeight]=\"action.minHeight\"\n [imageWidth]=\"action.maxWidth\"\n [imageHeight]=\"action.maxHeight\"\n (error)=\"action.fileError($event)\"\n (select)=\"action.fileSelected($event)\"\n (click)=\"action.click($event)\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n @default {\n <ng-template\n fs-menu-item\n (click)=\"action.click($event)\"\n [fsClass]=\"action.classArray\">\n @if (action.icon) {\n <mat-icon>{{action.icon}}</mat-icon>\n } {{action.label}}\n </ng-template>\n }\n }\n }\n </fs-menu>\n" }]
20
26
  }], propDecorators: { kebabActions: [{
21
27
  type: Input
22
28
  }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FjdGlvbi1rZWJhYi1hY3Rpb25zL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY3Rpb24ta2ViYWItYWN0aW9ucy9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVzFFLE1BQU0sT0FBTyxtQ0FBbUM7SUFHdkMsWUFBWSxDQUFXO0lBRXZCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBaUI7UUFDMUMsSUFBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQzt3R0FUVSxtQ0FBbUM7NEZBQW5DLG1DQUFtQyxnSENYaEQsa21HQTBFQTs7NEZEL0RhLG1DQUFtQztrQkFOL0MsU0FBUzsrQkFDRSxnQ0FBZ0MsbUJBR3pCLHVCQUF1QixDQUFDLE1BQU07OEJBS3hDLFlBQVk7c0JBRGxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvYWN0aW9uLm1vZGVsJztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXItYWN0aW9uLWtlYmFiLWFjdGlvbnMnLFxuICBzdHlsZVVybHM6IFsnLi9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuc2NzcyddLFxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJBY3Rpb25LZWJhYkFjdGlvbnNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZWJhYkFjdGlvbnM6IEFjdGlvbltdO1xuXG4gIHB1YmxpYyBhY3Rpb25DbGljayhhY3Rpb24sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYoYWN0aW9uLmNsaWNrKSB7XG4gICAgICBhY3Rpb24uY2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvbiBcbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBtYXQtaWNvbi1idXR0b25cbiAgICBjbGFzcz1cIm1lbnUtYnV0dG9uXCJcbiAgICBbZnNNZW51VHJpZ2dlckZvcl09XCJrZWJhYkFjdGlvbnNNZW51XCI+XG4gIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuPC9idXR0b24+XG48ZnMtbWVudSAja2ViYWJBY3Rpb25zTWVudT5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGtlYmFiQWN0aW9uc1wiPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImFjdGlvbi5tb2RlXCI+XG4gICAgICA8IS0tIENhc2Ugd2hlbiBhY3Rpb25zIHdhcyBjb2xsYXBzZWQgZnJvbSBhY3Rpb24gd2l0aCBtb2RlID0gJ21lbnUnLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbWVudSdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGRBY3Rpb24gb2YgYWN0aW9uLml0ZW1zXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkQWN0aW9uLmlzR3JvdXAgZWxzZSBzaW1wbGVNZW51SXRlbVwiPlxuICAgICAgICAgICAgPGZzLW1lbnUtZ3JvdXA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1ncm91cC1tZW51LWl0ZW0tdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19IDxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbjogMDtcIj5hcnJvd19yaWdodDwvbWF0LWljb24+IHt7Y2hpbGRBY3Rpb24ubGFiZWx9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJBY3Rpb24gb2YgY2hpbGRBY3Rpb24uaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgXG4gICAgICAgICAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgICAgICAgICBbbGlua109XCJzdWJBY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJzdWJBY3Rpb24ucm91dGVyTGluaz8ucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIiEoc3ViQWN0aW9uLnZpc2libGUkIHwgYXN5bmMpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkNsaWNrKHN1YkFjdGlvbiwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic3ViQWN0aW9uLmljb25cIj57e3N1YkFjdGlvbi5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAge3tzdWJBY3Rpb24ubGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mcy1tZW51LWdyb3VwPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc2ltcGxlTWVudUl0ZW0+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgXG4gICAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgW2xpbmtdPVwiY2hpbGRBY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgICAgICAgW3F1ZXJ5UGFyYW1zXT1cImNoaWxkQWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIiEoY2hpbGRBY3Rpb24udmlzaWJsZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb25DbGljayhjaGlsZEFjdGlvbiwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJjaGlsZEFjdGlvbi5pY29uXCI+e3tjaGlsZEFjdGlvbi5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgICAgIHt7IGFjdGlvbi5sYWJlbCB9fSA8bWF0LWljb24gc3R5bGU9XCJtYXJnaW46IDA7XCI+YXJyb3dfcmlnaHQ8L21hdC1pY29uPnt7IGNoaWxkQWN0aW9uLmxhYmVsIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmaWxlJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgXG4gICAgICAgICAgICBmcy1tZW51LWZpbGUtaXRlbVxuICAgICAgICAgICAgW2ZzQ2xhc3NdPVwiYWN0aW9uLmNsYXNzQXJyYXlcIlxuICAgICAgICAgICAgW211bHRpcGxlXT1cImFjdGlvbi5tdWx0aXBsZVwiXG4gICAgICAgICAgICBbYWNjZXB0XT1cImFjdGlvbi5hY2NlcHQgfHwgJyonXCJcbiAgICAgICAgICAgIFttaW5XaWR0aF09XCJhY3Rpb24ubWluV2lkdGhcIlxuICAgICAgICAgICAgW21pbkhlaWdodF09XCJhY3Rpb24ubWluSGVpZ2h0XCJcbiAgICAgICAgICAgIFtpbWFnZVdpZHRoXT1cImFjdGlvbi5tYXhXaWR0aFwiXG4gICAgICAgICAgICBbaW1hZ2VIZWlnaHRdPVwiYWN0aW9uLm1heEhlaWdodFwiXG4gICAgICAgICAgICAoZXJyb3IpPVwiYWN0aW9uLmZpbGVFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAgIChzZWxlY3QpPVwiYWN0aW9uLmZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3Rpb24uY2xpY2soJGV2ZW50KVwiPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImFjdGlvbi5pY29uXCI+e3thY3Rpb24uaWNvbn19PC9tYXQtaWNvbj4ge3thY3Rpb24ubGFiZWx9fVxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFxuICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uLmNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgW2ZzQ2xhc3NdPVwiYWN0aW9uLmNsYXNzQXJyYXlcIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhY3Rpb24uaWNvblwiPnt7YWN0aW9uLmljb259fTwvbWF0LWljb24+IHt7YWN0aW9uLmxhYmVsfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9mcy1tZW51PlxuIl19
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FjdGlvbi1rZWJhYi1hY3Rpb25zL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY3Rpb24ta2ViYWItYWN0aW9ucy9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWdCNUMsTUFBTSxPQUFPLG1DQUFtQztJQUd2QyxZQUFZLENBQVc7SUFFdkIsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFpQjtRQUMxQyxJQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3dHQVRVLG1DQUFtQzs0RkFBbkMsbUNBQW1DLG9JQ3RCaEQsKzVGQThFQSwwREQ5RFEsYUFBYSw0RkFDYixZQUFZLG10QkFDWixPQUFPLHNJQUNQLFNBQVM7OzRGQUdKLG1DQUFtQztrQkFiL0MsU0FBUzsrQkFDSSxnQ0FBZ0MsbUJBR3pCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFNBQVM7cUJBQ1o7OEJBS0ksWUFBWTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGc01lbnVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9tZW51JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmcy1maWx0ZXItYWN0aW9uLWtlYmFiLWFjdGlvbnMnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0SWNvbkJ1dHRvbixcbiAgICAgICAgRnNNZW51TW9kdWxlLFxuICAgICAgICBNYXRJY29uLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJBY3Rpb25LZWJhYkFjdGlvbnNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZWJhYkFjdGlvbnM6IEFjdGlvbltdO1xuXG4gIHB1YmxpYyBhY3Rpb25DbGljayhhY3Rpb24sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYoYWN0aW9uLmNsaWNrKSB7XG4gICAgICBhY3Rpb24uY2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIGNsYXNzPVwibWVudS1idXR0b25cIlxuICBbZnNNZW51VHJpZ2dlckZvcl09XCJrZWJhYkFjdGlvbnNNZW51XCI+XG4gIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuPC9idXR0b24+XG48ZnMtbWVudSAja2ViYWJBY3Rpb25zTWVudT5cbiAgQGZvciAoYWN0aW9uIG9mIGtlYmFiQWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XG4gICAgQHN3aXRjaCAoYWN0aW9uLm1vZGUpIHtcbiAgICAgIDwhLS0gQ2FzZSB3aGVuIGFjdGlvbnMgd2FzIGNvbGxhcHNlZCBmcm9tIGFjdGlvbiB3aXRoIG1vZGUgPSAnbWVudSctLT5cbiAgICAgIEBjYXNlICgnbWVudScpIHtcbiAgICAgICAgQGZvciAoY2hpbGRBY3Rpb24gb2YgYWN0aW9uLml0ZW1zOyB0cmFjayBjaGlsZEFjdGlvbikge1xuICAgICAgICAgIEBpZiAoY2hpbGRBY3Rpb24uaXNHcm91cCkge1xuICAgICAgICAgICAgPGZzLW1lbnUtZ3JvdXA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1ncm91cC1tZW51LWl0ZW0tdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19IDxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbjogMDtcIj5hcnJvd19yaWdodDwvbWF0LWljb24+IHt7Y2hpbGRBY3Rpb24ubGFiZWx9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICBAZm9yIChzdWJBY3Rpb24gb2YgY2hpbGRBY3Rpb24uaXRlbXM7IHRyYWNrIHN1YkFjdGlvbikge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICBbbGlua109XCJzdWJBY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwic3ViQWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIShzdWJBY3Rpb24udmlzaWJsZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkNsaWNrKHN1YkFjdGlvbiwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChzdWJBY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWJBY3Rpb24uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7c3ViQWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ZzLW1lbnUtZ3JvdXA+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgIFtsaW5rXT1cImNoaWxkQWN0aW9uLnJvdXRlckxpbms/LmxpbmtcIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiY2hpbGRBY3Rpb24ucm91dGVyTGluaz8ucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cIiEoY2hpbGRBY3Rpb24udmlzaWJsZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soY2hpbGRBY3Rpb24sICRldmVudClcIj5cbiAgICAgICAgICAgICAgQGlmIChjaGlsZEFjdGlvbi5pY29uKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7Y2hpbGRBY3Rpb24uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX0gPG1hdC1pY29uIHN0eWxlPVwibWFyZ2luOiAwO1wiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj57eyBjaGlsZEFjdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgZnMtbWVudS1maWxlLWl0ZW1cbiAgICAgICAgICBbZnNDbGFzc109XCJhY3Rpb24uY2xhc3NBcnJheVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cImFjdGlvbi5tdWx0aXBsZVwiXG4gICAgICAgICAgW2FjY2VwdF09XCJhY3Rpb24uYWNjZXB0IHx8ICcqJ1wiXG4gICAgICAgICAgW21pbldpZHRoXT1cImFjdGlvbi5taW5XaWR0aFwiXG4gICAgICAgICAgW21pbkhlaWdodF09XCJhY3Rpb24ubWluSGVpZ2h0XCJcbiAgICAgICAgICBbaW1hZ2VXaWR0aF09XCJhY3Rpb24ubWF4V2lkdGhcIlxuICAgICAgICAgIFtpbWFnZUhlaWdodF09XCJhY3Rpb24ubWF4SGVpZ2h0XCJcbiAgICAgICAgICAoZXJyb3IpPVwiYWN0aW9uLmZpbGVFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0KT1cImFjdGlvbi5maWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgQGlmIChhY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgPG1hdC1pY29uPnt7YWN0aW9uLmljb259fTwvbWF0LWljb24+XG4gICAgICAgICAgICB9IHt7YWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmc0NsYXNzXT1cImFjdGlvbi5jbGFzc0FycmF5XCI+XG4gICAgICAgICAgICBAaWYgKGFjdGlvbi5pY29uKSB7XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj57e2FjdGlvbi5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgICAgICB9IHt7YWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9mcy1tZW51PlxuIl19