@firestitch/filter 13.3.1 → 13.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/app/components/saved-filter/index.d.ts +3 -0
  2. package/app/components/saved-filter/saved-filter-edit/index.d.ts +1 -0
  3. package/app/components/{saved-filter-edit → saved-filter/saved-filter-edit}/saved-filter-edit.component.d.ts +2 -2
  4. package/app/components/saved-filter/saved-filter-manage/index.d.ts +1 -0
  5. package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +16 -0
  6. package/app/components/saved-filter/saved-filters-menu/index.d.ts +1 -0
  7. package/app/components/{saved-filters-menu → saved-filter/saved-filters-menu}/saved-filters-menu.component.d.ts +7 -5
  8. package/app/fs-filter.module.d.ts +37 -35
  9. package/esm2020/app/components/saved-filter/index.mjs +4 -0
  10. package/esm2020/app/components/saved-filter/saved-filter-edit/index.mjs +2 -0
  11. package/esm2020/app/components/{saved-filter-edit → saved-filter/saved-filter-edit}/saved-filter-edit.component.mjs +1 -1
  12. package/esm2020/app/components/saved-filter/saved-filter-manage/index.mjs +2 -0
  13. package/esm2020/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +40 -0
  14. package/esm2020/app/components/saved-filter/saved-filters-menu/index.mjs +2 -0
  15. package/esm2020/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +52 -0
  16. package/esm2020/app/fs-filter.module.mjs +10 -3
  17. package/esm2020/app/services/external-params/saved-filters-controller.service.mjs +6 -6
  18. package/esm2020/public_api.mjs +2 -2
  19. package/fesm2015/firestitch-filter.mjs +54 -10
  20. package/fesm2015/firestitch-filter.mjs.map +1 -1
  21. package/fesm2020/firestitch-filter.mjs +52 -10
  22. package/fesm2020/firestitch-filter.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/public_api.d.ts +1 -1
  25. package/esm2020/app/components/saved-filters-menu/saved-filters-menu.component.mjs +0 -44
@@ -29,6 +29,8 @@ import * as i7 from '@firestitch/form';
29
29
  import { FsFormModule } from '@firestitch/form';
30
30
  import * as i3$2 from '@angular/material/input';
31
31
  import { MatInput, MatInputModule } from '@angular/material/input';
32
+ import * as i4$3 from '@angular/cdk/drag-drop';
33
+ import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
32
34
  import { ComponentPortal, PortalInjector, PortalModule } from '@angular/cdk/portal';
33
35
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
34
36
  import * as i4$2 from '@angular/material/checkbox';
@@ -2060,17 +2062,17 @@ class SavedFiltersController {
2060
2062
  }
