@firestitch/list 9.11.1 → 9.12.1

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 (41) hide show
  1. package/app/classes/list-controller.d.ts +4 -2
  2. package/app/classes/reorder-controller.d.ts +2 -0
  3. package/app/components/body/row/inline-action/inline-action.component.d.ts +3 -0
  4. package/app/components/body/row/menu-action/menu-action.component.d.ts +9 -0
  5. package/app/components/list/list.component.d.ts +1 -0
  6. package/app/interfaces/listconfig.interface.d.ts +9 -0
  7. package/app/models/row-action.model.d.ts +4 -1
  8. package/bundles/firestitch-list.umd.js +112 -16
  9. package/bundles/firestitch-list.umd.js.map +1 -1
  10. package/bundles/firestitch-list.umd.min.js +2 -2
  11. package/bundles/firestitch-list.umd.min.js.map +1 -1
  12. package/esm2015/app/classes/list-controller.js +10 -3
  13. package/esm2015/app/classes/reorder-controller.js +12 -3
  14. package/esm2015/app/components/body/row/actions/actions.component.js +2 -2
  15. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +10 -2
  16. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +41 -0
  17. package/esm2015/app/components/list/list.component.js +12 -1
  18. package/esm2015/app/fs-list.module.js +5 -1
  19. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  20. package/esm2015/app/models/row-action.model.js +12 -2
  21. package/esm2015/firestitch-list.js +7 -6
  22. package/esm2015/public_api.js +1 -1
  23. package/esm5/app/classes/list-controller.js +18 -3
  24. package/esm5/app/classes/reorder-controller.js +12 -3
  25. package/esm5/app/components/body/row/actions/actions.component.js +2 -2
  26. package/esm5/app/components/body/row/inline-action/inline-action.component.js +10 -2
  27. package/esm5/app/components/body/row/menu-action/menu-action.component.js +42 -0
  28. package/esm5/app/components/list/list.component.js +13 -1
  29. package/esm5/app/fs-list.module.js +5 -1
  30. package/esm5/app/interfaces/listconfig.interface.js +1 -1
  31. package/esm5/app/models/row-action.model.js +12 -2
  32. package/esm5/firestitch-list.js +7 -6
  33. package/esm5/public_api.js +1 -1
  34. package/fesm2015/firestitch-list.js +94 -8
  35. package/fesm2015/firestitch-list.js.map +1 -1
  36. package/fesm5/firestitch-list.js +104 -8
  37. package/fesm5/firestitch-list.js.map +1 -1
  38. package/firestitch-list.d.ts +7 -6
  39. package/firestitch-list.metadata.json +1 -1
  40. package/package.json +1 -1
  41. package/public_api.d.ts +1 -1
