@firestitch/list 18.0.23 → 18.0.25
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/columns-controller.d.ts +6 -14
- package/app/components/body/row/inline-action/inline-action.component.d.ts +8 -4
- package/app/components/body/row/menu-action/menu-action.component.d.ts +9 -5
- package/app/components/customize-cols/customize-cols.component.d.ts +2 -1
- package/app/directives/column/column.directive.d.ts +2 -2
- package/app/interfaces/listconfig.interface.d.ts +3 -4
- package/app/models/column-attributes.d.ts +3 -3
- package/app/models/column.model.d.ts +2 -1
- package/app/models/columns-column.model.d.ts +8 -0
- package/app/models/index.d.ts +8 -0
- package/app/models/row-action.model.d.ts +2 -1
- package/esm2022/app/classes/columns-controller.mjs +17 -30
- package/esm2022/app/components/body/row/actions/actions.component.mjs +3 -3
- package/esm2022/app/components/body/row/inline-action/inline-action.component.mjs +17 -7
- package/esm2022/app/components/body/row/menu-action/menu-action.component.mjs +16 -8
- package/esm2022/app/components/customize-cols/customize-cols.component.mjs +5 -7
- package/esm2022/app/components/manage-saved-filters/manage-saved-filters.component.mjs +1 -1
- package/esm2022/app/directives/column/column.directive.mjs +9 -10
- package/esm2022/app/interfaces/listconfig.interface.mjs +1 -1
- package/esm2022/app/models/column-attributes.mjs +6 -6
- package/esm2022/app/models/column.model.mjs +7 -4
- package/esm2022/app/models/columns-column.model.mjs +8 -0
- package/esm2022/app/models/index.mjs +9 -0
- package/esm2022/app/models/row-action.model.mjs +4 -1
- package/fesm2022/firestitch-list.mjs +96 -87
- package/fesm2022/firestitch-list.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import * as i3 from '@angular/material/button';
|
|
|
8
8
|
import { MatButtonModule } from '@angular/material/button';
|
|
9
9
|
import * as i4 from '@angular/material/checkbox';
|
|
10
10
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
11
|
-
import * as i4$
|
|
11
|
+
import * as i4$2 from '@angular/material/core';
|
|
12
12
|
import { MatRippleModule } from '@angular/material/core';
|
|
13
13
|
import * as i1$2 from '@angular/material/dialog';
|
|
14
14
|
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
@@ -17,7 +17,7 @@ import { MatIconModule } from '@angular/material/icon';
|
|
|
17
17
|
import { MatMenuModule } from '@angular/material/menu';
|
|
18
18
|
import * as i2$1 from '@angular/material/progress-spinner';
|
|
19
19
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
20
|
-
import * as
|
|
20
|
+
import * as i4$1 from '@angular/material/tooltip';
|
|
21
21
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
22
22
|
import * as i5$1 from '@firestitch/common';
|
|
23
23
|
import { getNormalizedPath, FsCommonModule } from '@firestitch/common';
|
|
@@ -34,7 +34,7 @@ import { BehaviorSubject, Subject, Observable, merge, from, of, combineLatest, E
|
|
|
34
34
|
import { takeUntil, take, filter, tap, skip, distinctUntilChanged, map, shareReplay, delay, switchMap, debounceTime, mapTo, catchError } from 'rxjs/operators';
|
|
35
35
|
import { get, isString, isObject, isBoolean, isNumber, isFunction, cloneDeep, random, mergeWith } from 'lodash-es';
|
|
36
36
|
import * as i3$3 from '@firestitch/drawer';
|
|
37
|
-
import * as i4$
|
|
37
|
+
import * as i4$3 from '@firestitch/selection';
|
|
38
38
|
import * as i1$3 from '@firestitch/store';
|
|
39
39
|
import { FsPersistanceStore } from '@firestitch/store';
|
|
40
40
|
|
|
@@ -1281,6 +1281,9 @@ class RowAction {
|
|
|
1281
1281
|
get isGroup() {
|
|
1282
1282
|
return this._isGroup;
|
|
1283
1283
|
}
|
|
1284
|
+
getRowIcon(row) {
|
|
1285
|
+
return typeof this.icon === 'function' ? this.icon(row) : this.icon;
|
|
1286
|
+
}
|
|
1284
1287
|
_init(value) {
|
|
1285
1288
|
this.icon = value.icon;
|
|
1286
1289
|
this.menu = value.menu ?? true;
|
|
@@ -1358,15 +1361,22 @@ class RowAction {
|
|
|
1358
1361
|
|
|
1359
1362
|
class FsRowInlineActionComponent {
|
|
1360
1363
|
actionType;
|
|
1361
|
-
|
|
1364
|
+
rowAction;
|
|
1365
|
+
row;
|
|
1362
1366
|
clicked = new EventEmitter();
|
|
1363
1367
|
fileSelect = new EventEmitter();
|
|
1368
|
+
icon;
|
|
1369
|
+
ngOnChanges(changes) {
|
|
1370
|
+
if (changes.row) {
|
|
1371
|
+
this.icon = this.rowAction.getRowIcon(this.row.data);
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1364
1374
|
actionClick(event) {
|
|
1365
1375
|
this.clicked.emit(event);
|
|
1366
1376
|
}
|
|
1367
1377
|
ngOnInit() {
|
|
1368
|
-
this.actionType = this.
|
|
1369
|
-
if (!this.
|
|
1378
|
+
this.actionType = this.rowAction.type;
|
|
1379
|
+
if (!this.rowAction.label && this.rowAction.icon) {
|
|
1370
1380
|
this.actionType = ActionType.Icon;
|
|
1371
1381
|
}
|
|
1372
1382
|
}
|
|
@@ -1374,12 +1384,14 @@ class FsRowInlineActionComponent {
|
|
|
1374
1384
|
this.fileSelect.emit(event);
|
|
1375
1385
|
}
|
|
1376
1386
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1377
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: {
|
|
1387
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowInlineActionComponent, 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: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i3.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconAnchor, selector: "a[mat-icon-button]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatMiniFabAnchor, selector: "a[mat-mini-fab]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i3.MatFabAnchor, selector: "a[mat-fab]", inputs: ["extended"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.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 });
|
|
1378
1388
|
}
|
|
1379
1389
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowInlineActionComponent, decorators: [{
|
|
1380
1390
|
type: Component,
|
|
1381
|
-
args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container\n *ngIf=\"
|
|
1382
|
-
}], propDecorators: {
|
|
1391
|
+
args: [{ selector: 'fs-list-row-inline-action', changeDetection: ChangeDetectionStrategy.OnPush, 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"] }]
|
|
1392
|
+
}], propDecorators: { rowAction: [{
|
|
1393
|
+
type: Input
|
|
1394
|
+
}], row: [{
|
|
1383
1395
|
type: Input
|
|
1384
1396
|
}], clicked: [{
|
|
1385
1397
|
type: Output
|
|
@@ -1405,14 +1417,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
1405
1417
|
class FsRowMenuActionComponent {
|
|
1406
1418
|
_menu;
|
|
1407
1419
|
row;
|
|
1408
|
-
|
|
1409
|
-
label;
|
|
1420
|
+
rowAction;
|
|
1410
1421
|
file;
|
|
1411
1422
|
fileSelect = new EventEmitter();
|
|
1412
1423
|
fileError = new EventEmitter();
|
|
1424
|
+
icon;
|
|
1425
|
+
label;
|
|
1413
1426
|
constructor(_menu) {
|
|
1414
1427
|
this._menu = _menu;
|
|
1415
1428
|
}
|
|
1429
|
+
ngOnChanges(changes) {
|
|
1430
|
+
if (changes.row) {
|
|
1431
|
+
this.icon = this.rowAction.getRowIcon(this.row.data);
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1416
1434
|
selectFile(event) {
|
|
1417
1435
|
this.fileSelect.emit(event);
|
|
1418
1436
|
this.closeMenu();
|
|
@@ -1424,17 +1442,18 @@ class FsRowMenuActionComponent {
|
|
|
1424
1442
|
closeMenu() {
|
|
1425
1443
|
this._menu.closeMenu();
|
|
1426
1444
|
}
|
|
1445
|
+
ngOnInit() {
|
|
1446
|
+
this.label = this.rowAction.label;
|
|
1447
|
+
}
|
|
1427
1448
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, deps: [{ token: i3$2.FsMenuComponent }], target: i0.ɵɵFactoryTarget.Component });
|
|
1428
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: { row: "row",
|
|
1449
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowMenuActionComponent, 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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.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 });
|
|
1429
1450
|
}
|
|
1430
1451
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowMenuActionComponent, decorators: [{
|
|
1431
1452
|
type: Component,
|
|
1432
|
-
args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"!file else withFile\">\n <mat-icon *ngIf=\"icon\"
|
|
1453
|
+
args: [{ selector: 'fs-list-row-menu-action', changeDetection: ChangeDetectionStrategy.OnPush, 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>" }]
|
|
1433
1454
|
}], ctorParameters: () => [{ type: i3$2.FsMenuComponent }], propDecorators: { row: [{
|
|
1434
1455
|
type: Input
|
|
1435
|
-
}],
|
|
1436
|
-
type: Input
|
|
1437
|
-
}], label: [{
|
|
1456
|
+
}], rowAction: [{
|
|
1438
1457
|
type: Input
|
|
1439
1458
|
}], file: [{
|
|
1440
1459
|
type: Input
|
|
@@ -1509,11 +1528,11 @@ class FsRowActionsComponent {
|
|
|
1509
1528
|
}
|
|
1510
1529
|
}
|
|
1511
1530
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowActionsComponent, deps: [{ token: i1$1.FsPrompt }], target: i0.ɵɵFactoryTarget.Component });
|
|
1512
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowActionsComponent, 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: "<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 [
|
|
1531
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsRowActionsComponent, 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: "<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"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "component", type: FsRowInlineActionComponent, selector: "fs-list-row-inline-action", inputs: ["rowAction", "row"], outputs: ["clicked", "fileSelect"] }, { kind: "component", type: FsRowMenuActionComponent, selector: "fs-list-row-menu-action", inputs: ["row", "rowAction", "file"], outputs: ["fileSelect", "fileError"] }, { kind: "pipe", type: ActionLabelPipe, name: "actionLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1513
1532
|
}
|
|
1514
1533
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsRowActionsComponent, decorators: [{
|
|
1515
1534
|
type: Component,
|
|
1516
|
-
args: [{ selector: 'fs-list-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, 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 [
|
|
1535
|
+
args: [{ selector: 'fs-list-row-actions', changeDetection: ChangeDetectionStrategy.OnPush, 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"] }]
|
|
1517
1536
|
}], ctorParameters: () => [{ type: i1$1.FsPrompt }], propDecorators: { row: [{
|
|
1518
1537
|
type: Input
|
|
1519
1538
|
}], index: [{
|
|
@@ -1658,8 +1677,8 @@ class Column {
|
|
|
1658
1677
|
get name() {
|
|
1659
1678
|
return this._attributes.name;
|
|
1660
1679
|
}
|
|
1661
|
-
get
|
|
1662
|
-
return this._attributes.
|
|
1680
|
+
get customizable() {
|
|
1681
|
+
return this._attributes.customizable;
|
|
1663
1682
|
}
|
|
1664
1683
|
get width() {
|
|
1665
1684
|
return this._attributes.width;
|
|
@@ -1722,7 +1741,7 @@ class Column {
|
|
|
1722
1741
|
case 'sortable':
|
|
1723
1742
|
{
|
|
1724
1743
|
if (isBoolean(defaults.sortable)) {
|
|
1725
|
-
if (this.sortable ===
|
|
1744
|
+
if (this.sortable === undefined) {
|
|
1726
1745
|
this.sortable = defaults.sortable;
|
|
1727
1746
|
}
|
|
1728
1747
|
}
|
|
@@ -1763,6 +1782,9 @@ class Column {
|
|
|
1763
1782
|
updateVisibility(value) {
|
|
1764
1783
|
this._attributes.visible = value;
|
|
1765
1784
|
}
|
|
1785
|
+
updateCustomizable(value) {
|
|
1786
|
+
this._attributes.customizable = value;
|
|
1787
|
+
}
|
|
1766
1788
|
_parseConfig(config) {
|
|
1767
1789
|
this._attributes = config.attributes;
|
|
1768
1790
|
this.headerTemplate = config.headerTemplate;
|
|
@@ -2376,7 +2398,7 @@ class CustomizeColsDialogComponent {
|
|
|
2376
2398
|
};
|
|
2377
2399
|
});
|
|
2378
2400
|
this.saveDisabled = true;
|
|
2379
|
-
const changed = this._changeFn(data);
|
|
2401
|
+
const changed = this._changeFn ? this._changeFn(data) : null;
|
|
2380
2402
|
if (changed instanceof Observable) {
|
|
2381
2403
|
changed
|
|
2382
2404
|
.pipe(takeUntil(this._destroy$))
|
|
@@ -2397,11 +2419,11 @@ class CustomizeColsDialogComponent {
|
|
|
2397
2419
|
this._dialog.close();
|
|
2398
2420
|
}
|
|
2399
2421
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1$2.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2400
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
2422
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: CustomizeColsDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 matDialogTitle>\r\n Customize columns\r\n</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox\r\n [checked]=\"column.show\"\r\n (change)=\"visibilityChange($event, column)\"\r\n [disabled]=\"column.disabled\">\r\n @if (column.title) {\r\n {{ column.title }}\r\n } @else {\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n }\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-button\r\n color=\"primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"saveDisabled\">\r\n Save\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-button\r\n (click)=\"cancel()\">\r\n Cancel\r\n </button>\r\n</mat-dialog-actions>", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.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: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2401
2423
|
}
|
|
2402
2424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: CustomizeColsDialogComponent, decorators: [{
|
|
2403
2425
|
type: Component,
|
|
2404
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 matDialogTitle
|
|
2426
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<h1 matDialogTitle>\r\n Customize columns\r\n</h1>\r\n<mat-dialog-content>\r\n <div *ngFor=\"let column of columns\">\r\n <mat-checkbox\r\n [checked]=\"column.show\"\r\n (change)=\"visibilityChange($event, column)\"\r\n [disabled]=\"column.disabled\">\r\n @if (column.title) {\r\n {{ column.title }}\r\n } @else {\r\n <ng-template [ngTemplateOutlet]=\"column.template\"></ng-template>\r\n }\r\n </mat-checkbox>\r\n </div>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-button\r\n color=\"primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"saveDisabled\">\r\n Save\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-button\r\n (click)=\"cancel()\">\r\n Cancel\r\n </button>\r\n</mat-dialog-actions>", styles: [".mat-checkbox{min-height:32px;display:block}.mat-icon{font-size:14px;height:14px;width:14px;vertical-align:middle}\n"] }]
|
|
2405
2427
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
2406
2428
|
type: Inject,
|
|
2407
2429
|
args: [MAT_DIALOG_DATA]
|
|
@@ -2504,7 +2526,7 @@ class ColumnAsyncAttribute extends BehaviorSubject {
|
|
|
2504
2526
|
class ColumnAttributes {
|
|
2505
2527
|
_title;
|
|
2506
2528
|
_name;
|
|
2507
|
-
|
|
2529
|
+
_customizable = true;
|
|
2508
2530
|
_sortable;
|
|
2509
2531
|
_sortableDefault;
|
|
2510
2532
|
_direction$ = new ColumnAsyncAttribute(null);
|
|
@@ -2530,11 +2552,11 @@ class ColumnAttributes {
|
|
|
2530
2552
|
return this._name;
|
|
2531
2553
|
}
|
|
2532
2554
|
// customize
|
|
2533
|
-
set
|
|
2534
|
-
this.
|
|
2555
|
+
set customizable(value) {
|
|
2556
|
+
this._customizable = value;
|
|
2535
2557
|
}
|
|
2536
|
-
get
|
|
2537
|
-
return this.
|
|
2558
|
+
get customizable() {
|
|
2559
|
+
return this._customizable;
|
|
2538
2560
|
}
|
|
2539
2561
|
// sortable
|
|
2540
2562
|
set sortable(value) {
|
|
@@ -2968,9 +2990,9 @@ class ColumnsController {
|
|
|
2968
2990
|
_theadClass = '';
|
|
2969
2991
|
_loadFn;
|
|
2970
2992
|
_changeFn;
|
|
2971
|
-
_customizeFieldTitleFn;
|
|
2972
|
-
_customizeFieldDisabledFn;
|
|
2973
|
-
_columnTooltipFn;
|
|
2993
|
+
// private _customizeFieldTitleFn: FsListColumnTitleFn;
|
|
2994
|
+
// private _customizeFieldDisabledFn: FsListColumnDisabledFn;
|
|
2995
|
+
//private _columnTooltipFn: FsListColumnTooltipFn;
|
|
2974
2996
|
_isConfigured = false;
|
|
2975
2997
|
_loadFnConfigured = false;
|
|
2976
2998
|
_changeFnConfigured = false;
|
|
@@ -2992,28 +3014,14 @@ class ColumnsController {
|
|
|
2992
3014
|
return this._visibleColumnsShared$;
|
|
2993
3015
|
}
|
|
2994
3016
|
get columnsForDialog() {
|
|
2995
|
-
const hasCustomTitle = !!this._customizeFieldTitleFn;
|
|
2996
|
-
const hasCustomDisabledStatus = !!this._customizeFieldDisabledFn;
|
|
2997
|
-
const hasCustomTooltip = !!this._columnTooltipFn;
|
|
2998
3017
|
return this._columns
|
|
2999
|
-
.filter((column) => column.
|
|
3018
|
+
.filter((column) => column.customizable && !!column.name)
|
|
3000
3019
|
.map((column) => {
|
|
3001
|
-
const title = hasCustomTitle
|
|
3002
|
-
? this._customizeFieldTitleFn(column.name, column.title)
|
|
3003
|
-
: column.name;
|
|
3004
|
-
const disabled = hasCustomDisabledStatus
|
|
3005
|
-
? this._customizeFieldDisabledFn(column.name)
|
|
3006
|
-
: false;
|
|
3007
|
-
const tooltip = hasCustomTooltip
|
|
3008
|
-
? this._columnTooltipFn(column.name, column.visible, disabled)
|
|
3009
|
-
: undefined;
|
|
3010
3020
|
return {
|
|
3011
3021
|
template: column.headerTemplate,
|
|
3012
3022
|
name: column.name,
|
|
3013
3023
|
show: column.visible,
|
|
3014
|
-
title: title,
|
|
3015
|
-
disabled: disabled,
|
|
3016
|
-
tooltip: tooltip,
|
|
3024
|
+
title: column.title,
|
|
3017
3025
|
};
|
|
3018
3026
|
});
|
|
3019
3027
|
}
|
|
@@ -3063,15 +3071,6 @@ class ColumnsController {
|
|
|
3063
3071
|
this._changeFn = config.change;
|
|
3064
3072
|
this._changeFnConfigured = true;
|
|
3065
3073
|
}
|
|
3066
|
-
if (config.title) {
|
|
3067
|
-
this._customizeFieldTitleFn = config.title;
|
|
3068
|
-
}
|
|
3069
|
-
if (config.disabled) {
|
|
3070
|
-
this._customizeFieldDisabledFn = config.disabled;
|
|
3071
|
-
}
|
|
3072
|
-
if (config.tooltip) {
|
|
3073
|
-
this._columnTooltipFn = config.tooltip;
|
|
3074
|
-
}
|
|
3075
3074
|
this._isConfigured = true;
|
|
3076
3075
|
}
|
|
3077
3076
|
}
|
|
@@ -3108,6 +3107,7 @@ class ColumnsController {
|
|
|
3108
3107
|
.pipe(tap((columnConfigs) => {
|
|
3109
3108
|
this._columnsFetched = true;
|
|
3110
3109
|
this.updateVisibilityForCols(columnConfigs);
|
|
3110
|
+
this.updateCustomizableForCols(columnConfigs);
|
|
3111
3111
|
}), takeUntil(this._destroy$));
|
|
3112
3112
|
}
|
|
3113
3113
|
/**
|
|
@@ -3125,11 +3125,20 @@ class ColumnsController {
|
|
|
3125
3125
|
const col = this._columns
|
|
3126
3126
|
.find((column) => column.name === columnConfig.name);
|
|
3127
3127
|
if (col) {
|
|
3128
|
-
col.updateVisibility(columnConfig.show);
|
|
3128
|
+
col.updateVisibility(columnConfig.show ?? true);
|
|
3129
3129
|
}
|
|
3130
3130
|
});
|
|
3131
3131
|
this.updateVisibleColumns();
|
|
3132
3132
|
}
|
|
3133
|
+
updateCustomizableForCols(columnsConfig) {
|
|
3134
|
+
columnsConfig.forEach((columnConfig) => {
|
|
3135
|
+
const col = this._columns
|
|
3136
|
+
.find((column) => column.name === columnConfig.name);
|
|
3137
|
+
if (col) {
|
|
3138
|
+
col.updateCustomizable(columnConfig.customizable ?? true);
|
|
3139
|
+
}
|
|
3140
|
+
});
|
|
3141
|
+
}
|
|
3133
3142
|
destroy() {
|
|
3134
3143
|
this._destroy$.next(null);
|
|
3135
3144
|
this._destroy$.complete();
|
|
@@ -5053,25 +5062,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5053
5062
|
args: ['class']
|
|
5054
5063
|
}] } });
|
|
5055
5064
|
|
|
5056
|
-
class FsListHeaderDirective {
|
|
5057
|
-
colspan;
|
|
5058
|
-
align;
|
|
5059
|
-
className;
|
|
5060
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5061
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListHeaderDirective, selector: "[fs-list-header]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
|
|
5062
|
-
}
|
|
5063
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListHeaderDirective, decorators: [{
|
|
5064
|
-
type: Directive,
|
|
5065
|
-
args: [{ selector: '[fs-list-header]' }]
|
|
5066
|
-
}], propDecorators: { colspan: [{
|
|
5067
|
-
type: Input
|
|
5068
|
-
}], align: [{
|
|
5069
|
-
type: Input
|
|
5070
|
-
}], className: [{
|
|
5071
|
-
type: Input,
|
|
5072
|
-
args: ['class']
|
|
5073
|
-
}] } });
|
|
5074
|
-
|
|
5075
5065
|
class GroupExpandNotifierService {
|
|
5076
5066
|
_expandStatusChanged$ = new Subject();
|
|
5077
5067
|
_destroy$ = new Subject();
|
|
@@ -5138,6 +5128,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5138
5128
|
}]
|
|
5139
5129
|
}] });
|
|
5140
5130
|
|
|
5131
|
+
class FsListHeaderDirective {
|
|
5132
|
+
colspan;
|
|
5133
|
+
align;
|
|
5134
|
+
className;
|
|
5135
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListHeaderDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5136
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListHeaderDirective, selector: "[fs-list-header]", inputs: { colspan: "colspan", align: "align", className: ["class", "className"] }, ngImport: i0 });
|
|
5137
|
+
}
|
|
5138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListHeaderDirective, decorators: [{
|
|
5139
|
+
type: Directive,
|
|
5140
|
+
args: [{ selector: '[fs-list-header]' }]
|
|
5141
|
+
}], propDecorators: { colspan: [{
|
|
5142
|
+
type: Input
|
|
5143
|
+
}], align: [{
|
|
5144
|
+
type: Input
|
|
5145
|
+
}], className: [{
|
|
5146
|
+
type: Input,
|
|
5147
|
+
args: ['class']
|
|
5148
|
+
}] } });
|
|
5149
|
+
|
|
5141
5150
|
class FsListColumnDirective {
|
|
5142
5151
|
// Header
|
|
5143
5152
|
headerTemplate;
|
|
@@ -5170,8 +5179,8 @@ class FsListColumnDirective {
|
|
|
5170
5179
|
set name(value) {
|
|
5171
5180
|
this._columnAttributes.name = value;
|
|
5172
5181
|
}
|
|
5173
|
-
set
|
|
5174
|
-
this._columnAttributes.
|
|
5182
|
+
set customizable(value) {
|
|
5183
|
+
this._columnAttributes.customizable = value;
|
|
5175
5184
|
}
|
|
5176
5185
|
set sortable(value) {
|
|
5177
5186
|
this._columnAttributes.sortable = value;
|
|
@@ -5199,12 +5208,12 @@ class FsListColumnDirective {
|
|
|
5199
5208
|
this._columnAttributes.className = value;
|
|
5200
5209
|
}
|
|
5201
5210
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
5202
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListColumnDirective, selector: "fs-list-column", inputs: { visible: ["show", "visible"], title: "title", name: "name",
|
|
5211
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.7", type: FsListColumnDirective, selector: "fs-list-column", inputs: { visible: ["show", "visible"], title: "title", name: "name", customizable: "customizable", sortable: "sortable", sortableDefault: "sortableDefault", sortableDirection: "sortableDirection", direction: "direction", align: "align", width: "width", className: ["class", "className"] }, queries: [{ propertyName: "headerTemplate", first: true, predicate: FsListHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "headerConfigs", first: true, predicate: FsListHeaderDirective, descendants: true, static: true }, { propertyName: "groupHeaderTemplate", first: true, predicate: FsListGroupHeaderDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupHeaderConfigs", first: true, predicate: FsListGroupHeaderDirective, descendants: true, static: true }, { propertyName: "groupFooterTemplate", first: true, predicate: FsListGroupFooterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "groupFooterConfigs", first: true, predicate: FsListGroupFooterDirective, descendants: true, static: true }, { propertyName: "cellTemplate", first: true, predicate: FsListCellDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "cellConfigs", first: true, predicate: FsListCellDirective, descendants: true, static: true }, { propertyName: "footerTemplate", first: true, predicate: FsListFooterDirective, descendants: true, read: TemplateRef, static: true }, { propertyName: "footerConfigs", first: true, predicate: FsListFooterDirective, descendants: true, static: true }, { propertyName: "expandTrigger", predicate: FsListGroupExpandTriggerDirective, descendants: true }], ngImport: i0 });
|
|
5203
5212
|
}
|
|
5204
5213
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListColumnDirective, decorators: [{
|
|
5205
5214
|
type: Directive,
|
|
5206
5215
|
args: [{
|
|
5207
|
-
selector: 'fs-list-column'
|
|
5216
|
+
selector: 'fs-list-column',
|
|
5208
5217
|
}]
|
|
5209
5218
|
}], ctorParameters: () => [], propDecorators: { headerTemplate: [{
|
|
5210
5219
|
type: ContentChild,
|
|
@@ -5246,7 +5255,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5246
5255
|
type: Input
|
|
5247
5256
|
}], name: [{
|
|
5248
5257
|
type: Input
|
|
5249
|
-
}],
|
|
5258
|
+
}], customizable: [{
|
|
5250
5259
|
type: Input
|
|
5251
5260
|
}], sortable: [{
|
|
5252
5261
|
type: Input
|
|
@@ -5372,7 +5381,7 @@ class FsStatusComponent {
|
|
|
5372
5381
|
this.paging.setLimit(limit);
|
|
5373
5382
|
}
|
|
5374
5383
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsStatusComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5375
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsStatusComponent, selector: "fs-list-status", inputs: { list: "list", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of ecords'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of \n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n r\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n</ng-template>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i3$2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type:
|
|
5384
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsStatusComponent, selector: "fs-list-status", inputs: { list: "list", rows: "rows", firstLoad: "firstLoad" }, host: { properties: { "class.first-load": "this.firstLoad", "class.fs-skeleton-placeholder": "this.firstLoad" } }, ngImport: i0, template: "<div class=\"status\">\n <small>\n @if (paging.enabled) {\n Showing\n @if (paging.hasManyStrategy) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of\n @if (many.status === 'many') {\n <a\n (click)=\"manyClick()\"\n [matTooltip]=\"'Calculate number of ecords'\">\n many\n </a>\n } @else {\n @if (many.status === 'loading') {\n <mat-spinner\n [diameter]=\"15\"\n [strokeWidth]=\"2\">\n </mat-spinner>\n } @else {\n {{ many.count | number:'1.0':'en-US' }}\n }\n }\n } @else {\n @if (paging.records) {\n <ng-container [ngTemplateOutlet]=\"limitMenu\"></ng-container>\n of \n {{ paging.records | number:'1.0':'en-US' }}\n } @else {\n 0\n }\n }\n results\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n }\n <ng-container *ngIf=\"(!paging.enabled) && paging.pageRecords > 0\">\n Showing\n <span *ngIf=\"paging.pageRecords === 1\">\n {{ paging.pageRecords }} result\n </span>\n <span *ngIf=\"paging.pageRecords > 1\">\n {{ paging.pageRecords | number:'1.0':'en-US' }} results\n </span>\n <ng-container *ngTemplateOutlet=\"sortedBy\"></ng-container>\n </ng-container>\n <fs-list-saved-filters class=\"saved-filters\"></fs-list-saved-filters>\n <fs-menu\n [hidden]=\"!sorting.sortingColumn || paging.pageRecords === 0\"\n #orderColumnsMenu>\n <!-- Real sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.sortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n <ng-container *ngIf=\"column.title; else sortByTemplate\">\n {{ column.title }}\n </ng-container>\n <ng-template #sortByTemplate>\n <ng-template [ngTemplateOutlet]=\"column.headerTemplate\"></ng-template>\n </ng-template>\n </ng-template>\n </ng-template>\n <!-- Fake sorting columns -->\n <ng-template\n ngFor\n let-column\n [ngForOf]=\"sorting.fakeSortingColumns\">\n <ng-template\n fs-menu-item\n (click)=\"setSortableColumn(column)\">\n {{ column.title }}\n </ng-template>\n </ng-template>\n </fs-menu>\n <ng-template #sortedBy>\n <ng-container *ngIf=\"sorting.sortingColumn\">\n sorted by\n <ng-container *ngIf=\"sorting.sortingColumn.title; else sortByTemplate\">\n <a\n class=\"order-toggle\"\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n {{ sorting.sortingColumn.title }}\n </a>\n ,\n </ng-container>\n <ng-template #sortByTemplate>\n <a\n class=\"order-toggle\"\n r\n [fsMenuTriggerFor]=\"orderColumnsMenu\">\n <ng-template [ngTemplateOutlet]=\"sorting.sortingColumn.headerTemplate\"></ng-template>\n </a>\n ,\n </ng-template>\n <a\n class=\"order-toggle\"\n (click)=\"toggleDirection()\">\n {{ sorting.sortingColumn.fullNameDirection }}\n </a>\n </ng-container>\n </ng-template>\n </small>\n</div>\n<ng-template #limitMenu>\n <a [fsMenuTriggerFor]=\"limitsMenuTrigger\">\n {{ paging.statusLabel }}\n </a>\n <fs-menu #limitsMenuTrigger>\n <ng-template\n ngFor\n let-limit\n [ngForOf]=\"paging.limits\">\n <ng-template\n fs-menu-item\n (click)=\"setLimit(limit)\">\n {{ limit }}\n </ng-template>\n </ng-template>\n </fs-menu>\n</ng-template>", styles: [":host.hidden-mobile{display:none!important}:host.first-load .status{visibility:hidden}.order-toggle{white-space:nowrap}a{cursor:pointer}mat-spinner{display:inline-block;margin:0 2px;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i3$2.FsMenuComponent, selector: "fs-menu", inputs: ["class", "buttonClass", "buttonType", "buttonColor"], outputs: ["opened", "closed"] }, { kind: "directive", type: i3$2.FsMenuItemDirective, selector: "fs-menu-group,[fs-menu-item]" }, { kind: "directive", type: i3$2.FsMenuTriggerDirective, selector: "[fsMenuTriggerFor]", inputs: ["fsMenuTriggerFor"] }, { kind: "directive", type: i4$1.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: FsListSavedFiltersComponent, selector: "fs-list-saved-filters" }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, preserveWhitespaces: true });
|
|
5376
5385
|
}
|
|
5377
5386
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsStatusComponent, decorators: [{
|
|
5378
5387
|
type: Component,
|
|
@@ -5443,7 +5452,7 @@ class FsPaginationComponent {
|
|
|
5443
5452
|
this.pagination.goLast();
|
|
5444
5453
|
}
|
|
5445
5454
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsPaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5446
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsPaginationComponent, 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 <ng-container *ngIf=\"pagination?.pages\"></ng-container>\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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$
|
|
5455
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsPaginationComponent, 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 <ng-container *ngIf=\"pagination?.pages\"></ng-container>\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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i4$2.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "pipe", type: i5$1.FsFormatNumberPipe, name: "fsFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5447
5456
|
}
|
|
5448
5457
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsPaginationComponent, decorators: [{
|
|
5449
5458
|
type: Component,
|
|
@@ -5792,7 +5801,7 @@ class FsListComponent {
|
|
|
5792
5801
|
const namespace = getNormalizedPath(this._location);
|
|
5793
5802
|
this._persistance.setConfig(persistConfig, namespace, this._inDialog);
|
|
5794
5803
|
}
|
|
5795
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, deps: [{ token: ReorderController }, { token: FS_LIST_CONFIG, optional: true }, { token: i1$2.MatDialogRef, optional: true }, { token: i3$3.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i4$
|
|
5804
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListComponent, deps: [{ token: ReorderController }, { token: FS_LIST_CONFIG, optional: true }, { token: i1$2.MatDialogRef, optional: true }, { token: i3$3.DrawerRef, optional: true }, { token: i0.ElementRef }, { token: i4$3.SelectionDialog }, { token: i1$2.MatDialog }, { token: i0.ChangeDetectorRef }, { token: GroupExpandNotifierService }, { token: i6.Router }, { token: i6.ActivatedRoute }, { token: PersistanceController }, { token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
|
|
5796
5805
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FsListComponent, 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: [
|
|
5797
5806
|
GroupExpandNotifierService,
|
|
5798
5807
|
PersistanceController,
|
|
@@ -5815,7 +5824,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
|
|
|
5815
5824
|
type: Optional
|
|
5816
5825
|
}] }, { type: i3$3.DrawerRef, decorators: [{
|
|
5817
5826
|
type: Optional
|
|
5818
|
-
}] }, { type: i0.ElementRef }, { type: i4$
|
|
5827
|
+
}] }, { type: i0.ElementRef }, { type: i4$3.SelectionDialog }, { type: i1$2.MatDialog }, { type: i0.ChangeDetectorRef }, { type: GroupExpandNotifierService }, { type: i6.Router }, { type: i6.ActivatedRoute }, { type: PersistanceController }, { type: i1.Location }], propDecorators: { classFsList: [{
|
|
5819
5828
|
type: HostBinding,
|
|
5820
5829
|
args: ['class.fs-list']
|
|
5821
5830
|
}], rowHoverHighlight: [{
|
|
@@ -5911,7 +5920,7 @@ class FsListManageSavedFiltersComponent {
|
|
|
5911
5920
|
};
|
|
5912
5921
|
}
|
|
5913
5922
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListManageSavedFiltersComponent, deps: [{ token: i2.ExternalParamsController }], target: i0.ɵɵFactoryTarget.Component });
|
|
5914
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsListManageSavedFiltersComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "
|
|
5923
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: FsListManageSavedFiltersComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>\r\n Manage Saved Filters\r\n</h1>\r\n<div mat-dialog-content>\r\n <fs-list [config]=\"config\">\r\n <fs-list-column name=\"name\" title=\"Name\">\r\n <ng-template fs-list-cell let-row=\"row\">\r\n {{ row.name }}\r\n </ng-template>\r\n </fs-list-column>\r\n </fs-list>\r\n</div>\r\n<div mat-dialog-actions>\r\n <button mat-button\r\n [mat-dialog-close]=\"null\"\r\n type=\"button\"\r\n color=\"primary\">\r\n Done\r\n </button>\r\n</div>\r\n", dependencies: [{ kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1$2.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1$2.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1$2.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: FsListComponent, selector: "fs-list", inputs: ["config", "loaderLines"], outputs: ["filtersReady"] }, { kind: "directive", type: FsListColumnDirective, selector: "fs-list-column", inputs: ["show", "title", "name", "customizable", "sortable", "sortableDefault", "sortableDirection", "direction", "align", "width", "class"] }, { kind: "directive", type: FsListCellDirective, selector: "[fs-list-cell]", inputs: ["colspan", "align", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5915
5924
|
}
|
|
5916
5925
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FsListManageSavedFiltersComponent, decorators: [{
|
|
5917
5926
|
type: Component,
|