@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.
- package/app/components/action-button/action-button.component.d.ts +1 -1
- package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +1 -1
- package/app/components/actions/actions.component.d.ts +1 -1
- package/app/components/filter/filter.component.d.ts +16 -20
- package/app/components/filter-chip/filter-chip.component.d.ts +1 -1
- package/app/components/filter-chip-content/filter-chip-content.component.d.ts +1 -1
- package/app/components/filter-chips/filter-chips.component.d.ts +1 -1
- package/app/components/filter-drawer/filter-drawer.component.d.ts +17 -11
- package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +5 -1
- package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +1 -1
- package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +1 -1
- package/app/components/filters-item/base-item/base-item.component.d.ts +1 -1
- package/app/components/filters-item/checkbox/checkbox.component.d.ts +1 -1
- package/app/components/filters-item/chips/chips.component.d.ts +2 -3
- package/app/components/filters-item/date/date.component.d.ts +1 -1
- package/app/components/filters-item/date-range/date-range.component.d.ts +1 -1
- package/app/components/filters-item/filter-item.component.d.ts +1 -1
- package/app/components/filters-item/range/range.component.d.ts +1 -1
- package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +1 -1
- package/app/components/filters-item/select/groups/groups.component.d.ts +1 -1
- package/app/components/filters-item/select/multiple/multiple.component.d.ts +1 -1
- package/app/components/filters-item/select/select.component.d.ts +1 -1
- package/app/components/filters-item/select/simple/simple.component.d.ts +1 -1
- package/app/components/filters-item/text/text.component.d.ts +1 -1
- package/app/components/filters-item/week/week.component.d.ts +1 -1
- package/app/components/saved-filter/index.d.ts +1 -1
- package/app/components/saved-filter/saved-filter-autocomplete-chips/index.d.ts +1 -0
- package/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.d.ts +32 -0
- package/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.d.ts +1 -1
- package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +12 -9
- package/app/consts/filter-icon.d.ts +1 -0
- package/app/consts/index.d.ts +2 -0
- package/app/directives/focus-to-item/focus-to-item.directive.d.ts +1 -1
- package/app/directives/status-bar/status-bar.directive.d.ts +1 -1
- package/app/fs-filter.module.d.ts +28 -59
- package/app/helpers/build-query-params.d.ts +2 -1
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/app/injectors/filter-drawer-overlay.d.ts +2 -1
- package/app/interfaces/external-params.interface.d.ts +1 -1
- package/app/interfaces/saved-filters.interface.d.ts +10 -5
- package/app/models/items/autocomplete/index.d.ts +1 -0
- package/app/models/items/date/index.d.ts +1 -0
- package/app/models/items/date-range/index.d.ts +1 -0
- package/app/models/items/index.d.ts +17 -0
- package/app/models/items/select/index.d.ts +3 -0
- package/app/pipes/remove-isolate-value.pipe.d.ts +1 -1
- package/app/services/external-params-controller.service.d.ts +5 -12
- package/app/services/filter-overlay.service.d.ts +7 -11
- package/app/services/index.d.ts +7 -0
- package/app/services/items-store.service.d.ts +3 -1
- package/app/services/{external-params/query-params-controller.service.d.ts → query-params-controller.service.d.ts} +1 -1
- package/app/services/{external-params/query-persistance-controller.service.d.ts → query-persistance-controller.service.d.ts} +1 -1
- package/app/services/{external-params/saved-filters-controller.service.d.ts → saved-filters-controller.service.d.ts} +15 -9
- package/esm2022/app/components/action-button/action-button.component.mjs +22 -7
- package/esm2022/app/components/action-kebab-actions/action-kebab-actions.component.mjs +13 -7
- package/esm2022/app/components/actions/actions.component.mjs +35 -15
- package/esm2022/app/components/filter/filter.component.mjs +54 -53
- package/esm2022/app/components/filter-chip/filter-chip.component.mjs +12 -6
- package/esm2022/app/components/filter-chip-content/filter-chip-content.component.mjs +3 -3
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +5 -5
- package/esm2022/app/components/filter-drawer/filter-drawer.component.mjs +66 -32
- package/esm2022/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +27 -7
- package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +14 -6
- package/esm2022/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +14 -6
- package/esm2022/app/components/filters-item/base-item/base-item.component.mjs +3 -2
- package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +15 -7
- package/esm2022/app/components/filters-item/chips/chips.component.mjs +19 -14
- package/esm2022/app/components/filters-item/date/date.component.mjs +19 -8
- package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +19 -8
- package/esm2022/app/components/filters-item/filter-item.component.mjs +24 -14
- package/esm2022/app/components/filters-item/range/range.component.mjs +19 -9
- package/esm2022/app/components/filters-item/select/backdrop/backdrop.component.mjs +3 -3
- package/esm2022/app/components/filters-item/select/groups/groups.component.mjs +21 -10
- package/esm2022/app/components/filters-item/select/multiple/multiple.component.mjs +25 -12
- package/esm2022/app/components/filters-item/select/select.component.mjs +17 -9
- package/esm2022/app/components/filters-item/select/simple/simple.component.mjs +24 -12
- package/esm2022/app/components/filters-item/text/text.component.mjs +17 -9
- package/esm2022/app/components/filters-item/week/week.component.mjs +19 -8
- package/esm2022/app/components/saved-filter/index.mjs +2 -2
- package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/index.mjs +2 -0
- package/esm2022/app/components/saved-filter/saved-filter-autocomplete-chips/saved-filter-autocomplete-chips.component.mjs +122 -0
- package/esm2022/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +29 -12
- package/esm2022/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +37 -29
- package/esm2022/app/consts/filter-icon.mjs +2 -0
- package/esm2022/app/consts/index.mjs +3 -0
- package/esm2022/app/directives/focus-to-item/focus-to-item.directive.mjs +3 -2
- package/esm2022/app/directives/status-bar/status-bar.directive.mjs +3 -2
- package/esm2022/app/fs-filter.module.mjs +32 -138
- package/esm2022/app/helpers/build-query-params.mjs +8 -3
- package/esm2022/app/helpers/compare.mjs +2 -2
- package/esm2022/app/injectors/filter-drawer-overlay.mjs +1 -1
- package/esm2022/app/interfaces/external-params.interface.mjs +1 -1
- package/esm2022/app/interfaces/saved-filters.interface.mjs +1 -1
- package/esm2022/app/models/items/autocomplete/index.mjs +2 -0
- package/esm2022/app/models/items/date/index.mjs +2 -0
- package/esm2022/app/models/items/date-range/index.mjs +2 -0
- package/esm2022/app/models/items/index.mjs +18 -0
- package/esm2022/app/models/items/select/index.mjs +4 -0
- package/esm2022/app/pipes/remove-isolate-value.pipe.mjs +3 -2
- package/esm2022/app/services/external-params-controller.service.mjs +20 -49
- package/esm2022/app/services/filter-overlay.service.mjs +10 -21
- package/esm2022/app/services/index.mjs +8 -0
- package/esm2022/app/services/items-store.service.mjs +12 -1
- package/esm2022/app/services/query-params-controller.service.mjs +65 -0
- package/esm2022/app/services/query-persistance-controller.service.mjs +65 -0
- package/esm2022/app/services/saved-filters-controller.service.mjs +210 -0
- package/esm2022/public_api.mjs +2 -3
- package/fesm2022/firestitch-filter.mjs +2706 -2478
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +1 -2
- package/app/components/saved-filter/saved-filters-menu/index.d.ts +0 -1
- package/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.d.ts +0 -24
- package/app/services/external-params/index.d.ts +0 -3
- package/esm2022/app/components/saved-filter/saved-filters-menu/index.mjs +0 -2
- package/esm2022/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +0 -61
- package/esm2022/app/services/external-params/index.mjs +0 -4
- package/esm2022/app/services/external-params/query-params-controller.service.mjs +0 -65
- package/esm2022/app/services/external-params/query-persistance-controller.service.mjs +0 -65
- 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';
|
|
@@ -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",
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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 '
|
|
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,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 '
|
|
5
|
-
import { IFilterSavedFilter, IFilterSavedFiltersConfig } from '
|
|
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
|
|
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
|
-
|
|
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(
|
|
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 "@
|
|
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:
|
|
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,
|
|
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,
|
|
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 "@
|
|
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: "
|
|
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,
|
|
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,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWtlYmFiLWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2FjdGlvbi1rZWJhYi1hY3Rpb25zL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9hY3Rpb24ta2ViYWItYWN0aW9ucy9hY3Rpb24ta2ViYWItYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQWdCNUMsTUFBTSxPQUFPLG1DQUFtQztJQUd2QyxZQUFZLENBQVc7SUFFdkIsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFpQjtRQUMxQyxJQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO3dHQVRVLG1DQUFtQzs0RkFBbkMsbUNBQW1DLG9JQ3RCaEQsKzVGQThFQSwwREQ5RFEsYUFBYSw0RkFDYixZQUFZLG10QkFDWixPQUFPLHNJQUNQLFNBQVM7OzRGQUdKLG1DQUFtQztrQkFiL0MsU0FBUzsrQkFDSSxnQ0FBZ0MsbUJBR3pCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNMLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFNBQVM7cUJBQ1o7OEJBS0ksWUFBWTtzQkFEbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9hY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgTWF0SWNvbkJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBGc01lbnVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9tZW51JztcbmltcG9ydCB7IE1hdEljb24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmcy1maWx0ZXItYWN0aW9uLWtlYmFiLWFjdGlvbnMnLFxuICAgIHN0eWxlVXJsczogWycuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1rZWJhYi1hY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTWF0SWNvbkJ1dHRvbixcbiAgICAgICAgRnNNZW51TW9kdWxlLFxuICAgICAgICBNYXRJY29uLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJBY3Rpb25LZWJhYkFjdGlvbnNDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBrZWJhYkFjdGlvbnM6IEFjdGlvbltdO1xuXG4gIHB1YmxpYyBhY3Rpb25DbGljayhhY3Rpb24sIGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYoYWN0aW9uLmNsaWNrKSB7XG4gICAgICBhY3Rpb24uY2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgbWF0LWljb24tYnV0dG9uXG4gIGNsYXNzPVwibWVudS1idXR0b25cIlxuICBbZnNNZW51VHJpZ2dlckZvcl09XCJrZWJhYkFjdGlvbnNNZW51XCI+XG4gIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxuPC9idXR0b24+XG48ZnMtbWVudSAja2ViYWJBY3Rpb25zTWVudT5cbiAgQGZvciAoYWN0aW9uIG9mIGtlYmFiQWN0aW9uczsgdHJhY2sgYWN0aW9uKSB7XG4gICAgQHN3aXRjaCAoYWN0aW9uLm1vZGUpIHtcbiAgICAgIDwhLS0gQ2FzZSB3aGVuIGFjdGlvbnMgd2FzIGNvbGxhcHNlZCBmcm9tIGFjdGlvbiB3aXRoIG1vZGUgPSAnbWVudSctLT5cbiAgICAgIEBjYXNlICgnbWVudScpIHtcbiAgICAgICAgQGZvciAoY2hpbGRBY3Rpb24gb2YgYWN0aW9uLml0ZW1zOyB0cmFjayBjaGlsZEFjdGlvbikge1xuICAgICAgICAgIEBpZiAoY2hpbGRBY3Rpb24uaXNHcm91cCkge1xuICAgICAgICAgICAgPGZzLW1lbnUtZ3JvdXA+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBmcy1ncm91cC1tZW51LWl0ZW0tdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAge3sgYWN0aW9uLmxhYmVsIH19IDxtYXQtaWNvbiBzdHlsZT1cIm1hcmdpbjogMDtcIj5hcnJvd19yaWdodDwvbWF0LWljb24+IHt7Y2hpbGRBY3Rpb24ubGFiZWx9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICBAZm9yIChzdWJBY3Rpb24gb2YgY2hpbGRBY3Rpb24uaXRlbXM7IHRyYWNrIHN1YkFjdGlvbikge1xuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICBbbGlua109XCJzdWJBY3Rpb24ucm91dGVyTGluaz8ubGlua1wiXG4gICAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwic3ViQWN0aW9uLnJvdXRlckxpbms/LnF1ZXJ5UGFyYW1zXCJcbiAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiIShzdWJBY3Rpb24udmlzaWJsZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbkNsaWNrKHN1YkFjdGlvbiwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgQGlmIChzdWJBY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+e3tzdWJBY3Rpb24uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHt7c3ViQWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2ZzLW1lbnUtZ3JvdXA+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgIFtsaW5rXT1cImNoaWxkQWN0aW9uLnJvdXRlckxpbms/LmxpbmtcIlxuICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiY2hpbGRBY3Rpb24ucm91dGVyTGluaz8ucXVlcnlQYXJhbXNcIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cIiEoY2hpbGRBY3Rpb24udmlzaWJsZSQgfCBhc3luYylcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQ2xpY2soY2hpbGRBY3Rpb24sICRldmVudClcIj5cbiAgICAgICAgICAgICAgQGlmIChjaGlsZEFjdGlvbi5pY29uKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnt7Y2hpbGRBY3Rpb24uaWNvbn19PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB7eyBhY3Rpb24ubGFiZWwgfX0gPG1hdC1pY29uIHN0eWxlPVwibWFyZ2luOiAwO1wiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj57eyBjaGlsZEFjdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBjYXNlICgnZmlsZScpIHtcbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgZnMtbWVudS1maWxlLWl0ZW1cbiAgICAgICAgICBbZnNDbGFzc109XCJhY3Rpb24uY2xhc3NBcnJheVwiXG4gICAgICAgICAgW211bHRpcGxlXT1cImFjdGlvbi5tdWx0aXBsZVwiXG4gICAgICAgICAgW2FjY2VwdF09XCJhY3Rpb24uYWNjZXB0IHx8ICcqJ1wiXG4gICAgICAgICAgW21pbldpZHRoXT1cImFjdGlvbi5taW5XaWR0aFwiXG4gICAgICAgICAgW21pbkhlaWdodF09XCJhY3Rpb24ubWluSGVpZ2h0XCJcbiAgICAgICAgICBbaW1hZ2VXaWR0aF09XCJhY3Rpb24ubWF4V2lkdGhcIlxuICAgICAgICAgIFtpbWFnZUhlaWdodF09XCJhY3Rpb24ubWF4SGVpZ2h0XCJcbiAgICAgICAgICAoZXJyb3IpPVwiYWN0aW9uLmZpbGVFcnJvcigkZXZlbnQpXCJcbiAgICAgICAgICAoc2VsZWN0KT1cImFjdGlvbi5maWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgQGlmIChhY3Rpb24uaWNvbikge1xuICAgICAgICAgICAgPG1hdC1pY29uPnt7YWN0aW9uLmljb259fTwvbWF0LWljb24+XG4gICAgICAgICAgICB9IHt7YWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9XG4gICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzLW1lbnUtaXRlbVxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGlvbi5jbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmc0NsYXNzXT1cImFjdGlvbi5jbGFzc0FycmF5XCI+XG4gICAgICAgICAgICBAaWYgKGFjdGlvbi5pY29uKSB7XG4gICAgICAgICAgICAgIDxtYXQtaWNvbj57e2FjdGlvbi5pY29ufX08L21hdC1pY29uPlxuICAgICAgICAgICAgICB9IHt7YWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgPC9mcy1tZW51PlxuIl19
|