@firestitch/list 9.11.3 → 9.12.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 (32) hide show
  1. package/app/components/body/row/inline-action/inline-action.component.d.ts +3 -0
  2. package/app/components/body/row/menu-action/menu-action.component.d.ts +9 -0
  3. package/app/interfaces/listconfig.interface.d.ts +9 -0
  4. package/app/models/row-action.model.d.ts +4 -1
  5. package/bundles/firestitch-list.umd.js +70 -11
  6. package/bundles/firestitch-list.umd.js.map +1 -1
  7. package/bundles/firestitch-list.umd.min.js +2 -2
  8. package/bundles/firestitch-list.umd.min.js.map +1 -1
  9. package/esm2015/app/components/body/row/actions/actions.component.js +2 -2
  10. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +10 -2
  11. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +41 -0
  12. package/esm2015/app/fs-list.module.js +5 -1
  13. package/esm2015/app/interfaces/listconfig.interface.js +1 -1
  14. package/esm2015/app/models/row-action.model.js +10 -1
  15. package/esm2015/firestitch-list.js +7 -6
  16. package/esm2015/public_api.js +1 -1
  17. package/esm5/app/components/body/row/actions/actions.component.js +2 -2
  18. package/esm5/app/components/body/row/inline-action/inline-action.component.js +10 -2
  19. package/esm5/app/components/body/row/menu-action/menu-action.component.js +42 -0
  20. package/esm5/app/fs-list.module.js +5 -1
  21. package/esm5/app/interfaces/listconfig.interface.js +1 -1
  22. package/esm5/app/models/row-action.model.js +10 -1
  23. package/esm5/firestitch-list.js +7 -6
  24. package/esm5/public_api.js +1 -1
  25. package/fesm2015/firestitch-list.js +61 -3
  26. package/fesm2015/firestitch-list.js.map +1 -1
  27. package/fesm5/firestitch-list.js +62 -3
  28. package/fesm5/firestitch-list.js.map +1 -1
  29. package/firestitch-list.d.ts +7 -6
  30. package/firestitch-list.metadata.json +1 -1
  31. package/package.json +1 -1
  32. package/public_api.d.ts +1 -1
@@ -1,10 +1,13 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { FsPrompt } from '@firestitch/prompt';
3
+ import { FsFile } from '@firestitch/file';
3
4
  import { RowAction } from '../../../../models/row-action.model';
4
5
  export declare class FsRowInlineActionComponent {
5
6
  private _fsPrompt;
6
7
  action: RowAction;
7
8
  clicked: EventEmitter<any>;
9
+ fileSelect: EventEmitter<FsFile | FsFile[]>;
8
10
  constructor(_fsPrompt: FsPrompt);
9
11
  actionClick(event: any): void;
12
+ fileSelected(event: any): void;
10
13
  }
@@ -0,0 +1,9 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ export declare class FsRowMenuActionComponent {
3
+ icon: string;
4
+ label: string;
5
+ file: boolean;
6
+ fileMultiple: boolean;
7
+ fileSelect: EventEmitter<any>;
8
+ fileError: EventEmitter<any>;
9
+ }
@@ -1,6 +1,7 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { FsSelectionActionSelected, FsSelectionDialogConfigAction, SelectionRef } from '@firestitch/selection';
3
3
  import { IFilterConfigItem, IFilterConfigDateItem, FsFilterPersistance, IFilterSavedFiltersConfig, FsFilterAction, ChangeFn } from '@firestitch/filter';
4
+ import { FsFile } from '@firestitch/file';
4
5
  import { ActionType } from '../enums/button-type.enum';
5
6
  import { ReorderPosition, ReorderStrategy } from '../classes/reorder-controller';
6
7
  import { PaginationStrategy } from '../enums/pagination-strategy.enum';