@@ -15,6 +15,7 @@ import { ItemType, FilterComponent, ExternalParamsController as ExternalParamsCo
15
15
  import { FsScrollService, FsScrollModule } from '@firestitch/scroll';
16
16
  import { FsMenuModule } from '@firestitch/menu';
17
17
  import { FsPrompt, FsPromptModule } from '@firestitch/prompt';
18
+ import { FsFileModule } from '@firestitch/file';
18
19
  import { isString, isObject, isBoolean, isNumber, isFunction, get, cloneDeep, mergeWith, random, merge as merge$1 } from 'lodash-es';
19
20
  import { Subject, BehaviorSubject, Observable, merge, from, combineLatest, of } from 'rxjs';
20
21
  import { takeUntil, tap, take, map, debounceTime, switchMap, mapTo, catchError, distinctUntilChanged, shareReplay, skip, filter } from 'rxjs/operators';
@@ -356,6 +357,15 @@ var RowAction = /** @class */ (function (_super) {
356
357
  return _this.clickEvent(row, event, index, rowActionsRef, clickFn);
357
358
  };
358
359
  this._linkFn = value.link;
360
+ if (value.file) {
361
+ if (value.file.select) {
362
+ this.fileUploadFn = function (selection, row, index) {
363
+ value.file.select(selection, row, index);
364
+ };
365
+ }
366
+ this.fileUploadErrorFn = value.file.error;
367
+ this.fileMultiple = value.file.multiple;
368
+ }
359
369
  if (typeof value.label === 'function') {
360
370
  this._labelFn = value.label;
361
371
  this.label = '';
@@ -375,7 +385,8 @@ var RowAction = /** @class */ (function (_super) {
375
385
  this.rowActions.forEach(function (action) {
376
386
  action.checkShowStatus(row, index);
377
387
  });
378
- this.isShown = this.rowActions.some(function (action) { return action.isShown; });
388
+ var groupVisible = !this.show || this.show(row, index);
389
+ this.isShown = groupVisible && this.rowActions.some(function (action) { return action.isShown; });
379
390
  }
380
391
  else if (this.show) {
381
392
  this.isShown = this.show(row, index);
@@ -2850,6 +2861,7 @@ var List = /** @class */ (function (_super) {
2850
2861
  // Empty state
2851
2862
  _this.emptyStateEnabled = false;
2852
2863
  _this.onDestroy$ = new Subject();
2864
+ _this._filtersQuery = new BehaviorSubject(null);
2853
2865
  _this._fromJSON(config);
2854
2866
  _this.initialize(config);
2855
2867
  _this._headerConfig = new StyleConfig(config.header);
@@ -2871,6 +2883,20 @@ var List = /** @class */ (function (_super) {
2871
2883
  enumerable: true,
2872
2884
  configurable: true
2873
2885
  });
2886
+ Object.defineProperty(List.prototype, "filtersQuery", {
2887
+ get: function () {
2888
+ return this._filtersQuery.getValue();
2889
+ },
2890
+ enumerable: true,
2891
+ configurable: true
2892
+ });
2893
+ Object.defineProperty(List.prototype, "filtersQuery$", {
2894
+ get: function () {
2895
+ return this._filtersQuery.asObservable();
2896
+ },
2897
+ enumerable: true,
2898
+ configurable: true
2899
+ });
2874
2900
  List.prototype.fetchRemote = function (query) {
2875
2901
  var options = {
2876
2902
  state: this.dataController.operation,
@@ -3334,7 +3360,7 @@ var List = /** @class */ (function (_super) {
3334
3360
  if (this.filterInitCb) {
3335
3361
  this.filterInitCb(filters);
3336
3362
  }
3337
- this.filtersQuery = filters;
3363
+ this._filtersQuery.next(filters);
3338
3364
  this.checkRestoreFilter();
3339
3365
  };
3340
3366
  /**
@@ -3346,7 +3372,7 @@ var List = /** @class */ (function (_super) {
3346
3372
  if (this.filterChangeCb) {
3347
3373
  this.filterChangeCb(filterQuery, filterSort);
3348
3374
  }
3349
- this.filtersQuery = filterQuery;
3375
+ this._filtersQuery.next(filterQuery);
3350
3376
  this.restoreMode = false;
3351
3377
  // Restore option
3352
3378
  this.checkRestoreFilter();
@@ -3566,6 +3592,7 @@ var ReorderController = /** @class */ (function () {
3566
3592
  this._enabled$ = new BehaviorSubject(false);
3567
3593
  this._manualReorderActivated$ = new BehaviorSubject(false);
3568
3594
  this._reorderDisabled$ = new BehaviorSubject(false);
3595
+ this._numberOfActiveFilters = 0;
3569
3596
  this._destroy$ = new Subject();
3570
3597
  }
3571
3598
  Object.defineProperty(ReorderController.prototype, "enabled", {
@@ -3599,7 +3626,9 @@ var ReorderController = /** @class */ (function () {
3599
3626
  return this._enabled$
3600
3627
  .pipe(map(function (enabled) {
3601
3628
  return enabled && _this.position === ReorderPosition.Left;
3602
- }), distinctUntilChanged(), shareReplay(), takeUntil(this._destroy$));
3629
+ }), map(function (enabled) {
3630
+ return enabled && _this._numberOfActiveFilters === 0;
3631
+ }), distinctUntilChanged(), shareReplay());
3603
3632
  },
3604
3633
  enumerable: true,
3605
3634
  configurable: true
@@ -3610,7 +3639,9 @@ var ReorderController = /** @class */ (function () {
3610
3639
  return this._enabled$
3611
3640
  .pipe(map(function (enabled) {
3612
3641
  return enabled && _this.position === ReorderPosition.Right;
3613
- }), distinctUntilChanged(), shareReplay(), takeUntil(this._destroy$));
3642
+ }), map(function (enabled) {
3643
+ return enabled && _this._numberOfActiveFilters === 0;
3644
+ }), distinctUntilChanged(), shareReplay());
3614
3645
  },
3615
3646
  enumerable: true,
3616
3647
  configurable: true
@@ -3733,6 +3764,10 @@ var ReorderController = /** @class */ (function () {
3733
3764
  this._reorderDisabled$.next(true);
3734
3765
  this._actionsController.updateDisabledState();
3735
3766
  };
3767
+ ReorderController.prototype.setNunberOfActiveFilters = function (activeFilters) {
3768
+ this._numberOfActiveFilters = activeFilters;
3769
+ this.enabled = this.enabled;
3770
+ };
3736
3771
  ReorderController = __decorate([
3737
3772
  Injectable(),
3738
3773
  __metadata("design:paramtypes", [])
@@ -4259,6 +4294,7 @@ var FsListComponent = /** @class */ (function () {
4259
4294
  this._updateCustomizeAction(listConfig.actions);
4260
4295
  this.list = new List(this._el, listConfig, this.fsScroll, this.selectionDialog, this._router, this._route, this._persistance, this._inDialog);
4261
4296
  this._waitFirstLoad();
4297
+ this._listenFiltersQueryChange();
4262
4298
  this.reorderController.initWithConfig(config.reorder, this.list.dataController, this.list.actions);
4263
4299
  if (this.listColumnDirectives) {
4264
4300
  this.list.tranformTemplatesToColumns(this.listColumnDirectives);
@@ -4336,6 +4372,17 @@ var FsListComponent = /** @class */ (function () {
4336
4372
  _this.cdRef.markForCheck();
4337
4373
  });
4338
4374
  };
4375
+ FsListComponent.prototype._listenFiltersQueryChange = function () {
4376
+ var _this = this;
4377
+ this.list.filtersQuery$
4378
+ .pipe(takeUntil(this.list.onDestroy$), takeUntil(this._destroy))
4379
+ .subscribe(function (value) {
4380
+ if (value) {
4381
+ var activeFilters = Object.keys(value).length;
4382
+ _this.reorderController.setNunberOfActiveFilters(activeFilters);
4383
+ }
4384
+ });
4385
+ };
4339
4386
  FsListComponent.prototype._configMergeCustomizer = function (objValue, srcValue) {
4340
4387
  if (Array.isArray(objValue)) {
4341
4388
  return objValue;
@@ -5632,7 +5679,7 @@ var FsRowActionsComponent = /** @class */ (function () {
5632
5679
  FsRowActionsComponent = __decorate([
5633
5680
  Component({
5634
5681
  selector: 'fs-list-row-actions',
5635
- template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n (click)=\"clickOnTrigger($event)\"\n #menuRef\n>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <mat-icon *ngIf=\"subAction.icon\">{{subAction.icon}}</mat-icon>\n {{subAction.label}}\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label}}\n </ng-template>\n </ng-container>\n</fs-menu>\n",
5682
+ template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action class=\"row-inline-action row-inline-action-{{action.type}}\"\n [action]=\"action\"\n [ngClass]=\"{'mobile-hide': action.menu === undefined}\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileUploadFn($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n\n<!-- Menu -->\n<fs-menu class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n (click)=\"clickOnTrigger($event)\"\n #menuRef\n>\n <!-- Case when we have usual menu actions -->\n <ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <ng-template class=\"hidden-mobile-menu-action\"\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"action.menu !== undefined && !action.isShown\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [file]=\"!!action.fileUploadFn\"\n [fileMultiple]=\"action.fileMultiple\"\n (fileSelect)=\"action.fileUploadFn($event, row, index)\"\n (fileError)=\"action.fileUploadErrorFn && action.fileUploadErrorFn($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n\n <ng-container *ngFor=\"let action of menuRowActions; trackBy: trackByFn\">\n <ng-container *ngIf=\"action.isGroup else simpleMenuItem\">\n <fs-menu-group [label]=\"action.label\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"subAction.icon\"\n [label]=\"subAction.label\"\n [file]=\"!!subAction.fileUploadFn\"\n [fileMultiple]=\"subAction.fileMultiple\"\n (fileSelect)=\"subAction.fileUploadFn($event, row, index)\"\n (fileError)=\"subAction.fileUploadErrorFn && subAction.fileUploadErrorFn($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\n </fs-menu-group>\n </ng-container>\n <ng-template #simpleMenuItem>\n <ng-template fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [icon]=\"action.icon\"\n [label]=\"action.label\"\n [file]=\"!!action.fileUploadFn\"\n [fileMultiple]=\"action.fileMultiple\"\n (fileSelect)=\"action.fileUploadFn($event, row, index)\"\n (fileError)=\"action.fileUploadErrorFn && action.fileUploadErrorFn($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template fs-menu-item (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">{{restoreAction.icon}}</mat-icon>\n {{restoreAction.label}}\n </ng-template>\n </ng-container>\n</fs-menu>\n",
5636
5683
  changeDetection: ChangeDetectionStrategy.OnPush
5637
5684
  }),
5638
5685
  __metadata("design:paramtypes", [FsPrompt])
@@ -5644,10 +5691,14 @@ var FsRowInlineActionComponent = /** @class */ (function () {
5644
5691
  function FsRowInlineActionComponent(_fsPrompt) {
5645
5692
  this._fsPrompt = _fsPrompt;
5646
5693
  this.clicked = new EventEmitter();
5694
+ this.fileSelect = new EventEmitter();
5647
5695
  }
5648
5696
  FsRowInlineActionComponent.prototype.actionClick = function (event) {
5649
5697
  this.clicked.emit(event);
5650
5698
  };
5699
+ FsRowInlineActionComponent.prototype.fileSelected = function (event) {
5700
+ this.fileSelect.emit(event);
5701
+ };
5651
5702
  FsRowInlineActionComponent.ctorParameters = function () { return [
5652
5703
  { type: FsPrompt }
5653
5704
  ]; };
@@ -5659,10 +5710,14 @@ var FsRowInlineActionComponent = /** @class */ (function () {
5659
5710
  Output(),
5660
5711
  __metadata("design:type", Object)
5661
5712
  ], FsRowInlineActionComponent.prototype, "clicked", void 0);
5713
+ __decorate([
5714
+ Output(),
5715
+ __metadata("design:type", Object)
5716
+ ], FsRowInlineActionComponent.prototype, "fileSelect", void 0);
5662
5717
  FsRowInlineActionComponent = __decorate([
5663
5718
  Component({
5664
5719
  selector: 'fs-list-row-inline-action',
5665
- template: "<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent let-value=\"value\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-template>\n</ng-container>\n",
5720
+ template: "<ng-container *ngIf=\"action.isShown\" [ngSwitch]=\"action.type\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-raised-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-icon-button\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!action.routerLink; else link\">\n <button type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"action.classArray\"\n >\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a mat-mini-fab\n [routerLink]=\"action.routerLink.link\"\n [queryParams]=\"action.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!action.fileUploadFn else uploadFileBtn\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </ng-container>\n\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [multiple]=\"action.fileMultiple\"\n (select)=\"fileSelected($event)\"\n (error)=\"action.fileUploadErrorFn && action.fileUploadErrorFn($event)\">\n <mat-icon *ngIf=\"action.icon\">{{action.icon}}</mat-icon>\n {{action.label}}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>\n",
5666
5721
  changeDetection: ChangeDetectionStrategy.OnPush
5667
5722
  }),
5668
5723
  __metadata("design:paramtypes", [FsPrompt])
@@ -5670,6 +5725,45 @@ var FsRowInlineActionComponent = /** @class */ (function () {
5670
5725
  return FsRowInlineActionComponent;
5671
5726
  }());
5672
5727
 
5728
+ var FsRowMenuActionComponent = /** @class */ (function () {
5729
+ function FsRowMenuActionComponent() {
5730
+ this.fileSelect = new EventEmitter();
5731
+ this.fileError = new EventEmitter();
5732
+ }
5733
+ __decorate([
5734
+ Input(),
5735
+ __metadata("design:type", String)
5736
+ ], FsRowMenuActionComponent.prototype, "icon", void 0);
5737
+ __decorate([
5738
+ Input(),
5739
+ __metadata("design:type", String)
5740
+ ], FsRowMenuActionComponent.prototype, "label", void 0);
5741
+ __decorate([
5742
+ Input(),
5743
+ __metadata("design:type", Boolean)
5744
+ ], FsRowMenuActionComponent.prototype, "file", void 0);
5745
+ __decorate([
5746
+ Input(),
5747
+ __metadata("design:type", Boolean)
5748
+ ], FsRowMenuActionComponent.prototype, "fileMultiple", void 0);
5749
+ __decorate([
5750
+ Output(),
5751
+ __metadata("design:type", Object)
5752
+ ], FsRowMenuActionComponent.prototype, "fileSelect", void 0);
5753
+ __decorate([
5754
+ Output(),
5755
+ __metadata("design:type", Object)
5756
+ ], FsRowMenuActionComponent.prototype, "fileError", void 0);
5757
+ FsRowMenuActionComponent = __decorate([
5758
+ Component({
5759
+ selector: 'fs-list-row-menu-action',
5760
+ template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n</ng-container>\n\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [multiple]=\"fileMultiple\"\n (select)=\"fileSelect.emit($event)\"\n (error)=\"fileError.emit($event)\">\n <mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\n {{label}}\n </fs-file>\n</ng-template>\n",
5761
+ changeDetection: ChangeDetectionStrategy.OnPush
5762
+ })
5763
+ ], FsRowMenuActionComponent);
5764
+ return FsRowMenuActionComponent;
5765
+ }());
5766
+
5673
5767
  var FsListManageSavedFiltersComponent = /** @class */ (function () {
5674
5768
  function FsListManageSavedFiltersComponent(_externalParams) {
5675
5769
  this._externalParams = _externalParams;
@@ -5892,6 +5986,7 @@ var FsListModule = /** @class */ (function () {
5892
5986
  FsPromptModule,
5893
5987
  MatDialogModule,
5894
5988
  MatTooltipModule,
5989
+ FsFileModule,
5895
5990
  ],
5896
5991
  declarations: [
5897
5992
  // Components
@@ -5899,6 +5994,7 @@ var FsListModule = /** @class */ (function () {
5899
5994
  FsRowComponent,
5900
5995
  FsRowActionsComponent,
5901
5996
  FsRowInlineActionComponent,
5997
+ FsRowMenuActionComponent,
5902
5998
  FsCellComponent,
5903
5999
  FsFooterRowComponent,
5904
6000
  FsFooterCellComponent,
@@ -5959,5 +6055,5 @@ function FsListConfigFactory(config) {
5959
6055
  * Generated bundle index. Do not edit.
5960
6056
  */
5961
6057
 
5962
- export { ActionType, Column, FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListEmptyStateDirective, FsListFooterDirective, FsListHeaderDirective, FsListModule, FsListState, FsPaginationComponent, FsRowComponent, FsStatusComponent, List, PaginationController, PaginationStrategy, ReorderController, ReorderPosition, ReorderStrategy, RowAction, RowType, SelectionChangeType, SelectionController, SortingController, SortingDirection, StyleConfig, FsListConfigFactory as ɵa, GroupExpandNotifierService as ɵb, PersistanceController as ɵc, FsListGroupCellDirective as ɵd, FsListGroupExpandTriggerDirective as ɵe, FsListDraggableListDirective as ɵf, FsRowActionsComponent as ɵg, FsRowInlineActionComponent as ɵh, FsListLoaderComponent as ɵi, FsListSavedFiltersComponent as ɵj, FsListManageSavedFiltersComponent as ɵk, FsListDraggableRowDirective as ɵl, CustomizeColsDialogComponent as ɵm };
6058
+ export { ActionType, Column, FS_LIST_CONFIG, FS_LIST_DEFAULT_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListEmptyStateDirective, FsListFooterDirective, FsListHeaderDirective, FsListModule, FsListState, FsPaginationComponent, FsRowComponent, FsStatusComponent, List, PaginationController, PaginationStrategy, ReorderController, ReorderPosition, ReorderStrategy, RowAction, RowType, SelectionChangeType, SelectionController, SortingController, SortingDirection, StyleConfig, FsListConfigFactory as ɵa, GroupExpandNotifierService as ɵb, PersistanceController as ɵc, FsListGroupCellDirective as ɵd, FsListGroupExpandTriggerDirective as ɵe, FsListDraggableListDirective as ɵf, FsRowActionsComponent as ɵg, FsRowInlineActionComponent as ɵh, FsRowMenuActionComponent as ɵi, FsListLoaderComponent as ɵj, FsListSavedFiltersComponent as ɵk, FsListManageSavedFiltersComponent as ɵl, FsListDraggableRowDirective as ɵm, CustomizeColsDialogComponent as ɵn };
5963
6059
  //# sourceMappingURL=firestitch-list.js.map