@firestitch/list 18.0.46 → 18.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/classes/list-controller.d.ts +2 -2
- package/app/components/body/row/actions/actions.component.d.ts +1 -3
- package/app/components/body/row/menu-action/menu-action.component.d.ts +0 -2
- package/app/components/body/row/row.component.d.ts +11 -12
- package/app/components/footer/footer-row/footer-row.component.d.ts +0 -2
- package/app/components/head/head-cell/head-cell.component.d.ts +2 -2
- package/app/components/head/head.component.d.ts +1 -2
- package/app/components/list/list.component.d.ts +2 -8
- package/app/directives/draggable-list/draggable-list.directive.d.ts +0 -3
- package/app/directives/draggable-row/draggable-row.directive.d.ts +1 -4
- package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +0 -2
- package/app/fs-list.module.d.ts +1 -1
- package/app/interfaces/listconfig.interface.d.ts +5 -4
- package/app/models/row-action.model.d.ts +2 -5
- package/esm2022/app/classes/list-controller.mjs +4 -4
- package/esm2022/app/components/body/body.component.mjs +4 -6
- package/esm2022/app/components/body/row/actions/actions.component.mjs +16 -22
- package/esm2022/app/components/body/row/menu-action/menu-action.component.mjs +9 -15
- package/esm2022/app/components/body/row/row.component.mjs +49 -54
- package/esm2022/app/components/customize-cols/customize-cols.component.mjs +5 -6
- package/esm2022/app/components/footer/footer-row/footer-row.component.mjs +7 -12
- package/esm2022/app/components/head/head-cell/head-cell.component.mjs +11 -16
- package/esm2022/app/components/head/head.component.mjs +9 -14
- package/esm2022/app/components/list/list.component.mjs +16 -39
- package/esm2022/app/components/loader/loader.component.mjs +3 -4
- package/esm2022/app/components/pagination/pagination.component.mjs +5 -6
- package/esm2022/app/directives/draggable-list/draggable-list.directive.mjs +9 -17
- package/esm2022/app/directives/draggable-row/draggable-row.directive.mjs +8 -16
- package/esm2022/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs +5 -9
- package/esm2022/app/fs-list.module.mjs +4 -2
- package/esm2022/app/interfaces/listconfig.interface.mjs +1 -1
- package/esm2022/app/models/row-action.model.mjs +1 -1
- package/esm2022/public_api.mjs +2 -1
- package/fesm2022/firestitch-list.mjs +436 -499
- package/fesm2022/firestitch-list.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +2 -1
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Directive, Input,
|
|
2
|
+
import { Injectable, inject, ChangeDetectorRef, NgZone, ElementRef, Renderer2, Directive, Input, Pipe, EventEmitter, Component, ChangeDetectionStrategy, Output, input, effect, HostBinding, computed, KeyValueDiffers, TemplateRef, ViewContainerRef, ViewChild, ContentChild, HostListener, ContentChildren, InjectionToken, Injector, NgModule } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject, Subject, Observable, of, merge, from, combineLatest, EMPTY } from 'rxjs';
|
|
4
4
|
import { takeUntil, take, filter, tap, skip, distinctUntilChanged, map, shareReplay, delay, switchMap, debounceTime, mapTo, catchError } from 'rxjs/operators';
|
|
5
5
|
import { get, isString, isObject, isBoolean, isNumber, isFunction, cloneDeep, random, mergeWith } from 'lodash-es';
|
|
6
|
-
import {
|
|
6
|
+
import { NgIf, NgSwitch, NgSwitchCase, NgClass, NgTemplateOutlet, AsyncPipe, Location, NgFor, DecimalPipe } from '@angular/common';
|
|
7
7
|
import { MatCheckbox } from '@angular/material/checkbox';
|
|
8
8
|
import { MatIcon } from '@angular/material/icon';
|
|
9
|
-
import * as i1$
|
|
9
|
+
import * as i1$1 from '@firestitch/menu';
|
|
10
|
+
import { FsMenuComponent, FsMenuModule } from '@firestitch/menu';
|
|
11
|
+
import { FsPrompt } from '@firestitch/prompt';
|
|
10
12
|
import * as i1 from '@firestitch/file';
|
|
11
13
|
import { FsFileModule } from '@firestitch/file';
|
|
12
14
|
import { MatButton, MatAnchor, MatIconButton, MatIconAnchor, MatFabButton, MatFabAnchor, MatMiniFabButton, MatMiniFabAnchor } from '@angular/material/button';
|
|
13
|
-
import
|
|
14
|
-
import {
|
|
15
|
-
import * as i1$
|
|
16
|
-
import { FsMenuModule } from '@firestitch/menu';
|
|
17
|
-
import * as i3 from '@angular/material/dialog';
|
|
18
|
-
import { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';
|
|
19
|
-
import * as i1$3 from '@firestitch/common';
|
|
15
|
+
import { RouterLink, ActivatedRoute } from '@angular/router';
|
|
16
|
+
import { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialog } from '@angular/material/dialog';
|
|
17
|
+
import * as i1$2 from '@firestitch/common';
|
|
20
18
|
import { getNormalizedPath, FsCommonModule } from '@firestitch/common';
|
|
21
19
|
import { FsStore } from '@firestitch/store';
|
|
22
20
|
import { CdkScrollable } from '@angular/cdk/scrolling';
|
|
23
21
|
import { DrawerRef } from '@firestitch/drawer';
|
|
24
22
|
import { ItemType, FilterComponent, FilterStatusBarDirective, FilterHeadingDirective } from '@firestitch/filter';
|
|
25
|
-
import
|
|
23
|
+
import { SelectionDialog } from '@firestitch/selection';
|
|
26
24
|
import { MatRipple } from '@angular/material/core';
|
|
27
25
|
import { MatProgressSpinner } from '@angular/material/progress-spinner';
|
|
28
26
|
import { MatTooltip } from '@angular/material/tooltip';
|
|
@@ -865,11 +863,11 @@ class SelectionController {
|
|
|
865
863
|
}
|
|
866
864
|
|
|
867
865
|
class FsListDraggableListDirective {
|
|
868
|
-
_cdRef;
|
|
869
|
-
_zone;
|
|
870
|
-
_containerElement;
|
|
871
|
-
_reorderController;
|
|
872
|
-
_renderer;
|
|
866
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
867
|
+
_zone = inject(NgZone);
|
|
868
|
+
_containerElement = inject(ElementRef);
|
|
869
|
+
_reorderController = inject(ReorderController);
|
|
870
|
+
_renderer = inject(Renderer2);
|
|
873
871
|
// Draggable Element
|
|
874
872
|
_draggableElement;
|
|
875
873
|
_draggableElementPreview;
|
|
@@ -888,13 +886,6 @@ class FsListDraggableListDirective {
|
|
|
888
886
|
_draggableChildrenDirectives = [];
|
|
889
887
|
_selectedRowsDirectives = [];
|
|
890
888
|
_destroy$ = new Subject();
|
|
891
|
-
constructor(_cdRef, _zone, _containerElement, _reorderController, _renderer) {
|
|
892
|
-
this._cdRef = _cdRef;
|
|
893
|
-
this._zone = _zone;
|
|
894
|
-
this._containerElement = _containerElement;
|
|
895
|
-
this._reorderController = _reorderController;
|
|
896
|
-
this._renderer = _renderer;
|
|
897
|
-
}
|
|
898
889
|
_windowTouchMoveHandler = () => {
|
|
899
890
|
//
|
|
900
891
|
};
|
|
@@ -1189,7 +1180,7 @@ class FsListDraggableListDirective {
|
|
|
1189
1180
|
e.preventDefault();
|
|
1190
1181
|
}
|
|
1191
1182
|
}
|
|
1192
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableListDirective, deps: [
|
|
1183
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1193
1184
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListDraggableListDirective, isStandalone: true, selector: "[fsListDraggableList]", inputs: { _rows: ["rows", "_rows"] }, ngImport: i0 });
|
|
1194
1185
|
}
|
|
1195
1186
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableListDirective, decorators: [{
|
|
@@ -1198,11 +1189,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
1198
1189
|
selector: '[fsListDraggableList]',
|
|
1199
1190
|
standalone: true,
|
|
1200
1191
|
}]
|
|
1201
|
-
}],
|
|
1192
|
+
}], propDecorators: { _rows: [{
|
|
1202
1193
|
type: Input,
|
|
1203
1194
|
args: ['rows']
|
|
1204
1195
|
}] } });
|
|
1205
1196
|
|
|
1197
|
+
class FsListDraggableRowDirective {
|
|
1198
|
+
_el = inject(ElementRef);
|
|
1199
|
+
_renderer = inject(Renderer2);
|
|
1200
|
+
_reorderController = inject(ReorderController);
|
|
1201
|
+
_draggableList = inject(FsListDraggableListDirective);
|
|
1202
|
+
row;
|
|
1203
|
+
_destroy$ = new Subject();
|
|
1204
|
+
get elRef() {
|
|
1205
|
+
return this._el;
|
|
1206
|
+
}
|
|
1207
|
+
ngOnInit() {
|
|
1208
|
+
if (this._reorderController.moveDropCallback) {
|
|
1209
|
+
this._listenDragEvents();
|
|
1210
|
+
}
|
|
1211
|
+
this._draggableList.addDraggableDirective(this);
|
|
1212
|
+
}
|
|
1213
|
+
ngOnDestroy() {
|
|
1214
|
+
this._draggableList.removeDraggableDirective(this);
|
|
1215
|
+
this._destroy$.next(null);
|
|
1216
|
+
this._destroy$.complete();
|
|
1217
|
+
}
|
|
1218
|
+
dragHide() {
|
|
1219
|
+
this._el.nativeElement.classList.add('drag-hidden');
|
|
1220
|
+
}
|
|
1221
|
+
_listenDragEvents() {
|
|
1222
|
+
this._draggableList
|
|
1223
|
+
.dragStart$
|
|
1224
|
+
.pipe(takeUntil(this._destroy$))
|
|
1225
|
+
.subscribe(() => {
|
|
1226
|
+
this._markReadyToSwapRows();
|
|
1227
|
+
});
|
|
1228
|
+
this._draggableList
|
|
1229
|
+
.dragEnd$
|
|
1230
|
+
.pipe(takeUntil(this._destroy$))
|
|
1231
|
+
.subscribe(() => {
|
|
1232
|
+
this._unmarkRows();
|
|
1233
|
+
});
|
|
1234
|
+
}
|
|
1235
|
+
_markReadyToSwapRows() {
|
|
1236
|
+
const currentEl = this.row;
|
|
1237
|
+
const targetEl = this._draggableList.draggableItem;
|
|
1238
|
+
this.row.readyToSwap = this._reorderController.moveDropCallback({
|
|
1239
|
+
row1: currentEl?.data,
|
|
1240
|
+
row2: targetEl?.data,
|
|
1241
|
+
group1: isChildTypeRow(currentEl) ? currentEl.parent?.data : null,
|
|
1242
|
+
group2: isChildTypeRow(targetEl) ? targetEl.parent?.data : null,
|
|
1243
|
+
});
|
|
1244
|
+
if (!this.row.readyToSwap) {
|
|
1245
|
+
this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
_unmarkRows() {
|
|
1249
|
+
if (!this.row.readyToSwap) {
|
|
1250
|
+
this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1254
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListDraggableRowDirective, isStandalone: true, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
|
|
1255
|
+
}
|
|
1256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
|
|
1257
|
+
type: Directive,
|
|
1258
|
+
args: [{
|
|
1259
|
+
selector: '[fsListDraggableRow]',
|
|
1260
|
+
standalone: true,
|
|
1261
|
+
}]
|
|
1262
|
+
}], propDecorators: { row: [{
|
|
1263
|
+
type: Input
|
|
1264
|
+
}] } });
|
|
1265
|
+
|
|
1206
1266
|
var ActionType;
|
|
1207
1267
|
(function (ActionType) {
|
|
1208
1268
|
ActionType["Basic"] = "basic";
|
|
@@ -1316,6 +1376,223 @@ class RowAction {
|
|
|
1316
1376
|
}
|
|
1317
1377
|
}
|
|
1318
1378
|
|
|
1379
|
+
class ActionLabelPipe {
|
|
1380
|
+
transform(label, row) {
|
|
1381
|
+
if (typeof label === 'function') {
|
|
1382
|
+
return label(row.data);
|
|
1383
|
+
}
|
|
1384
|
+
return label;
|
|
1385
|
+
}
|
|
1386
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActionLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1387
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ActionLabelPipe, isStandalone: true, name: "actionLabel" });
|
|
1388
|
+
}
|
|
1389
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActionLabelPipe, decorators: [{
|
|
1390
|
+
type: Pipe,
|
|
1391
|
+
args: [{
|
|
1392
|
+
name: 'actionLabel',
|
|
1393
|
+
standalone: true
|
|
1394
|
+
}]
|
|
1395
|
+
}] });
|
|
1396
|
+
|
|
1397
|
+
class FsRowInlineActionComponent {
|
|
1398
|
+
actionType;
|
|
1399
|
+
rowAction;
|
|
1400
|
+
row;
|
|
1401
|
+
clicked = new EventEmitter();
|
|
1402
|
+
fileSelect = new EventEmitter();
|
|
1403
|
+
icon;
|
|
1404
|
+
ngOnChanges(changes) {
|
|
1405
|
+
if (changes.row) {
|
|
1406
|
+
this.icon = this.rowAction.getRowIcon(this.row.data);
|
|
1407
|
+
}
|
|
1408
|
+
}
|
|
1409
|
+
actionClick(event) {
|
|
1410
|
+
this.clicked.emit(event);
|
|
1411
|
+
}
|
|
1412
|
+
ngOnInit() {
|
|
1413
|
+
this.actionType = this.rowAction.type;
|
|
1414
|
+
if (!this.rowAction.label && this.rowAction.icon) {
|
|
1415
|
+
this.actionType = ActionType.Icon;
|
|
1416
|
+
}
|
|
1417
|
+
}
|
|
1418
|
+
fileSelected(event) {
|
|
1419
|
+
this.fileSelect.emit(event);
|
|
1420
|
+
}
|
|
1421
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1422
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowInlineActionComponent, isStandalone: true, selector: "fs-list-row-inline-action", inputs: { rowAction: "rowAction", row: "row" }, outputs: { clicked: "clicked", fileSelect: "fileSelect" }, usesOnChanges: true, ngImport: i0, template: "<ng-container\n *ngIf=\"rowAction.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!rowAction.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: MatFabAnchor, selector: "a[mat-fab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: MatMiniFabAnchor, selector: "a[mat-mini-fab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsFileModule }, { kind: "component", type: i1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1423
|
+
}
|
|
1424
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
|
|
1425
|
+
type: Component,
|
|
1426
|
+
args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1427
|
+
NgIf,
|
|
1428
|
+
NgSwitch,
|
|
1429
|
+
NgSwitchCase,
|
|
1430
|
+
MatButton,
|
|
1431
|
+
NgClass,
|
|
1432
|
+
NgTemplateOutlet,
|
|
1433
|
+
MatAnchor,
|
|
1434
|
+
RouterLink,
|
|
1435
|
+
MatIconButton,
|
|
1436
|
+
MatIconAnchor,
|
|
1437
|
+
MatFabButton,
|
|
1438
|
+
MatFabAnchor,
|
|
1439
|
+
MatMiniFabButton,
|
|
1440
|
+
MatMiniFabAnchor,
|
|
1441
|
+
MatIcon,
|
|
1442
|
+
FsFileModule,
|
|
1443
|
+
], template: "<ng-container\n *ngIf=\"rowAction.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!rowAction.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"] }]
|
|
1444
|
+
}], propDecorators: { rowAction: [{
|
|
1445
|
+
type: Input
|
|
1446
|
+
}], row: [{
|
|
1447
|
+
type: Input
|
|
1448
|
+
}], clicked: [{
|
|
1449
|
+
type: Output
|
|
1450
|
+
}], fileSelect: [{
|
|
1451
|
+
type: Output
|
|
1452
|
+
}] } });
|
|
1453
|
+
|
|
1454
|
+
class FsRowMenuActionComponent {
|
|
1455
|
+
_menu = inject(FsMenuComponent);
|
|
1456
|
+
row;
|
|
1457
|
+
rowAction;
|
|
1458
|
+
file;
|
|
1459
|
+
fileSelect = new EventEmitter();
|
|
1460
|
+
fileError = new EventEmitter();
|
|
1461
|
+
icon;
|
|
1462
|
+
label;
|
|
1463
|
+
ngOnChanges(changes) {
|
|
1464
|
+
if (changes.row) {
|
|
1465
|
+
this.icon = this.rowAction.getRowIcon(this.row.data);
|
|
1466
|
+
}
|
|
1467
|
+
}
|
|
1468
|
+
selectFile(event) {
|
|
1469
|
+
this.fileSelect.emit(event);
|
|
1470
|
+
this.closeMenu();
|
|
1471
|
+
}
|
|
1472
|
+
errorFile(event) {
|
|
1473
|
+
this.fileError.emit(event);
|
|
1474
|
+
this.closeMenu();
|
|
1475
|
+
}
|
|
1476
|
+
closeMenu() {
|
|
1477
|
+
this._menu.closeMenu();
|
|
1478
|
+
}
|
|
1479
|
+
ngOnInit() {
|
|
1480
|
+
this.label = this.rowAction.label;
|
|
1481
|
+
}
|
|
1482
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1483
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsRowMenuActionComponent, isStandalone: true, selector: "fs-list-row-menu-action", inputs: { row: "row", rowAction: "rowAction", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, usesOnChanges: true, ngImport: i0, template: "@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}\n", dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsFileModule }, { kind: "component", type: i1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1484
|
+
}
|
|
1485
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
|
|
1486
|
+
type: Component,
|
|
1487
|
+
args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1488
|
+
MatIcon,
|
|
1489
|
+
FsFileModule,
|
|
1490
|
+
ActionLabelPipe
|
|
1491
|
+
], template: "@if (!file) {\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n} @else {\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n @if (icon) {\n <mat-icon>\n {{ icon }}\n </mat-icon>\n }\n {{ label| actionLabel:row }}\n </fs-file>\n}\n" }]
|
|
1492
|
+
}], propDecorators: { row: [{
|
|
1493
|
+
type: Input
|
|
1494
|
+
}], rowAction: [{
|
|
1495
|
+
type: Input
|
|
1496
|
+
}], file: [{
|
|
1497
|
+
type: Input
|
|
1498
|
+
}], fileSelect: [{
|
|
1499
|
+
type: Output
|
|
1500
|
+
}], fileError: [{
|
|
1501
|
+
type: Output
|
|
1502
|
+
}] } });
|
|
1503
|
+
|
|
1504
|
+
class FsRowActionsComponent {
|
|
1505
|
+
row;
|
|
1506
|
+
index;
|
|
1507
|
+
restoreMode = false;
|
|
1508
|
+
rowActions = [];
|
|
1509
|
+
rowRemoved;
|
|
1510
|
+
menuRowActions = [];
|
|
1511
|
+
inlineRowActions = [];
|
|
1512
|
+
restoreAction;
|
|
1513
|
+
_destroy$ = new Subject();
|
|
1514
|
+
_prompt = inject(FsPrompt);
|
|
1515
|
+
actionClick(action, row, event, menuRef) {
|
|
1516
|
+
if (action.remove) {
|
|
1517
|
+
if (action.remove instanceof Object) {
|
|
1518
|
+
this._prompt.confirm({
|
|
1519
|
+
title: action.remove.title,
|
|
1520
|
+
template: action.remove.template,
|
|
1521
|
+
autofocus: true,
|
|
1522
|
+
})
|
|
1523
|
+
.pipe(take(1), takeUntil(this._destroy$))
|
|
1524
|
+
.subscribe(() => {
|
|
1525
|
+
this._removeAction(action, row.data, event, this.index);
|
|
1526
|
+
});
|
|
1527
|
+
}
|
|
1528
|
+
else {
|
|
1529
|
+
this._removeAction(action, row.data, event, this.index);
|
|
1530
|
+
}
|
|
1531
|
+
}
|
|
1532
|
+
else {
|
|
1533
|
+
action.click(row.data, event, this.index, menuRef);
|
|
1534
|
+
}
|
|
1535
|
+
}
|
|
1536
|
+
/**
|
|
1537
|
+
* Track By for improve change detection
|
|
1538
|
+
*
|
|
1539
|
+
* @param index
|
|
1540
|
+
*/
|
|
1541
|
+
trackByFn(index) {
|
|
1542
|
+
return index;
|
|
1543
|
+
}
|
|
1544
|
+
/**
|
|
1545
|
+
* Emit that some row must be removed
|
|
1546
|
+
*
|
|
1547
|
+
* @param action
|
|
1548
|
+
* @param row
|
|
1549
|
+
* @param event
|
|
1550
|
+
* @param index
|
|
1551
|
+
*/
|
|
1552
|
+
_removeAction(action, row, event, index) {
|
|
1553
|
+
const removeObservable = action.click(row, event, index);
|
|
1554
|
+
if (removeObservable && removeObservable instanceof Observable) {
|
|
1555
|
+
removeObservable
|
|
1556
|
+
.pipe(take(1), takeUntil(this._destroy$))
|
|
1557
|
+
.subscribe(() => {
|
|
1558
|
+
this.rowRemoved.emit(row);
|
|
1559
|
+
});
|
|
1560
|
+
}
|
|
1561
|
+
else {
|
|
1562
|
+
this.rowRemoved.emit(row);
|
|
1563
|
+
}
|
|
1564
|
+
}
|
|
1565
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1566
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsRowActionsComponent, isStandalone: true, selector: "fs-list-row-actions", inputs: { row: "row", index: "index", restoreMode: "restoreMode", rowActions: "rowActions", rowRemoved: "rowRemoved", menuRowActions: "menuRowActions", inlineRowActions: "inlineRowActions", restoreAction: "restoreAction" }, ngImport: i0, template: "@if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n }\n}\n<!-- Menu -->\n@if (menuRowActions.length || (restoreMode && restoreAction)) {\n <fs-menu\n class=\"row-menu-action\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n @if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <ng-template\n 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 [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n @for (action of menuRowActions; track trackByFn($index)) {\n @if (action.isGroup) {\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n @for (subAction of action.rowActions; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n }\n }\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n @if (restoreMode && restoreAction) {\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n @if (restoreAction.icon) {\n <mat-icon>\n {{ restoreAction.icon }}\n </mat-icon>\n }\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n }\n </fs-menu>\n}", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"], dependencies: [{ kind: "component", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["rowAction", "row"], outputs: ["clicked", "fileSelect"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FsMenuModule }, { kind: "component", type: i1$1.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i1$1.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "component", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "rowAction", "file"], outputs: ["fileSelect", "fileError"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1567
|
+
}
|
|
1568
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowActionsComponent, decorators: [{
|
|
1569
|
+
type: Component,
|
|
1570
|
+
args: [{ selector: 'fs-list-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1571
|
+
FsRowInlineActionComponent,
|
|
1572
|
+
NgClass,
|
|
1573
|
+
FsMenuModule,
|
|
1574
|
+
FsRowMenuActionComponent,
|
|
1575
|
+
MatIcon,
|
|
1576
|
+
ActionLabelPipe,
|
|
1577
|
+
], template: "@if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n }\n}\n<!-- Menu -->\n@if (menuRowActions.length || (restoreMode && restoreAction)) {\n <fs-menu\n class=\"row-menu-action\"\n #menuRef>\n <!-- Case when we have usual menu actions -->\n @if (!restoreMode || (restoreMode && !restoreAction)) {\n @for (action of inlineRowActions; track trackByFn($index)) {\n <ng-template\n 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 [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n @for (action of menuRowActions; track trackByFn($index)) {\n @if (action.isGroup) {\n <fs-menu-group [label]=\"action.label | actionLabel:row\">\n @for (subAction of action.rowActions; track subAction) {\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n </fs-menu-group>\n } @else {\n <ng-template\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n }\n }\n }\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n @if (restoreMode && restoreAction) {\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n @if (restoreAction.icon) {\n <mat-icon>\n {{ restoreAction.icon }}\n </mat-icon>\n }\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n }\n </fs-menu>\n}", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"] }]
|
|
1578
|
+
}], propDecorators: { row: [{
|
|
1579
|
+
type: Input
|
|
1580
|
+
}], index: [{
|
|
1581
|
+
type: Input
|
|
1582
|
+
}], restoreMode: [{
|
|
1583
|
+
type: Input
|
|
1584
|
+
}], rowActions: [{
|
|
1585
|
+
type: Input
|
|
1586
|
+
}], rowRemoved: [{
|
|
1587
|
+
type: Input
|
|
1588
|
+
}], menuRowActions: [{
|
|
1589
|
+
type: Input
|
|
1590
|
+
}], inlineRowActions: [{
|
|
1591
|
+
type: Input
|
|
1592
|
+
}], restoreAction: [{
|
|
1593
|
+
type: Input
|
|
1594
|
+
}] } });
|
|
1595
|
+
|
|
1319
1596
|
class StyleConfig {
|
|
1320
1597
|
colspan;
|
|
1321
1598
|
align; // Can't be used in tempaltes!
|
|
@@ -1781,291 +2058,60 @@ class FsCellComponent {
|
|
|
1781
2058
|
this.cellContext.group = currentRow.parent.data;
|
|
1782
2059
|
this.cellContext.groupIndex = currentRow.index;
|
|
1783
2060
|
this.cellContext.groupChildren = currentRow.parent.children
|
|
1784
|
-
.map((child) => child.data);
|
|
1785
|
-
}
|
|
1786
|
-
}
|
|
1787
|
-
this.cellContext.column = this.column;
|
|
1788
|
-
if (currentRow) {
|
|
1789
|
-
this.cellContext.$implicit = currentRow.data;
|
|
1790
|
-
this.cellContext.row = currentRow.data;
|
|
1791
|
-
this.cellContext.value = currentRow.data[this.column.name];
|
|
1792
|
-
if (isGroupRow(currentRow)) {
|
|
1793
|
-
this.cellContext.expanded = currentRow.expanded;
|
|
1794
|
-
}
|
|
1795
|
-
}
|
|
1796
|
-
}
|
|
1797
|
-
_initCellTemplate() {
|
|
1798
|
-
const currentRow = this.row();
|
|
1799
|
-
if (currentRow && isGroupRow(currentRow)) {
|
|
1800
|
-
this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;
|
|
1801
|
-
}
|
|
1802
|
-
else if (currentRow && isGroupFooterRow(currentRow)) {
|
|
1803
|
-
this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;
|
|
1804
|
-
}
|
|
1805
|
-
else {
|
|
1806
|
-
this.cellTemplate = this.column.cellTemplate;
|
|
1807
|
-
}
|
|
1808
|
-
}
|
|
1809
|
-
_listenGroupOpen() {
|
|
1810
|
-
const currentRow = this.row();
|
|
1811
|
-
if (currentRow && isGroupRow(currentRow)) {
|
|
1812
|
-
currentRow.expanded$
|
|
1813
|
-
.pipe(takeUntil(this._destroy$))
|
|
1814
|
-
.subscribe((status) => {
|
|
1815
|
-
this.cellContext.expanded = status;
|
|
1816
|
-
});
|
|
1817
|
-
}
|
|
1818
|
-
}
|
|
1819
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1820
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.7", type: FsCellComponent, isStandalone: true, selector: "[fs-cell]", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: false, isRequired: false, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: false, isRequired: false, transformFunction: null }, row: { classPropertyName: "row", publicName: "row", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fs-list-col": "this.isColl", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1821
|
-
}
|
|
1822
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsCellComponent, decorators: [{
|
|
1823
|
-
type: Component,
|
|
1824
|
-
args: [{ selector: '[fs-cell]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgTemplateOutlet], template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n" }]
|
|
1825
|
-
}], ctorParameters: () => [], propDecorators: { isColl: [{
|
|
1826
|
-
type: HostBinding,
|
|
1827
|
-
args: ['class.fs-list-col']
|
|
1828
|
-
}], role: [{
|
|
1829
|
-
type: HostBinding,
|
|
1830
|
-
args: ['attr.role']
|
|
1831
|
-
}], column: [{
|
|
1832
|
-
type: Input
|
|
1833
|
-
}], rowIndex: [{
|
|
1834
|
-
type: Input
|
|
1835
|
-
}] } });
|
|
1836
|
-
|
|
1837
|
-
class FsRowInlineActionComponent {
|
|
1838
|
-
actionType;
|
|
1839
|
-
rowAction;
|
|
1840
|
-
row;
|
|
1841
|
-
clicked = new EventEmitter();
|
|
1842
|
-
fileSelect = new EventEmitter();
|
|
1843
|
-
icon;
|
|
1844
|
-
ngOnChanges(changes) {
|
|
1845
|
-
if (changes.row) {
|
|
1846
|
-
this.icon = this.rowAction.getRowIcon(this.row.data);
|
|
1847
|
-
}
|
|
1848
|
-
}
|
|
1849
|
-
actionClick(event) {
|
|
1850
|
-
this.clicked.emit(event);
|
|
1851
|
-
}
|
|
1852
|
-
ngOnInit() {
|
|
1853
|
-
this.actionType = this.rowAction.type;
|
|
1854
|
-
if (!this.rowAction.label && this.rowAction.icon) {
|
|
1855
|
-
this.actionType = ActionType.Icon;
|
|
1856
|
-
}
|
|
1857
|
-
}
|
|
1858
|
-
fileSelected(event) {
|
|
1859
|
-
this.fileSelect.emit(event);
|
|
1860
|
-
}
|
|
1861
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1862
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowInlineActionComponent, isStandalone: true, selector: "fs-list-row-inline-action", inputs: { rowAction: "rowAction", row: "row" }, outputs: { clicked: "clicked", fileSelect: "fileSelect" }, usesOnChanges: true, ngImport: i0, template: "<ng-container\n *ngIf=\"rowAction.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!rowAction.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: MatFabAnchor, selector: "a[mat-fab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: MatMiniFabAnchor, selector: "a[mat-mini-fab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsFileModule }, { kind: "component", type: i1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1863
|
-
}
|
|
1864
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
|
|
1865
|
-
type: Component,
|
|
1866
|
-
args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1867
|
-
NgIf,
|
|
1868
|
-
NgSwitch,
|
|
1869
|
-
NgSwitchCase,
|
|
1870
|
-
MatButton,
|
|
1871
|
-
NgClass,
|
|
1872
|
-
NgTemplateOutlet,
|
|
1873
|
-
MatAnchor,
|
|
1874
|
-
RouterLink,
|
|
1875
|
-
MatIconButton,
|
|
1876
|
-
MatIconAnchor,
|
|
1877
|
-
MatFabButton,
|
|
1878
|
-
MatFabAnchor,
|
|
1879
|
-
MatMiniFabButton,
|
|
1880
|
-
MatMiniFabAnchor,
|
|
1881
|
-
MatIcon,
|
|
1882
|
-
FsFileModule,
|
|
1883
|
-
], template: "<ng-container\n *ngIf=\"rowAction.isShown\"\n [ngSwitch]=\"actionType\">\n <!-- Basic button -->\n <ng-container *ngSwitchCase=\"'basic'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Raised button -->\n <ng-container *ngSwitchCase=\"'raised'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-raised-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-raised-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Icon button -->\n <ng-container *ngSwitchCase=\"'icon'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-icon-button\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Fab button -->\n <ng-container *ngSwitchCase=\"'fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <!-- Mini Fab button -->\n <ng-container *ngSwitchCase=\"'mini-fab'\">\n <ng-container *ngIf=\"!rowAction.routerLink; else link\">\n <button\n type=\"button\"\n mat-mini-fab\n (click)=\"actionClick($event)\"\n [ngClass]=\"rowAction.classArray\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </button>\n </ng-container>\n <ng-template #link>\n <a\n mat-mini-fab\n [routerLink]=\"rowAction.routerLink.link\"\n [queryParams]=\"rowAction.routerLink.queryParams\">\n <ng-template [ngTemplateOutlet]=\"buttonContent\"></ng-template>\n </a>\n </ng-template>\n </ng-container>\n <ng-template #buttonContent>\n <ng-container *ngIf=\"!rowAction.fileConfig else uploadFileBtn\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </ng-container>\n <ng-template #uploadFileBtn>\n <fs-file\n class=\"action-button\"\n [accept]=\"rowAction.fileConfig.accept || '*'\"\n [multiple]=\"rowAction.fileConfig.multiple\"\n [minWidth]=\"rowAction.fileConfig.minWidth\"\n [minHeight]=\"rowAction.fileConfig.minHeight\"\n [imageWidth]=\"rowAction.fileConfig.maxWidth\"\n [imageHeight]=\"rowAction.fileConfig.maxHeight\"\n (select)=\"fileSelected($event)\"\n (error)=\"rowAction.fileConfig.error && rowAction.fileConfig.error($event)\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ rowAction.label }}\n </fs-file>\n </ng-template>\n </ng-template>\n</ng-container>", styles: ["mat-icon{display:flex}\n"] }]
|
|
1884
|
-
}], propDecorators: { rowAction: [{
|
|
1885
|
-
type: Input
|
|
1886
|
-
}], row: [{
|
|
1887
|
-
type: Input
|
|
1888
|
-
}], clicked: [{
|
|
1889
|
-
type: Output
|
|
1890
|
-
}], fileSelect: [{
|
|
1891
|
-
type: Output
|
|
1892
|
-
}] } });
|
|
1893
|
-
|
|
1894
|
-
class ActionLabelPipe {
|
|
1895
|
-
transform(label, row) {
|
|
1896
|
-
if (typeof label === 'function') {
|
|
1897
|
-
return label(row.data);
|
|
1898
|
-
}
|
|
1899
|
-
return label;
|
|
1900
|
-
}
|
|
1901
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActionLabelPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1902
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ActionLabelPipe, isStandalone: true, name: "actionLabel" });
|
|
1903
|
-
}
|
|
1904
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ActionLabelPipe, decorators: [{
|
|
1905
|
-
type: Pipe,
|
|
1906
|
-
args: [{
|
|
1907
|
-
name: 'actionLabel',
|
|
1908
|
-
standalone: true
|
|
1909
|
-
}]
|
|
1910
|
-
}] });
|
|
1911
|
-
|
|
1912
|
-
class FsRowMenuActionComponent {
|
|
1913
|
-
_menu;
|
|
1914
|
-
row;
|
|
1915
|
-
rowAction;
|
|
1916
|
-
file;
|
|
1917
|
-
fileSelect = new EventEmitter();
|
|
1918
|
-
fileError = new EventEmitter();
|
|
1919
|
-
icon;
|
|
1920
|
-
label;
|
|
1921
|
-
constructor(_menu) {
|
|
1922
|
-
this._menu = _menu;
|
|
1923
|
-
}
|
|
1924
|
-
ngOnChanges(changes) {
|
|
1925
|
-
if (changes.row) {
|
|
1926
|
-
this.icon = this.rowAction.getRowIcon(this.row.data);
|
|
1927
|
-
}
|
|
1928
|
-
}
|
|
1929
|
-
selectFile(event) {
|
|
1930
|
-
this.fileSelect.emit(event);
|
|
1931
|
-
this.closeMenu();
|
|
1932
|
-
}
|
|
1933
|
-
errorFile(event) {
|
|
1934
|
-
this.fileError.emit(event);
|
|
1935
|
-
this.closeMenu();
|
|
1936
|
-
}
|
|
1937
|
-
closeMenu() {
|
|
1938
|
-
this._menu.closeMenu();
|
|
1939
|
-
}
|
|
1940
|
-
ngOnInit() {
|
|
1941
|
-
this.label = this.rowAction.label;
|
|
1942
|
-
}
|
|
1943
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, deps: [{ token: i1$1.FsMenuComponent }], target: i0.ɵɵFactoryTarget.Component });
|
|
1944
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowMenuActionComponent, isStandalone: true, selector: "fs-list-row-menu-action", inputs: { row: "row", rowAction: "rowAction", file: "file" }, outputs: { fileSelect: "fileSelect", fileError: "fileError" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n</ng-container>\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n </fs-file>\n</ng-template>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsFileModule }, { kind: "component", type: i1.FsFileComponent, selector: "fs-file", inputs: ["minHeight", "minWidth", "orientate", "multiple", "capture", "allowClick", "allowDrop", "accept", "disabled", "imageWidth", "imageHeight", "imageQuality"], outputs: ["select", "error", "beforeProcessing", "clicked", "declined"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1945
|
-
}
|
|
1946
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
|
|
1947
|
-
type: Component,
|
|
1948
|
-
args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
1949
|
-
NgIf,
|
|
1950
|
-
MatIcon,
|
|
1951
|
-
FsFileModule,
|
|
1952
|
-
ActionLabelPipe,
|
|
1953
|
-
], template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n</ng-container>\n<ng-template #withFile>\n <fs-file\n class=\"action-button\"\n [accept]=\"file.accept || '*'\"\n [multiple]=\"file.multiple\"\n [minWidth]=\"file.minWidth\"\n [minHeight]=\"file.minHeight\"\n [imageWidth]=\"file.maxWidth\"\n [imageHeight]=\"file.maxHeight\"\n (click)=\"$event.stopPropagation();\"\n (select)=\"selectFile($event)\"\n (error)=\"errorFile($event)\"\n (cancel)=\"closeMenu()\">\n <mat-icon *ngIf=\"icon\">\n {{ icon }}\n </mat-icon>\n {{ label| actionLabel:row }}\n </fs-file>\n</ng-template>" }]
|
|
1954
|
-
}], ctorParameters: () => [{ type: i1$1.FsMenuComponent }], propDecorators: { row: [{
|
|
1955
|
-
type: Input
|
|
1956
|
-
}], rowAction: [{
|
|
1957
|
-
type: Input
|
|
1958
|
-
}], file: [{
|
|
1959
|
-
type: Input
|
|
1960
|
-
}], fileSelect: [{
|
|
1961
|
-
type: Output
|
|
1962
|
-
}], fileError: [{
|
|
1963
|
-
type: Output
|
|
1964
|
-
}] } });
|
|
1965
|
-
|
|
1966
|
-
class FsRowActionsComponent {
|
|
1967
|
-
_prompt;
|
|
1968
|
-
row;
|
|
1969
|
-
index;
|
|
1970
|
-
restoreMode = false;
|
|
1971
|
-
rowActions = [];
|
|
1972
|
-
rowRemoved;
|
|
1973
|
-
menuRowActions = [];
|
|
1974
|
-
inlineRowActions = [];
|
|
1975
|
-
restoreAction;
|
|
1976
|
-
_destroy$ = new Subject();
|
|
1977
|
-
constructor(_prompt) {
|
|
1978
|
-
this._prompt = _prompt;
|
|
1979
|
-
}
|
|
1980
|
-
actionClick(action, row, event, menuRef) {
|
|
1981
|
-
if (action.remove) {
|
|
1982
|
-
if (typeof action.remove === 'boolean') {
|
|
1983
|
-
this._removeAction(action, row.data, event, this.index);
|
|
2061
|
+
.map((child) => child.data);
|
|
1984
2062
|
}
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
this._removeAction(action, row.data, event, this.index);
|
|
1994
|
-
});
|
|
2063
|
+
}
|
|
2064
|
+
this.cellContext.column = this.column;
|
|
2065
|
+
if (currentRow) {
|
|
2066
|
+
this.cellContext.$implicit = currentRow.data;
|
|
2067
|
+
this.cellContext.row = currentRow.data;
|
|
2068
|
+
this.cellContext.value = currentRow.data[this.column.name];
|
|
2069
|
+
if (isGroupRow(currentRow)) {
|
|
2070
|
+
this.cellContext.expanded = currentRow.expanded;
|
|
1995
2071
|
}
|
|
1996
2072
|
}
|
|
2073
|
+
}
|
|
2074
|
+
_initCellTemplate() {
|
|
2075
|
+
const currentRow = this.row();
|
|
2076
|
+
if (currentRow && isGroupRow(currentRow)) {
|
|
2077
|
+
this.cellTemplate = this.column.groupHeaderTemplate || this.column.cellTemplate;
|
|
2078
|
+
}
|
|
2079
|
+
else if (currentRow && isGroupFooterRow(currentRow)) {
|
|
2080
|
+
this.cellTemplate = this.column.groupFooterTemplate || this.column.cellTemplate;
|
|
2081
|
+
}
|
|
1997
2082
|
else {
|
|
1998
|
-
|
|
2083
|
+
this.cellTemplate = this.column.cellTemplate;
|
|
1999
2084
|
}
|
|
2000
2085
|
}
|
|
2001
|
-
|
|
2002
|
-
|
|
2003
|
-
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
}
|
|
2009
|
-
/**
|
|
2010
|
-
* Emit that some row must be removed
|
|
2011
|
-
*
|
|
2012
|
-
* @param action
|
|
2013
|
-
* @param row
|
|
2014
|
-
* @param event
|
|
2015
|
-
* @param index
|
|
2016
|
-
*/
|
|
2017
|
-
_removeAction(action, row, event, index) {
|
|
2018
|
-
const removeObservable = action.click(row, event, index);
|
|
2019
|
-
if (removeObservable && removeObservable instanceof Observable) {
|
|
2020
|
-
removeObservable
|
|
2021
|
-
.pipe(take(1), takeUntil(this._destroy$))
|
|
2022
|
-
.subscribe(() => {
|
|
2023
|
-
this.rowRemoved.emit(row);
|
|
2086
|
+
_listenGroupOpen() {
|
|
2087
|
+
const currentRow = this.row();
|
|
2088
|
+
if (currentRow && isGroupRow(currentRow)) {
|
|
2089
|
+
currentRow.expanded$
|
|
2090
|
+
.pipe(takeUntil(this._destroy$))
|
|
2091
|
+
.subscribe((status) => {
|
|
2092
|
+
this.cellContext.expanded = status;
|
|
2024
2093
|
});
|
|
2025
2094
|
}
|
|
2026
|
-
else {
|
|
2027
|
-
this.rowRemoved.emit(row);
|
|
2028
|
-
}
|
|
2029
2095
|
}
|
|
2030
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type:
|
|
2031
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2096
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2097
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.7", type: FsCellComponent, isStandalone: true, selector: "[fs-cell]", inputs: { column: { classPropertyName: "column", publicName: "column", isSignal: false, isRequired: false, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: false, isRequired: false, transformFunction: null }, row: { classPropertyName: "row", publicName: "row", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.fs-list-col": "this.isColl", "attr.role": "this.role" } }, usesOnChanges: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2032
2098
|
}
|
|
2033
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type:
|
|
2099
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsCellComponent, decorators: [{
|
|
2034
2100
|
type: Component,
|
|
2035
|
-
args: [{ selector: 'fs-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
|
|
2043
|
-
ActionLabelPipe,
|
|
2044
|
-
], template: "<ng-container *ngIf=\"!restoreMode || (restoreMode && !restoreAction)\">\n <ng-container *ngFor=\"let action of inlineRowActions; trackBy: trackByFn\">\n <fs-list-row-inline-action\n class=\"row-inline-action row-inline-action-{{action.type}}\"\n [rowAction]=\"action\"\n [row]=\"row\"\n [ngClass]=\"{ 'mobile-hide': action.menu === undefined }\"\n (clicked)=\"actionClick(action, row, $event)\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\">\n </fs-list-row-inline-action>\n </ng-container>\n</ng-container>\n<!-- Menu -->\n<fs-menu\n class=\"row-menu-action\"\n *ngIf=\"menuRowActions.length || (restoreMode && restoreAction)\"\n #menuRef>\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\n 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 [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-container>\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 | actionLabel:row\">\n <ng-container *ngFor=\"let subAction of action.rowActions\">\n <ng-template\n fs-menu-item\n [link]=\"subAction.routerLink?.link\"\n [queryParams]=\"subAction.routerLink?.queryParams\"\n [target]=\"subAction.routerLink?.target\"\n [hidden]=\"!subAction.isShown\"\n [class]=\"subAction.className\"\n (click)=\"actionClick(subAction, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"subAction\"\n [row]=\"row\"\n [file]=\"subAction.fileConfig\"\n (fileSelect)=\"subAction.fileConfig.select($event, row, index)\"\n (fileError)=\"subAction.fileConfig.error && subAction.fileConfig.error($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\n fs-menu-item\n [link]=\"action.routerLink?.link\"\n [queryParams]=\"action.routerLink?.queryParams\"\n [target]=\"action.routerLink?.target\"\n [hidden]=\"!action.isShown\"\n [class]=\"action.className\"\n (click)=\"actionClick(action, row, $event, menuRef);\">\n <fs-list-row-menu-action\n [rowAction]=\"action\"\n [row]=\"row\"\n [file]=\"action.fileConfig\"\n (fileSelect)=\"action.fileConfig.select($event, row, index)\"\n (fileError)=\"action.fileConfig.error && action.fileConfig.error($event)\">\n </fs-list-row-menu-action>\n </ng-template>\n </ng-template>\n </ng-container>\n </ng-container>\n <!-- Case when we have restore mode enabled and must hide menu actions -->\n <ng-container *ngIf=\"restoreMode && restoreAction\">\n <ng-template\n fs-menu-item\n (click)=\"actionClick(restoreAction, row, $event, menuRef)\">\n <mat-icon *ngIf=\"restoreAction.icon\">\n {{ restoreAction.icon }}\n </mat-icon>\n {{ restoreAction.label | actionLabel:row }}\n </ng-template>\n </ng-container>\n</fs-menu>", styles: [":host{display:flex;align-items:center;justify-content:flex-end}:host ::ng-deep fs-list-row-inline-action{margin-left:5px}:host ::ng-deep fs-list-row-inline-action:first-child{margin-left:0}::ng-deep .hidden-mobile-menu-action{display:none!important}\n"] }]
|
|
2045
|
-
}], ctorParameters: () => [{ type: i1$2.FsPrompt }], propDecorators: { row: [{
|
|
2046
|
-
type: Input
|
|
2047
|
-
}], index: [{
|
|
2048
|
-
type: Input
|
|
2049
|
-
}], restoreMode: [{
|
|
2050
|
-
type: Input
|
|
2051
|
-
}], rowActions: [{
|
|
2052
|
-
type: Input
|
|
2053
|
-
}], rowRemoved: [{
|
|
2054
|
-
type: Input
|
|
2055
|
-
}], menuRowActions: [{
|
|
2056
|
-
type: Input
|
|
2057
|
-
}], inlineRowActions: [{
|
|
2101
|
+
args: [{ selector: '[fs-cell]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgTemplateOutlet], template: "<ng-template [ngTemplateOutlet]=\"cellTemplate || defaultCellTemplate\" [ngTemplateOutletContext]=\"cellContext\"></ng-template>\r\n\r\n<ng-template #defaultCellTemplate let-value=\"value\">\r\n {{value}}\r\n</ng-template>\r\n" }]
|
|
2102
|
+
}], ctorParameters: () => [], propDecorators: { isColl: [{
|
|
2103
|
+
type: HostBinding,
|
|
2104
|
+
args: ['class.fs-list-col']
|
|
2105
|
+
}], role: [{
|
|
2106
|
+
type: HostBinding,
|
|
2107
|
+
args: ['attr.role']
|
|
2108
|
+
}], column: [{
|
|
2058
2109
|
type: Input
|
|
2059
|
-
}],
|
|
2110
|
+
}], rowIndex: [{
|
|
2060
2111
|
type: Input
|
|
2061
2112
|
}] } });
|
|
2062
2113
|
|
|
2063
2114
|
class FsRowComponent {
|
|
2064
|
-
el;
|
|
2065
|
-
_cdRef;
|
|
2066
|
-
_differs;
|
|
2067
|
-
_renderer;
|
|
2068
|
-
_draggableList;
|
|
2069
2115
|
role = 'row';
|
|
2070
2116
|
row = input();
|
|
2071
2117
|
rowActionsRaw = [];
|
|
@@ -2091,24 +2137,15 @@ class FsRowComponent {
|
|
|
2091
2137
|
restoreAction;
|
|
2092
2138
|
selected = false;
|
|
2093
2139
|
indeterminateSelected = false;
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
this.
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
this.
|
|
2102
|
-
|
|
2103
|
-
this._rowDiffer = _differs.find({}).create();
|
|
2104
|
-
}
|
|
2105
|
-
get isDragDisabled() {
|
|
2106
|
-
return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;
|
|
2107
|
-
}
|
|
2108
|
-
get isMultipleSelection() {
|
|
2109
|
-
const multiple = this.reorderMultiple;
|
|
2110
|
-
return multiple && this.selected;
|
|
2111
|
-
}
|
|
2140
|
+
isGroupRow = computed(() => {
|
|
2141
|
+
return isGroupRow(this.row());
|
|
2142
|
+
});
|
|
2143
|
+
isGroupFooterRow = computed(() => {
|
|
2144
|
+
return isGroupFooterRow(this.row());
|
|
2145
|
+
});
|
|
2146
|
+
dragCellVisible = computed(() => {
|
|
2147
|
+
return !isGroupRow(this.row());
|
|
2148
|
+
});
|
|
2112
2149
|
rowCustomClass = computed(() => {
|
|
2113
2150
|
if (!this.row()) {
|
|
2114
2151
|
return;
|
|
@@ -2143,6 +2180,25 @@ class FsRowComponent {
|
|
|
2143
2180
|
}
|
|
2144
2181
|
return classes.join(' ');
|
|
2145
2182
|
});
|
|
2183
|
+
_rowDiffer;
|
|
2184
|
+
_eventListeners = [];
|
|
2185
|
+
_destroy$ = new Subject();
|
|
2186
|
+
_el = inject(ElementRef);
|
|
2187
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
2188
|
+
_differs = inject(KeyValueDiffers);
|
|
2189
|
+
_renderer = inject(Renderer2);
|
|
2190
|
+
_draggableList = inject(FsListDraggableListDirective, { optional: true });
|
|
2191
|
+
constructor() {
|
|
2192
|
+
const _differs = this._differs;
|
|
2193
|
+
this._rowDiffer = _differs.find({}).create();
|
|
2194
|
+
}
|
|
2195
|
+
get isDragDisabled() {
|
|
2196
|
+
return !this.selected && this.reorderMultiple && !!this.selection.selectedRows.size;
|
|
2197
|
+
}
|
|
2198
|
+
get isMultipleSelection() {
|
|
2199
|
+
const multiple = this.reorderMultiple;
|
|
2200
|
+
return multiple && this.selected;
|
|
2201
|
+
}
|
|
2146
2202
|
get leftDragDropEnabled() {
|
|
2147
2203
|
return this.reorderEnabled
|
|
2148
2204
|
&& this.reorderPosition === ReorderPosition.Left
|
|
@@ -2157,14 +2213,16 @@ class FsRowComponent {
|
|
|
2157
2213
|
this._initRowEvents();
|
|
2158
2214
|
if (this.row()) {
|
|
2159
2215
|
this._initRowActionsUpdate();
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2216
|
+
if (isGroupRow(this.row())) {
|
|
2217
|
+
if (this.row() && this.groupActionsRaw) {
|
|
2218
|
+
this.rowActions = this.groupActionsRaw.map((action) => new RowAction(action));
|
|
2219
|
+
this._filterActionsByCategories();
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
else if (this.rowActionsRaw) {
|
|
2223
|
+
this.rowActions = this.rowActionsRaw.map((action) => new RowAction(action));
|
|
2224
|
+
this._filterActionsByCategories();
|
|
2225
|
+
}
|
|
2168
2226
|
}
|
|
2169
2227
|
}
|
|
2170
2228
|
ngDoCheck() {
|
|
@@ -2175,15 +2233,6 @@ class FsRowComponent {
|
|
|
2175
2233
|
ngAfterViewInit() {
|
|
2176
2234
|
this._initSelection();
|
|
2177
2235
|
}
|
|
2178
|
-
isGroupRow = computed(() => {
|
|
2179
|
-
return isGroupRow(this.row());
|
|
2180
|
-
});
|
|
2181
|
-
isGroupFooterRow = computed(() => {
|
|
2182
|
-
return isGroupFooterRow(this.row());
|
|
2183
|
-
});
|
|
2184
|
-
dragCellVisible = computed(() => {
|
|
2185
|
-
return !isGroupRow(this.row());
|
|
2186
|
-
});
|
|
2187
2236
|
updateRowActions() {
|
|
2188
2237
|
if (this.rowActions) {
|
|
2189
2238
|
this.rowActions.forEach((action) => {
|
|
@@ -2222,7 +2271,7 @@ class FsRowComponent {
|
|
|
2222
2271
|
if (this.reorderEnabled && !this.isDragDisabled) {
|
|
2223
2272
|
event.preventDefault();
|
|
2224
2273
|
event.stopPropagation();
|
|
2225
|
-
this._draggableList.dragStart(this.
|
|
2274
|
+
this._draggableList.dragStart(this._el.nativeElement);
|
|
2226
2275
|
}
|
|
2227
2276
|
}
|
|
2228
2277
|
/**
|
|
@@ -2232,7 +2281,7 @@ class FsRowComponent {
|
|
|
2232
2281
|
Object.keys(this.rowEvents || {})
|
|
2233
2282
|
.forEach((event) => {
|
|
2234
2283
|
const listener = this._renderer
|
|
2235
|
-
.listen(this.
|
|
2284
|
+
.listen(this._el.nativeElement, event, (evt) => {
|
|
2236
2285
|
this.rowEvents[event]({
|
|
2237
2286
|
event: evt,
|
|
2238
2287
|
row: this.row().data,
|
|
@@ -2332,25 +2381,23 @@ class FsRowComponent {
|
|
|
2332
2381
|
}
|
|
2333
2382
|
});
|
|
2334
2383
|
}
|
|
2335
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowComponent, deps: [
|
|
2336
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
2384
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2385
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsRowComponent, isStandalone: true, selector: "[fs-list-row]", inputs: { row: { classPropertyName: "row", publicName: "row", isSignal: true, isRequired: false, transformFunction: null }, rowActionsRaw: { classPropertyName: "rowActionsRaw", publicName: "rowActionsRaw", isSignal: false, isRequired: false, transformFunction: null }, groupActionsRaw: { classPropertyName: "groupActionsRaw", publicName: "groupActionsRaw", isSignal: false, isRequired: false, transformFunction: null }, hasRowActions: { classPropertyName: "hasRowActions", publicName: "hasRowActions", isSignal: false, isRequired: false, transformFunction: null }, rowEvents: { classPropertyName: "rowEvents", publicName: "rowEvents", isSignal: false, isRequired: false, transformFunction: null }, rowClass: { classPropertyName: "rowClass", publicName: "rowClass", isSignal: false, isRequired: false, transformFunction: null }, restoreMode: { classPropertyName: "restoreMode", publicName: "restoreMode", isSignal: false, isRequired: false, transformFunction: null }, rowIndex: { classPropertyName: "rowIndex", publicName: "rowIndex", isSignal: false, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: false, isRequired: false, transformFunction: null }, selection: { classPropertyName: "selection", publicName: "selection", isSignal: false, isRequired: false, transformFunction: null }, rowRemoved: { classPropertyName: "rowRemoved", publicName: "rowRemoved", isSignal: false, isRequired: false, transformFunction: null }, activeFiltersCount: { classPropertyName: "activeFiltersCount", publicName: "activeFiltersCount", isSignal: false, isRequired: false, transformFunction: null }, reorderEnabled: { classPropertyName: "reorderEnabled", publicName: "reorderEnabled", isSignal: false, isRequired: false, transformFunction: null }, reorderPosition: { classPropertyName: "reorderPosition", publicName: "reorderPosition", isSignal: false, isRequired: false, transformFunction: null }, reorderStrategy: { classPropertyName: "reorderStrategy", publicName: "reorderStrategy", isSignal: false, isRequired: false, transformFunction: null }, reorderMultiple: { classPropertyName: "reorderMultiple", publicName: "reorderMultiple", isSignal: false, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.rowCustomClass()", "attr.role": "this.role", "class.drag-row": "this.reorderEnabled", "class.multiple-selection": "this.isMultipleSelection" } }, ngImport: i0, template: "<!-- Drag -->\n@if (leftDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Selection -->\n@if (selection && !(selection.disabled$ | async)) {\n <td class=\"fs-list-col fs-list-col-selection\">\n @if (!isGroupFooterRow()) {\n <mat-checkbox\n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n }\n </td>\n}\n<!-- Content -->\n@for (column of columns; track trackByFn($index); let isFirst = $first) {\n @if ((isGroupRow() && !column.groupHeaderColspanned) || (isGroupFooterRow() && !column.groupFooterColspanned) || (!isGroupRow() && !isGroupFooterRow() && !column.cellColspanned)) {\n <td\n fs-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow() && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow() && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow() && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow() && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow() && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Row Actions -->\n@if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)) {\n <td class=\"fs-list-col actions-col\">\n @if (!isGroupFooterRow()) {\n <fs-list-row-actions\n [row]=\"row()\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n }\n </td>\n}\n<ng-template #dragCell>\n @if (dragCellVisible() && !isGroupFooterRow()) {\n <td\n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>\n drag_handle\n </mat-icon>\n </td>\n } @else {\n <td class=\"fs-list-col drag-col\"></td>\n }\n</ng-template>", styles: [":host.drag-hidden{display:none}:host.draggable{opacity:.8;position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}:host.draggable td{border:none;background-color:#fff}:host.draggable-elem td{background-color:#c3c3c3}:host.fs-list-row-clickable{cursor:pointer}td.drag-col{width:1%!important;white-space:nowrap;text-align:center;cursor:grab}td.drag-col.drag-disabled{opacity:.4;cursor:no-drop}td.drag-col mat-icon{display:flex}td.fs-list-col-selection{padding:10px;width:1%!important}td.actions-col{width:1%;white-space:nowrap;overflow:hidden}td.actions-col .row-inline-action{margin-left:12px;display:inline-block}td.actions-col .row-inline-action:first-child{margin-left:0}td.actions-col .row-inline-action-icon,td.actions-col .row-inline-action-fab,td.actions-col .row-inline-action-mini-fab,td.actions-col .row-menu-action{width:35px;justify-content:center;align-items:center}td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: FsCellComponent, selector: "[fs-cell]", inputs: ["column", "rowIndex", "row"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: FsRowActionsComponent, selector: "fs-list-row-actions", inputs: ["row", "index", "restoreMode", "rowActions", "rowRemoved", "menuRowActions", "inlineRowActions", "restoreAction"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2337
2386
|
}
|
|
2338
2387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowComponent, decorators: [{
|
|
2339
2388
|
type: Component,
|
|
2340
2389
|
args: [{ selector: '[fs-list-row]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
2341
|
-
'[class]':
|
|
2390
|
+
'[class]': 'this.rowCustomClass()',
|
|
2342
2391
|
}, standalone: true, imports: [
|
|
2343
|
-
NgIf,
|
|
2344
2392
|
NgTemplateOutlet,
|
|
2345
2393
|
MatCheckbox,
|
|
2346
|
-
NgFor,
|
|
2347
2394
|
FsCellComponent,
|
|
2348
2395
|
NgClass,
|
|
2349
2396
|
FsRowActionsComponent,
|
|
2350
2397
|
MatIcon,
|
|
2351
2398
|
AsyncPipe,
|
|
2352
|
-
], template: "<!-- Drag -->\n
|
|
2353
|
-
}], ctorParameters: () => [
|
|
2399
|
+
], template: "<!-- Drag -->\n@if (leftDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Selection -->\n@if (selection && !(selection.disabled$ | async)) {\n <td class=\"fs-list-col fs-list-col-selection\">\n @if (!isGroupFooterRow()) {\n <mat-checkbox\n (change)=\"selectRow($event)\"\n [checked]=\"selected\"\n [indeterminate]=\"indeterminateSelected\">\n </mat-checkbox>\n }\n </td>\n}\n<!-- Content -->\n@for (column of columns; track trackByFn($index); let isFirst = $first) {\n @if ((isGroupRow() && !column.groupHeaderColspanned) || (isGroupFooterRow() && !column.groupFooterColspanned) || (!isGroupRow() && !isGroupFooterRow() && !column.cellColspanned)) {\n <td\n fs-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [class]=\"(isGroupRow() && column.groupHeaderConfigs.classesString)\n || (isGroupFooterRow() && column.groupFooterConfigs.classesString)\n || (!isGroupFooterRow() && column.cellConfigs.classesString)\"\n [ngClass]=\"{ 'primary-col': isFirst }\"\n [attr.colspan]=\"(isGroupRow() && column.groupHeaderConfigs.colspan)\n || (isGroupFooterRow() && column.groupFooterConfigs.colspan)\n || column.cellConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <ng-container *ngTemplateOutlet=\"dragCell\"></ng-container>\n}\n<!-- Row Actions -->\n@if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategy.Manual)) {\n <td class=\"fs-list-col actions-col\">\n @if (!isGroupFooterRow()) {\n <fs-list-row-actions\n [row]=\"row()\"\n [index]=\"rowIndex\"\n [rowActions]=\"rowActions\"\n [menuRowActions]=\"menuRowActions\"\n [inlineRowActions]=\"inlineRowActions\"\n [restoreAction]=\"restoreAction\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\">\n </fs-list-row-actions>\n }\n </td>\n}\n<ng-template #dragCell>\n @if (dragCellVisible() && !isGroupFooterRow()) {\n <td\n class=\"fs-list-col drag-col\"\n [class.drag-disabled]=\"isDragDisabled\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <mat-icon>\n drag_handle\n </mat-icon>\n </td>\n } @else {\n <td class=\"fs-list-col drag-col\"></td>\n }\n</ng-template>", styles: [":host.drag-hidden{display:none}:host.draggable{opacity:.8;position:fixed;z-index:9999;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:5px}:host.draggable td{border:none;background-color:#fff}:host.draggable-elem td{background-color:#c3c3c3}:host.fs-list-row-clickable{cursor:pointer}td.drag-col{width:1%!important;white-space:nowrap;text-align:center;cursor:grab}td.drag-col.drag-disabled{opacity:.4;cursor:no-drop}td.drag-col mat-icon{display:flex}td.fs-list-col-selection{padding:10px;width:1%!important}td.actions-col{width:1%;white-space:nowrap;overflow:hidden}td.actions-col .row-inline-action{margin-left:12px;display:inline-block}td.actions-col .row-inline-action:first-child{margin-left:0}td.actions-col .row-inline-action-icon,td.actions-col .row-inline-action-fab,td.actions-col .row-inline-action-mini-fab,td.actions-col .row-menu-action{width:35px;justify-content:center;align-items:center}td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"] }]
|
|
2400
|
+
}], ctorParameters: () => [], propDecorators: { role: [{
|
|
2354
2401
|
type: HostBinding,
|
|
2355
2402
|
args: ['attr.role']
|
|
2356
2403
|
}], rowActionsRaw: [{
|
|
@@ -2391,81 +2438,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
2391
2438
|
args: ['class.multiple-selection']
|
|
2392
2439
|
}] } });
|
|
2393
2440
|
|
|
2394
|
-
class FsListDraggableRowDirective {
|
|
2395
|
-
_el;
|
|
2396
|
-
_renderer;
|
|
2397
|
-
_reorderController;
|
|
2398
|
-
_draggableList;
|
|
2399
|
-
row;
|
|
2400
|
-
_destroy$ = new Subject();
|
|
2401
|
-
constructor(_el, _renderer, _reorderController, _draggableList) {
|
|
2402
|
-
this._el = _el;
|
|
2403
|
-
this._renderer = _renderer;
|
|
2404
|
-
this._reorderController = _reorderController;
|
|
2405
|
-
this._draggableList = _draggableList;
|
|
2406
|
-
}
|
|
2407
|
-
get elRef() {
|
|
2408
|
-
return this._el;
|
|
2409
|
-
}
|
|
2410
|
-
ngOnInit() {
|
|
2411
|
-
if (this._reorderController.moveDropCallback) {
|
|
2412
|
-
this._listenDragEvents();
|
|
2413
|
-
}
|
|
2414
|
-
this._draggableList.addDraggableDirective(this);
|
|
2415
|
-
}
|
|
2416
|
-
ngOnDestroy() {
|
|
2417
|
-
this._draggableList.removeDraggableDirective(this);
|
|
2418
|
-
this._destroy$.next(null);
|
|
2419
|
-
this._destroy$.complete();
|
|
2420
|
-
}
|
|
2421
|
-
dragHide() {
|
|
2422
|
-
this._el.nativeElement.classList.add('drag-hidden');
|
|
2423
|
-
}
|
|
2424
|
-
_listenDragEvents() {
|
|
2425
|
-
this._draggableList
|
|
2426
|
-
.dragStart$
|
|
2427
|
-
.pipe(takeUntil(this._destroy$))
|
|
2428
|
-
.subscribe(() => {
|
|
2429
|
-
this._markReadyToSwapRows();
|
|
2430
|
-
});
|
|
2431
|
-
this._draggableList
|
|
2432
|
-
.dragEnd$
|
|
2433
|
-
.pipe(takeUntil(this._destroy$))
|
|
2434
|
-
.subscribe(() => {
|
|
2435
|
-
this._unmarkRows();
|
|
2436
|
-
});
|
|
2437
|
-
}
|
|
2438
|
-
_markReadyToSwapRows() {
|
|
2439
|
-
const currentEl = this.row;
|
|
2440
|
-
const targetEl = this._draggableList.draggableItem;
|
|
2441
|
-
this.row.readyToSwap = this._reorderController.moveDropCallback({
|
|
2442
|
-
row1: currentEl?.data,
|
|
2443
|
-
row2: targetEl?.data,
|
|
2444
|
-
group1: isChildTypeRow(currentEl) ? currentEl.parent?.data : null,
|
|
2445
|
-
group2: isChildTypeRow(targetEl) ? targetEl.parent?.data : null,
|
|
2446
|
-
});
|
|
2447
|
-
if (!this.row.readyToSwap) {
|
|
2448
|
-
this._renderer.addClass(this._el.nativeElement, 'fs-list-swap-restricted');
|
|
2449
|
-
}
|
|
2450
|
-
}
|
|
2451
|
-
_unmarkRows() {
|
|
2452
|
-
if (!this.row.readyToSwap) {
|
|
2453
|
-
this._renderer.removeClass(this._el.nativeElement, 'fs-list-swap-restricted');
|
|
2454
|
-
}
|
|
2455
|
-
}
|
|
2456
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableRowDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: ReorderController }, { token: FsListDraggableListDirective }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2457
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListDraggableRowDirective, isStandalone: true, selector: "[fsListDraggableRow]", inputs: { row: "row" }, ngImport: i0 });
|
|
2458
|
-
}
|
|
2459
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListDraggableRowDirective, decorators: [{
|
|
2460
|
-
type: Directive,
|
|
2461
|
-
args: [{
|
|
2462
|
-
selector: '[fsListDraggableRow]',
|
|
2463
|
-
standalone: true,
|
|
2464
|
-
}]
|
|
2465
|
-
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: ReorderController }, { type: FsListDraggableListDirective }], propDecorators: { row: [{
|
|
2466
|
-
type: Input
|
|
2467
|
-
}] } });
|
|
2468
|
-
|
|
2469
2441
|
class FsBodyComponent {
|
|
2470
2442
|
rows;
|
|
2471
2443
|
columns = [];
|
|
@@ -2486,15 +2458,14 @@ class FsBodyComponent {
|
|
|
2486
2458
|
rowsContainer;
|
|
2487
2459
|
headerTemplate;
|
|
2488
2460
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2489
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2461
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsBodyComponent, isStandalone: true, selector: "[fs-list-body]", inputs: { rows: "rows", columns: "columns", hasFooter: "hasFooter", rowActionsRaw: "rowActionsRaw", groupActionsRaw: "groupActionsRaw", rowEvents: "rowEvents", rowClass: "rowClass", hasRowActions: "hasRowActions", selection: "selection", restoreMode: "restoreMode", rowRemoved: "rowRemoved", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy", reorderMultiple: "reorderMultiple" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsRowComponent, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "@for (row of rows; track row; let i = $index) {\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n}\n", styles: [":host.drag-hidden .drag-col{opacity:0!important;cursor:default}:host.disabled{opacity:.4;pointer-events:none}\n"], dependencies: [{ kind: "component", type: FsRowComponent, selector: "[fs-list-row]", inputs: ["row", "rowActionsRaw", "groupActionsRaw", "hasRowActions", "rowEvents", "rowClass", "restoreMode", "rowIndex", "columns", "selection", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "directive", type: FsListDraggableRowDirective, selector: "[fsListDraggableRow]", inputs: ["row"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2490
2462
|
}
|
|
2491
2463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsBodyComponent, decorators: [{
|
|
2492
2464
|
type: Component,
|
|
2493
2465
|
args: [{ selector: '[fs-list-body]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2494
|
-
NgFor,
|
|
2495
2466
|
FsRowComponent,
|
|
2496
2467
|
FsListDraggableRowDirective,
|
|
2497
|
-
], template: "
|
|
2468
|
+
], template: "@for (row of rows; track row; let i = $index) {\n <tr\n fs-list-row\n fsListDraggableRow\n [row]=\"row\"\n [rowIndex]=\"i\"\n [columns]=\"columns\"\n [rowActionsRaw]=\"rowActionsRaw\"\n [groupActionsRaw]=\"groupActionsRaw\"\n [hasRowActions]=\"hasRowActions\"\n [rowEvents]=\"rowEvents\"\n [rowClass]=\"rowClass\"\n [selection]=\"selection\"\n [restoreMode]=\"restoreMode\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"activeFiltersCount\"\n [reorderEnabled]=\"reorderEnabled\"\n [reorderPosition]=\"reorderPosition\"\n [reorderStrategy]=\"reorderStrategy\"\n [reorderMultiple]=\"reorderMultiple\">\n </tr>\n}\n", styles: [":host.drag-hidden .drag-col{opacity:0!important;cursor:default}:host.disabled{opacity:.4;pointer-events:none}\n"] }]
|
|
2498
2469
|
}], propDecorators: { rows: [{
|
|
2499
2470
|
type: Input
|
|
2500
2471
|
}], columns: [{
|
|
@@ -2674,7 +2645,7 @@ class CustomizeColsDialogComponent {
|
|
|
2674
2645
|
this._dialog.close();
|
|
2675
2646
|
}
|
|
2676
2647
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2677
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CustomizeColsDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n
|
|
2648
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CustomizeColsDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n @for (column of columns; track column) {\n <div>\n <mat-checkbox\n [checked]=\"column.show\"\n (change)=\"visibilityChange($event, column)\"\n [disabled]=\"column.disabled\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n }\n </mat-checkbox>\n </div>\n }\n @if (!columns.length) {\n <div class=\"no-results\">\n No results found\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n @if (columns.length) {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"save()\"\n [disabled]=\"saveDisabled\">\n Save\n </button>\n }\n <button\n type=\"button\"\n mat-button\n [color]=\"columns.length ? null : 'primary'\"\n (click)=\"cancel()\">\n {{ columns.length ? 'Cancel' : 'Done' }}\n </button>\n</mat-dialog-actions>", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}.columns{margin-bottom:1.25em}.no-results{text-align:center;padding:15px 0;color:#999}\n"], dependencies: [{ kind: "directive", type: MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2678
2649
|
}
|
|
2679
2650
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
|
|
2680
2651
|
type: Component,
|
|
@@ -2682,12 +2653,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
2682
2653
|
MatDialogTitle,
|
|
2683
2654
|
CdkScrollable,
|
|
2684
2655
|
MatDialogContent,
|
|
2685
|
-
NgFor,
|
|
2686
2656
|
MatCheckbox,
|
|
2687
2657
|
NgTemplateOutlet,
|
|
2688
2658
|
MatDialogActions,
|
|
2689
|
-
MatButton
|
|
2690
|
-
], template: "<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n
|
|
2659
|
+
MatButton
|
|
2660
|
+
], template: "<h1 matDialogTitle>\n Customize columns\n</h1>\n<mat-dialog-content>\n <div class=\"columns\">\n @for (column of columns; track column) {\n <div>\n <mat-checkbox\n [checked]=\"column.show\"\n (change)=\"visibilityChange($event, column)\"\n [disabled]=\"column.disabled\">\n @if (column.title) {\n {{ column.title }}\n } @else {\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\n }\n </mat-checkbox>\n </div>\n }\n @if (!columns.length) {\n <div class=\"no-results\">\n No results found\n </div>\n }\n </div>\n</mat-dialog-content>\n<mat-dialog-actions>\n @if (columns.length) {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"save()\"\n [disabled]=\"saveDisabled\">\n Save\n </button>\n }\n <button\n type=\"button\"\n mat-button\n [color]=\"columns.length ? null : 'primary'\"\n (click)=\"cancel()\">\n {{ columns.length ? 'Cancel' : 'Done' }}\n </button>\n</mat-dialog-actions>", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}.columns{margin-bottom:1.25em}.no-results{text-align:center;padding:15px 0;color:#999}\n"] }]
|
|
2691
2661
|
}], ctorParameters: () => [] });
|
|
2692
2662
|
|
|
2693
2663
|
class FsFooterCellComponent extends FsCellComponent {
|
|
@@ -2703,21 +2673,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
2703
2673
|
}], ctorParameters: () => [] });
|
|
2704
2674
|
|
|
2705
2675
|
class FsFooterRowComponent extends FsRowComponent {
|
|
2706
|
-
|
|
2707
|
-
|
|
2708
|
-
}
|
|
2709
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFooterRowComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
2710
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsFooterRowComponent, isStandalone: true, selector: "[fs-list-footer-row]", usesInheritance: true, ngImport: i0, template: "<td\n *ngIf=\"leftDragDropEnabled\"\n class=\"fs-list-col drag-col\">\n</td>\n<td\n *ngIf=\"selection\"\n class=\"fs-list-col fs-list-col-selection\">\n</td>\n<ng-container *ngFor=\"let column of columns; trackBy: trackByFn\">\n <td\n *ngIf=\"!column.footerColspanned\"\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n</ng-container>\n<!-- Drag -->\n<td\n *ngIf=\"rightDragDropEnabled\"\n class=\"fs-list-col actions-col\">\n</td>\n<!-- Row Actions -->\n", styles: ["td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: FsFooterCellComponent, selector: "[fs-list-footer-cell]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2676
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFooterRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
2677
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsFooterRowComponent, isStandalone: true, selector: "[fs-list-footer-row]", usesInheritance: true, ngImport: i0, template: "@if (leftDragDropEnabled) {\n <td class=\"fs-list-col drag-col\"></td>\n}\n@if (selection) {\n <td class=\"fs-list-col fs-list-col-selection\"></td>\n}\n@for (column of columns; track trackByFn($index)) {\n @if (!column.footerColspanned) {\n <td\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <td class=\"fs-list-col actions-col\"></td>\n}\n<!-- Row Actions -->", styles: ["td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"], dependencies: [{ kind: "component", type: FsFooterCellComponent, selector: "[fs-list-footer-cell]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2711
2678
|
}
|
|
2712
2679
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsFooterRowComponent, decorators: [{
|
|
2713
2680
|
type: Component,
|
|
2714
2681
|
args: [{ selector: '[fs-list-footer-row]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2715
|
-
NgIf,
|
|
2716
|
-
NgFor,
|
|
2717
2682
|
FsFooterCellComponent,
|
|
2718
2683
|
NgClass,
|
|
2719
|
-
], template: "
|
|
2720
|
-
}]
|
|
2684
|
+
], template: "@if (leftDragDropEnabled) {\n <td class=\"fs-list-col drag-col\"></td>\n}\n@if (selection) {\n <td class=\"fs-list-col fs-list-col-selection\"></td>\n}\n@for (column of columns; track trackByFn($index)) {\n @if (!column.footerColspanned) {\n <td\n fs-list-footer-cell\n [column]=\"column\"\n [row]=\"row()\"\n [rowIndex]=\"rowIndex\"\n [ngClass]=\"column.footerConfigs.classesArray\"\n [attr.colspan]=\"column.footerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </td>\n }\n}\n<!-- Drag -->\n@if (rightDragDropEnabled) {\n <td class=\"fs-list-col actions-col\"></td>\n}\n<!-- Row Actions -->", styles: ["td.left{text-align:left}td.center{text-align:center}td.right{text-align:right}\n"] }]
|
|
2685
|
+
}] });
|
|
2721
2686
|
|
|
2722
2687
|
class FsFooterComponent {
|
|
2723
2688
|
hasRowActions;
|
|
@@ -2750,14 +2715,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
2750
2715
|
}] } });
|
|
2751
2716
|
|
|
2752
2717
|
class FsHeadCellComponent extends FsCellComponent {
|
|
2753
|
-
_cdRef;
|
|
2754
|
-
_differs;
|
|
2718
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
2719
|
+
_differs = inject(KeyValueDiffers);
|
|
2755
2720
|
cellContext = {};
|
|
2756
2721
|
_columnDiffer;
|
|
2757
|
-
constructor(
|
|
2722
|
+
constructor() {
|
|
2758
2723
|
super();
|
|
2759
|
-
this._cdRef = _cdRef;
|
|
2760
|
-
this._differs = _differs;
|
|
2761
2724
|
this._columnDiffer = this._differs.find({}).create();
|
|
2762
2725
|
}
|
|
2763
2726
|
ngDoCheck() {
|
|
@@ -2768,20 +2731,17 @@ class FsHeadCellComponent extends FsCellComponent {
|
|
|
2768
2731
|
initCellContext() {
|
|
2769
2732
|
this.cellContext.value = this.column.title;
|
|
2770
2733
|
}
|
|
2771
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadCellComponent, deps: [
|
|
2772
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2734
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadCellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2735
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsHeadCellComponent, isStandalone: true, selector: "[fs-head-cell]", usesInheritance: true, ngImport: i0, template: "<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered) {\n <div\n class=\"direction\"\n >\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n </div>\n }\n</div>", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}.wrap .direction{margin-left:5px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2773
2736
|
}
|
|
2774
2737
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadCellComponent, decorators: [{
|
|
2775
2738
|
type: Component,
|
|
2776
2739
|
args: [{ selector: '[fs-head-cell]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
2777
|
-
NgIf,
|
|
2778
2740
|
NgTemplateOutlet,
|
|
2779
|
-
NgSwitch,
|
|
2780
|
-
NgSwitchCase,
|
|
2781
2741
|
MatIcon,
|
|
2782
|
-
AsyncPipe
|
|
2783
|
-
], template: "<div class=\"wrap\">\n <span class=\"title\">\n
|
|
2784
|
-
}], ctorParameters: () => [
|
|
2742
|
+
AsyncPipe
|
|
2743
|
+
], template: "<div class=\"wrap\">\n <span class=\"title\">\n @if (!column.headerTemplate) {\n {{ column.title }}\n }\n @if (column.headerTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"column.headerTemplate\"\n [ngTemplateOutletContext]=\"cellContext\">\n </ng-template>\n }\n </span>\n @if (column.ordered) {\n <div\n class=\"direction\"\n >\n @switch (column.sortingDirection$ | async) {\n @case ('asc') {\n <mat-icon>\n arrow_downward\n </mat-icon>\n }\n @case ('desc') {\n <mat-icon>\n arrow_upward\n </mat-icon>\n }\n }\n </div>\n }\n</div>", styles: [".wrap{display:inline-flex;align-items:center}.wrap mat-icon{font-size:14px;display:block;height:14px;width:14px}.wrap .direction{margin-left:5px}\n"] }]
|
|
2744
|
+
}], ctorParameters: () => [] });
|
|
2785
2745
|
|
|
2786
2746
|
class SortingController {
|
|
2787
2747
|
config;
|
|
@@ -2987,7 +2947,7 @@ class SortingController {
|
|
|
2987
2947
|
}
|
|
2988
2948
|
|
|
2989
2949
|
class FsHeadComponent {
|
|
2990
|
-
_cdRef;
|
|
2950
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
2991
2951
|
sorting;
|
|
2992
2952
|
columns;
|
|
2993
2953
|
hasRowActions;
|
|
@@ -3000,9 +2960,6 @@ class FsHeadComponent {
|
|
|
3000
2960
|
selectedAll = false;
|
|
3001
2961
|
ReorderStrategyEnum = ReorderStrategy;
|
|
3002
2962
|
_destroy$ = new Subject();
|
|
3003
|
-
constructor(_cdRef) {
|
|
3004
|
-
this._cdRef = _cdRef;
|
|
3005
|
-
}
|
|
3006
2963
|
get leftDragDropEnabled() {
|
|
3007
2964
|
return this.reorderEnabled
|
|
3008
2965
|
&& this.reorderPosition === ReorderPosition.Left
|
|
@@ -3063,20 +3020,18 @@ class FsHeadComponent {
|
|
|
3063
3020
|
});
|
|
3064
3021
|
}
|
|
3065
3022
|
}
|
|
3066
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadComponent, deps: [
|
|
3067
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
3023
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3024
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsHeadComponent, isStandalone: true, selector: "[fs-list-head]", inputs: { sorting: "sorting", columns: "columns", hasRowActions: "hasRowActions", selection: "selection", activeFiltersCount: "activeFiltersCount", reorderEnabled: "reorderEnabled", reorderPosition: "reorderPosition", reorderStrategy: "reorderStrategy" }, viewQueries: [{ propertyName: "rowsContainer", first: true, predicate: ["rowsContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n @if (leftDragDropEnabled) {\n <th\n class=\"fs-list-col drag-col\">\n </th>\n }\n <!-- Selection -->\n @if (selection && !(selection.disabled$ | async)) {\n <th\n class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox\n (change)=\"selectAll($event)\"\n [checked]=\"selectedAll\">\n </mat-checkbox>\n </th>\n }\n <!-- Content -->\n @for (column of columns; track trackByFn($index, column)) {\n <th\n fs-head-cell\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n }\n <!-- Drag -->\n @if (rightDragDropEnabled) {\n <th\n class=\"fs-list-col drag-col\">\n </th>\n }\n <!-- Row Actions -->\n @if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)) {\n <th\n class=\"fs-list-col actions-col\">\n </th>\n }\n</tr>", styles: ["th.fs-list-col-selection{width:1%!important;text-align:left}th.sorting{cursor:pointer}th.sorting:hover{background-color:#f6f6f6}th.sorting{background-image:none}th.left{text-align:left}th.center{text-align:center}th.right{text-align:right}\n"], dependencies: [{ kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: FsHeadCellComponent, selector: "[fs-head-cell]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3068
3025
|
}
|
|
3069
3026
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsHeadComponent, decorators: [{
|
|
3070
3027
|
type: Component,
|
|
3071
3028
|
args: [{ selector: '[fs-list-head]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
3072
|
-
NgIf,
|
|
3073
3029
|
MatCheckbox,
|
|
3074
|
-
NgFor,
|
|
3075
3030
|
FsHeadCellComponent,
|
|
3076
3031
|
NgClass,
|
|
3077
|
-
AsyncPipe
|
|
3078
|
-
], template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n
|
|
3079
|
-
}],
|
|
3032
|
+
AsyncPipe
|
|
3033
|
+
], template: "<tr class=\"fs-list-row\">\n <!-- Drag -->\n @if (leftDragDropEnabled) {\n <th\n class=\"fs-list-col drag-col\">\n </th>\n }\n <!-- Selection -->\n @if (selection && !(selection.disabled$ | async)) {\n <th\n class=\"fs-list-col fs-list-col-selection\">\n <mat-checkbox\n (change)=\"selectAll($event)\"\n [checked]=\"selectedAll\">\n </mat-checkbox>\n </th>\n }\n <!-- Content -->\n @for (column of columns; track trackByFn($index, column)) {\n <th\n fs-head-cell\n (click)=\"$event.stopPropagation(); sorting.sortBy(column)\"\n [column]=\"column\"\n [class.sorting]=\"column.sortable\"\n [ngClass]=\"column.headerConfigs.classesArray\"\n [attr.colspan]=\"column.headerConfigs.colspan\"\n [attr.width]=\"column.width\">\n </th>\n }\n <!-- Drag -->\n @if (rightDragDropEnabled) {\n <th\n class=\"fs-list-col drag-col\">\n </th>\n }\n <!-- Row Actions -->\n @if (hasRowActions && !(reorderEnabled && reorderStrategy === ReorderStrategyEnum.Manual)) {\n <th\n class=\"fs-list-col actions-col\">\n </th>\n }\n</tr>", styles: ["th.fs-list-col-selection{width:1%!important;text-align:left}th.sorting{cursor:pointer}th.sorting:hover{background-color:#f6f6f6}th.sorting{background-image:none}th.left{text-align:left}th.center{text-align:center}th.right{text-align:right}\n"] }]
|
|
3034
|
+
}], propDecorators: { sorting: [{
|
|
3080
3035
|
type: Input
|
|
3081
3036
|
}], columns: [{
|
|
3082
3037
|
type: Input
|
|
@@ -4737,14 +4692,14 @@ class List {
|
|
|
4737
4692
|
*/
|
|
4738
4693
|
_initRestore() {
|
|
4739
4694
|
if (this.restore) {
|
|
4740
|
-
const restoreAction =
|
|
4695
|
+
const restoreAction = {
|
|
4741
4696
|
label: this.restore.menuLabel || 'Restore',
|
|
4742
4697
|
menu: true,
|
|
4743
4698
|
click: (row) => {
|
|
4744
4699
|
this._restoreClick(this.restore.click, row);
|
|
4745
4700
|
}, // TODO fix me, move to special file
|
|
4746
4701
|
restore: true,
|
|
4747
|
-
}
|
|
4702
|
+
};
|
|
4748
4703
|
if (!this.rowActionsRaw) {
|
|
4749
4704
|
this.rowActionsRaw = [];
|
|
4750
4705
|
}
|
|
@@ -4864,6 +4819,7 @@ class List {
|
|
|
4864
4819
|
return combineLatest([of({ params, query }), remoteFetch]);
|
|
4865
4820
|
}), catchError((error) => {
|
|
4866
4821
|
console.error(error);
|
|
4822
|
+
this._loading$.next(false);
|
|
4867
4823
|
return EMPTY;
|
|
4868
4824
|
}), takeUntil(this._destroy$))
|
|
4869
4825
|
.subscribe(([paramsQuery, response]) => {
|
|
@@ -5191,17 +5147,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5191
5147
|
}] });
|
|
5192
5148
|
|
|
5193
5149
|
class FsListGroupExpandTriggerDirective {
|
|
5194
|
-
_expandNotifier;
|
|
5150
|
+
_expandNotifier = inject(GroupExpandNotifierService);
|
|
5195
5151
|
click(event) {
|
|
5196
5152
|
event.preventDefault();
|
|
5197
5153
|
event.stopPropagation();
|
|
5198
5154
|
this._expandNotifier.toggleExpandStatus(this.row);
|
|
5199
5155
|
}
|
|
5200
5156
|
row;
|
|
5201
|
-
|
|
5202
|
-
this._expandNotifier = _expandNotifier;
|
|
5203
|
-
}
|
|
5204
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [{ token: GroupExpandNotifierService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
5157
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListGroupExpandTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5205
5158
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListGroupExpandTriggerDirective, isStandalone: true, selector: "[fsListGroupExpandTrigger]", inputs: { row: "row" }, host: { listeners: { "click": "click($event)" } }, ngImport: i0 });
|
|
5206
5159
|
}
|
|
5207
5160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListGroupExpandTriggerDirective, decorators: [{
|
|
@@ -5210,7 +5163,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5210
5163
|
selector: '[fsListGroupExpandTrigger]',
|
|
5211
5164
|
standalone: true
|
|
5212
5165
|
}]
|
|
5213
|
-
}],
|
|
5166
|
+
}], propDecorators: { click: [{
|
|
5214
5167
|
type: HostListener,
|
|
5215
5168
|
args: ['click', ['$event']]
|
|
5216
5169
|
}], row: [{
|
|
@@ -5452,11 +5405,11 @@ class FsListLoaderComponent {
|
|
|
5452
5405
|
}
|
|
5453
5406
|
}
|
|
5454
5407
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5455
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
5408
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsListLoaderComponent, isStandalone: true, selector: "fs-list-loader", inputs: { columns: "columns", loaderLines: "loaderLines" }, usesOnChanges: true, ngImport: i0, template: "<table>\n <thead>\n <tr>\n @for (col of cols; track col; let column = $index) {\n <th [width]=\"widths[column] + '%'\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track row; let index = $index) {\n <tr>\n @for (col of cols; track col; let column = $index) {\n <td>\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5456
5409
|
}
|
|
5457
5410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListLoaderComponent, decorators: [{
|
|
5458
5411
|
type: Component,
|
|
5459
|
-
args: [{ selector: 'fs-list-loader', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
5412
|
+
args: [{ selector: 'fs-list-loader', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [], template: "<table>\n <thead>\n <tr>\n @for (col of cols; track col; let column = $index) {\n <th [width]=\"widths[column] + '%'\">\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"(placeholderWidths[0][column]/2) + '%'\"></div>\n </th>\n }\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track row; let index = $index) {\n <tr>\n @for (col of cols; track col; let column = $index) {\n <td>\n <div class=\"fs-skeleton-placeholder\" [style.width]=\"placeholderWidths[index][column] + '%'\"></div>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n", styles: ["table{width:100%;border-spacing:0}.fs-skeleton-placeholder{opacity:.5}:host ::ng-deep tbody tr:hover td{background:transparent}\n"] }]
|
|
5460
5413
|
}], propDecorators: { columns: [{
|
|
5461
5414
|
type: Input
|
|
5462
5415
|
}], loaderLines: [{
|
|
@@ -5479,18 +5432,17 @@ class FsPaginationComponent {
|
|
|
5479
5432
|
this.pagination.goLast();
|
|
5480
5433
|
}
|
|
5481
5434
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5482
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsPaginationComponent, isStandalone: true, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<div class=\"pagination-container\">\n @if (pagination.hasManyStrategy) {\n <ng-container *ngTemplateOutlet=\"strategyMany\"></ng-container>\n } @else if (pagination.loadMoreEnabled) {\n <ng-container *ngTemplateOutlet=\"strategyLoadMore\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"strategyOffsetPage\"></ng-container>\n }\n</div>\n<ng-template #strategyLoadMore>\n @if (pagination.hasNextPage) {\n <div class=\"fs-list-load-more\">\n <button\n
|
|
5435
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsPaginationComponent, isStandalone: true, selector: "fs-list-pagination", inputs: { pagination: "pagination", rows: "rows" }, ngImport: i0, template: "<div class=\"pagination-container\">\n @if (pagination.hasManyStrategy) {\n <ng-container *ngTemplateOutlet=\"strategyMany\"></ng-container>\n } @else if (pagination.loadMoreEnabled) {\n <ng-container *ngTemplateOutlet=\"strategyLoadMore\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"strategyOffsetPage\"></ng-container>\n }\n</div>\n<ng-template #strategyLoadMore>\n @if (pagination.hasNextPage) {\n <div class=\"fs-list-load-more\">\n <button\n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"next()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n }\n</ng-template>\n<ng-template #strategyOffsetPage>\n @if (pagination.records > pagination.limit) {\n @if (pagination?.pages) {\n }\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n }\n</ng-template>\n<ng-template #strategyMany>\n @if (!(pagination.pageRecords ===0 && pagination.page === 1)) {\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: true }\">\n </ng-container>\n }\n</ng-template>\n<ng-template\n #firstPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"first\"\n [class.disabled]=\"disabled\"\n (click)=\"first()\">\n <mat-icon>\n first_page\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #prevPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"previous\"\n [class.disabled]=\"disabled\"\n (click)=\"prev()\">\n <mat-icon>\n keyboard_arrow_left\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #nextPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"next\"\n [class.disabled]=\"disabled\"\n (click)=\"next()\">\n <mat-icon>\n keyboard_arrow_right\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #lastPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"last\"\n [class.disabled]=\"disabled\"\n (click)=\"last()\">\n <mat-icon>\n last_page\n </mat-icon>\n </a>\n</ng-template>", styles: [".pagination-container{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;width:100%}a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}a:not(.page){padding:10px}a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FsCommonModule }, { kind: "pipe", type: i1$2.FsFormatNumberPipe, name: "fsFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5483
5436
|
}
|
|
5484
5437
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsPaginationComponent, decorators: [{
|
|
5485
5438
|
type: Component,
|
|
5486
5439
|
args: [{ selector: 'fs-list-pagination', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
5487
5440
|
NgTemplateOutlet,
|
|
5488
5441
|
MatButton,
|
|
5489
|
-
NgIf,
|
|
5490
5442
|
MatRipple,
|
|
5491
5443
|
MatIcon,
|
|
5492
|
-
FsCommonModule
|
|
5493
|
-
], template: "<div class=\"pagination-container\">\n @if (pagination.hasManyStrategy) {\n <ng-container *ngTemplateOutlet=\"strategyMany\"></ng-container>\n } @else if (pagination.loadMoreEnabled) {\n <ng-container *ngTemplateOutlet=\"strategyLoadMore\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"strategyOffsetPage\"></ng-container>\n }\n</div>\n<ng-template #strategyLoadMore>\n @if (pagination.hasNextPage) {\n <div class=\"fs-list-load-more\">\n <button\n
|
|
5444
|
+
FsCommonModule
|
|
5445
|
+
], template: "<div class=\"pagination-container\">\n @if (pagination.hasManyStrategy) {\n <ng-container *ngTemplateOutlet=\"strategyMany\"></ng-container>\n } @else if (pagination.loadMoreEnabled) {\n <ng-container *ngTemplateOutlet=\"strategyLoadMore\"></ng-container>\n } @else {\n <ng-container *ngTemplateOutlet=\"strategyOffsetPage\"></ng-container>\n }\n</div>\n<ng-template #strategyLoadMore>\n @if (pagination.hasNextPage) {\n <div class=\"fs-list-load-more\">\n <button\n mat-button\n type=\"button\"\n [class]=\"pagination.loadMoreButtonClass\"\n [color]=\"pagination.loadMoreButtonColor\"\n (click)=\"next()\">\n {{ pagination.loadMoreLabel }}\n </button>\n </div>\n }\n</ng-template>\n<ng-template #strategyOffsetPage>\n @if (pagination.records > pagination.limit) {\n @if (pagination?.pages) {\n }\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page | fsFormatNumber }} of {{ pagination.pages | fsFormatNumber }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n }\n</ng-template>\n<ng-template #strategyMany>\n @if (!(pagination.pageRecords ===0 && pagination.page === 1)) {\n <ng-container\n [ngTemplateOutlet]=\"firstPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"prevPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasPrevPage }\">\n </ng-container>\n <div class=\"number\">\n {{ pagination.page }}\n </div>\n <ng-container\n [ngTemplateOutlet]=\"nextPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: !pagination.hasNextPage }\">\n </ng-container>\n <ng-container\n [ngTemplateOutlet]=\"lastPageButton\"\n [ngTemplateOutletContext]=\"{ disabled: true }\">\n </ng-container>\n }\n</ng-template>\n<ng-template\n #firstPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"first\"\n [class.disabled]=\"disabled\"\n (click)=\"first()\">\n <mat-icon>\n first_page\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #prevPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"previous\"\n [class.disabled]=\"disabled\"\n (click)=\"prev()\">\n <mat-icon>\n keyboard_arrow_left\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #nextPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"next\"\n [class.disabled]=\"disabled\"\n (click)=\"next()\">\n <mat-icon>\n keyboard_arrow_right\n </mat-icon>\n </a>\n</ng-template>\n<ng-template\n #lastPageButton\n let-disabled=\"disabled\">\n <a\n matRipple\n [matRippleRadius]=\"15\"\n [matRippleCentered]=\"true\"\n class=\"last\"\n [class.disabled]=\"disabled\"\n (click)=\"last()\">\n <mat-icon>\n last_page\n </mat-icon>\n </a>\n</ng-template>", styles: [".pagination-container{display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none;width:100%}a{text-align:center;color:#000000de;text-decoration:none;font-size:15px;cursor:pointer;display:flex}a:not(.page){padding:10px}a.disabled{pointer-events:none;cursor:default;color:#d8d8d8}.number{font-size:90%}.fs-list-load-more button{width:100%;margin-top:10px}\n"] }]
|
|
5494
5446
|
}], propDecorators: { pagination: [{
|
|
5495
5447
|
type: Input
|
|
5496
5448
|
}], rows: [{
|
|
@@ -5594,15 +5546,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5594
5546
|
}] } });
|
|
5595
5547
|
|
|
5596
5548
|
class FsListComponent {
|
|
5597
|
-
reorderController;
|
|
5598
|
-
_config;
|
|
5599
|
-
_el;
|
|
5600
|
-
_selectionDialog;
|
|
5601
|
-
_dialog;
|
|
5602
|
-
_cdRef;
|
|
5603
|
-
_groupExpandNotifier;
|
|
5604
|
-
_route;
|
|
5605
|
-
_persistance;
|
|
5549
|
+
reorderController = inject(ReorderController);
|
|
5550
|
+
_config = inject(FS_LIST_CONFIG, { optional: true });
|
|
5551
|
+
_el = inject(ElementRef);
|
|
5552
|
+
_selectionDialog = inject(SelectionDialog);
|
|
5553
|
+
_dialog = inject(MatDialog);
|
|
5554
|
+
_cdRef = inject(ChangeDetectorRef);
|
|
5555
|
+
_groupExpandNotifier = inject(GroupExpandNotifierService);
|
|
5556
|
+
_route = inject(ActivatedRoute);
|
|
5557
|
+
_persistance = inject(PersistanceController);
|
|
5606
5558
|
classFsList = true;
|
|
5607
5559
|
rowHoverHighlight;
|
|
5608
5560
|
set config(config) {
|
|
@@ -5643,17 +5595,6 @@ class FsListComponent {
|
|
|
5643
5595
|
}
|
|
5644
5596
|
_dialogRef = inject(MatDialogRef, { optional: true });
|
|
5645
5597
|
_drawerRef = inject(DrawerRef, { optional: true });
|
|
5646
|
-
constructor(reorderController, _config, _el, _selectionDialog, _dialog, _cdRef, _groupExpandNotifier, _route, _persistance) {
|
|
5647
|
-
this.reorderController = reorderController;
|
|
5648
|
-
this._config = _config;
|
|
5649
|
-
this._el = _el;
|
|
5650
|
-
this._selectionDialog = _selectionDialog;
|
|
5651
|
-
this._dialog = _dialog;
|
|
5652
|
-
this._cdRef = _cdRef;
|
|
5653
|
-
this._groupExpandNotifier = _groupExpandNotifier;
|
|
5654
|
-
this._route = _route;
|
|
5655
|
-
this._persistance = _persistance;
|
|
5656
|
-
}
|
|
5657
5598
|
/**
|
|
5658
5599
|
* Return reference for filter
|
|
5659
5600
|
*/
|
|
@@ -5900,12 +5841,12 @@ class FsListComponent {
|
|
|
5900
5841
|
_restorePersistance(persistConfig) {
|
|
5901
5842
|
this._persistance.init(persistConfig, this.inDialog);
|
|
5902
5843
|
}
|
|
5903
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, deps: [
|
|
5844
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5904
5845
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsListComponent, isStandalone: true, selector: "fs-list", inputs: { config: "config", loaderLines: "loaderLines" }, outputs: { filtersReady: "filtersReady" }, host: { properties: { "class.fs-list": "this.classFsList", "class.fs-list-row-highlight": "this.rowHoverHighlight" } }, providers: [
|
|
5905
5846
|
GroupExpandNotifierService,
|
|
5906
5847
|
PersistanceController,
|
|
5907
5848
|
ReorderController,
|
|
5908
|
-
], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "body", first: true, predicate: FsBodyComponent, descendants: true }, { propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filters': list.filterConfig?.items.length,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [config]=\"list.filterConfig\">\n <ng-container *ngIf=\"hasStatus\">\n <ng-template fsFilterStatusBar>\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-template>\n </ng-container>\n @if (headingTemplate) {\n <ng-template fsFilterHeading>\n <ng-template [ngTemplateOutlet]=\"headingTemplate\"></ng-template>\n </ng-template>\n }\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>", 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 tfoot td{padding:8px}::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{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}@media screen and (min-width: 800px){.fs-list-container.has-row-actions-hover ::ng-deep .actions-col{width:0px;position:relative;overflow:visible;padding:0}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions{display:none;position:absolute;border-radius:5px;top:50%;right:5px;transform:translateY(-50%)}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions .mat-mdc-button-base{background:#fefefe;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.fs-list-container.has-row-actions-hover ::ng-deep tr:hover fs-list-row-actions{display:flex}}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow-x:auto;overflow-y:hidden}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FilterComponent, selector: "fs-filter", inputs: ["config"], outputs: ["closed", "opened", "ready"] }, { kind: "directive", type: FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { kind: "directive", type: FilterHeadingDirective, selector: "[fsFilterHeading]" }, { kind: "component", type: FsStatusComponent, selector: "fs-list-status", inputs: ["list", "rows", "firstLoad"] }, { kind: "directive", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { kind: "component", type: FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "directive", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { kind: "component", type: FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "directive", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }, { kind: "component", type: FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { kind: "component", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5849
|
+
], queries: [{ propertyName: "headingTemplate", first: true, predicate: FsListHeadingDirective, descendants: true, read: TemplateRef }, { propertyName: "_emptyStateTemplate", first: true, predicate: FsListEmptyStateDirective, descendants: true, read: TemplateRef }, { propertyName: "columnTemplates", predicate: FsListColumnDirective }], viewQueries: [{ propertyName: "body", first: true, predicate: FsBodyComponent, descendants: true }, { propertyName: "filterReference", first: true, predicate: FilterComponent, descendants: true }], ngImport: i0, template: "<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filters': list.filterConfig?.items.length,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n @if (list.dataController.visibleRows$ | async; as listData) {\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [config]=\"list.filterConfig\">\n @if (hasStatus) {\n <ng-template fsFilterStatusBar>\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-template>\n }\n @if (headingTemplate) {\n <ng-template fsFilterHeading>\n <ng-template [ngTemplateOutlet]=\"headingTemplate\"></ng-template>\n </ng-template>\n }\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n @if (!firstLoad && listData.length > 0 && !list.emptyStateEnabled) {\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n @if (list.columns.hasHeader) {\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n }\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n @if (list.columns.hasFooter) {\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n }\n </table>\n }\n @if (firstLoad) {\n <fs-list-loader\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n }\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n @if (!firstLoad) {\n @if (listData.length === 0) {\n <div\n class=\"fs-list-no-results-container\">\n @if (list.noResults?.message && !list.emptyStateEnabled) {\n <div\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n }\n @if (list.emptyStateEnabled) {\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n }\n </div>\n }\n }\n }\n</ng-template>", 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 tfoot td{padding:8px}::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{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}@media screen and (min-width: 800px){.fs-list-container.has-row-actions-hover ::ng-deep .actions-col{width:0px;position:relative;overflow:visible;padding:0}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions{display:none;position:absolute;border-radius:5px;top:50%;right:5px;transform:translateY(-50%)}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions .mat-mdc-button-base{background:#fefefe;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.fs-list-container.has-row-actions-hover ::ng-deep tr:hover fs-list-row-actions{display:flex}}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow-x:auto;overflow-y:hidden}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: FilterComponent, selector: "fs-filter", inputs: ["config"], outputs: ["closed", "opened", "ready"] }, { kind: "directive", type: FilterStatusBarDirective, selector: "[fsFilterStatusBar]" }, { kind: "directive", type: FilterHeadingDirective, selector: "[fsFilterHeading]" }, { kind: "component", type: FsStatusComponent, selector: "fs-list-status", inputs: ["list", "rows", "firstLoad"] }, { kind: "directive", type: FsListContentInitDirective, selector: "[fsListContentInit]", inputs: ["fsListContentInit"] }, { kind: "component", type: FsHeadComponent, selector: "[fs-list-head]", inputs: ["sorting", "columns", "hasRowActions", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "component", type: FsBodyComponent, selector: "[fs-list-body]", inputs: ["rows", "columns", "hasFooter", "rowActionsRaw", "groupActionsRaw", "rowEvents", "rowClass", "hasRowActions", "selection", "restoreMode", "rowRemoved", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy", "reorderMultiple"] }, { kind: "directive", type: FsListDraggableListDirective, selector: "[fsListDraggableList]", inputs: ["rows"] }, { kind: "component", type: FsFooterComponent, selector: "[fs-list-footer]", inputs: ["hasRowActions", "columns", "selection", "activeFiltersCount", "reorderEnabled", "reorderPosition", "reorderStrategy"] }, { kind: "directive", type: FsListFooterDirective, selector: "[fs-list-footer]", inputs: ["colspan", "align", "class"] }, { kind: "component", type: FsListLoaderComponent, selector: "fs-list-loader", inputs: ["columns", "loaderLines"] }, { kind: "component", type: FsPaginationComponent, selector: "fs-list-pagination", inputs: ["pagination", "rows"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5909
5850
|
}
|
|
5910
5851
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, decorators: [{
|
|
5911
5852
|
type: Component,
|
|
@@ -5916,7 +5857,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5916
5857
|
], standalone: true, imports: [
|
|
5917
5858
|
NgClass,
|
|
5918
5859
|
NgTemplateOutlet,
|
|
5919
|
-
NgIf,
|
|
5920
5860
|
FilterComponent,
|
|
5921
5861
|
FilterStatusBarDirective,
|
|
5922
5862
|
FilterHeadingDirective,
|
|
@@ -5930,13 +5870,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5930
5870
|
FsListLoaderComponent,
|
|
5931
5871
|
FsPaginationComponent,
|
|
5932
5872
|
AsyncPipe,
|
|
5933
|
-
], template: "<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filters': list.filterConfig?.items.length,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n <ng-container *ngIf=\"list.dataController.visibleRows$ | async as listData\">\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [config]=\"list.filterConfig\">\n <ng-container *ngIf=\"hasStatus\">\n <ng-template fsFilterStatusBar>\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-template>\n </ng-container>\n @if (headingTemplate) {\n <ng-template fsFilterHeading>\n <ng-template [ngTemplateOutlet]=\"headingTemplate\"></ng-template>\n </ng-template>\n }\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n <ng-container *ngIf=\"!firstLoad && listData.length > 0 && !list.emptyStateEnabled\">\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n *ngIf=\"list.columns.hasHeader\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n *ngIf=\"list.columns.hasFooter\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n </table>\n </ng-container>\n <fs-list-loader\n *ngIf=\"firstLoad\"\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n <ng-container *ngIf=\"!firstLoad\">\n <div\n *ngIf=\"listData.length === 0\"\n class=\"fs-list-no-results-container\">\n <div\n *ngIf=\"list.noResults?.message && !list.emptyStateEnabled\"\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n <ng-container *ngIf=\"list.emptyStateEnabled\">\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</ng-template>", 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 tfoot td{padding:8px}::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{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}@media screen and (min-width: 800px){.fs-list-container.has-row-actions-hover ::ng-deep .actions-col{width:0px;position:relative;overflow:visible;padding:0}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions{display:none;position:absolute;border-radius:5px;top:50%;right:5px;transform:translateY(-50%)}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions .mat-mdc-button-base{background:#fefefe;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.fs-list-container.has-row-actions-hover ::ng-deep tr:hover fs-list-row-actions{display:flex}}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow-x:auto;overflow-y:hidden}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"] }]
|
|
5934
|
-
}],
|
|
5935
|
-
type: Optional
|
|
5936
|
-
}, {
|
|
5937
|
-
type: Inject,
|
|
5938
|
-
args: [FS_LIST_CONFIG]
|
|
5939
|
-
}] }, { type: i0.ElementRef }, { type: i2.SelectionDialog }, { type: i3.MatDialog }, { type: i0.ChangeDetectorRef }, { type: GroupExpandNotifierService }, { type: i5.ActivatedRoute }, { type: PersistanceController }], propDecorators: { classFsList: [{
|
|
5873
|
+
], template: "<div\n class=\"fs-list-container\"\n [ngClass]=\"{\n 'has-filters': list.filterConfig?.items.length,\n 'has-status': hasStatus,\n 'has-chips': list.chips,\n 'has-actions': list.actions.hasActions,\n 'has-row-actions-hover': list.rowActionsHover,\n 'first-load': firstLoad,\n 'loading': list.loading$ | async\n }\">\n <ng-template [ngTemplateOutlet]=\"listContainerContent\"></ng-template>\n</div>\n<ng-template #listContainerContent>\n @if (list.dataController.visibleRows$ | async; as listData) {\n <div class=\"fs-list-header-container\">\n <div\n class=\"fs-list-header\"\n [ngClass]=\"{ 'no-wrap': reorderController.manualReorderActivated || !list.filterConfig?.items.length }\">\n @if (list.filterConfig) {\n <fs-filter\n class=\"fs-list-filter\"\n [config]=\"list.filterConfig\">\n @if (hasStatus) {\n <ng-template fsFilterStatusBar>\n <fs-list-status\n class=\"fs-list-status\"\n [ngClass]=\"{ 'hidden-mobile': !list.status }\"\n [rows]=\"listData\"\n [list]=\"list\"\n [firstLoad]=\"firstLoad\">\n </fs-list-status>\n </ng-template>\n }\n @if (headingTemplate) {\n <ng-template fsFilterHeading>\n <ng-template [ngTemplateOutlet]=\"headingTemplate\"></ng-template>\n </ng-template>\n }\n </fs-filter>\n }\n </div>\n </div>\n <ng-content select=\"[fs-list-content]\"></ng-content>\n <!-- Table implementation -->\n <div class=\"fs-list-table-container\">\n @if (!firstLoad && listData.length > 0 && !list.emptyStateEnabled) {\n <table\n class=\"fs-list-table\"\n role=\"grid\"\n [fsListContentInit]=\"list.afterContentInit\"\n [ngClass]=\"{\n 'style-card': list.style === 'card',\n 'style-basic': list.style === 'basic',\n 'style-line': (list.style || 'line') === 'line'\n }\">\n @if (list.columns.hasHeader) {\n <thead\n fs-list-head\n class=\"fs-list-head\"\n role=\"rowgroup\"\n [ngClass]=\"list.columns.theadClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [sorting]=\"list.sorting\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </thead>\n }\n <tbody\n fs-list-body\n fsListDraggableList\n class=\"fs-list-body\"\n role=\"rowgroup\"\n [class.disabled]=\"!!(reorderController.reorderDisabled$ | async)\"\n [rows]=\"listData\"\n [rowActionsRaw]=\"list.rowActionsRaw\"\n [groupActionsRaw]=\"list.groupActionsRaw\"\n [hasRowActions]=\"list.hasRowActions\"\n [rowEvents]=\"list.rowEvents\"\n [rowClass]=\"list.rowClass\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [restoreMode]=\"list.restoreMode\"\n [selection]=\"list.selection\"\n [rowRemoved]=\"rowRemoved\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\"\n [reorderMultiple]=\"reorderController.multiple\">\n </tbody>\n @if (list.columns.hasFooter) {\n <tfoot\n fs-list-footer\n class=\"fs-list-footer\"\n [columns]=\"list.columns.visibleColumns$ | async\"\n [selection]=\"list.selection\"\n [hasRowActions]=\"list.hasRowActions\"\n [activeFiltersCount]=\"list.activeFiltersCount$ | async\"\n [reorderEnabled]=\"reorderController.enabled$ | async\"\n [reorderPosition]=\"reorderController.position$ | async\"\n [reorderStrategy]=\"reorderController.strategy$ | async\">\n </tfoot>\n }\n </table>\n }\n @if (firstLoad) {\n <fs-list-loader\n [columns]=\"list.columns.columns\"\n [loaderLines]=\"loaderLines\">\n </fs-list-loader>\n }\n </div>\n <fs-list-pagination\n class=\"fs-list-pagination\"\n [rows]=\"listData\"\n [pagination]=\"list.paging\">\n </fs-list-pagination>\n @if (!firstLoad) {\n @if (listData.length === 0) {\n <div\n class=\"fs-list-no-results-container\">\n @if (list.noResults?.message && !list.emptyStateEnabled) {\n <div\n class=\"fs-list-no-results\">\n {{ list.noResults?.message }}\n </div>\n }\n @if (list.emptyStateEnabled) {\n <ng-template [ngTemplateOutlet]=\"list.emptyStateTemplate\"></ng-template>\n }\n </div>\n }\n }\n }\n</ng-template>", 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 tfoot td{padding:8px}::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{display:block;width:100%}:host ::ng-deep .fs-list-swap-restricted{opacity:.5}:host ::ng-deep .fs-list-no-drop{cursor:no-drop}:host ::ng-deep .hidden{display:none}:host ::ng-deep .multiple-selection{background-color:#2196f380}:host ::ng-deep .multiple-selection ::ng-deep .fs-list-col{background-color:#2196f380}@media print{:host ::ng-deep .fs-list-row-group{page-break-after:avoid}:host ::ng-deep .fs-list-row-group-child{page-break-before:avoid}:host ::ng-deep .fs-list-row-group-footer{page-break-before:avoid}}.fs-list-container{width:100%}.fs-list-container.has-filters .heading-container{margin-bottom:4px}.fs-list-container.loading .fs-list-status,.fs-list-container.loading .fs-list-body,.fs-list-container.loading .fs-list-head,.fs-list-container.loading .fs-list-footer,.fs-list-container.loading fs-list-pagination,.fs-list-container.loading ::ng-deep fs-filter-chips,.fs-list-container.loading .fs-list-no-results-container,.fs-list-container.first-load .fs-list-status,.fs-list-container.first-load .fs-list-body,.fs-list-container.first-load .fs-list-head,.fs-list-container.first-load .fs-list-footer,.fs-list-container.first-load fs-list-pagination,.fs-list-container.first-load ::ng-deep fs-filter-chips,.fs-list-container.first-load .fs-list-no-results-container{opacity:.4;pointer-events:none}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip{color:transparent}.fs-list-container.first-load ::ng-deep fs-filter-chips .fs-chip .remove{visibility:hidden}.fs-list-container.has-actions .fs-list-actions{margin-left:5px}@media screen and (min-width: 800px){.fs-list-container.has-row-actions-hover ::ng-deep .actions-col{width:0px;position:relative;overflow:visible;padding:0}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions{display:none;position:absolute;border-radius:5px;top:50%;right:5px;transform:translateY(-50%)}.fs-list-container.has-row-actions-hover ::ng-deep .actions-col fs-list-row-actions .mat-mdc-button-base{background:#fefefe;box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.fs-list-container.has-row-actions-hover ::ng-deep tr:hover fs-list-row-actions{display:flex}}.fs-list-container .fs-list-header .heading-container{display:flex;flex-direction:column;justify-content:center}.fs-list-container .fs-list-header .heading{margin:0}.fs-list-container .fs-list-header h2+.subheading{margin:2px 0 0}.fs-list-container .fs-list-filter{margin-bottom:0;position:initial!important;display:block;width:100%}.fs-list-container .fs-list-no-results-container .fs-list-no-results{text-align:center;color:#999;padding:10px 0}.fs-list-container .fs-list-table-container{width:100%;overflow-x:auto;overflow-y:hidden}::ng-deep .fs-list-preview-block{position:fixed;height:30px;width:200px;background:gray;display:flex;justify-content:center;align-items:center;z-index:1000;box-shadow:2px 2px 2px #9e9e9ea6;border-radius:6px}::ng-deep .reorder-in-progress{-webkit-user-select:none;user-select:none}@media only screen and (max-width: 600px){::ng-deep .fs-list-filter .inline-actions{top:initial!important;position:initial!important}::ng-deep .fs-list-filter .inline-actions .action-filter{margin-bottom:0!important}::ng-deep .fs-list-header .filter-input-field .mat-form-field-wrapper{padding:0!important}::ng-deep .fs-list-header.has-filters{flex-flow:row wrap}}@media only screen and (max-width: 768px){::ng-deep .show-mobile{display:inline-block!important}::ng-deep .fs-list-actions .action-button{display:none}::ng-deep .row-inline-action.mobile-hide{display:none}::ng-deep .hidden-mobile-menu-action{display:block!important}}:host(.fs-list-row-highlight) ::ng-deep tbody .fs-list-row:hover .fs-list-col{background-color:#f6f6f6}\n"] }]
|
|
5874
|
+
}], propDecorators: { classFsList: [{
|
|
5940
5875
|
type: HostBinding,
|
|
5941
5876
|
args: ['class.fs-list']
|
|
5942
5877
|
}], rowHoverHighlight: [{
|
|
@@ -6030,7 +5965,8 @@ class FsListModule {
|
|
|
6030
5965
|
FsListGroupExpandTriggerDirective,
|
|
6031
5966
|
FsListEmptyStateDirective,
|
|
6032
5967
|
FsListContentDirective,
|
|
6033
|
-
FsListHeadingDirective
|
|
5968
|
+
FsListHeadingDirective,
|
|
5969
|
+
FsListDraggableListDirective] });
|
|
6034
5970
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListModule, imports: [FsListComponent,
|
|
6035
5971
|
FsRowComponent,
|
|
6036
5972
|
FsRowActionsComponent,
|
|
@@ -6093,6 +6029,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
6093
6029
|
FsListEmptyStateDirective,
|
|
6094
6030
|
FsListContentDirective,
|
|
6095
6031
|
FsListHeadingDirective,
|
|
6032
|
+
FsListDraggableListDirective,
|
|
6096
6033
|
],
|
|
6097
6034
|
}]
|
|
6098
6035
|
}] });
|
|
@@ -6101,5 +6038,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
6101
6038
|
* Generated bundle index. Do not edit.
|
|
6102
6039
|
*/
|
|
6103
6040
|
|
|
6104
|
-
export { ActionType, Column, FS_LIST_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListContentDirective, FsListEmptyStateDirective, FsListFooterDirective, FsListGroupExpandTriggerDirective, FsListGroupFooterDirective, FsListGroupHeaderDirective, FsListHeaderDirective, FsListHeadingDirective, FsListLoaderComponent, FsListModule, FsListState, FsPaginationComponent, FsRowComponent, FsStatusComponent, List, PaginationController, PaginationStrategy, ReorderController, ReorderPosition, RowAction, RowType, SelectionChangeType, SelectionController, SortingController, SortingDirection, StyleConfig };
|
|
6041
|
+
export { ActionType, Column, FS_LIST_CONFIG, FsBodyComponent, FsCellComponent, FsFooterCellComponent, FsFooterComponent, FsFooterRowComponent, FsHeadCellComponent, FsHeadComponent, FsListCellDirective, FsListColumnDirective, FsListComponent, FsListContentDirective, FsListDraggableListDirective, FsListEmptyStateDirective, FsListFooterDirective, FsListGroupExpandTriggerDirective, FsListGroupFooterDirective, FsListGroupHeaderDirective, FsListHeaderDirective, FsListHeadingDirective, FsListLoaderComponent, FsListModule, FsListState, FsPaginationComponent, FsRowComponent, FsStatusComponent, List, PaginationController, PaginationStrategy, ReorderController, ReorderPosition, RowAction, RowType, SelectionChangeType, SelectionController, SortingController, SortingDirection, StyleConfig };
|
|
6105
6042
|
//# sourceMappingURL=firestitch-list.mjs.map
|