@@ -150,6 +151,11 @@ export interface FsListRowAction {
150
151
  menu?: boolean;
151
152
  click?: (row: any, event: any, index: any) => void;
152
153
  link?: FsListRowActionLinkFn;
154
+ file?: {
155
+ select: FsListRowActionFileFn;
156
+ error?: (error: unknown) => void;
157
+ multiple?: boolean;
158
+ };
153
159
  show?: (row: any, index: number) => boolean;
154
160
  remove?: {
155
161
  title?: string;
@@ -157,6 +163,9 @@ export interface FsListRowAction {
157
163
  } | boolean;
158
164
  restore?: boolean;
159
165
  }
166
+ export interface FsListRowActionFileFn {
167
+ (selection: FsFile | FsFile[], row: FsListAbstractRow, index: number): void;
168
+ }
160
169
  export interface FsListRowActionLinkFn {
161
170
  (row: FsListAbstractRow): FsListRowActionLink;
162
171
  }
@@ -1,6 +1,6 @@
1
1
  import { Model } from 'tsmodels';
2
2
  import { ActionType } from '../enums/button-type.enum';
3
- import { FsListRowActionLink } from '../interfaces';
3
+ import { FsListRowActionFileFn, FsListRowActionLink } from '../interfaces';
4
4
  export declare class RowAction extends Model {
5
5
  icon: string;
6
6
  menu: boolean;
@@ -18,6 +18,9 @@ export declare class RowAction extends Model {
18
18
  classArray: string[];
19
19
  isShown: boolean;
20
20
  click: Function;
21
+ fileUploadFn: FsListRowActionFileFn;
22
+ fileUploadErrorFn: (error: unknown) => void;
23
+ fileMultiple: boolean;
21
24
  private _linkFn;
22
25
  private _labelFn;
23
26
  private readonly _isGroup;
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/router'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/core'), require('@angular/material/dialog'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/tooltip'), require('@angular/material/progress-spinner'), require('@angular/flex-layout'), require('@firestitch/filter'), require('@firestitch/scroll'), require('@firestitch/menu'), require('@firestitch/prompt'), require('lodash-es'), require('rxjs'), require('rxjs/operators'), require('@firestitch/selection'), require('@firestitch/common'), require('@firestitch/drawer'), require('tsmodels'), require('@firestitch/store')) :
3
- typeof define === 'function' && define.amd ? define('@firestitch/list', ['exports', '@angular/core', '@angular/common', '@angular/router', '@angular/material/button', '@angular/material/checkbox', '@angular/material/core', '@angular/material/dialog', '@angular/material/icon', '@angular/material/menu', '@angular/material/tooltip', '@angular/material/progress-spinner', '@angular/flex-layout', '@firestitch/filter', '@firestitch/scroll', '@firestitch/menu', '@firestitch/prompt', 'lodash-es', 'rxjs', 'rxjs/operators', '@firestitch/selection', '@firestitch/common', '@firestitch/drawer', 'tsmodels', '@firestitch/store'], factory) :
4
- (global = global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch.list = {}), global.ng.core, global.ng.common, global.ng.router, global.ng.material.button, global.ng.material.checkbox, global.ng.material.core, global.ng.material.dialog, global.ng.material.icon, global.ng.material.menu, global.ng.material.tooltip, global.ng.material.progressSpinner, global.ng.flexLayout, global.filter, global.scroll, global.menu$1, global.prompt, global.lodashEs, global.rxjs, global.rxjs.operators, global.selection, global.common$1, global.drawer, global.tsmodels, global.store));
5
- }(this, (function (exports, core, common, router, button, checkbox, core$1, dialog, icon, menu, tooltip, progressSpinner, flexLayout, filter, scroll, menu$1, prompt, lodashEs, rxjs, operators, selection, common$1, drawer, tsmodels, store) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/router'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/core'), require('@angular/material/dialog'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/tooltip'), require('@angular/material/progress-spinner'), require('@angular/flex-layout'), require('@firestitch/filter'), require('@firestitch/scroll'), require('@firestitch/menu'), require('@firestitch/prompt'), require('@firestitch/file'), require('lodash-es'), require('rxjs'), require('rxjs/operators'), require('@firestitch/selection'), require('@firestitch/common'), require('@firestitch/drawer'), require('tsmodels'), require('@firestitch/store')) :
3
+ typeof define === 'function' && define.amd ? define('@firestitch/list', ['exports', '@angular/core', '@angular/common', '@angular/router', '@angular/material/button', '@angular/material/checkbox', '@angular/material/core', '@angular/material/dialog', '@angular/material/icon', '@angular/material/menu', '@angular/material/tooltip', '@angular/material/progress-spinner', '@angular/flex-layout', '@firestitch/filter', '@firestitch/scroll', '@firestitch/menu', '@firestitch/prompt', '@firestitch/file', 'lodash-es', 'rxjs', 'rxjs/operators', '@firestitch/selection', '@firestitch/common', '@firestitch/drawer', 'tsmodels', '@firestitch/store'], factory) :
4
+ (global = global || self, factory((global.firestitch = global.firestitch || {}, global.firestitch.list = {}), global.ng.core, global.ng.common, global.ng.router, global.ng.material.button, global.ng.material.checkbox, global.ng.material.core, global.ng.material.dialog, global.ng.material.icon, global.ng.material.menu, global.ng.material.tooltip, global.ng.material.progressSpinner, global.ng.flexLayout, global.filter, global.scroll, global.menu$1, global.prompt, global.file, global.lodashEs, global.rxjs, global.rxjs.operators, global.selection, global.common$1, global.drawer, global.tsmodels, global.store));
5
+ }(this, (function (exports, core, common, router, button, checkbox, core$1, dialog, icon, menu, tooltip, progressSpinner, flexLayout, filter, scroll, menu$1, prompt, file, lodashEs, rxjs, operators, selection, common$1, drawer, tsmodels, store) { 'use strict';
6
6
 
7
7
  /*! *****************************************************************************
8
8
  Copyright (c) Microsoft Corporation. All rights reserved.
@@ -550,6 +550,15 @@
550
550
  return _this.clickEvent(row, event, index, rowActionsRef, clickFn);
551
551
  };
552
552
  this._linkFn = value.link;
553
+ if (value.file) {
554
+ if (value.file.select) {
555
+ this.fileUploadFn = function (selection, row, index) {
556
+ value.file.select(selection, row, index);
557
+ };
558
+ }
559
+ this.fileUploadErrorFn = value.file.error;
560
+ this.fileMultiple = value.file.multiple;
561
+ }
553
562
  if (typeof value.label === 'function') {
554
563
  this._labelFn = value.label;
555
564
  this.label = '';
@@ -5862,7 +5871,7 @@
5862
5871
  FsRowActionsComponent = __decorate([
5863
5872
  core.Component({
5864
5873
  selector: 'fs-list-row-actions',
5865
- 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",
5874
+ 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",
5866
5875
  changeDetection: core.ChangeDetectionStrategy.OnPush
5867
5876
  }),
5868
5877
  __metadata("design:paramtypes", [prompt.FsPrompt])
@@ -5874,10 +5883,14 @@
5874
5883
  function FsRowInlineActionComponent(_fsPrompt) {
5875
5884
  this._fsPrompt = _fsPrompt;
5876
5885
  this.clicked = new core.EventEmitter();
5886
+ this.fileSelect = new core.EventEmitter();
5877
5887
  }
5878
5888
  FsRowInlineActionComponent.prototype.actionClick = function (event) {
5879
5889
  this.clicked.emit(event);
5880
5890
  };
5891
+ FsRowInlineActionComponent.prototype.fileSelected = function (event) {
5892
+ this.fileSelect.emit(event);
5893
+ };
5881
5894
  FsRowInlineActionComponent.ctorParameters = function () { return [
5882
5895
  { type: prompt.FsPrompt }
5883
5896
  ]; };
@@ -5889,10 +5902,14 @@
5889
5902
  core.Output(),
5890
5903
  __metadata("design:type", Object)
5891
5904
  ], FsRowInlineActionComponent.prototype, "clicked", void 0);
5905
+ __decorate([
5906
+ core.Output(),
5907
+ __metadata("design:type", Object)
5908
+ ], FsRowInlineActionComponent.prototype, "fileSelect", void 0);
5892
5909
  FsRowInlineActionComponent = __decorate([
5893
5910
  core.Component({
5894
5911
  selector: 'fs-list-row-inline-action',
5895
- 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",
5912
+ 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",
5896
5913
  changeDetection: core.ChangeDetectionStrategy.OnPush
5897
5914
  }),
5898
5915
  __metadata("design:paramtypes", [prompt.FsPrompt])
@@ -5900,6 +5917,45 @@
5900
5917
  return FsRowInlineActionComponent;
5901
5918
  }());
5902
5919
 
5920
+ var FsRowMenuActionComponent = /** @class */ (function () {
5921
+ function FsRowMenuActionComponent() {
5922
+ this.fileSelect = new core.EventEmitter();
5923
+ this.fileError = new core.EventEmitter();
5924
+ }
5925
+ __decorate([
5926
+ core.Input(),
5927
+ __metadata("design:type", String)
5928
+ ], FsRowMenuActionComponent.prototype, "icon", void 0);
5929
+ __decorate([
5930
+ core.Input(),
5931
+ __metadata("design:type", String)
5932
+ ], FsRowMenuActionComponent.prototype, "label", void 0);
5933
+ __decorate([
5934
+ core.Input(),
5935
+ __metadata("design:type", Boolean)
5936
+ ], FsRowMenuActionComponent.prototype, "file", void 0);
5937
+ __decorate([
5938
+ core.Input(),
5939
+ __metadata("design:type", Boolean)
5940
+ ], FsRowMenuActionComponent.prototype, "fileMultiple", void 0);
5941
+ __decorate([
5942
+ core.Output(),
5943
+ __metadata("design:type", Object)
5944
+ ], FsRowMenuActionComponent.prototype, "fileSelect", void 0);
5945
+ __decorate([
5946
+ core.Output(),
5947
+ __metadata("design:type", Object)
5948
+ ], FsRowMenuActionComponent.prototype, "fileError", void 0);
5949
+ FsRowMenuActionComponent = __decorate([
5950
+ core.Component({
5951
+ selector: 'fs-list-row-menu-action',
5952
+ 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",
5953
+ changeDetection: core.ChangeDetectionStrategy.OnPush
5954
+ })
5955
+ ], FsRowMenuActionComponent);
5956
+ return FsRowMenuActionComponent;
5957
+ }());
5958
+
5903
5959
  var FsListManageSavedFiltersComponent = /** @class */ (function () {
5904
5960
  function FsListManageSavedFiltersComponent(_externalParams) {
5905
5961
  this._externalParams = _externalParams;
@@ -6122,6 +6178,7 @@
6122
6178
  prompt.FsPromptModule,
6123
6179
  dialog.MatDialogModule,
6124
6180
  tooltip.MatTooltipModule,
6181
+ file.FsFileModule,
6125
6182
  ],
6126
6183
  declarations: [
6127
6184
  // Components
@@ -6129,6 +6186,7 @@
6129
6186
  FsRowComponent,
6130
6187
  FsRowActionsComponent,
6131
6188
  FsRowInlineActionComponent,
6189
+ FsRowMenuActionComponent,
6132
6190
  FsCellComponent,
6133
6191
  FsFooterRowComponent,
6134
6192
  FsFooterCellComponent,
@@ -6216,11 +6274,12 @@
6216
6274
  exports.ɵf = FsListDraggableListDirective;
6217
6275
  exports.ɵg = FsRowActionsComponent;
6218
6276
  exports.ɵh = FsRowInlineActionComponent;
6219
- exports.ɵi = FsListLoaderComponent;
6220
- exports.ɵj = FsListSavedFiltersComponent;
6221
- exports.ɵk = FsListManageSavedFiltersComponent;
6222
- exports.ɵl = FsListDraggableRowDirective;
6223
- exports.ɵm = CustomizeColsDialogComponent;
6277
+ exports.ɵi = FsRowMenuActionComponent;
6278
+ exports.ɵj = FsListLoaderComponent;
6279
+ exports.ɵk = FsListSavedFiltersComponent;
6280
+ exports.ɵl = FsListManageSavedFiltersComponent;
6281
+ exports.ɵm = FsListDraggableRowDirective;
6282
+ exports.ɵn = CustomizeColsDialogComponent;
6224
6283
 
6225
6284
  Object.defineProperty(exports, '__esModule', { value: true });
6226
6285