2061
2063
  order(savedFilters) {
2062
2064
  return this._config.order(savedFilters)
2063
- .pipe(tap((response) => {
2065
+ .pipe(tap(() => {
2064
2066
  this.savedFilters = [
2065
- ...response,
2067
+ ...savedFilters,
2066
2068
  ];
2067
2069
  }));
2068
2070
  }
2069
2071
  delete(savedFilter) {
2070
2072
  return this._config.delete(savedFilter)
2071
- .pipe(tap((response) => {
2073
+ .pipe(tap(() => {
2072
2074
  this.savedFilters = this.savedFilters
2073
- .filter((f) => f.id !== response.id);
2075
+ .filter((f) => f.id !== savedFilter.id);
2074
2076
  }));
2075
2077
  }
2076
2078
  setActiveFilter(savedFilter) {
@@ -4280,11 +4282,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
4280
4282
  args: [{ selector: 'filter-item-select-backdrop', changeDetection: ChangeDetectionStrategy.OnPush, template: "", styles: [":host{position:absolute;z-index:1002;inset:0}\n"] }]
4281
4283
  }], ctorParameters: function () { return []; } });
4282
4284
 
4285
+ class FsFilterSavedFilterManageComponent {
4286
+ constructor(data, _cdRef) {
4287
+ this.data = data;
4288
+ this._cdRef = _cdRef;
4289
+ this._savedFiltersController = this.data.savedFiltersController;
4290
+ this.savedFilters = [...this._savedFiltersController.savedFilters];
4291
+ }
4292
+ remove(savedFilter) {
4293
+ this._savedFiltersController.delete(savedFilter)
4294
+ .subscribe(() => {
4295
+ this.savedFilters = [...this._savedFiltersController.savedFilters];
4296
+ this._cdRef.markForCheck();
4297
+ });
4298
+ }
4299
+ drop(event) {
4300
+ moveItemInArray(this.savedFilters, event.previousIndex, event.currentIndex);
4301
+ this._savedFiltersController.order(this.savedFilters)
4302
+ .subscribe();
4303
+ }
4304
+ }
4305
+ FsFilterSavedFilterManageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterSavedFilterManageComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4306
+ FsFilterSavedFilterManageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsFilterSavedFilterManageComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\n Manage saved filters\n</h1>\n<div mat-dialog-content>\n <div\n cdkDropList \n [cdkDropListData]=\"savedFilters\"\n cdkDropListOrientation=\"vertical\"\n (cdkDropListDropped)=\"drop($event)\"> \n <ng-container \n *ngFor=\"let savedFilter of savedFilters\">\n <div class=\"chip-container\">\n <fs-chip \n cdkDrag\n (removed)=\"remove(savedFilter)\">\n {{savedFilter.name}}\n </fs-chip>\n </div>\n </ng-container>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-button\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>\n", styles: [".chip-container{padding:5px 0}.chip-container fs-chip{cursor:move}.cdk-drag-preview{box-sizing:border-box}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i2$3.FsChipComponent, selector: "fs-chip", inputs: ["selectable", "removable", "value", "icon", "image", "selected", "size", "backgroundColor", "borderColor", "color", "outlined"], outputs: ["selectedToggled", "removed"] }, { type: i1$3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1$1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1$1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i4$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i1$1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }, { type: i7.FsButtonDirective, selector: "[mat-raised-button],[mat-button],[mat-flat-button],[mat-stroked-button]", inputs: ["name", "dirtySubmit", "form"] }, { type: i1$1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
4307
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsFilterSavedFilterManageComponent, decorators: [{
4308
+ type: Component,
4309
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 mat-dialog-title>\n Manage saved filters\n</h1>\n<div mat-dialog-content>\n <div\n cdkDropList \n [cdkDropListData]=\"savedFilters\"\n cdkDropListOrientation=\"vertical\"\n (cdkDropListDropped)=\"drop($event)\"> \n <ng-container \n *ngFor=\"let savedFilter of savedFilters\">\n <div class=\"chip-container\">\n <fs-chip \n cdkDrag\n (removed)=\"remove(savedFilter)\">\n {{savedFilter.name}}\n </fs-chip>\n </div>\n </ng-container>\n </div>\n</div>\n<div mat-dialog-actions>\n <button \n mat-button\n type=\"button\"\n [mat-dialog-close]=\"null\">\n Done\n </button>\n</div>\n", styles: [".chip-container{padding:5px 0}.chip-container fs-chip{cursor:move}.cdk-drag-preview{box-sizing:border-box}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
4310
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
4311
+ type: Inject,
4312
+ args: [MAT_DIALOG_DATA]
4313
+ }] }, { type: i0.ChangeDetectorRef }]; } });
4314
+
4283
4315
  class FsSavedFiltersMenuComponent {
4284
- constructor(_itemsStore, _externalParams, _savedFilters) {
4316
+ constructor(_itemsStore, _externalParams, _savedFilters, _dialog) {
4285
4317
  this._itemsStore = _itemsStore;
4286
4318
  this._externalParams = _externalParams;
4287
4319
  this._savedFilters = _savedFilters;
4320
+ this._dialog = _dialog;
4288
4321
  this.clear = new EventEmitter();
4289
4322
  }
4290
4323
  get filters$() {
@@ -4302,15 +4335,19 @@ class FsSavedFiltersMenuComponent {
4302
4335
  this.clear.emit();
4303
4336
  }
4304
4337
  manageFilters() {
4305
- // TODO: Implement
4338
+ this._dialog.open(FsFilterSavedFilterManageComponent, {
4339
+ data: {
4340
+ savedFiltersController: this._savedFilters,
4341
+ },
4342
+ });
4306
4343
  }
4307
4344
  }
4308
- FsSavedFiltersMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsSavedFiltersMenuComponent, deps: [{ token: FsFilterItemsStore }, { token: ExternalParamsController }, { token: SavedFiltersController }], target: i0.ɵɵFactoryTarget.Component });
4309
- FsSavedFiltersMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsSavedFiltersMenuComponent, selector: "fs-filter-saved-filters-menu", outputs: { clear: "clear" }, ngImport: i0, template: "<a [fsMenuTriggerFor]=\"menu\" class=\"selector\">{{ (activeFilter$ | async)?.name || 'Not selected' }}</a>\n\n<fs-menu #menu>\n <ng-container *ngIf=\"activeFilter$ | async\">\n <ng-template fs-menu-item (click)=\"removeActiveFilter()\">\n None\n </ng-template>\n </ng-container>\n <ng-container *ngFor=\"let filter of filters$ | async\">\n <ng-template fs-menu-item (click)=\"selectFilter(filter)\">\n {{ filter.name }}\n </ng-template>\n </ng-container>\n <!-- TODO: Implement -->\n <!-- <ng-template \n fs-menu-item \n class=\"saved-filter-last-item\" \n (click)=\"manageFilters()\">\n Manage\n </ng-template> -->\n</fs-menu>\n", styles: [":host ::ng-deep .selector{cursor:pointer}\n"], components: [{ type: i3$3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }], directives: [{ type: i3$3.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4345
+ FsSavedFiltersMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsSavedFiltersMenuComponent, deps: [{ token: FsFilterItemsStore }, { token: ExternalParamsController }, { token: SavedFiltersController }, { token: i1$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
4346
+ FsSavedFiltersMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: FsSavedFiltersMenuComponent, selector: "fs-filter-saved-filters-menu", outputs: { clear: "clear" }, ngImport: i0, template: "<a [fsMenuTriggerFor]=\"menu\" class=\"selector\">{{ (activeFilter$ | async)?.name || 'Not selected' }}</a>\n\n<fs-menu #menu>\n <ng-container *ngIf=\"activeFilter$ | async\">\n <ng-template fs-menu-item (click)=\"removeActiveFilter()\">\n None\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"(filters$ | async).length !==0\">\n <ng-container *ngFor=\"let filter of filters$ | async\">\n <ng-template fs-menu-item (click)=\"selectFilter(filter)\">\n {{ filter.name }}\n </ng-template>\n </ng-container>\n <ng-template fs-menu-divider-item></ng-template>\n </ng-container>\n <ng-template \n fs-menu-item \n class=\"saved-filter-last-item\" \n (click)=\"manageFilters()\">\n Manage\n </ng-template>\n</fs-menu>\n", styles: [":host ::ng-deep .selector{cursor:pointer}\n"], components: [{ type: i3$3.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }], directives: [{ type: i3$3.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3$3.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i3.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
4310
4347
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: FsSavedFiltersMenuComponent, decorators: [{
4311
4348
  type: Component,
4312
- args: [{ selector: 'fs-filter-saved-filters-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a [fsMenuTriggerFor]=\"menu\" class=\"selector\">{{ (activeFilter$ | async)?.name || 'Not selected' }}</a>\n\n<fs-menu #menu>\n <ng-container *ngIf=\"activeFilter$ | async\">\n <ng-template fs-menu-item (click)=\"removeActiveFilter()\">\n None\n </ng-template>\n </ng-container>\n <ng-container *ngFor=\"let filter of filters$ | async\">\n <ng-template fs-menu-item (click)=\"selectFilter(filter)\">\n {{ filter.name }}\n </ng-template>\n </ng-container>\n <!-- TODO: Implement -->\n <!-- <ng-template \n fs-menu-item \n class=\"saved-filter-last-item\" \n (click)=\"manageFilters()\">\n Manage\n </ng-template> -->\n</fs-menu>\n", styles: [":host ::ng-deep .selector{cursor:pointer}\n"] }]
4313
- }], ctorParameters: function () { return [{ type: FsFilterItemsStore }, { type: ExternalParamsController }, { type: SavedFiltersController }]; }, propDecorators: { clear: [{
4349
+ args: [{ selector: 'fs-filter-saved-filters-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<a [fsMenuTriggerFor]=\"menu\" class=\"selector\">{{ (activeFilter$ | async)?.name || 'Not selected' }}</a>\n\n<fs-menu #menu>\n <ng-container *ngIf=\"activeFilter$ | async\">\n <ng-template fs-menu-item (click)=\"removeActiveFilter()\">\n None\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"(filters$ | async).length !==0\">\n <ng-container *ngFor=\"let filter of filters$ | async\">\n <ng-template fs-menu-item (click)=\"selectFilter(filter)\">\n {{ filter.name }}\n </ng-template>\n </ng-container>\n <ng-template fs-menu-divider-item></ng-template>\n </ng-container>\n <ng-template \n fs-menu-item \n class=\"saved-filter-last-item\" \n (click)=\"manageFilters()\">\n Manage\n </ng-template>\n</fs-menu>\n", styles: [":host ::ng-deep .selector{cursor:pointer}\n"] }]
4350
+ }], ctorParameters: function () { return [{ type: FsFilterItemsStore }, { type: ExternalParamsController }, { type: SavedFiltersController }, { type: i1$1.MatDialog }]; }, propDecorators: { clear: [{
4314
4351
  type: Output
4315
4352
  }] } });
4316
4353
 
@@ -4360,6 +4397,7 @@ FsFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
4360
4397
  FsFilterActionsComponent,
4361
4398
  FsFilterActionButtonComponent,
4362
4399
  FsFilterActionKebabActionsComponent,
4400
+ FsFilterSavedFilterManageComponent,
4363
4401
  FilterStatusBarDirective,
4364
4402
  FocusToItemDirective,
4365
4403
  // Pipes
@@ -4367,6 +4405,7 @@ FsFilterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
4367
4405
  RouterModule,
4368
4406
  FormsModule,
4369
4407
  ReactiveFormsModule,
4408
+ DragDropModule,
4370
4409
  MatIconModule,
4371
4410
  MatInputModule,
4372
4411
  MatSelectModule,
@@ -4402,6 +4441,7 @@ FsFilterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
4402
4441
  RouterModule,
4403
4442
  FormsModule,
4404
4443
  ReactiveFormsModule,
4444
+ DragDropModule,
4405
4445
  MatIconModule,
4406
4446
  MatInputModule,
4407
4447
  MatSelectModule,
@@ -4437,6 +4477,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
4437
4477
  RouterModule,
4438
4478
  FormsModule,
4439
4479
  ReactiveFormsModule,
4480
+ DragDropModule,
4440
4481
  MatIconModule,
4441
4482
  MatInputModule,
4442
4483
  MatSelectModule,
@@ -4492,6 +4533,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
4492
4533
  FsFilterActionsComponent,
4493
4534
  FsFilterActionButtonComponent,
4494
4535
  FsFilterActionKebabActionsComponent,
4536
+ FsFilterSavedFilterManageComponent,
4495
4537
  FilterStatusBarDirective,
4496
4538
  FocusToItemDirective,
4497
4539
  // Pipes