@firestitch/filter 18.2.74 → 18.2.75
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/filters-item/range/range.component.d.ts +1 -0
- package/app/components/filters-item/text/text.component.d.ts +1 -0
- package/app/helpers/create-filter-item.d.ts +1 -1
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +3 -3
- package/esm2022/app/components/filters-item/range/range.component.mjs +8 -3
- package/esm2022/app/components/filters-item/text/text.component.mjs +8 -3
- package/fesm2022/firestitch-filter.mjs +16 -6
- package/fesm2022/firestitch-filter.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ export declare class RangeComponent extends BaseItemComponent<RangeItem> impleme
|
|
|
9
9
|
max: number;
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
ngOnDestroy(): void;
|
|
12
|
+
keyup(event: KeyboardEvent): void;
|
|
12
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<RangeComponent, never>;
|
|
13
14
|
static ɵcmp: i0.ɵɵComponentDeclaration<RangeComponent, "filter-item-range", never, { "autofocusName": { "alias": "autofocusName"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; }, {}, never, never, true, never>;
|
|
14
15
|
}
|
|
@@ -8,6 +8,7 @@ export declare class TextComponent extends BaseItemComponent<TextItem> implement
|
|
|
8
8
|
value: string;
|
|
9
9
|
ngOnInit(): void;
|
|
10
10
|
ngOnDestroy(): void;
|
|
11
|
+
keyup(event: KeyboardEvent): void;
|
|
11
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<TextComponent, never>;
|
|
12
13
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextComponent, "filter-item-text", never, { "autofocus": { "alias": "autofocus"; "required": false; }; "floatLabel": { "alias": "floatLabel"; "required": false; }; }, {}, never, never, true, never>;
|
|
13
14
|
}
|
|
@@ -12,4 +12,4 @@ import { RangeItem } from '../models/items/range-item';
|
|
|
12
12
|
import { SelectItem } from '../models/items/select-item';
|
|
13
13
|
import { TextItem } from '../models/items/text-item';
|
|
14
14
|
import { WeekItem } from '../models/items/week-item';
|
|
15
|
-
export declare function createFilterItem(item: IFilterConfigItem, filter: FilterComponent):
|
|
15
|
+
export declare function createFilterItem(item: IFilterConfigItem, filter: FilterComponent): RangeItem | TextItem | SelectItem | ChipsItem | AutocompleteItem | AutocompleteChipsItem | DateItem | DateTimeItem | DateRangeItem | DateTimeRangeItem | WeekItem | CheckboxItem;
|
|
@@ -201,7 +201,7 @@ export class FsFilterChipsComponent {
|
|
|
201
201
|
.subscribe();
|
|
202
202
|
}
|
|
203
203
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
204
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n
|
|
204
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i2.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
205
205
|
}
|
|
206
206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, decorators: [{
|
|
207
207
|
type: Component,
|
|
@@ -214,9 +214,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
214
214
|
MatButtonModule,
|
|
215
215
|
FsButtonDirective,
|
|
216
216
|
FormsModule,
|
|
217
|
-
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n
|
|
217
|
+
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
|
|
218
218
|
}], propDecorators: { chips: [{
|
|
219
219
|
type: ViewChildren,
|
|
220
220
|
args: [FsChipComponent]
|
|
221
221
|
}] } });
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFxQixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxL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QUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBTdGF0aWNQcm92aWRlciwgVmlld0NoaWxkcmVuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50LCBGc0NoaXBNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9jaGlwJztcbmltcG9ydCB7IEZzQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzU2VsZWN0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0YnV0dG9uJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWxheSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEZJTFRFUl9EUkFXRVJfREFUQSB9IGZyb20gJy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtJztcbmltcG9ydCB7IFNhdmVkRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckl0ZW1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXItaXRlbS1kaWFsb2cnO1xuaW1wb3J0IHsgRnNGaWx0ZXJTYXZlZEZpbHRlck1hbmFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3NhdmVkLWZpbHRlci9zYXZlZC1maWx0ZXItbWFuYWdlL3NhdmVkLWZpbHRlci1tYW5hZ2UuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXItY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZzQ2hpcE1vZHVsZSxcbiAgICBNYXRTZWxlY3QsXG4gICAgTWF0T3B0aW9uLFxuICAgIEZzU2VsZWN0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpIFxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyBJdGVtVHlwZSA9IEl0ZW1UeXBlO1xuICBwdWJsaWMgc2Vjb25kYXJ5SXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdID0gW107XG5cbiAgcHJpdmF0ZSBfZmlsdGVyQ29udHJvbGxlciA9IGluamVjdChGaWx0ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoRnNNZXNzYWdlKTtcbiAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KFNhdmVkRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfaGFzU2Vjb25kYXJ5VmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNUeXBlS2V5d29yZCk7XG4gIH1cblxuICBwdWJsaWMgYWRkRmlsdGVyKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpIHtcbiAgICBjb25zdCBpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4gPSBldmVudC52YWx1ZTtcbiAgICBpdGVtLnNlY29uZGFyeVNob3coKTtcblxuICAgIHRoaXMuY2hpcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGRlbGF5KDEwMCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcGVuQ2hpcChpdGVtKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWRJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSAmJiAhaXRlbS5oYXNWYWx1ZSAmJiAhaXRlbS5wcmltYXJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU2Vjb25kYXJ5VmFsdWUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlckNvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuc29tZSgoaXRlbSkgPT4gaXRlbS5oYXNWYWx1ZSAmJiBpdGVtLnZpc2libGUgJiYgIWl0ZW0ucHJpbWFyeSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWNvbmRhcnlJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnByaW1hcnkpO1xuXG4gICAgdGhpcy5faW5pdEhhc1NlY29uZGFyeVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5jbGVhcmFibGUpXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZighaXRlbS5zZWNvbmRhcnkpIHtcbiAgICAgICAgICBpdGVtLnNlY29uZGFyeUhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmNsZWFyKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UoKTtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9wZW5DaGlwKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgbmFtZTogc3RyaW5nID0gbnVsbCkge1xuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1maWx0ZXItaXRlbT1cIiR7aXRlbS5uYW1lfVwiXWApO1xuXG4gICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgb2Zmc2V0WTogZWwub2Zmc2V0SGVpZ2h0ICsgMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oZWwpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICAgIFxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwYW5lbENsYXNzOiAnZnMtc2lkZW5hdi1tZW51LW92ZXJsYXktcGFuZScsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fYXR0YWNoQ29udGFpbmVyKHRoaXMuX292ZXJsYXlSZWYsIGl0ZW0sIG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldE5lc3RlZEVsZW1lbnQoZWw6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBpZihlbCkge1xuICAgICAgaWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRFbGVtZW50KGVsLnBhcmVudEVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgXG4gIHB1YmxpYyBzYXZlQWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmUodGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU2F2ZWRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmNyZWF0ZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlXG4gICAgICAgICAgICAuc3VjY2VzcyhgQ3JlYXRlZCAke3RoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zaW5ndWxhckxhYmVsfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyXG4gICAgICAuc2F2ZUFzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH0gXG5cbiAgcHVibGljIG1hbmFnZVNhdmVkRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dcbiAgICAgIC5vcGVuKEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgX2Rlc3Ryb3lPdmVybGF5KCkge1xuICAgIGlmKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDaGlwKFxuICAgIGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgXG4gICAgY2hpcDogeyBuYW1lPzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0sXG4gICkge1xuICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgfVxuXG4gICAgaWYoY2hpcC5uYW1lKSB7XG4gICAgICBpdGVtLmNsZWFyQnlOYW1lKGNoaXAubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGl0ZW0sIG5hbWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2g8RmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudD4oY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIGF1dG9mb2N1c05hbWU6IHN0cmluZyk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IHsgaXRlbSwgYXV0b2ZvY3VzTmFtZSwgb3ZlcmxheVJlZjogdGhpcy5fb3ZlcmxheVJlZiB9IH0sXG4gICAgXTtcbiAgXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEhhc1NlY29uZGFyeVZhbHVlKCkge1xuICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCJAaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMCkge1xuICBAZm9yIChpdGVtIG9mIHNlY29uZGFyeUl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICBAaWYgKChpdGVtLnZpc2libGUkIHwgYXN5bmMpICYmIChpdGVtLmhhc1ZhbHVlJCB8IGFzeW5jKSkge1xuICAgICAgQGZvciAoY2hpcCBvZiBpdGVtLmNoaXBzJCB8IGFzeW5jOyB0cmFjayBjaGlwLmxhYmVsKSB7XG4gICAgICAgIDxmcy1jaGlwXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwIHNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI2RkZCdcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0sIGNoaXAubmFtZSlcIj5cbiAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgIHt7IGNoaXAubGFiZWwgfX06XG4gICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgW2ljb25dPVwiJ2NhbmNlbF9jaXJjbGVfb3V0bGluZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXAoaXRlbSwgY2hpcClcIj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZzLWNoaXA+XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAoKGl0ZW0udmlzaWJsZSQgfCBhc3luYykgJiYgKGl0ZW0ubm90VmFsdWUkIHwgYXN5bmMpICYmIChpdGVtLnNlY29uZGFyeVZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICA8ZnMtY2hpcFxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZmlsdGVyLWl0ZW1dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0pXCJcbiAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiPlxuICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgIFtpY29uXT1cIidhZGRfY2lyY2xlX291dGxpbmUnXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnMtY2hpcD5cbiAgICB9XG4gIH1cbiAgPG1hdC1zZWxlY3RcbiAgICAgIGNsYXNzPVwibW9yZS1maWx0ZXJzLXNlbGVjdCBtYXQtbWRjLWJ1dHRvbi1iYXNlXCJcbiAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgZnNTZWxlY3RCdXR0b25cbiAgICAgIFtkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXT1cInRydWVcIlxuICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2ZzLWZpbHRlci1uby1pbml0aWFsLWZvY3VzJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ01vcmUgZmlsdGVycydcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgQGZvciAoaXRlbSBvZiBkaXNhYmxlZEl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgIHt7IGl0ZW0ubWVyZ2VkTGFiZWwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LXNlbGVjdD5cbiAgPG1hdC1zZWxlY3RcbiAgICAgIGNsYXNzPVwic2F2ZWQtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICBbYnV0dG9uVHlwZV09XCInYmFzaWMnXCJcbiAgICAgIGZzU2VsZWN0QnV0dG9uXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWxcIlxuICAgICAgW2Rlc2VsZWN0T25DaGFuZ2VdPVwidHJ1ZVwiPlxuICAgIEBpZiAoc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlciQgfCBhc3luYykge1xuICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBY3RpdmVGaWx0ZXIoKVwiPlxuICAgICAgICBVcGRhdGUgZmlsdGVyc1xuICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICAgIFNhdmUgYXMgbmV3XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwiY3JlYXRlU2F2ZWRGaWx0ZXIoKVwiPlxuICAgICAgICBDcmVhdGUgbmV3XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgfVxuICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJtYW5hZ2VTYXZlZEZpbHRlcnMoKVwiPlxuICAgICAgVmlldyBhbGxcbiAgICA8L21hdC1vcHRpb24+XG4gIDwvbWF0LXNlbGVjdD5cbiAgQGlmIChoYXNTZWNvbmRhcnlWYWx1ZSQgfCBhc3luYykge1xuICAgIDxhXG4gICAgICAgIGNsYXNzPVwiY2xlYXJcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCI+XG4gICAgICBDbGVhciBmaWx0ZXJzXG4gICAgPC9hPlxuICB9XG59Il19
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9maWx0ZXItY2hpcHMvZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLFNBQVMsRUFBa0IsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFxQixPQUFPLEVBQUUsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQW1CLE1BQU0sMEJBQTBCLENBQUM7QUFFakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFaEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxL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QUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRGVzdHJveVJlZiwgRWxlbWVudFJlZiwgSW5qZWN0b3IsIE9uSW5pdCwgUXVlcnlMaXN0LCBTdGF0aWNQcm92aWRlciwgVmlld0NoaWxkcmVuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSwgT3ZlcmxheUNvbmZpZywgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRPcHRpb24sIE1hdFNlbGVjdCwgTWF0U2VsZWN0Q2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcblxuaW1wb3J0IHsgRnNDaGlwQ29tcG9uZW50LCBGc0NoaXBNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9jaGlwJztcbmltcG9ydCB7IEZzQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5pbXBvcnQgeyBGc01lc3NhZ2UgfSBmcm9tICdAZmlyZXN0aXRjaC9tZXNzYWdlJztcbmltcG9ydCB7IEZzU2VsZWN0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvc2VsZWN0YnV0dG9uJztcblxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBkZWxheSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG5pbXBvcnQgeyBJdGVtVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB7IEZJTFRFUl9EUkFXRVJfREFUQSB9IGZyb20gJy4uLy4uL2luamVjdG9ycyc7XG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtJztcbmltcG9ydCB7IFNhdmVkRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEZpbHRlckl0ZW1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi9maWx0ZXItaXRlbS1kaWFsb2cnO1xuaW1wb3J0IHsgRnNGaWx0ZXJTYXZlZEZpbHRlck1hbmFnZUNvbXBvbmVudCB9IGZyb20gJy4uL3NhdmVkLWZpbHRlci9zYXZlZC1maWx0ZXItbWFuYWdlL3NhdmVkLWZpbHRlci1tYW5hZ2UuY29tcG9uZW50JztcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmcy1maWx0ZXItY2hpcHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyLWNoaXBzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEZzQ2hpcE1vZHVsZSxcbiAgICBNYXRTZWxlY3QsXG4gICAgTWF0T3B0aW9uLFxuICAgIEZzU2VsZWN0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBGc0J1dHRvbkRpcmVjdGl2ZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJDaGlwc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZHJlbihGc0NoaXBDb21wb25lbnQpIFxuICBwdWJsaWMgY2hpcHM6IFF1ZXJ5TGlzdDxGc0NoaXBDb21wb25lbnQ+O1xuXG4gIHB1YmxpYyBJdGVtVHlwZSA9IEl0ZW1UeXBlO1xuICBwdWJsaWMgc2Vjb25kYXJ5SXRlbXM6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdID0gW107XG5cbiAgcHJpdmF0ZSBfZmlsdGVyQ29udHJvbGxlciA9IGluamVjdChGaWx0ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gIHByaXZhdGUgX21lc3NhZ2UgPSBpbmplY3QoRnNNZXNzYWdlKTtcbiAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KFNhdmVkRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgcHJpdmF0ZSBfb3ZlcmxheSA9IGluamVjdChPdmVybGF5KTtcbiAgcHJpdmF0ZSBfb3ZlcmxheVJlZjogT3ZlcmxheVJlZjtcbiAgcHJpdmF0ZSBfZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfaGFzU2Vjb25kYXJ5VmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgcHVibGljIGdldCBpdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uaXNUeXBlS2V5d29yZCk7XG4gIH1cblxuICBwdWJsaWMgYWRkRmlsdGVyKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpIHtcbiAgICBjb25zdCBpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4gPSBldmVudC52YWx1ZTtcbiAgICBpdGVtLnNlY29uZGFyeVNob3coKTtcblxuICAgIHRoaXMuY2hpcHMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIGRlbGF5KDEwMCksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5vcGVuQ2hpcChpdGVtKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWRJdGVtcygpIHtcbiAgICByZXR1cm4gdGhpcy5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gIWl0ZW0uc2Vjb25kYXJ5VmlzaWJsZSAmJiAhaXRlbS5oYXNWYWx1ZSAmJiAhaXRlbS5wcmltYXJ5KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzU2Vjb25kYXJ5VmFsdWUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhdmVkRmlsdGVyQ29udHJvbGxlcigpOiBTYXZlZEZpbHRlckNvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1NlY29uZGFyeVZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zXG4gICAgICAuc29tZSgoaXRlbSkgPT4gaXRlbS5oYXNWYWx1ZSAmJiBpdGVtLnZpc2libGUgJiYgIWl0ZW0ucHJpbWFyeSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWNvbmRhcnlJdGVtcyA9IHRoaXMuaXRlbXNcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLnByaW1hcnkpO1xuXG4gICAgdGhpcy5faW5pdEhhc1NlY29uZGFyeVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKSB7XG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtc1xuICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5jbGVhcmFibGUpXG4gICAgICAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZighaXRlbS5zZWNvbmRhcnkpIHtcbiAgICAgICAgICBpdGVtLnNlY29uZGFyeUhpZGUoKTtcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmNsZWFyKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UoKTtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2V0QWN0aXZlRmlsdGVyKG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9wZW5DaGlwKGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgbmFtZTogc3RyaW5nID0gbnVsbCkge1xuICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnRcbiAgICAgIC5xdWVyeVNlbGVjdG9yKGBbZGF0YS1maWx0ZXItaXRlbT1cIiR7aXRlbS5uYW1lfVwiXWApO1xuXG4gICAgY29uc3QgcG9zaXRpb25zOiBDb25uZWN0ZWRQb3NpdGlvbltdID0gW1xuICAgICAge1xuICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgb2Zmc2V0WDogMCxcbiAgICAgICAgb2Zmc2V0WTogZWwub2Zmc2V0SGVpZ2h0ICsgMixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oZWwpXG4gICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpO1xuICAgIFxuICAgIGNvbnN0IG92ZXJsYXlDb25maWcgPSBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuYmxvY2soKSxcbiAgICAgIGRpc3Bvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBwYW5lbENsYXNzOiAnZnMtc2lkZW5hdi1tZW51LW92ZXJsYXktcGFuZScsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG5cbiAgICB0aGlzLl9vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3lPdmVybGF5KCk7XG4gICAgICB9KSxcbiAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICApLnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fYXR0YWNoQ29udGFpbmVyKHRoaXMuX292ZXJsYXlSZWYsIGl0ZW0sIG5hbWUpO1xuICB9XG5cbiAgcHVibGljIGdldE5lc3RlZEVsZW1lbnQoZWw6IGFueSwgY2xhc3NOYW1lOiBzdHJpbmcpIHtcbiAgICBpZihlbCkge1xuICAgICAgaWYoZWwuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5nZXROZXN0ZWRFbGVtZW50KGVsLnBhcmVudEVsZW1lbnQsIGNsYXNzTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgXG4gIHB1YmxpYyBzYXZlQWN0aXZlRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlclxuICAgICAgLnNhdmUodGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmFjdGl2ZUZpbHRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU2F2ZWRGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmNyZWF0ZSgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlXG4gICAgICAgICAgICAuc3VjY2VzcyhgQ3JlYXRlZCAke3RoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zaW5ndWxhckxhYmVsfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlQXMoKTogdm9pZCB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyXG4gICAgICAuc2F2ZUFzKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcyhgU2F2ZWQgJHt0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIuc2luZ3VsYXJMYWJlbH1gKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH0gXG5cbiAgcHVibGljIG1hbmFnZVNhdmVkRmlsdGVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9kaWFsb2dcbiAgICAgIC5vcGVuKEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQsIHtcbiAgICAgICAgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yLFxuICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgX2Rlc3Ryb3lPdmVybGF5KCkge1xuICAgIGlmKHRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoQmFja2Ryb3AoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVDaGlwKFxuICAgIGl0ZW06IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPiwgXG4gICAgY2hpcDogeyBuYW1lPzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH0sXG4gICkge1xuICAgIGlmKCFpdGVtLnNlY29uZGFyeSkge1xuICAgICAgaXRlbS5zZWNvbmRhcnlIaWRlKCk7XG4gICAgfVxuXG4gICAgaWYoY2hpcC5uYW1lKSB7XG4gICAgICBpdGVtLmNsZWFyQnlOYW1lKGNoaXAubmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZW0uY2xlYXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9hdHRhY2hDb250YWluZXIob3ZlcmxheVJlZjogT3ZlcmxheVJlZiwgaXRlbTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuX2NyZWF0ZUluamVjdG9yKGl0ZW0sIG5hbWUpO1xuICAgIGNvbnN0IGNvbnRhaW5lclBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoRmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudCwgdW5kZWZpbmVkLCBpbmplY3Rvcik7XG4gICAgY29uc3QgY29udGFpbmVyUmVmID0gb3ZlcmxheVJlZi5hdHRhY2g8RmlsdGVySXRlbURpYWxvZ0NvbXBvbmVudD4oY29udGFpbmVyUG9ydGFsKTtcblxuICAgIHJldHVybiBjb250YWluZXJSZWYuaW5zdGFuY2U7XG4gIH1cblxuICBwcml2YXRlIF9jcmVhdGVJbmplY3RvcihpdGVtOiBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnSXRlbT4sIGF1dG9mb2N1c05hbWU6IHN0cmluZyk6IEluamVjdG9yIHtcbiAgICBjb25zdCBwcm92aWRlcnM6IFN0YXRpY1Byb3ZpZGVyW10gPSBbXG4gICAgICB7IHByb3ZpZGU6IEZJTFRFUl9EUkFXRVJfREFUQSwgdXNlVmFsdWU6IHsgaXRlbSwgYXV0b2ZvY3VzTmFtZSwgb3ZlcmxheVJlZjogdGhpcy5fb3ZlcmxheVJlZiB9IH0sXG4gICAgXTtcbiAgXG4gICAgcmV0dXJuIEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnMsXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdEhhc1NlY29uZGFyeVZhbHVlKCkge1xuICAgIHRoaXMuX2hhc1NlY29uZGFyeVZhbHVlJC5uZXh0KHRoaXMuaGFzU2Vjb25kYXJ5VmFsdWUpO1xuXG4gICAgdGhpcy5fZmlsdGVyQ29udHJvbGxlci5jaGFuZ2UkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9oYXNTZWNvbmRhcnlWYWx1ZSQubmV4dCh0aGlzLmhhc1NlY29uZGFyeVZhbHVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG59XG4iLCJAaWYgKGl0ZW1zLmxlbmd0aCAhPT0gMCkge1xuICBAZm9yIChpdGVtIG9mIHNlY29uZGFyeUl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICBAaWYgKChpdGVtLnZpc2libGUkIHwgYXN5bmMpICYmIChpdGVtLmhhc1ZhbHVlJCB8IGFzeW5jKSkge1xuICAgICAgQGZvciAoY2hpcCBvZiBpdGVtLmNoaXBzJCB8IGFzeW5jOyB0cmFjayBjaGlwLmxhYmVsKSB7XG4gICAgICAgIDxmcy1jaGlwXG4gICAgICAgICAgICBjbGFzcz1cImZpbHRlci1jaGlwIHNlbGVjdGVkXCJcbiAgICAgICAgICAgIFtzaXplXT1cIidtZWRpdW0nXCJcbiAgICAgICAgICAgIFtib3JkZXJDb2xvcl09XCInI2RkZCdcIlxuICAgICAgICAgICAgW2F0dHIuZGF0YS1maWx0ZXItaXRlbV09XCJpdGVtLm5hbWVcIlxuICAgICAgICAgICAgW291dGxpbmVkXT1cInRydWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0sIGNoaXAubmFtZSlcIj5cbiAgICAgICAgICBAaWYgKGNoaXAudmFsdWUpIHtcbiAgICAgICAgICAgIHt7IGNoaXAubGFiZWwgfX06XG4gICAgICAgICAgICA8YT5cbiAgICAgICAgICAgICAge3sgY2hpcC52YWx1ZSB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAge3sgY2hpcC5sYWJlbCB9fVxuICAgICAgICAgIH1cbiAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgICAgW2ljb25dPVwiJ2NhbmNlbF9jaXJjbGVfb3V0bGluZSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUNoaXAoaXRlbSwgY2hpcClcIj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2ZzLWNoaXA+XG4gICAgICB9XG4gICAgfVxuICAgIEBpZiAoKGl0ZW0udmlzaWJsZSQgfCBhc3luYykgJiYgKGl0ZW0ubm90VmFsdWUkIHwgYXN5bmMpICYmIChpdGVtLnNlY29uZGFyeVZpc2libGUkIHwgYXN5bmMpKSB7XG4gICAgICA8ZnMtY2hpcFxuICAgICAgICAgIGNsYXNzPVwiZmlsdGVyLWNoaXBcIlxuICAgICAgICAgIFthdHRyLmRhdGEtZmlsdGVyLWl0ZW1dPVwiaXRlbS5uYW1lXCJcbiAgICAgICAgICBbc2l6ZV09XCInbWVkaXVtJ1wiXG4gICAgICAgICAgW2JvcmRlckNvbG9yXT1cIicjZGRkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5DaGlwKGl0ZW0pXCJcbiAgICAgICAgICBbb3V0bGluZWRdPVwidHJ1ZVwiPlxuICAgICAgICB7eyBpdGVtLm1lcmdlZExhYmVsIH19XG4gICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgIGZzQ2hpcFN1ZmZpeFxuICAgICAgICAgIFtpY29uXT1cIidhZGRfY2lyY2xlX291dGxpbmUnXCJcbiAgICAgICAgICAoY2xpY2spPVwib3BlbkNoaXAoaXRlbSlcIj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZnMtY2hpcD5cbiAgICB9XG4gIH1cbiAgPG1hdC1zZWxlY3RcbiAgICAgIGNsYXNzPVwibW9yZS1maWx0ZXJzLXNlbGVjdCBtYXQtbWRjLWJ1dHRvbi1iYXNlXCJcbiAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgZnNTZWxlY3RCdXR0b25cbiAgICAgIFtkaXNhYmxlT3B0aW9uQ2VudGVyaW5nXT1cInRydWVcIlxuICAgICAgW3BhbmVsQ2xhc3NdPVwiJ2ZzLWZpbHRlci1uby1pbml0aWFsLWZvY3VzJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ01vcmUgZmlsdGVycydcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJhZGRGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgQGZvciAoaXRlbSBvZiBkaXNhYmxlZEl0ZW1zOyB0cmFjayBpdGVtLm5hbWUpIHtcbiAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtXCI+XG4gICAgICAgIHt7IGl0ZW0ubWVyZ2VkTGFiZWwgfX1cbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICB9XG4gIDwvbWF0LXNlbGVjdD5cbiAgQGlmIChzYXZlZEZpbHRlckNvbnRyb2xsZXIuZW5hYmxlZCkge1xuICAgIDxtYXQtc2VsZWN0XG4gICAgICAgIGNsYXNzPVwic2F2ZWQtZmlsdGVycy1zZWxlY3QgbWF0LW1kYy1idXR0b24tYmFzZVwiXG4gICAgICAgIFtidXR0b25UeXBlXT1cIidiYXNpYydcIlxuICAgICAgICBmc1NlbGVjdEJ1dHRvblxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpID8gc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNpbmd1bGFyTGFiZWwgKyAnOiAnICsgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpLm5hbWUgOiBzYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWxcIlxuICAgICAgICBbZGVzZWxlY3RPbkNoYW5nZV09XCJ0cnVlXCI+XG4gICAgICBAaWYgKHNhdmVkRmlsdGVyQ29udHJvbGxlci5hY3RpdmVGaWx0ZXIkIHwgYXN5bmMpIHtcbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBY3RpdmVGaWx0ZXIoKVwiPlxuICAgICAgICAgIFVwZGF0ZSBmaWx0ZXJzXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gKGNsaWNrKT1cInNhdmVBcygpXCI+XG4gICAgICAgICAgU2F2ZSBhcyBuZXdcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxtYXQtb3B0aW9uIChjbGljayk9XCJjcmVhdGVTYXZlZEZpbHRlcigpXCI+XG4gICAgICAgICAgQ3JlYXRlIG5ld1xuICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICB9XG4gICAgICA8bWF0LW9wdGlvbiAoY2xpY2spPVwibWFuYWdlU2F2ZWRGaWx0ZXJzKClcIj5cbiAgICAgICAgVmlldyBhbGxcbiAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICA8L21hdC1zZWxlY3Q+XG4gIH1cbiAgQGlmIChoYXNTZWNvbmRhcnlWYWx1ZSQgfCBhc3luYykge1xuICAgIDxhXG4gICAgICAgIGNsYXNzPVwiY2xlYXJcIlxuICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIChjbGljayk9XCJjbGVhcigpXCI+XG4gICAgICBDbGVhciBmaWx0ZXJzXG4gICAgPC9hPlxuICB9XG59Il19
|
|
@@ -23,8 +23,13 @@ export class RangeComponent extends BaseItemComponent {
|
|
|
23
23
|
max: this.max,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
+
keyup(event) {
|
|
27
|
+
if (event.key === 'Enter' || event.code === 'Tab') {
|
|
28
|
+
this.close();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
26
31
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
27
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
32
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
28
33
|
}
|
|
29
34
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, decorators: [{
|
|
30
35
|
type: Component,
|
|
@@ -37,10 +42,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
37
42
|
FocusToItemDirective,
|
|
38
43
|
FsFormModule,
|
|
39
44
|
MatSuffix,
|
|
40
|
-
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
|
|
45
|
+
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
|
|
41
46
|
}], propDecorators: { autofocusName: [{
|
|
42
47
|
type: Input
|
|
43
48
|
}], floatLabel: [{
|
|
44
49
|
type: Input
|
|
45
50
|
}] } });
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ZpbHRlcnMtaXRlbS9yYW5nZS9yYW5nZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL3JhbmdlL3JhbmdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFbkYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7QUFvQnJFLE1BQU0sT0FBTyxjQUFlLFNBQVEsaUJBQTRCO0lBRTlDLGFBQWEsQ0FBUztJQUN0QixVQUFVLEdBQXNCLE1BQU0sQ0FBQztJQUVoRCxHQUFHLENBQVM7SUFDWixHQUFHLENBQVM7SUFFWixRQUFRO1FBQ2IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7UUFDaEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7SUFDbEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUc7WUFDaEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBb0I7UUFDL0IsSUFBRyxLQUFLLENBQUMsR0FBRyxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO3dHQXhCVSxjQUFjOzRGQUFkLGNBQWMsMEtDckMzQix5NUNBMkRNLHVMRGhDRixZQUFZLDRMQUNaLFFBQVEsc0RBQ1IsU0FBUyxxSEFDVCxRQUFRLGdVQUNSLFdBQVcsaXhCQUNYLG9CQUFvQixvR0FDcEIsWUFBWSwwZ0JBQ1osU0FBUzs7NEZBR0EsY0FBYztrQkFqQjFCLFNBQVM7K0JBQ0UsbUJBQW1CLG1CQUdaLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osUUFBUTt3QkFDUixTQUFTO3dCQUNULFFBQVE7d0JBQ1IsV0FBVzt3QkFDWCxvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osU0FBUztxQkFDVjs4QkFJZSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdEZvcm1GaWVsZCwgTWF0TGFiZWwsIE1hdFByZWZpeCwgTWF0U3VmZml4IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuaW1wb3J0IHsgRnNGb3JtTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZm9ybSc7XG5cblxuaW1wb3J0IHsgRm9jdXNUb0l0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2ZvY3VzLXRvLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFJhbmdlSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcy9yYW5nZS1pdGVtJztcbmltcG9ydCB7IEJhc2VJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1pdGVtL2Jhc2UtaXRlbS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpbHRlci1pdGVtLXJhbmdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhbmdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0UHJlZml4LFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIEZvY3VzVG9JdGVtRGlyZWN0aXZlLFxuICAgIEZzRm9ybU1vZHVsZSxcbiAgICBNYXRTdWZmaXgsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlQ29tcG9uZW50IGV4dGVuZHMgQmFzZUl0ZW1Db21wb25lbnQ8UmFuZ2VJdGVtPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBwdWJsaWMgYXV0b2ZvY3VzTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZmxvYXRMYWJlbDogJ2F1dG8nIHwgJ2Fsd2F5cycgPSAnYXV0byc7XG4gIFxuICBwdWJsaWMgbWluOiBudW1iZXI7XG4gIHB1YmxpYyBtYXg6IG51bWJlcjtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5taW4gPSB0aGlzLml0ZW0udmFsdWU/Lm1pbjtcbiAgICB0aGlzLm1heCA9IHRoaXMuaXRlbS52YWx1ZT8ubWF4O1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaXRlbS52YWx1ZSA9IHtcbiAgICAgIG1pbjogdGhpcy5taW4sXG4gICAgICBtYXg6IHRoaXMubWF4LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMga2V5dXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZihldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ1RhYicpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWZpZWxkXCI+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICAgY2xhc3M9XCJmaWx0ZXItcmFuZ2UtbWluXCJcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLXBhZGxlc3NcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3sgaXRlbS5sYWJlbFswXSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIEBpZiAoaXRlbS5wcmVmaXgpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdFRleHRQcmVmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByZWZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5wcmVmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgW2ZzRmlsdGVyRm9jdXNUcmlnZ2VyXT1cImF1dG9mb2N1c05hbWUgPT09ICdtaW4nIHx8ICFtaW5cIlxuICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICBbKG5nTW9kZWwpXT1cIm1pblwiXG4gICAgICAoa2V5dXApPVwia2V5dXAoJGV2ZW50KVwiXG4gICAgICAjZnJvbT5cbiAgICBAaWYgKGl0ZW0uc3VmZml4KSB7XG4gICAgICA8c3BhblxuICAgICAgICBtYXRTdWZmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXN1ZmZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5zdWZmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDxtYXQtZm9ybS1maWVsZFxuICAgICAgY2xhc3M9XCJmaWx0ZXItcmFuZ2UtbWF4XCJcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgICAgY2xhc3M9XCJmb3JtLWZpZWxkLXBhZGxlc3NcIj5cbiAgICA8bWF0LWxhYmVsPlxuICAgICAge3sgaXRlbS5sYWJlbFsxXSB9fVxuICAgIDwvbWF0LWxhYmVsPlxuICAgIEBpZiAoaXRlbS5wcmVmaXgpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdFRleHRQcmVmaXhcbiAgICAgICAgY2xhc3M9XCJ0ZXh0LXByZWZpeFwiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5wcmVmaXhcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICB9XG4gICAgPGlucHV0XG4gICAgICBtYXRJbnB1dFxuICAgICAgW2ZzRmlsdGVyRm9jdXNUcmlnZ2VyXT1cImF1dG9mb2N1c05hbWUgPT09ICdtYXgnIHx8ICEhbWluXCJcbiAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgWyhuZ01vZGVsKV09XCJtYXhcIlxuICAgICAgKGtleXVwKT1cImtleXVwKCRldmVudClcIlxuICAgICAgI3RvPlxuICAgIEBpZiAoaXRlbS5zdWZmaXgpIHtcbiAgICAgIDxzcGFuXG4gICAgICAgIG1hdFN1ZmZpeFxuICAgICAgICBjbGFzcz1cInRleHQtc3VmZml4XCJcbiAgICAgICAgW2lubmVySHRtbF09XCJpdGVtLnN1ZmZpeFwiPlxuICAgICAgPC9zcGFuPlxuICAgIH1cbiAgPC9tYXQtZm9ybS1maWVsZD5cbjwvZGl2PiJdfQ==
|
|
@@ -17,8 +17,13 @@ export class TextComponent extends BaseItemComponent {
|
|
|
17
17
|
ngOnDestroy() {
|
|
18
18
|
this.item.value = this.value;
|
|
19
19
|
}
|
|
20
|
+
keyup(event) {
|
|
21
|
+
if (event.key === 'Enter' || event.code === 'Tab') {
|
|
22
|
+
this.close();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
20
25
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
21
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextComponent, isStandalone: true, selector: "filter-item-text", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
26
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextComponent, isStandalone: true, selector: "filter-item-text", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n (keyup)=\"keyup($event)\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
22
27
|
}
|
|
23
28
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextComponent, decorators: [{
|
|
24
29
|
type: Component,
|
|
@@ -32,10 +37,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
32
37
|
FocusToItemDirective,
|
|
33
38
|
MatSuffix,
|
|
34
39
|
FsCommonModule,
|
|
35
|
-
], template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>" }]
|
|
40
|
+
], template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n (keyup)=\"keyup($event)\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>" }]
|
|
36
41
|
}], propDecorators: { autofocus: [{
|
|
37
42
|
type: Input
|
|
38
43
|
}], floatLabel: [{
|
|
39
44
|
type: Input
|
|
40
45
|
}] } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL3RleHQvdGV4dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZmlsdGVycy1pdGVtL3RleHQvdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM1RixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXBELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFxQnJFLE1BQU0sT0FBTyxhQUFjLFNBQVEsaUJBQTJCO0lBRTVDLFNBQVMsR0FBWSxLQUFLLENBQUM7SUFDM0IsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFFaEQsS0FBSyxDQUFTO0lBRWQsUUFBUTtRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQW9CO1FBQy9CLElBQUcsS0FBSyxDQUFDLEdBQUcsS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzt3R0FuQlUsYUFBYTs0RkFBYixhQUFhLGlLQ3RDMUIsNGhCQXdCaUIsMERER2IsWUFBWSw0TEFDWixRQUFRLHNEQUNSLFNBQVMscUhBQ1QsUUFBUSxnVUFDUixXQUFXLDhtQkFDWCxtQkFBbUIsK0JBQ25CLG9CQUFvQixxR0FDcEIsU0FBUyxvSEFDVCxjQUFjOzs0RkFHTCxhQUFhO2tCQWxCekIsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsUUFBUTt3QkFDUixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQixTQUFTO3dCQUNULGNBQWM7cUJBQ2Y7OEJBSWUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsLCBNYXRQcmVmaXgsIE1hdFN1ZmZpeCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5cblxuaW1wb3J0IHsgRnNDb21tb25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9jb21tb24nO1xuXG5pbXBvcnQgeyBGb2N1c1RvSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvZm9jdXMtdG8taXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGV4dEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaXRlbXMvdGV4dC1pdGVtJztcbmltcG9ydCB7IEJhc2VJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1pdGVtL2Jhc2UtaXRlbS5jb21wb25lbnQnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2ZpbHRlci1pdGVtLXRleHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGV4dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RleHQuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXRGb3JtRmllbGQsXG4gICAgTWF0TGFiZWwsXG4gICAgTWF0UHJlZml4LFxuICAgIE1hdElucHV0LFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9jdXNUb0l0ZW1EaXJlY3RpdmUsXG4gICAgTWF0U3VmZml4LFxuICAgIEZzQ29tbW9uTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBUZXh0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUl0ZW1Db21wb25lbnQ8VGV4dEl0ZW0+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGZsb2F0TGFiZWw6ICdhdXRvJyB8ICdhbHdheXMnID0gJ2F1dG8nO1xuICBcbiAgcHVibGljIHZhbHVlOiBzdHJpbmc7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLml0ZW0udmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBrZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnVGFiJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8bWF0LWZvcm0tZmllbGRcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBjbGFzcz1cImZvcm0tZmllbGQtcGFkbGVzc1wiPlxuICA8bWF0LWxhYmVsPlxuICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgPC9tYXQtbGFiZWw+XG4gIEBpZiAoaXRlbS5wcmVmaXgpIHtcbiAgICA8c3BhblxuICAgICAgbWF0VGV4dFByZWZpeFxuICAgICAgW2lubmVySHRtbF09XCJpdGVtLnByZWZpeFwiPlxuICAgIDwvc3Bhbj5cbiAgfVxuICA8aW5wdXRcbiAgICBtYXRJbnB1dFxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxuICAgIChrZXl1cCk9XCJrZXl1cCgkZXZlbnQpXCJcbiAgICBbcGxhY2Vob2xkZXJdPVwiaXRlbS5wbGFjZWhvbGRlclwiXG4gICAgW2ZzRmlsdGVyRm9jdXNUcmlnZ2VyXT1cImF1dG9mb2N1c1wiPlxuICBAaWYgKGl0ZW0uc3VmZml4KSB7XG4gICAgPHNwYW5cbiAgICAgIG1hdFRleHRTdWZmaXhcbiAgICAgIFtpbm5lckh0bWxdPVwiaXRlbS5zdWZmaXhcIj5cbiAgICA8L3NwYW4+XG4gIH1cbjwvbWF0LWZvcm0tZmllbGQ+Il19
|
|
@@ -2879,8 +2879,13 @@ class RangeComponent extends BaseItemComponent {
|
|
|
2879
2879
|
max: this.max,
|
|
2880
2880
|
};
|
|
2881
2881
|
}
|
|
2882
|
+
keyup(event) {
|
|
2883
|
+
if (event.key === 'Enter' || event.code === 'Tab') {
|
|
2884
|
+
this.close();
|
|
2885
|
+
}
|
|
2886
|
+
}
|
|
2882
2887
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2883
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2888
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: RangeComponent, isStandalone: true, selector: "filter-item-range", inputs: { autofocusName: "autofocusName", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i3.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2884
2889
|
}
|
|
2885
2890
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RangeComponent, decorators: [{
|
|
2886
2891
|
type: Component,
|
|
@@ -2893,7 +2898,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
2893
2898
|
FocusToItemDirective,
|
|
2894
2899
|
FsFormModule,
|
|
2895
2900
|
MatSuffix,
|
|
2896
|
-
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
|
|
2901
|
+
], template: "<div class=\"form-field\">\n <mat-form-field\n class=\"filter-range-min\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[0] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'min' || !min\"\n type=\"number\"\n [(ngModel)]=\"min\"\n (keyup)=\"keyup($event)\"\n #from>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n <mat-form-field\n class=\"filter-range-max\"\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label[1] }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n class=\"text-prefix\"\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [fsFilterFocusTrigger]=\"autofocusName === 'max' || !!min\"\n type=\"number\"\n [(ngModel)]=\"max\"\n (keyup)=\"keyup($event)\"\n #to>\n @if (item.suffix) {\n <span\n matSuffix\n class=\"text-suffix\"\n [innerHtml]=\"item.suffix\">\n </span>\n }\n </mat-form-field>\n</div>", styles: [".form-field{display:flex}.form-field mat-form-field{min-width:0}.form-field mat-form-field+mat-form-field{margin-left:10px}\n"] }]
|
|
2897
2902
|
}], propDecorators: { autofocusName: [{
|
|
2898
2903
|
type: Input
|
|
2899
2904
|
}], floatLabel: [{
|
|
@@ -2988,8 +2993,13 @@ class TextComponent extends BaseItemComponent {
|
|
|
2988
2993
|
ngOnDestroy() {
|
|
2989
2994
|
this.item.value = this.value;
|
|
2990
2995
|
}
|
|
2996
|
+
keyup(event) {
|
|
2997
|
+
if (event.key === 'Enter' || event.code === 'Tab') {
|
|
2998
|
+
this.close();
|
|
2999
|
+
}
|
|
3000
|
+
}
|
|
2991
3001
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2992
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextComponent, isStandalone: true, selector: "filter-item-text", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3002
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: TextComponent, isStandalone: true, selector: "filter-item-text", inputs: { autofocus: "autofocus", floatLabel: "floatLabel" }, usesInheritance: true, ngImport: i0, template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n (keyup)=\"keyup($event)\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>", styles: [""], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: FocusToItemDirective, selector: "[fsFilterFocusTrigger]", inputs: ["fsFilterFocusTrigger"] }, { kind: "directive", type: MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: FsCommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2993
3003
|
}
|
|
2994
3004
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TextComponent, decorators: [{
|
|
2995
3005
|
type: Component,
|
|
@@ -3003,7 +3013,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3003
3013
|
FocusToItemDirective,
|
|
3004
3014
|
MatSuffix,
|
|
3005
3015
|
FsCommonModule,
|
|
3006
|
-
], template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>" }]
|
|
3016
|
+
], template: "<mat-form-field\n [floatLabel]=\"floatLabel\"\n class=\"form-field-padless\">\n <mat-label>\n {{ item.label }}\n </mat-label>\n @if (item.prefix) {\n <span\n matTextPrefix\n [innerHtml]=\"item.prefix\">\n </span>\n }\n <input\n matInput\n [(ngModel)]=\"value\"\n (keyup)=\"keyup($event)\"\n [placeholder]=\"item.placeholder\"\n [fsFilterFocusTrigger]=\"autofocus\">\n @if (item.suffix) {\n <span\n matTextSuffix\n [innerHtml]=\"item.suffix\">\n </span>\n }\n</mat-form-field>" }]
|
|
3007
3017
|
}], propDecorators: { autofocus: [{
|
|
3008
3018
|
type: Input
|
|
3009
3019
|
}], floatLabel: [{
|
|
@@ -3398,7 +3408,7 @@ class FsFilterChipsComponent {
|
|
|
3398
3408
|
.subscribe();
|
|
3399
3409
|
}
|
|
3400
3410
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3401
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n
|
|
3411
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterChipsComponent, isStandalone: true, selector: "fs-filter-chips", viewQueries: [{ propertyName: "chips", predicate: FsChipComponent, descendants: true }], ngImport: i0, template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: FsChipModule }, { kind: "component", type: i1$5.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "maxWidth", "width", "backgroundColor", "borderColor", "color", "shape", "outlined", "outlineDash", "icon", "image", "selected", "padding", "contrastColor", "size"], outputs: ["selectedToggled", "removed", "click"] }, { kind: "directive", type: i1$5.FsChipSuffixDirective, selector: "[fsChipSuffix]", inputs: ["icon", "link", "linkTarget", "color", "data", "tooltip"], outputs: ["click"] }, { kind: "component", type: MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption$1, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: FsSelectButtonModule }, { kind: "directive", type: i3$1.FsSelectButtonDirective, selector: "[fsSelectButton]", inputs: ["color", "minWidth", "maxWidth", "width", "buttonType", "deselectOnChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3$2.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit"] }, { kind: "ngmodule", type: FormsModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3402
3412
|
}
|
|
3403
3413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterChipsComponent, decorators: [{
|
|
3404
3414
|
type: Component,
|
|
@@ -3411,7 +3421,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
3411
3421
|
MatButtonModule,
|
|
3412
3422
|
FsButtonDirective,
|
|
3413
3423
|
FormsModule,
|
|
3414
|
-
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n <mat-select\n
|
|
3424
|
+
], template: "@if (items.length !== 0) {\n @for (item of secondaryItems; track item.name) {\n @if ((item.visible$ | async) && (item.hasValue$ | async)) {\n @for (chip of item.chips$ | async; track chip.label) {\n <fs-chip\n class=\"filter-chip selected\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n [attr.data-filter-item]=\"item.name\"\n [outlined]=\"true\"\n (click)=\"openChip(item, chip.name)\">\n @if (chip.value) {\n {{ chip.label }}:\n <a>\n {{ chip.value }}\n </a>\n } @else {\n {{ chip.label }}\n }\n <ng-template\n fsChipSuffix\n [icon]=\"'cancel_circle_outline'\"\n (click)=\"removeChip(item, chip)\">\n </ng-template>\n </fs-chip>\n }\n }\n @if ((item.visible$ | async) && (item.notValue$ | async) && (item.secondaryVisible$ | async)) {\n <fs-chip\n class=\"filter-chip\"\n [attr.data-filter-item]=\"item.name\"\n [size]=\"'medium'\"\n [borderColor]=\"'#ddd'\"\n (click)=\"openChip(item)\"\n [outlined]=\"true\">\n {{ item.mergedLabel }}\n <ng-template\n fsChipSuffix\n [icon]=\"'add_circle_outline'\"\n (click)=\"openChip(item)\">\n </ng-template>\n </fs-chip>\n }\n }\n <mat-select\n class=\"more-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [disableOptionCentering]=\"true\"\n [panelClass]=\"'fs-filter-no-initial-focus'\"\n [placeholder]=\"'More filters'\"\n (selectionChange)=\"addFilter($event)\"\n [deselectOnChange]=\"true\">\n @for (item of disabledItems; track item.name) {\n <mat-option [value]=\"item\">\n {{ item.mergedLabel }}\n </mat-option>\n }\n </mat-select>\n @if (savedFilterController.enabled) {\n <mat-select\n class=\"saved-filters-select mat-mdc-button-base\"\n [buttonType]=\"'basic'\"\n fsSelectButton\n [placeholder]=\"(savedFilterController.activeFilter$ | async) ? savedFilterController.singularLabel + ': ' + (savedFilterController.activeFilter$ | async).name : savedFilterController.pluralLabel\"\n [deselectOnChange]=\"true\">\n @if (savedFilterController.activeFilter$ | async) {\n <mat-option (click)=\"saveActiveFilter()\">\n Update filters\n </mat-option>\n <mat-option (click)=\"saveAs()\">\n Save as new\n </mat-option>\n } @else {\n <mat-option (click)=\"createSavedFilter()\">\n Create new\n </mat-option>\n }\n <mat-option (click)=\"manageSavedFilters()\">\n View all\n </mat-option>\n </mat-select>\n }\n @if (hasSecondaryValue$ | async) {\n <a\n class=\"clear\"\n mat-button\n color=\"primary\"\n (click)=\"clear()\">\n Clear filters\n </a>\n }\n}", styles: [":host{display:flex;flex-wrap:wrap;align-items:center;gap:5px;max-width:100%;margin-top:4px;z-index:999}.saved-filters-select,.more-filters-select,.clear{display:flex;height:30px;font-size:90%}.saved-filters-select.clear,.more-filters-select.clear,.clear.clear{padding:0 10px}.saved-filters-select ::ng-deep .mat-mdc-select-value,.more-filters-select ::ng-deep .mat-mdc-select-value,.clear ::ng-deep .mat-mdc-select-value{padding:0 5px}.saved-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.more-filters-select ::ng-deep .mat-mdc-select-arrow-wrapper,.clear ::ng-deep .mat-mdc-select-arrow-wrapper{padding-right:10px}::ng-deep .mat-mdc-select-panel.fs-filter-no-initial-focus .mat-mdc-option-active:not(:hover){background:transparent!important}\n"] }]
|
|
3415
3425
|
}], propDecorators: { chips: [{
|
|
3416
3426
|
type: ViewChildren,
|
|
3417
3427
|
args: [FsChipComponent]
|