@firestitch/filter 18.2.109 → 18.2.114

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.
@@ -1,4 +1,5 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
2
3
  import { IFilterConfigItem } from '../../../interfaces';
3
4
  import { IFilterSavedFilter } from '../../../interfaces/saved-filters.interface';
4
5
  import { BaseItem } from '../../../models/items';
@@ -12,9 +13,10 @@ export declare class FsFilterSavedFilterManageComponent implements OnInit {
12
13
  ngOnInit(): void;
13
14
  get items(): BaseItem<IFilterConfigItem>[];
14
15
  get pluralLabel(): string;
15
- get sortable(): boolean;
16
+ get orderable(): boolean;
16
17
  selectFilter(savedFilter: IFilterSavedFilter): void;
17
18
  remove(savedFilter: IFilterSavedFilter): void;
19
+ drop(event: CdkDragDrop<IFilterSavedFilter[]>): void;
18
20
  order(savedFilters: IFilterSavedFilter[]): void;
19
21
  static ɵfac: i0.ɵɵFactoryDeclaration<FsFilterSavedFilterManageComponent, never>;
20
22
  static ɵcmp: i0.ɵɵComponentDeclaration<FsFilterSavedFilterManageComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -3,10 +3,21 @@ import { IFilterConfigAutocompleteItem } from '../../interfaces/items/autocomple
3
3
  import { BaseAutocompleteItem } from './base-autocomplete-item';
4
4
  export declare class AutocompleteItem extends BaseAutocompleteItem<IFilterConfigAutocompleteItem> {
5
5
  static create(config: IFilterConfigAutocompleteItem, filter: FilterComponent): AutocompleteItem;
6
+ /**
7
+ * Returns the unwrapped primitive value (e.g. 123) from the
8
+ * underlying {name, value} object stored via BaseItem.
9
+ */
6
10
  get value(): any;
7
- get query(): {
8
- [x: string]: string;
9
- };
11
+ /**
12
+ * API-ready query: returns the raw primitive value keyed by item name.
13
+ */
14
+ get query(): Record<string, any>;
15
+ /**
16
+ * URL-ready query param: returns `value:encodedName` format for
17
+ * round-tripping through browser query strings.
18
+ * Uses super.value to access the full {name, value} object.
19
+ */
20
+ get queryParam(): Record<string, unknown>;
10
21
  get chips(): {
11
22
  name?: string;
12
23
  value: string;
@@ -1,6 +1,8 @@
1
1
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, } from '@angular/core';
2
+ import { CdkDrag, CdkDragHandle, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';
2
3
  import { MatButton } from '@angular/material/button';
3
4
  import { MatDialogModule, MatDialogRef } from '@angular/material/dialog';
5
+ import { MatIcon } from '@angular/material/icon';
4
6
  import { FsMenuModule } from '@firestitch/menu';
5
7
  import { FilterController } from '../../../services/filter-controller.service';
6
8
  import { SavedFilterController } from '../../../services/saved-filter-controller.service';
@@ -23,7 +25,7 @@ export class FsFilterSavedFilterManageComponent {
23
25
  get pluralLabel() {
24
26
  return this._savedFilterController.pluralLabel;
25
27
  }
26
- get sortable() {
28
+ get orderable() {
27
29
  return this._savedFilterController.orderable;
28
30
  }
29
31
  selectFilter(savedFilter) {
@@ -37,20 +39,28 @@ export class FsFilterSavedFilterManageComponent {
37
39
  this._cdRef.markForCheck();
38
40
  });
39
41
  }
42
+ drop(event) {
43
+ moveItemInArray(this.savedFilters, event.previousIndex, event.currentIndex);
44
+ this.order(this.savedFilters);
45
+ }
40
46
  order(savedFilters) {
41
47
  this._savedFilterController.order(savedFilters)
42
48
  .subscribe();
43
49
  }
44
50
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterSavedFilterManageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
45
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterSavedFilterManageComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}:host ::ng-deep .mat-mdc-dialog-content{width:800px;max-width:100%}.actions-column{width:1%}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: FsFilterSavedFilterChipsComponent, selector: "fs-saved-filter-chips", inputs: ["savedFilter"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterSavedFilterManageComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n @if (savedFilters?.length) {\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n @if (orderable) {\n <th class=\"drag-col\"></th>\n }\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\">\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr cdkDrag [cdkDragDisabled]=\"!orderable\" cdkDragLockAxis=\"y\" [cdkDragPreviewClass]=\"'saved-filter-drag-preview'\">\n @if (orderable) {\n <td class=\"drag-col\" cdkDragHandle>\n <mat-icon>drag_handle</mat-icon>\n </td>\n }\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .saved-filter-drag-preview{display:table;background-color:#00000008;border-radius:5px}::ng-deep .saved-filter-drag-preview td{border:none;padding:8px;vertical-align:middle}::ng-deep .saved-filter-drag-preview fs-menu{display:none}:host ::ng-deep .mat-mdc-dialog-content{min-width:400px}:host ::ng-deep .cdk-drag-placeholder{opacity:.5;background-color:#0000000d;border-radius:5px}:host ::ng-deep .cdk-drag-placeholder td{border:none}:host ::ng-deep .cdk-drop-list-dragging .cdk-drag{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .cdk-drag-animating{transition:transform .3s cubic-bezier(0,0,.2,1)}.actions-column{width:1%}td.drag-col,th.drag-col{width:1%;white-space:nowrap;text-align:center;cursor:grab}td.drag-col mat-icon,th.drag-col mat-icon{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: FsFilterSavedFilterChipsComponent, selector: "fs-saved-filter-chips", inputs: ["savedFilter"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
52
  }
47
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterSavedFilterManageComponent, decorators: [{
48
54
  type: Component,
49
55
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
50
56
  MatDialogModule,
51
57
  MatButton,
58
+ MatIcon,
59
+ CdkDropList,
60
+ CdkDrag,
61
+ CdkDragHandle,
52
62
  FsFilterSavedFilterChipsComponent,
53
63
  FsMenuModule,
54
- ], template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}:host ::ng-deep .mat-mdc-dialog-content{width:800px;max-width:100%}.actions-column{width:1%}\n"] }]
64
+ ], template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n @if (savedFilters?.length) {\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n @if (orderable) {\n <th class=\"drag-col\"></th>\n }\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\">\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr cdkDrag [cdkDragDisabled]=\"!orderable\" cdkDragLockAxis=\"y\" [cdkDragPreviewClass]=\"'saved-filter-drag-preview'\">\n @if (orderable) {\n <td class=\"drag-col\" cdkDragHandle>\n <mat-icon>drag_handle</mat-icon>\n </td>\n }\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .saved-filter-drag-preview{display:table;background-color:#00000008;border-radius:5px}::ng-deep .saved-filter-drag-preview td{border:none;padding:8px;vertical-align:middle}::ng-deep .saved-filter-drag-preview fs-menu{display:none}:host ::ng-deep .mat-mdc-dialog-content{min-width:400px}:host ::ng-deep .cdk-drag-placeholder{opacity:.5;background-color:#0000000d;border-radius:5px}:host ::ng-deep .cdk-drag-placeholder td{border:none}:host ::ng-deep .cdk-drop-list-dragging .cdk-drag{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .cdk-drag-animating{transition:transform .3s cubic-bezier(0,0,.2,1)}.actions-column{width:1%}td.drag-col,th.drag-col{width:1%;white-space:nowrap;text-align:center;cursor:grab}td.drag-col mat-icon,th.drag-col mat-icon{display:flex}\n"] }]
55
65
  }] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUUxRixPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQWVwRixNQUFNLE9BQU8sa0NBQWtDO0lBRXRDLFlBQVksQ0FBdUI7SUFFbEMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25DLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbkMsUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFTSxZQUFZLENBQUMsV0FBK0I7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBK0I7UUFDM0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDNUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQztZQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFrQztRQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQzthQUM1QyxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDO3dHQXpDVSxrQ0FBa0M7NEZBQWxDLGtDQUFrQyx3RUNsQy9DLGduQ0FpRE0sZzlERHJCRixlQUFlLGdvQkFDZixTQUFTLGlMQUNULGlDQUFpQywwRkFDakMsWUFBWTs7NEZBR0gsa0NBQWtDO2tCQVo5QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxpQ0FBaUM7d0JBQ2pDLFlBQVk7cUJBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgaW5qZWN0LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNYXRCdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc01lbnVNb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9tZW51JztcblxuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ0l0ZW0gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IElGaWx0ZXJTYXZlZEZpbHRlciB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMvc2F2ZWQtZmlsdGVycy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFzZUl0ZW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvaXRlbXMnO1xuaW1wb3J0IHsgRmlsdGVyQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZpbHRlci1jb250cm9sbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2F2ZWRGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2F2ZWQtZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5cbmltcG9ydCB7IEZzRmlsdGVyU2F2ZWRGaWx0ZXJDaGlwc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9zYXZlZC1maWx0ZXItY2hpcHMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NhdmVkLWZpbHRlci1tYW5hZ2UuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBNYXREaWFsb2dNb2R1bGUsXG4gICAgTWF0QnV0dG9uLFxuICAgIEZzRmlsdGVyU2F2ZWRGaWx0ZXJDaGlwc0NvbXBvbmVudCxcbiAgICBGc01lbnVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZzRmlsdGVyU2F2ZWRGaWx0ZXJNYW5hZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHB1YmxpYyBzYXZlZEZpbHRlcnM6IElGaWx0ZXJTYXZlZEZpbHRlcltdO1xuXG4gIHByaXZhdGUgX3NhdmVkRmlsdGVyQ29udHJvbGxlciA9IGluamVjdChTYXZlZEZpbHRlckNvbnRyb2xsZXIpO1xuICBwcml2YXRlIF9jZFJlZiA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHByaXZhdGUgX2ZpbHRlckNvbnRyb2xsZXIgPSBpbmplY3QoRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2RpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWYpO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNhdmVkRmlsdGVycyA9IHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zYXZlZEZpbHRlcnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGl0ZW1zKCk6IEJhc2VJdGVtPElGaWx0ZXJDb25maWdJdGVtPltdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVyQ29udHJvbGxlci5pdGVtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGx1cmFsTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnBsdXJhbExhYmVsO1xuICB9XG5cbiAgcHVibGljIGdldCBzb3J0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLm9yZGVyYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGaWx0ZXIoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcikge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKSB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmRlbGV0ZShzYXZlZEZpbHRlcilcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zYXZlZEZpbHRlcnM7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb3JkZXIoc2F2ZWRGaWx0ZXJzOiBJRmlsdGVyU2F2ZWRGaWx0ZXJbXSkge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5vcmRlcihzYXZlZEZpbHRlcnMpXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxufVxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+XG4gIHt7IHBsdXJhbExhYmVsIH19XG48L2gxPlxuPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDx0YWJsZSBjbGFzcz1cImZzLWxpc3QtdGFibGVcIj5cbiAgICA8dGhlYWQ+XG4gICAgICA8dHI+XG4gICAgICAgIDx0aD5cbiAgICAgICAgICBOYW1lXG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aD5cbiAgICAgICAgICBGaWx0ZXJzXG4gICAgICAgIDwvdGg+XG4gICAgICAgIDx0aCBjbGFzcz1cImFjdGlvbnMtY29sdW1uXCI+PC90aD5cbiAgICAgIDwvdHI+XG4gICAgPC90aGVhZD5cbiAgICA8dGJvZHk+XG4gICAgICBAZm9yIChzYXZlZEZpbHRlciBvZiBzYXZlZEZpbHRlcnM7IHRyYWNrIHNhdmVkRmlsdGVyLmlkKSB7XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0RmlsdGVyKHNhdmVkRmlsdGVyKVwiPlxuICAgICAgICAgICAgICB7eyBzYXZlZEZpbHRlci5uYW1lIH19XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICA8ZnMtc2F2ZWQtZmlsdGVyLWNoaXBzIFtzYXZlZEZpbHRlcl09XCJzYXZlZEZpbHRlclwiPjwvZnMtc2F2ZWQtZmlsdGVyLWNoaXBzPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkPlxuICAgICAgICAgICAgPGZzLW1lbnU+XG4gICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgZnMtbWVudS1pdGVtXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKHNhdmVkRmlsdGVyKVwiPlxuICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9mcy1tZW51PlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICB9XG4gICAgPC90Ym9keT5cbiAgPC90YWJsZT5cbjwvZGl2PlxuPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDxidXR0b25cbiAgICAgIG1hdC1idXR0b25cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cbiAgICBEb25lXG4gIDwvYnV0dG9uPlxuPC9kaXY+Il19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvc2F2ZWQtZmlsdGVyL3NhdmVkLWZpbHRlci1tYW5hZ2Uvc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxPQUFPLEVBQWUsYUFBYSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBS2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBbUJwRixNQUFNLE9BQU8sa0NBQWtDO0lBRXRDLFlBQVksQ0FBdUI7SUFFbEMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25DLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLFVBQVUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbkMsUUFBUTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQztJQUMvRCxDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDO0lBQy9DLENBQUM7SUFFTSxZQUFZLENBQUMsV0FBK0I7UUFDakQsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxNQUFNLENBQUMsV0FBK0I7UUFDM0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDNUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQztZQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLElBQUksQ0FBQyxLQUF3QztRQUNsRCxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQWtDO1FBQzdDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2FBQzVDLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7d0dBOUNVLGtDQUFrQzs0RkFBbEMsa0NBQWtDLHdFQ3hDL0Msd3BEQTZETSx3b0ZEL0JGLGVBQWUsZ29CQUNmLFNBQVMsaUxBQ1QsT0FBTywySUFDUCxXQUFXLDhmQUNYLE9BQU8sd2NBQ1AsYUFBYSwrRkFDYixpQ0FBaUMsMEZBQ2pDLFlBQVk7OzRGQUdILGtDQUFrQztrQkFoQjlDLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsZUFBZTt3QkFDZixTQUFTO3dCQUNULE9BQU87d0JBQ1AsV0FBVzt3QkFDWCxPQUFPO3dCQUNQLGFBQWE7d0JBQ2IsaUNBQWlDO3dCQUNqQyxZQUFZO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2RrRHJhZywgQ2RrRHJhZ0Ryb3AsIENka0RyYWdIYW5kbGUsIENka0Ryb3BMaXN0LCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5cbmltcG9ydCB7IEZzTWVudU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lbnUnO1xuXG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgSUZpbHRlclNhdmVkRmlsdGVyIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcy9zYXZlZC1maWx0ZXJzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCYXNlSXRlbSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9pdGVtcyc7XG5pbXBvcnQgeyBGaWx0ZXJDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZmlsdGVyLWNvbnRyb2xsZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTYXZlZEZpbHRlckNvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zYXZlZC1maWx0ZXItY29udHJvbGxlci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgRnNGaWx0ZXJTYXZlZEZpbHRlckNoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3NhdmVkLWZpbHRlci1jaGlwcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9zYXZlZC1maWx0ZXItbWFuYWdlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2F2ZWQtZmlsdGVyLW1hbmFnZS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXRCdXR0b24sXG4gICAgTWF0SWNvbixcbiAgICBDZGtEcm9wTGlzdCxcbiAgICBDZGtEcmFnLFxuICAgIENka0RyYWdIYW5kbGUsXG4gICAgRnNGaWx0ZXJTYXZlZEZpbHRlckNoaXBzQ29tcG9uZW50LFxuICAgIEZzTWVudU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRnNGaWx0ZXJTYXZlZEZpbHRlck1hbmFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW107XG5cbiAgcHJpdmF0ZSBfc2F2ZWRGaWx0ZXJDb250cm9sbGVyID0gaW5qZWN0KFNhdmVkRmlsdGVyQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfZmlsdGVyQ29udHJvbGxlciA9IGluamVjdChGaWx0ZXJDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZik7XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2F2ZWRGaWx0ZXJzID0gdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLnNhdmVkRmlsdGVycztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXRlbXMoKTogQmFzZUl0ZW08SUZpbHRlckNvbmZpZ0l0ZW0+W10ge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJDb250cm9sbGVyLml0ZW1zO1xuICB9XG5cbiAgcHVibGljIGdldCBwbHVyYWxMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIucGx1cmFsTGFiZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9yZGVyYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLm9yZGVyYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGaWx0ZXIoc2F2ZWRGaWx0ZXI6IElGaWx0ZXJTYXZlZEZpbHRlcikge1xuICAgIHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zZXRBY3RpdmVGaWx0ZXIoc2F2ZWRGaWx0ZXIpO1xuICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSgpO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZShzYXZlZEZpbHRlcjogSUZpbHRlclNhdmVkRmlsdGVyKSB7XG4gICAgdGhpcy5fc2F2ZWRGaWx0ZXJDb250cm9sbGVyLmRlbGV0ZShzYXZlZEZpbHRlcilcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLnNhdmVkRmlsdGVycyA9IHRoaXMuX3NhdmVkRmlsdGVyQ29udHJvbGxlci5zYXZlZEZpbHRlcnM7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8SUZpbHRlclNhdmVkRmlsdGVyW10+KSB7XG4gICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuc2F2ZWRGaWx0ZXJzLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIHRoaXMub3JkZXIodGhpcy5zYXZlZEZpbHRlcnMpO1xuICB9XG5cbiAgcHVibGljIG9yZGVyKHNhdmVkRmlsdGVyczogSUZpbHRlclNhdmVkRmlsdGVyW10pIHtcbiAgICB0aGlzLl9zYXZlZEZpbHRlckNvbnRyb2xsZXIub3JkZXIoc2F2ZWRGaWx0ZXJzKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbn1cbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPlxuICB7eyBwbHVyYWxMYWJlbCB9fVxuPC9oMT5cbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50PlxuICBAaWYgKHNhdmVkRmlsdGVycz8ubGVuZ3RoKSB7XG4gICAgPHRhYmxlIGNsYXNzPVwiZnMtbGlzdC10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgQGlmIChvcmRlcmFibGUpIHtcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImRyYWctY29sXCI+PC90aD5cbiAgICAgICAgICB9XG4gICAgICAgICAgPHRoPlxuICAgICAgICAgICAgTmFtZVxuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoPlxuICAgICAgICAgICAgRmlsdGVyc1xuICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPHRoIGNsYXNzPVwiYWN0aW9ucy1jb2x1bW5cIj48L3RoPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keVxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgICAgQGZvciAoc2F2ZWRGaWx0ZXIgb2Ygc2F2ZWRGaWx0ZXJzOyB0cmFjayBzYXZlZEZpbHRlci5pZCkge1xuICAgICAgICAgIDx0ciBjZGtEcmFnIFtjZGtEcmFnRGlzYWJsZWRdPVwiIW9yZGVyYWJsZVwiIGNka0RyYWdMb2NrQXhpcz1cInlcIiBbY2RrRHJhZ1ByZXZpZXdDbGFzc109XCInc2F2ZWQtZmlsdGVyLWRyYWctcHJldmlldydcIj5cbiAgICAgICAgICAgIEBpZiAob3JkZXJhYmxlKSB7XG4gICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImRyYWctY29sXCIgY2RrRHJhZ0hhbmRsZT5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZHJhZ19oYW5kbGU8L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICA8YSAoY2xpY2spPVwic2VsZWN0RmlsdGVyKHNhdmVkRmlsdGVyKVwiPlxuICAgICAgICAgICAgICAgIHt7IHNhdmVkRmlsdGVyLm5hbWUgfX1cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgPGZzLXNhdmVkLWZpbHRlci1jaGlwcyBbc2F2ZWRGaWx0ZXJdPVwic2F2ZWRGaWx0ZXJcIj48L2ZzLXNhdmVkLWZpbHRlci1jaGlwcz5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgIDxmcy1tZW51PlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICBmcy1tZW51LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShzYXZlZEZpbHRlcilcIj5cbiAgICAgICAgICAgICAgICAgIERlbGV0ZVxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvZnMtbWVudT5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgfVxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICB9XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8YnV0dG9uXG4gICAgICBtYXQtYnV0dG9uXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJudWxsXCI+XG4gICAgRG9uZVxuICA8L2J1dHRvbj5cbjwvZGl2PiJdfQ==
@@ -6,8 +6,8 @@
6
6
  * resolve to a bare primitive whose `.name` is undefined.
7
7
  */
8
8
  export function encodeQueryParam(value) {
9
- return (value ?? '')
9
+ return String(value ?? '')
10
10
  .replace(/,/g, '\\,')
11
11
  .replace(/:/g, '\\:');
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLXF1ZXJ5LXBhcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2hlbHBlcnMvZW5jb2RlLXF1ZXJ5LXBhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWdDO0lBQy9ELE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1NBQ2pCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1NBQ3BCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRXNjYXBlcyBjb21tYXMgYW5kIGNvbG9ucyBpbiBhIHF1ZXJ5LXBhcmFtIHZhbHVlIHNvIHRoZXkgYXJlIG5vdFxuICogbWlzaW50ZXJwcmV0ZWQgYXMgZGVsaW1pdGVycyBkdXJpbmcgZGVzZXJpYWxpemF0aW9uLlxuICpcbiAqIEFjY2VwdHMgbnVsbGlzaCBpbnB1dCBkZWZlbnNpdmVseSDigJQgQXV0b2NvbXBsZXRlSXRlbS52YWx1ZSBjYW5cbiAqIHJlc29sdmUgdG8gYSBiYXJlIHByaW1pdGl2ZSB3aG9zZSBgLm5hbWVgIGlzIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVF1ZXJ5UGFyYW0odmFsdWU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gKHZhbHVlID8/ICcnKVxuICAgIC5yZXBsYWNlKC8sL2csICdcXFxcLCcpXG4gICAgLnJlcGxhY2UoLzovZywgJ1xcXFw6Jyk7XG59XG4iXX0=
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2RlLXF1ZXJ5LXBhcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2hlbHBlcnMvZW5jb2RlLXF1ZXJ5LXBhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLEtBQWdDO0lBQy9ELE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7U0FDdkIsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7U0FDcEIsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBFc2NhcGVzIGNvbW1hcyBhbmQgY29sb25zIGluIGEgcXVlcnktcGFyYW0gdmFsdWUgc28gdGhleSBhcmUgbm90XG4gKiBtaXNpbnRlcnByZXRlZCBhcyBkZWxpbWl0ZXJzIGR1cmluZyBkZXNlcmlhbGl6YXRpb24uXG4gKlxuICogQWNjZXB0cyBudWxsaXNoIGlucHV0IGRlZmVuc2l2ZWx5IOKAlCBBdXRvY29tcGxldGVJdGVtLnZhbHVlIGNhblxuICogcmVzb2x2ZSB0byBhIGJhcmUgcHJpbWl0aXZlIHdob3NlIGAubmFtZWAgaXMgdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUXVlcnlQYXJhbSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiBTdHJpbmcodmFsdWUgPz8gJycpXG4gICAgLnJlcGxhY2UoLywvZywgJ1xcXFwsJylcbiAgICAucmVwbGFjZSgvOi9nLCAnXFxcXDonKTtcbn1cbiJdfQ==
@@ -1,24 +1,41 @@
1
- import { clone } from 'lodash-es';
2
1
  import { encodeQueryParam } from '../../helpers';
3
2
  import { BaseAutocompleteItem } from './base-autocomplete-item';
4
3
  export class AutocompleteItem extends BaseAutocompleteItem {
5
4
  static create(config, filter) {
6
5
  return new AutocompleteItem(config, filter);
7
6
  }
7
+ /**
8
+ * Returns the unwrapped primitive value (e.g. 123) from the
9
+ * underlying {name, value} object stored via BaseItem.
10
+ */
8
11
  get value() {
9
- let value = clone(super.value);
10
12
  if (!super.value || super.value.value === undefined) {
11
13
  return undefined;
12
14
  }
13
- value = super.value.value;
14
- return value;
15
+ return super.value.value;
15
16
  }
17
+ /**
18
+ * API-ready query: returns the raw primitive value keyed by item name.
19
+ */
16
20
  get query() {
17
21
  if (!this.hasValue) {
18
22
  return {};
19
23
  }
20
24
  return {
21
- [this.name]: `${this.value.value}:${encodeQueryParam(this.value.name)}`,
25
+ [this.name]: this.value,
26
+ };
27
+ }
28
+ /**
29
+ * URL-ready query param: returns `value:encodedName` format for
30
+ * round-tripping through browser query strings.
31
+ * Uses super.value to access the full {name, value} object.
32
+ */
33
+ get queryParam() {
34
+ if (!this.hasValue) {
35
+ return {};
36
+ }
37
+ return {
38
+ [this.name]: `${super.value.value}:${encodeQueryParam(super.value.name)}`,
22
39
  };
23
40
  }
24
41
  get chips() {
@@ -27,10 +44,10 @@ export class AutocompleteItem extends BaseAutocompleteItem {
27
44
  }
28
45
  return [
29
46
  {
30
- value: this.value ? this.value.name : '',
31
- label: this.value.label,
47
+ value: super.value.name ?? '',
48
+ label: this.label,
32
49
  },
33
50
  ];
34
51
  }
35
52
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZGVscy9pdGVtcy9hdXRvY29tcGxldGUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2xDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdqRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdoRSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsb0JBQW1EO0lBRWhGLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBcUMsRUFBRSxNQUF1QjtRQUNqRixPQUFPLElBQUksZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BELE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFFMUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0wsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO1NBQ3hFLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBVyxLQUFLO1FBQ2QsSUFBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0w7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN4QyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2FBQ3hCO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgY2xvbmUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgZW5jb2RlUXVlcnlQYXJhbSB9IGZyb20gJy4uLy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgSUZpbHRlckNvbmZpZ0F1dG9jb21wbGV0ZUl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2l0ZW1zL2F1dG9jb21wbGV0ZS5pbnRlcmZhY2UnO1xuXG5pbXBvcnQgeyBCYXNlQXV0b2NvbXBsZXRlSXRlbSB9IGZyb20gJy4vYmFzZS1hdXRvY29tcGxldGUtaXRlbSc7XG5cblxuZXhwb3J0IGNsYXNzIEF1dG9jb21wbGV0ZUl0ZW0gZXh0ZW5kcyBCYXNlQXV0b2NvbXBsZXRlSXRlbTxJRmlsdGVyQ29uZmlnQXV0b2NvbXBsZXRlSXRlbT4ge1xuXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlKGNvbmZpZzogSUZpbHRlckNvbmZpZ0F1dG9jb21wbGV0ZUl0ZW0sIGZpbHRlcjogRmlsdGVyQ29tcG9uZW50KSB7XG4gICAgcmV0dXJuIG5ldyBBdXRvY29tcGxldGVJdGVtKGNvbmZpZywgZmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgbGV0IHZhbHVlID0gY2xvbmUoc3VwZXIudmFsdWUpO1xuXG4gICAgaWYgKCFzdXBlci52YWx1ZSB8fCBzdXBlci52YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHZhbHVlID0gc3VwZXIudmFsdWUudmFsdWU7XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXJ5KCkge1xuICAgIGlmKCF0aGlzLmhhc1ZhbHVlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLm5hbWVdOiBgJHt0aGlzLnZhbHVlLnZhbHVlfToke2VuY29kZVF1ZXJ5UGFyYW0odGhpcy52YWx1ZS5uYW1lKX1gLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoaXBzKCk6IHsgbmFtZT86IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9W10ge1xuICAgIGlmKCF0aGlzLmhhc1ZhbHVlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlLm5hbWUgOiAnJywgXG4gICAgICAgIGxhYmVsOiB0aGlzLnZhbHVlLmxhYmVsLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLWl0ZW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL21vZGVscy9pdGVtcy9hdXRvY29tcGxldGUtaXRlbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHaEUsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG9CQUFtRDtJQUVoRixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQXFDLEVBQUUsTUFBdUI7UUFDakYsT0FBTyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxLQUFLO1FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxLQUFLO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPO1lBQ0wsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBVyxVQUFVO1FBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTztZQUNMLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtTQUMxRSxDQUFDO0lBQ0osQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsT0FBTztZQUNMO2dCQUNFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFO2dCQUM3QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7YUFDbEI7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IGVuY29kZVF1ZXJ5UGFyYW0gfSBmcm9tICcuLi8uLi9oZWxwZXJzJztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdBdXRvY29tcGxldGVJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy9hdXRvY29tcGxldGUuaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgQmFzZUF1dG9jb21wbGV0ZUl0ZW0gfSBmcm9tICcuL2Jhc2UtYXV0b2NvbXBsZXRlLWl0ZW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVJdGVtIGV4dGVuZHMgQmFzZUF1dG9jb21wbGV0ZUl0ZW08SUZpbHRlckNvbmZpZ0F1dG9jb21wbGV0ZUl0ZW0+IHtcblxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShjb25maWc6IElGaWx0ZXJDb25maWdBdXRvY29tcGxldGVJdGVtLCBmaWx0ZXI6IEZpbHRlckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgQXV0b2NvbXBsZXRlSXRlbShjb25maWcsIGZpbHRlcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgdW53cmFwcGVkIHByaW1pdGl2ZSB2YWx1ZSAoZS5nLiAxMjMpIGZyb20gdGhlXG4gICAqIHVuZGVybHlpbmcge25hbWUsIHZhbHVlfSBvYmplY3Qgc3RvcmVkIHZpYSBCYXNlSXRlbS5cbiAgICovXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgaWYgKCFzdXBlci52YWx1ZSB8fCBzdXBlci52YWx1ZS52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBzdXBlci52YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBUEktcmVhZHkgcXVlcnk6IHJldHVybnMgdGhlIHJhdyBwcmltaXRpdmUgdmFsdWUga2V5ZWQgYnkgaXRlbSBuYW1lLlxuICAgKi9cbiAgcHVibGljIGdldCBxdWVyeSgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICBpZiAoIXRoaXMuaGFzVmFsdWUpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgW3RoaXMubmFtZV06IHRoaXMudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVUkwtcmVhZHkgcXVlcnkgcGFyYW06IHJldHVybnMgYHZhbHVlOmVuY29kZWROYW1lYCBmb3JtYXQgZm9yXG4gICAqIHJvdW5kLXRyaXBwaW5nIHRocm91Z2ggYnJvd3NlciBxdWVyeSBzdHJpbmdzLlxuICAgKiBVc2VzIHN1cGVyLnZhbHVlIHRvIGFjY2VzcyB0aGUgZnVsbCB7bmFtZSwgdmFsdWV9IG9iamVjdC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcXVlcnlQYXJhbSgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgaWYgKCF0aGlzLmhhc1ZhbHVlKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIFt0aGlzLm5hbWVdOiBgJHtzdXBlci52YWx1ZS52YWx1ZX06JHtlbmNvZGVRdWVyeVBhcmFtKHN1cGVyLnZhbHVlLm5hbWUpfWAsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hpcHMoKTogeyBuYW1lPzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsYWJlbDogc3RyaW5nIH1bXSB7XG4gICAgaWYgKCF0aGlzLmhhc1ZhbHVlKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHN1cGVyLnZhbHVlLm5hbWUgPz8gJycsXG4gICAgICAgIGxhYmVsOiB0aGlzLmxhYmVsLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59XG4iXX0=
@@ -23,7 +23,7 @@ import * as i1$3 from '@firestitch/autocomplete-chips';
23
23
  import { FsAutocompleteChipsComponent, FsAutocompleteChipsModule } from '@firestitch/autocomplete-chips';
24
24
  import * as i2$1 from '@firestitch/datepicker';
25
25
  import { FsDatePickerComponent, FsDateScrollPickerComponent, DateRangePickerFromComponent, DateRangePickerToComponent, formatPeriodObject, FsDatePickerModule } from '@firestitch/datepicker';
26
- import { isObject, isFunction, clone, toString } from 'lodash-es';
26
+ import { isObject, isFunction, toString } from 'lodash-es';
27
27
  import { isDate, isValid, parseISO } from 'date-fns';
28
28
  import { iso8601, format } from '@firestitch/date';
29
29
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@@ -52,6 +52,7 @@ import * as i1$4 from '@firestitch/label';
52
52
  import { FsLabelModule } from '@firestitch/label';
53
53
  import { MatFormField, MatLabel, MatPrefix, MatSuffix } from '@angular/material/form-field';
54
54
  import { MatCheckbox } from '@angular/material/checkbox';
55
+ import { moveItemInArray, CdkDropList, CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';
55
56
 
56
57
  class SavedFilterController {
57
58
  _filterController;
@@ -913,7 +914,7 @@ function arraysAreEquals(arr1, arr2) {
913
914
  * resolve to a bare primitive whose `.name` is undefined.
914
915
  */
915
916
  function encodeQueryParam(value) {
916
- return (value ?? '')
917
+ return String(value ?? '')
917
918
  .replace(/,/g, '\\,')
918
919
  .replace(/:/g, '\\:');
919
920
  }
@@ -1651,20 +1652,38 @@ class AutocompleteItem extends BaseAutocompleteItem {
1651
1652
  static create(config, filter) {
1652
1653
  return new AutocompleteItem(config, filter);
1653
1654
  }
1655
+ /**
1656
+ * Returns the unwrapped primitive value (e.g. 123) from the
1657
+ * underlying {name, value} object stored via BaseItem.
1658
+ */
1654
1659
  get value() {
1655
- let value = clone(super.value);
1656
1660
  if (!super.value || super.value.value === undefined) {
1657
1661
  return undefined;
1658
1662
  }
1659
- value = super.value.value;
1660
- return value;
1663
+ return super.value.value;
1661
1664
  }
1665
+ /**
1666
+ * API-ready query: returns the raw primitive value keyed by item name.
1667
+ */
1662
1668
  get query() {
1663
1669
  if (!this.hasValue) {
1664
1670
  return {};
1665
1671
  }
1666
1672
  return {
1667
- [this.name]: `${this.value.value}:${encodeQueryParam(this.value.name)}`,
1673
+ [this.name]: this.value,
1674
+ };
1675
+ }
1676
+ /**
1677
+ * URL-ready query param: returns `value:encodedName` format for
1678
+ * round-tripping through browser query strings.
1679
+ * Uses super.value to access the full {name, value} object.
1680
+ */
1681
+ get queryParam() {
1682
+ if (!this.hasValue) {
1683
+ return {};
1684
+ }
1685
+ return {
1686
+ [this.name]: `${super.value.value}:${encodeQueryParam(super.value.name)}`,
1668
1687
  };
1669
1688
  }
1670
1689
  get chips() {
@@ -1673,8 +1692,8 @@ class AutocompleteItem extends BaseAutocompleteItem {
1673
1692
  }
1674
1693
  return [
1675
1694
  {
1676
- value: this.value ? this.value.name : '',
1677
- label: this.value.label,
1695
+ value: super.value.name ?? '',
1696
+ label: this.label,
1678
1697
  },
1679
1698
  ];
1680
1699
  }
@@ -3345,7 +3364,7 @@ class FsFilterSavedFilterManageComponent {
3345
3364
  get pluralLabel() {
3346
3365
  return this._savedFilterController.pluralLabel;
3347
3366
  }
3348
- get sortable() {
3367
+ get orderable() {
3349
3368
  return this._savedFilterController.orderable;
3350
3369
  }
3351
3370
  selectFilter(savedFilter) {
@@ -3359,21 +3378,29 @@ class FsFilterSavedFilterManageComponent {
3359
3378
  this._cdRef.markForCheck();
3360
3379
  });
3361
3380
  }
3381
+ drop(event) {
3382
+ moveItemInArray(this.savedFilters, event.previousIndex, event.currentIndex);
3383
+ this.order(this.savedFilters);
3384
+ }
3362
3385
  order(savedFilters) {
3363
3386
  this._savedFilterController.order(savedFilters)
3364
3387
  .subscribe();
3365
3388
  }
3366
3389
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterSavedFilterManageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3367
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterSavedFilterManageComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}:host ::ng-deep .mat-mdc-dialog-content{width:800px;max-width:100%}.actions-column{width:1%}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: FsFilterSavedFilterChipsComponent, selector: "fs-saved-filter-chips", inputs: ["savedFilter"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3390
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FsFilterSavedFilterManageComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n @if (savedFilters?.length) {\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n @if (orderable) {\n <th class=\"drag-col\"></th>\n }\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\">\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr cdkDrag [cdkDragDisabled]=\"!orderable\" cdkDragLockAxis=\"y\" [cdkDragPreviewClass]=\"'saved-filter-drag-preview'\">\n @if (orderable) {\n <td class=\"drag-col\" cdkDragHandle>\n <mat-icon>drag_handle</mat-icon>\n </td>\n }\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .saved-filter-drag-preview{display:table;background-color:#00000008;border-radius:5px}::ng-deep .saved-filter-drag-preview td{border:none;padding:8px;vertical-align:middle}::ng-deep .saved-filter-drag-preview fs-menu{display:none}:host ::ng-deep .mat-mdc-dialog-content{min-width:400px}:host ::ng-deep .cdk-drag-placeholder{opacity:.5;background-color:#0000000d;border-radius:5px}:host ::ng-deep .cdk-drag-placeholder td{border:none}:host ::ng-deep .cdk-drop-list-dragging .cdk-drag{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .cdk-drag-animating{transition:transform .3s cubic-bezier(0,0,.2,1)}.actions-column{width:1%}td.drag-col,th.drag-col{width:1%;white-space:nowrap;text-align:center;cursor:grab}td.drag-col mat-icon,th.drag-col mat-icon{display:flex}\n"], dependencies: [{ kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1$6.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$6.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$6.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: FsFilterSavedFilterChipsComponent, selector: "fs-saved-filter-chips", inputs: ["savedFilter"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
3368
3391
  }
3369
3392
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FsFilterSavedFilterManageComponent, decorators: [{
3370
3393
  type: Component,
3371
3394
  args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
3372
3395
  MatDialogModule,
3373
3396
  MatButton,
3397
+ MatIcon,
3398
+ CdkDropList,
3399
+ CdkDrag,
3400
+ CdkDragHandle,
3374
3401
  FsFilterSavedFilterChipsComponent,
3375
3402
  FsMenuModule,
3376
- ], template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody>\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr>\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}:host ::ng-deep .mat-mdc-dialog-content{width:800px;max-width:100%}.actions-column{width:1%}\n"] }]
3403
+ ], template: "<h1 mat-dialog-title>\n {{ pluralLabel }}\n</h1>\n<div mat-dialog-content>\n @if (savedFilters?.length) {\n <table class=\"fs-list-table\">\n <thead>\n <tr>\n @if (orderable) {\n <th class=\"drag-col\"></th>\n }\n <th>\n Name\n </th>\n <th>\n Filters\n </th>\n <th class=\"actions-column\"></th>\n </tr>\n </thead>\n <tbody\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\">\n @for (savedFilter of savedFilters; track savedFilter.id) {\n <tr cdkDrag [cdkDragDisabled]=\"!orderable\" cdkDragLockAxis=\"y\" [cdkDragPreviewClass]=\"'saved-filter-drag-preview'\">\n @if (orderable) {\n <td class=\"drag-col\" cdkDragHandle>\n <mat-icon>drag_handle</mat-icon>\n </td>\n }\n <td>\n <a (click)=\"selectFilter(savedFilter)\">\n {{ savedFilter.name }}\n </a>\n </td>\n <td>\n <fs-saved-filter-chips [savedFilter]=\"savedFilter\"></fs-saved-filter-chips>\n </td>\n <td>\n <fs-menu>\n <ng-template\n fs-menu-item\n (click)=\"remove(savedFilter)\">\n Delete\n </ng-template>\n </fs-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n }\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>", styles: ["::ng-deep .fs-list-table{border-spacing:0;display:table;width:100%;border-collapse:collapse}::ng-deep .fs-list-table thead{display:table-header-group}::ng-deep .fs-list-table thead th{color:#999;padding:8px;font-weight:400;color:#8f8f8f;font-size:85%;text-align:left}::ng-deep .fs-list-table tbody{display:table-row-group;position:relative}::ng-deep .fs-list-table tbody tr,::ng-deep .fs-list-table thead tr,::ng-deep .fs-list-table tfoot tr{display:table-row}::ng-deep .fs-list-table tbody tr td,::ng-deep .fs-list-table thead tr td,::ng-deep .fs-list-table tfoot tr td{display:table-cell;padding:8px;vertical-align:middle;outline:none;text-align:left}::ng-deep .fs-list-table.style-card tbody tr:not(.fs-list-row-group-footer):not(.fs-list-row-group){clip-path:xywh(0 3px 100% calc(100% - 6px) round 10px)}::ng-deep .fs-list-table.style-card tbody tr td{border:none!important;background-color:#fafafa;padding:8px 16px}::ng-deep .fs-list-table.style-line tbody td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody td{box-sizing:border-box;border-top:1px solid #e7e7e7}::ng-deep .fs-list-table.style-line tbody tr:first-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:first-child td{border-color:#c4c4c4}::ng-deep .fs-list-table.style-line tbody tr:last-child td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) tbody tr:last-child td{border-bottom:1px solid #c4c4c4}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging thead th,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging thead th{border-color:#e7e7e7}::ng-deep .fs-list-table.style-line .fs-list-container.has-dragging tbody tr:nth-child(2) td,::ng-deep .fs-list-table:not(.style-card):not(.style-basic) .fs-list-container.has-dragging tbody tr:nth-child(2) td{border-top:none}::ng-deep .saved-filter-drag-preview{display:table;background-color:#00000008;border-radius:5px}::ng-deep .saved-filter-drag-preview td{border:none;padding:8px;vertical-align:middle}::ng-deep .saved-filter-drag-preview fs-menu{display:none}:host ::ng-deep .mat-mdc-dialog-content{min-width:400px}:host ::ng-deep .cdk-drag-placeholder{opacity:.5;background-color:#0000000d;border-radius:5px}:host ::ng-deep .cdk-drag-placeholder td{border:none}:host ::ng-deep .cdk-drop-list-dragging .cdk-drag{transition:transform .25s cubic-bezier(0,0,.2,1)}:host ::ng-deep .cdk-drag-animating{transition:transform .3s cubic-bezier(0,0,.2,1)}.actions-column{width:1%}td.drag-col,th.drag-col{width:1%;white-space:nowrap;text-align:center;cursor:grab}td.drag-col mat-icon,th.drag-col mat-icon{display:flex}\n"] }]
3377
3404
  }] });
3378
3405
 
3379
3406
  class FsFilterChipsComponent {