@porscheinformatik/material-addons 10.3.4 → 10.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/porscheinformatik-material-addons.umd.js +506 -198
- package/bundles/porscheinformatik-material-addons.umd.js.map +1 -1
- package/bundles/porscheinformatik-material-addons.umd.min.js +2 -2
- package/bundles/porscheinformatik-material-addons.umd.min.js.map +1 -1
- package/esm2015/lib/button/button.module.js +2 -2
- package/esm2015/lib/button/danger-button/danger-button.component.js +1 -1
- package/esm2015/lib/button/flat-button/link-button.component.js +1 -1
- package/esm2015/lib/button/icon-button/icon-button.component.js +1 -1
- package/esm2015/lib/button/mad-basic-button.js +8 -8
- package/esm2015/lib/button/outline-button/outline-button.component.js +1 -1
- package/esm2015/lib/button/primary-button/primary-button.component.js +1 -1
- package/esm2015/lib/card/card.component.js +13 -7
- package/esm2015/lib/card/card.module.js +3 -3
- package/esm2015/lib/content-panel/content-header/content-header.component.js +1 -5
- package/esm2015/lib/content-panel/content-panel-container/content-panel-container.component.js +1 -5
- package/esm2015/lib/content-panel/content-panel-container-content/content-panel-container-content.component.js +1 -5
- package/esm2015/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.js +1 -5
- package/esm2015/lib/content-panel/main-container/main-container.component.js +1 -5
- package/esm2015/lib/data-table/data-table-action-type.js +4 -4
- package/esm2015/lib/data-table/data-table-action.js +1 -1
- package/esm2015/lib/data-table/data-table-column-definition.js +1 -0
- package/esm2015/lib/data-table/data-table-column.js +1 -0
- package/esm2015/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.js +93 -0
- package/esm2015/lib/data-table/data-table.component.js +248 -66
- package/esm2015/lib/data-table/data-table.js +1 -1
- package/esm2015/lib/data-table/data-table.module.js +25 -20
- package/esm2015/lib/flowbar/flowbar.component.js +14 -22
- package/esm2015/lib/flowbar/flowbar.module.js +1 -1
- package/esm2015/lib/material-addons.module.js +1 -1
- package/esm2015/lib/quick-list/base-quick-list.component.js +1 -1
- package/esm2015/lib/quick-list/quick-list-compact/quick-list-compact.component.js +2 -2
- package/esm2015/lib/readonly/readonly-form-field/readonly-form-field.component.js +1 -1
- package/esm2015/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.js +12 -12
- package/esm2015/lib/readonly/readonly-form-field.module.js +1 -1
- package/esm2015/lib/stepper/step-header/step-header.component.js +3 -3
- package/esm2015/lib/stepper/stepper.component.js +2 -2
- package/esm2015/lib/stepper/stepper.module.js +1 -1
- package/esm2015/lib/table/table.component.js +6 -6
- package/esm2015/lib/throttle-click/throttle-click.directive.js +6 -7
- package/esm2015/lib/toolbar/toolbar-action.interface.js +1 -1
- package/esm2015/lib/toolbar/toolbar.component.js +3 -3
- package/esm2015/lib/toolbar/toolbar.module.js +2 -2
- package/esm2015/lib/toolbar/toolbar.service.js +7 -7
- package/esm2015/porscheinformatik-material-addons.js +15 -14
- package/fesm2015/porscheinformatik-material-addons.js +402 -151
- package/fesm2015/porscheinformatik-material-addons.js.map +1 -1
- package/lib/button/mad-basic-button.d.ts +4 -4
- package/lib/content-panel/content-header/content-header.component.d.ts +1 -4
- package/lib/content-panel/content-panel-container/content-panel-container.component.d.ts +1 -4
- package/lib/content-panel/content-panel-container-content/content-panel-container-content.component.d.ts +1 -4
- package/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.d.ts +1 -4
- package/lib/content-panel/main-container/main-container.component.d.ts +1 -4
- package/lib/data-table/data-table-action.d.ts +1 -1
- package/lib/data-table/data-table-column-definition.d.ts +26 -0
- package/lib/data-table/{data-table-column-header.d.ts → data-table-column.d.ts} +3 -1
- package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts +23 -0
- package/lib/data-table/data-table.component.d.ts +68 -20
- package/lib/data-table/data-table.d.ts +2 -1
- package/lib/flowbar/flowbar.component.d.ts +3 -3
- package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts +11 -11
- package/lib/stepper/step-header/step-header.component.d.ts +2 -2
- package/lib/table/table.component.d.ts +4 -4
- package/lib/throttle-click/throttle-click.directive.d.ts +1 -2
- package/lib/toolbar/toolbar-action.interface.d.ts +1 -1
- package/lib/toolbar/toolbar.service.d.ts +2 -2
- package/package.json +1 -1
- package/porscheinformatik-material-addons.d.ts +15 -13
- package/porscheinformatik-material-addons.metadata.json +1 -1
- package/themes/common/styles.scss +6 -0
- package/esm2015/lib/data-table/data-table-column-header.js +0 -1
|
@@ -22,6 +22,8 @@ import { MatSort, MatSortModule } from '@angular/material/sort';
|
|
|
22
22
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
23
23
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
24
24
|
import { v4 } from 'uuid';
|
|
25
|
+
import { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';
|
|
26
|
+
import { moveItemInArray, transferArrayItem, DragDropModule } from '@angular/cdk/drag-drop';
|
|
25
27
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
26
28
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
27
29
|
import { Directionality } from '@angular/cdk/bidi';
|
|
@@ -68,7 +70,13 @@ class MadBasicButton {
|
|
|
68
70
|
constructor() {
|
|
69
71
|
this.disableClick = (e) => e.stopPropagation();
|
|
70
72
|
}
|
|
71
|
-
|
|
73
|
+
get pointerEvent() {
|
|
74
|
+
return this.disabled ? 'none' : 'auto';
|
|
75
|
+
}
|
|
76
|
+
get opacity() {
|
|
77
|
+
return this.disabled ? '0.35' : '1';
|
|
78
|
+
}
|
|
79
|
+
ngOnChanges() {
|
|
72
80
|
this.disableButton();
|
|
73
81
|
}
|
|
74
82
|
disableButton() {
|
|
@@ -79,12 +87,6 @@ class MadBasicButton {
|
|
|
79
87
|
this.button.nativeElement.removeEventListener('click', this.disableClick);
|
|
80
88
|
}
|
|
81
89
|
}
|
|
82
|
-
get pointerEvent() {
|
|
83
|
-
return this.disabled ? 'none' : 'auto';
|
|
84
|
-
}
|
|
85
|
-
get opacity() {
|
|
86
|
-
return this.disabled ? '0.35' : '1';
|
|
87
|
-
}
|
|
88
90
|
}
|
|
89
91
|
MadBasicButton.propDecorators = {
|
|
90
92
|
pointerEvent: [{ type: HostBinding, args: ['style.pointer-events',] }],
|
|
@@ -248,11 +250,11 @@ class ReadOnlyFormFieldWrapperComponent {
|
|
|
248
250
|
*/
|
|
249
251
|
this.rows = 3;
|
|
250
252
|
/**
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
253
|
+
* If shrinkIfEmpty is set to "false", nothing changes
|
|
254
|
+
* If set to "true" and multiline is also "true", the textarea will
|
|
255
|
+
* shrink to one row, if value is empty/null/undefined.
|
|
256
|
+
* Otherwise, the defined rows-value will be used
|
|
257
|
+
*/
|
|
256
258
|
this.shrinkIfEmpty = false;
|
|
257
259
|
this.toolTipForInputEnabled = false;
|
|
258
260
|
}
|
|
@@ -303,7 +305,7 @@ class ReadOnlyFormFieldWrapperComponent {
|
|
|
303
305
|
var _a, _b;
|
|
304
306
|
const input = (_b = (_a = this.readOnlyContentWrapper) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.querySelector('input');
|
|
305
307
|
if (input) {
|
|
306
|
-
|
|
308
|
+
const textOverFlowStyleValue = this.getTextOverFlowStyleValue();
|
|
307
309
|
if (textOverFlowStyleValue) {
|
|
308
310
|
input.setAttribute('style', 'text-overflow: ' + textOverFlowStyleValue);
|
|
309
311
|
}
|
|
@@ -314,7 +316,7 @@ class ReadOnlyFormFieldWrapperComponent {
|
|
|
314
316
|
var _a, _b;
|
|
315
317
|
// it works only if the style is added to the component directly. Should find a way for get it from the calculated
|
|
316
318
|
// style. Than it would be possible to define the text-overflow in css for the whole application
|
|
317
|
-
|
|
319
|
+
const textOverflow = (_b = (_a = this.elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.style.textOverflow;
|
|
318
320
|
if (!textOverflow) {
|
|
319
321
|
return 'ellipsis';
|
|
320
322
|
}
|
|
@@ -338,7 +340,7 @@ class ReadOnlyFormFieldWrapperComponent {
|
|
|
338
340
|
}
|
|
339
341
|
isTextOverflown(input) {
|
|
340
342
|
if (input) {
|
|
341
|
-
return
|
|
343
|
+
return input.offsetWidth < input.scrollWidth;
|
|
342
344
|
}
|
|
343
345
|
return false;
|
|
344
346
|
}
|
|
@@ -361,10 +363,10 @@ ReadOnlyFormFieldWrapperComponent.ctorParameters = () => [
|
|
|
361
363
|
{ type: ElementRef }
|
|
362
364
|
];
|
|
363
365
|
ReadOnlyFormFieldWrapperComponent.propDecorators = {
|
|
364
|
-
readonly: [{ type: Input }],
|
|
365
|
-
value: [{ type: Input, args: ['value',] }],
|
|
366
366
|
originalContent: [{ type: ViewChild, args: ['contentWrapper', { static: false },] }],
|
|
367
367
|
readOnlyContentWrapper: [{ type: ViewChild, args: ['readOnlyContentWrapper', { static: false },] }],
|
|
368
|
+
readonly: [{ type: Input }],
|
|
369
|
+
value: [{ type: Input, args: ['value',] }],
|
|
368
370
|
textAlign: [{ type: Input, args: ['textAlign',] }],
|
|
369
371
|
formatNumber: [{ type: Input, args: ['formatNumber',] }],
|
|
370
372
|
decimalPlaces: [{ type: Input, args: ['decimalPlaces',] }],
|
|
@@ -673,6 +675,12 @@ class ToolbarService {
|
|
|
673
675
|
}
|
|
674
676
|
});
|
|
675
677
|
}
|
|
678
|
+
get toolbarTitle() {
|
|
679
|
+
return this.title;
|
|
680
|
+
}
|
|
681
|
+
set toolbarTitle(toolbarTitle) {
|
|
682
|
+
this.title = toolbarTitle;
|
|
683
|
+
}
|
|
676
684
|
ngOnDestroy() {
|
|
677
685
|
if (this.routerSubscription) {
|
|
678
686
|
this.routerSubscription.unsubscribe();
|
|
@@ -690,12 +698,6 @@ class ToolbarService {
|
|
|
690
698
|
this.toolbarActions.push(action);
|
|
691
699
|
});
|
|
692
700
|
}
|
|
693
|
-
set toolbarTitle(toolbarTitle) {
|
|
694
|
-
this.title = toolbarTitle;
|
|
695
|
-
}
|
|
696
|
-
get toolbarTitle() {
|
|
697
|
-
return this.title;
|
|
698
|
-
}
|
|
699
701
|
setDataTitle(dataTitle) {
|
|
700
702
|
this.dataTitle = dataTitle;
|
|
701
703
|
}
|
|
@@ -818,9 +820,9 @@ class ToolbarComponent {
|
|
|
818
820
|
return this.toolbarService.getToolbarActionsMenuTitle();
|
|
819
821
|
}
|
|
820
822
|
showBadgeForMenu() {
|
|
821
|
-
return this.getToolbarActions()
|
|
823
|
+
return (this.getToolbarActions()
|
|
822
824
|
.slice(1) // the first icon is not shown in menu
|
|
823
|
-
.filter(value => value.badge && value.badge.value).length > 0;
|
|
825
|
+
.filter(value => value.badge && value.badge.value).length > 0);
|
|
824
826
|
}
|
|
825
827
|
hasImportantToolbarActions() {
|
|
826
828
|
return this.getToolbarActions().filter(value => !!value.importantAction).length > 0;
|
|
@@ -1188,14 +1190,20 @@ CardComponent.decorators = [
|
|
|
1188
1190
|
template: "<mat-card>\n <mat-card-header>\n <mat-card-title>\n {{ title }}\n <mad-icon-button (click)=\"toggleCollapse()\" *ngIf=\"expandable && !editMode\">\n <mat-icon [@rotateIcon]=\"!expanded\">keyboard_arrow_down</mat-icon>\n </mad-icon-button>\n </mat-card-title>\n <span>\n <mad-icon-button (click)=\"additionalActionClicked()\" *ngIf=\"additionalActionIcon\" [title]=\"additionalActionText\" type=\"button\">\n <mat-icon>{{additionalActionIcon}}</mat-icon>\n </mad-icon-button>\n <mad-icon-button [title]=\"editText\" (click)=\"onEdit()\" *ngIf=\"!readonly && !editMode\">\n <mat-icon>create</mat-icon>\n </mad-icon-button>\n </span>\n </mat-card-header>\n <mat-card-content [@collapseExpandAnimation] *ngIf=\"expanded\">\n <ng-content></ng-content>\n </mat-card-content>\n <mat-card-actions *ngIf=\"!readonly && editMode\">\n <mad-primary-button [title]=\"saveText\" [disabled]=\"saveDisabled\" (throttleClick)=\"onSave()\" madThrottleClick>\n {{ saveText }}\n </mad-primary-button>\n <mad-outline-button [title]=\"cancelText\" [disabled]=\"cancelDisabled\" (click)=\"onCancel()\">\n {{ cancelText }}\n </mad-outline-button>\n </mat-card-actions>\n</mat-card>\n",
|
|
1189
1191
|
animations: [
|
|
1190
1192
|
trigger('collapseExpandAnimation', [
|
|
1191
|
-
transition(':enter', [
|
|
1193
|
+
transition(':enter', [
|
|
1194
|
+
style({ opacity: 0, height: 0, overflow: 'hidden' }),
|
|
1195
|
+
animate('100ms', style({
|
|
1192
1196
|
opacity: 1,
|
|
1193
|
-
height: '*'
|
|
1194
|
-
}))
|
|
1195
|
-
|
|
1197
|
+
height: '*',
|
|
1198
|
+
})),
|
|
1199
|
+
]),
|
|
1200
|
+
transition(':leave', [
|
|
1201
|
+
style({ opacity: 1, height: '*', overflow: 'hidden' }),
|
|
1202
|
+
animate('100ms', style({
|
|
1196
1203
|
opacity: 0,
|
|
1197
|
-
height: 0
|
|
1198
|
-
}))
|
|
1204
|
+
height: 0,
|
|
1205
|
+
})),
|
|
1206
|
+
]),
|
|
1199
1207
|
]),
|
|
1200
1208
|
trigger('rotateIcon', [
|
|
1201
1209
|
state('true', style({ transform: 'rotate(0)' })),
|
|
@@ -1232,24 +1240,23 @@ class ThrottleClickDirective {
|
|
|
1232
1240
|
this.throttleClick = new EventEmitter();
|
|
1233
1241
|
this.clicks = new Subject();
|
|
1234
1242
|
}
|
|
1243
|
+
clickEvent(event) {
|
|
1244
|
+
event.preventDefault();
|
|
1245
|
+
event.stopPropagation();
|
|
1246
|
+
this.clicks.next(event);
|
|
1247
|
+
}
|
|
1235
1248
|
ngOnInit() {
|
|
1236
1249
|
this.subscription = this.clicks.pipe(throttleTime(this.throttleTime)).subscribe(e => this.throttleClick.emit(e));
|
|
1237
1250
|
}
|
|
1238
1251
|
ngOnDestroy() {
|
|
1239
1252
|
this.subscription.unsubscribe();
|
|
1240
1253
|
}
|
|
1241
|
-
clickEvent(event) {
|
|
1242
|
-
event.preventDefault();
|
|
1243
|
-
event.stopPropagation();
|
|
1244
|
-
this.clicks.next(event);
|
|
1245
|
-
}
|
|
1246
1254
|
}
|
|
1247
1255
|
ThrottleClickDirective.decorators = [
|
|
1248
1256
|
{ type: Directive, args: [{
|
|
1249
1257
|
selector: '[madThrottleClick]',
|
|
1250
1258
|
},] }
|
|
1251
1259
|
];
|
|
1252
|
-
ThrottleClickDirective.ctorParameters = () => [];
|
|
1253
1260
|
ThrottleClickDirective.propDecorators = {
|
|
1254
1261
|
throttleTime: [{ type: Input }],
|
|
1255
1262
|
throttleClick: [{ type: Output }],
|
|
@@ -1410,7 +1417,6 @@ QuickListModule.decorators = [
|
|
|
1410
1417
|
class TableComponent {
|
|
1411
1418
|
constructor() {
|
|
1412
1419
|
var _a;
|
|
1413
|
-
this.ACTION_COLUMN_NAME = '__action__';
|
|
1414
1420
|
this.columns = [];
|
|
1415
1421
|
this.filterLabel = 'NOT SET';
|
|
1416
1422
|
this.filterPlaceholder = 'NOT SET';
|
|
@@ -1421,6 +1427,7 @@ class TableComponent {
|
|
|
1421
1427
|
this.tableAction = new EventEmitter();
|
|
1422
1428
|
this.rowAction = new EventEmitter();
|
|
1423
1429
|
this.sortEvent = new EventEmitter();
|
|
1430
|
+
this.ACTION_COLUMN_NAME = '__action__';
|
|
1424
1431
|
this.isFilterEnabled = false;
|
|
1425
1432
|
this.isPaginationEnabled = false;
|
|
1426
1433
|
}
|
|
@@ -1499,14 +1506,14 @@ TableComponent.propDecorators = {
|
|
|
1499
1506
|
defaultPageSize: [{ type: Input }],
|
|
1500
1507
|
rowActions: [{ type: Input }],
|
|
1501
1508
|
tableActions: [{ type: Input }],
|
|
1502
|
-
displayedData: [{ type: Input }],
|
|
1503
|
-
paginationEnabled: [{ type: Input }],
|
|
1504
|
-
filterEnabled: [{ type: Input }],
|
|
1505
1509
|
tableAction: [{ type: Output }],
|
|
1506
1510
|
rowAction: [{ type: Output }],
|
|
1507
1511
|
sortEvent: [{ type: Output }],
|
|
1508
1512
|
paginator: [{ type: ViewChild, args: [MatPaginator, { static: false },] }],
|
|
1509
|
-
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }]
|
|
1513
|
+
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }],
|
|
1514
|
+
displayedData: [{ type: Input }],
|
|
1515
|
+
paginationEnabled: [{ type: Input }],
|
|
1516
|
+
filterEnabled: [{ type: Input }]
|
|
1510
1517
|
};
|
|
1511
1518
|
|
|
1512
1519
|
class TableModule {
|
|
@@ -1532,38 +1539,160 @@ TableModule.decorators = [
|
|
|
1532
1539
|
|
|
1533
1540
|
class DataTableActionType {
|
|
1534
1541
|
}
|
|
1535
|
-
DataTableActionType.SINGLE =
|
|
1536
|
-
DataTableActionType.BATCH =
|
|
1537
|
-
DataTableActionType.NONE =
|
|
1542
|
+
DataTableActionType.SINGLE = 'SINGLE';
|
|
1543
|
+
DataTableActionType.BATCH = 'BATCH';
|
|
1544
|
+
DataTableActionType.NONE = 'NONE';
|
|
1538
1545
|
|
|
1539
|
-
class
|
|
1540
|
-
constructor() {
|
|
1546
|
+
class DataTableColumnsModalComponent {
|
|
1547
|
+
constructor(dialogRef, data) {
|
|
1548
|
+
this.dialogRef = dialogRef;
|
|
1549
|
+
this.data = data;
|
|
1550
|
+
this.selectedColumns = [];
|
|
1551
|
+
this.availableColumns = [];
|
|
1552
|
+
this.filteredAvailableColumns = [];
|
|
1553
|
+
}
|
|
1554
|
+
ngOnInit() {
|
|
1555
|
+
this.definition = this.data.definition;
|
|
1556
|
+
for (const column of this.data.allColumns) {
|
|
1557
|
+
const columnId = column.id;
|
|
1558
|
+
const selectedColumnIds = this.definition.displayedColumns.map(col => col.id);
|
|
1559
|
+
if (selectedColumnIds.includes(columnId)) {
|
|
1560
|
+
this.selectedColumns.push(column);
|
|
1561
|
+
}
|
|
1562
|
+
else {
|
|
1563
|
+
this.availableColumns.push(column);
|
|
1564
|
+
}
|
|
1565
|
+
}
|
|
1566
|
+
this.clearFilterValue();
|
|
1567
|
+
}
|
|
1568
|
+
onDrop(event) {
|
|
1569
|
+
if (event.previousContainer === event.container) {
|
|
1570
|
+
moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
|
1571
|
+
}
|
|
1572
|
+
else {
|
|
1573
|
+
const itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);
|
|
1574
|
+
transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);
|
|
1575
|
+
this.clearFilterValue();
|
|
1576
|
+
this.availableColumns.sort((a, b) => a.label.localeCompare(b.label));
|
|
1577
|
+
}
|
|
1578
|
+
}
|
|
1579
|
+
onSave() {
|
|
1580
|
+
this.definition.displayedColumns = this.selectedColumns;
|
|
1581
|
+
const saveChange = {
|
|
1582
|
+
action: 'SAVE',
|
|
1583
|
+
definition: this.definition,
|
|
1584
|
+
};
|
|
1585
|
+
this.dialogRef.close(saveChange);
|
|
1586
|
+
}
|
|
1587
|
+
onDelete() {
|
|
1588
|
+
const deleteChange = {
|
|
1589
|
+
action: 'DELETE',
|
|
1590
|
+
definition: this.definition,
|
|
1591
|
+
};
|
|
1592
|
+
this.dialogRef.close(deleteChange);
|
|
1593
|
+
}
|
|
1594
|
+
onCancel() {
|
|
1595
|
+
this.dialogRef.close();
|
|
1596
|
+
}
|
|
1597
|
+
updateFilterValue() {
|
|
1541
1598
|
var _a;
|
|
1542
|
-
this.
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1599
|
+
if (((_a = this.searchFilter) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
1600
|
+
this.filteredAvailableColumns = this.availableColumns.filter(c => c.label.toLowerCase().includes(this.searchFilter.toLowerCase()));
|
|
1601
|
+
}
|
|
1602
|
+
else {
|
|
1603
|
+
this.filteredAvailableColumns = [...this.availableColumns];
|
|
1604
|
+
}
|
|
1605
|
+
}
|
|
1606
|
+
findMatchingItemIndex(previousContainer, item) {
|
|
1607
|
+
const itemId = item.element.nativeElement.id;
|
|
1608
|
+
const previousContainerItems = [...previousContainer.data];
|
|
1609
|
+
if ((previousContainerItems === null || previousContainerItems === void 0 ? void 0 : previousContainerItems.length) < 1) {
|
|
1610
|
+
return 0;
|
|
1611
|
+
}
|
|
1612
|
+
for (let itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {
|
|
1613
|
+
if (previousContainerItems[itemIndex].id === itemId) {
|
|
1614
|
+
return itemIndex;
|
|
1615
|
+
}
|
|
1616
|
+
}
|
|
1617
|
+
return 0;
|
|
1618
|
+
}
|
|
1619
|
+
clearFilterValue() {
|
|
1620
|
+
this.searchFilter = '';
|
|
1621
|
+
this.filteredAvailableColumns = [...this.availableColumns];
|
|
1622
|
+
}
|
|
1623
|
+
}
|
|
1624
|
+
DataTableColumnsModalComponent.decorators = [
|
|
1625
|
+
{ type: Component, args: [{
|
|
1626
|
+
selector: 'mad-data-table-columns-modal.component',
|
|
1627
|
+
template: "<h1 mat-dialog-title>{{ data?.titleLabel | translate }}</h1>\n<div mat-dialog-content>\n <div class=\"column-drag-main-content\">\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">{{ data?.infoTextLabel | translate }}</div>\n <div class=\"column-drag-container-header\">{{ data?.selectedLabel | translate }}</div>\n <div\n cdkDropList\n #selectedList=\"cdkDropList\"\n [cdkDropListData]=\"selectedColumns\"\n [cdkDropListConnectedTo]=\"[availableList]\"\n class=\"column-drag-list selected-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\">\n <div class=\"column-drag-box\"\n *ngFor=\"let selectedColumn of selectedColumns; let i = index\"\n cdkDrag\n [id]=\"selectedColumn.id\"\n >\n {{i + 1}}. {{selectedColumn.label | translate }}\n </div>\n </div>\n </div>\n\n <div class=\"column-drag-container\">\n <div class=\"column-drag-info-area\">\n <!-- Table filter -->\n <mat-form-field>\n <mat-label>{{ data?.filterColumnsLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"updateFilterValue()\"\n placeholder=\"{{ data?.filterColumnsPlaceHolder | translate }}\" [(ngModel)]=\"searchFilter\"/>\n <button *ngIf=\"searchFilter\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"clearFilterValue()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <div class=\"column-drag-container-header\">{{ data?.availableLabel | translate }}</div>\n <div\n cdkDropList\n cdkDropListSortingDisabled\n #availableList=\"cdkDropList\"\n [cdkDropListData]=\"availableColumns\"\n [cdkDropListConnectedTo]=\"[selectedList]\"\n class=\"column-drag-list\"\n (cdkDropListDropped)=\"onDrop($event)\">\n <div *ngFor=\"let availableColumn of filteredAvailableColumns\" class=\"column-drag-box\" cdkDrag [id]=\"availableColumn.id\">\n {{availableColumn.label}}\n </div>\n </div>\n </div>\n </div>\n\n</div>\n<div mat-dialog-actions [align]=\"'end'\">\n <mad-outline-button (click)=\"onCancel()\">\n {{ data?.cancelLabel | translate }}\n </mad-outline-button>\n <mad-danger-button *ngIf=\"data?.deleteDefinitionAllowed\" (click)=\"onDelete()\">\n {{ data?.deleteLabel | translate }}\n </mad-danger-button>\n <mad-primary-button (click)=\"onSave()\" [disabled]=\"!(this.selectedColumns?.length > 0)\">\n {{ data?.saveLabel | translate }}\n </mad-primary-button>\n</div>\n",
|
|
1628
|
+
styles: [".column-drag-main-content{border-bottom:1px solid #f5f5f5;display:flex;flex-direction:row;justify-content:space-between;margin-bottom:16px;padding:8px 8px 16px;width:544px}.column-drag-container{display:inline-block;font-size:small;max-width:100%;vertical-align:top;width:256px}.info-box{margin-bottom:16px}.column-drag-info-area,.info-box{color:rgba(0,0,0,.66);font-size:small;width:100%}.column-drag-info-area{align-items:stretch;display:flex;flex-direction:column;height:36px;justify-content:right;margin-bottom:32px}.column-drag-list{background:#fff;border:1px solid #ccc;border-radius:4px;box-sizing:border-box;display:block;height:200px;overflow:auto}.column-drag-container-header{font-weight:700;margin-bottom:4px}.column-drag-box{align-items:center;background:#fff;border-bottom:1px solid #ccc;box-sizing:border-box;color:rgba(0,0,0,.87);cursor:move;display:flex;flex-direction:row;font-size:14px;height:40px;justify-content:space-between;padding:12px 10px}.cdk-drag-preview{border-radius:4px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);box-sizing:border-box}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-drag-box:last-child{border:none}.column-drag-list.cdk-drop-list-dragging .column-drag-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}"]
|
|
1629
|
+
},] }
|
|
1630
|
+
];
|
|
1631
|
+
DataTableColumnsModalComponent.ctorParameters = () => [
|
|
1632
|
+
{ type: MatDialogRef },
|
|
1633
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
1634
|
+
];
|
|
1635
|
+
|
|
1636
|
+
class DataTableComponent {
|
|
1637
|
+
constructor(matDialog) {
|
|
1638
|
+
this.matDialog = matDialog;
|
|
1639
|
+
// Translations
|
|
1640
|
+
this.filterLabel = 'Filter';
|
|
1641
|
+
this.filterPlaceholder = '';
|
|
1642
|
+
this.filterColumnsLabel = 'Filter';
|
|
1643
|
+
this.filterColumnsPlaceHolder = 'Filter available columns';
|
|
1644
|
+
this.noDataText = 'No matching data found';
|
|
1645
|
+
this.columnSettingsModalTitleLabel = 'Column settings';
|
|
1646
|
+
this.selectedLabel = 'Selected columns';
|
|
1647
|
+
this.availableLabel = 'Available columns';
|
|
1648
|
+
this.saveLabel = 'Save';
|
|
1649
|
+
this.deleteLabel = 'Delete';
|
|
1650
|
+
this.cancelLabel = 'Cancel';
|
|
1651
|
+
this.infoTextLabel = 'Drag and drop a column to select or reorder it.';
|
|
1550
1652
|
this.pageSizeOptions = [5, 10, 15];
|
|
1551
|
-
this.defaultPageSize = ((_a = this.pageSizeOptions) === null || _a === void 0 ? void 0 : _a[0]) || 10;
|
|
1552
1653
|
this.actions = [];
|
|
1654
|
+
this.deleteDefinitionAllowed = false;
|
|
1655
|
+
this.useAsync = false;
|
|
1553
1656
|
this.sortEvent = new EventEmitter();
|
|
1554
1657
|
this.actionEvent = new EventEmitter();
|
|
1555
|
-
this.
|
|
1658
|
+
this.pageEvent = new EventEmitter();
|
|
1659
|
+
this.allColumnsEvent = new EventEmitter();
|
|
1660
|
+
this.columnDefinitionChangeEvent = new EventEmitter();
|
|
1661
|
+
this.viewDefinitionChangeEvent = new EventEmitter();
|
|
1662
|
+
this.ACTION_COLUMN_NAME = '__action__';
|
|
1663
|
+
this.SINGLE = DataTableActionType.SINGLE;
|
|
1664
|
+
this.BATCH = DataTableActionType.BATCH;
|
|
1665
|
+
this.NONE = DataTableActionType.NONE;
|
|
1556
1666
|
this.tableActions = [];
|
|
1557
1667
|
this.rowActions = [];
|
|
1668
|
+
this.columns = [];
|
|
1558
1669
|
this.allSelected = false;
|
|
1559
1670
|
this.displayedDataMap = new Map();
|
|
1560
1671
|
this.actualDataMap = new Map();
|
|
1561
1672
|
this.selectionModel = new SelectionModel(true);
|
|
1673
|
+
this.allColumnDefinitions = [];
|
|
1562
1674
|
this.isFilterEnabled = false;
|
|
1563
1675
|
this.isPaginationEnabled = false;
|
|
1564
1676
|
this.mode = this.NONE;
|
|
1565
1677
|
this.isRowClickable = false;
|
|
1678
|
+
this.showColumnModal = false;
|
|
1566
1679
|
this.isLoading = false;
|
|
1680
|
+
this.paginatorLength = 0;
|
|
1681
|
+
this.paginatorPageIndex = 0;
|
|
1682
|
+
this.paginatorPageSize = 50;
|
|
1683
|
+
}
|
|
1684
|
+
set displayedColumns(cols) {
|
|
1685
|
+
if (!this.displayedColumnDefinition) {
|
|
1686
|
+
this.columns = cols ? [...cols] : [];
|
|
1687
|
+
this.columnIds = this.columns.map(column => column.id);
|
|
1688
|
+
this.columnIds.unshift(this.ACTION_COLUMN_NAME);
|
|
1689
|
+
}
|
|
1690
|
+
}
|
|
1691
|
+
set displayedColumnDefinition(def) {
|
|
1692
|
+
this.selectedColumnDefinion = def;
|
|
1693
|
+
this.columns = def.displayedColumns;
|
|
1694
|
+
this.columnIds = this.columns.map(column => column.id);
|
|
1695
|
+
this.columnIds.unshift(this.ACTION_COLUMN_NAME);
|
|
1567
1696
|
}
|
|
1568
1697
|
set tableData(data) {
|
|
1569
1698
|
if (!this.dataSource) {
|
|
@@ -1571,19 +1700,46 @@ class DataTableComponent {
|
|
|
1571
1700
|
}
|
|
1572
1701
|
this.createDataMapsAndSetDisplayedDataSourceData(data);
|
|
1573
1702
|
}
|
|
1703
|
+
set page(page) {
|
|
1704
|
+
this.paginatorPageIndex = page.pageIndex;
|
|
1705
|
+
this.paginatorPageSize = page.pageSize;
|
|
1706
|
+
this.paginatorLength = page.length;
|
|
1707
|
+
}
|
|
1708
|
+
set columnDefinitions(definitions) {
|
|
1709
|
+
var _a;
|
|
1710
|
+
this.editableColumnDefinitions = [];
|
|
1711
|
+
this.viewableColumnDefinitions = [];
|
|
1712
|
+
this.allColumnDefinitions = [...definitions];
|
|
1713
|
+
for (const definition of definitions) {
|
|
1714
|
+
if (definition.editable) {
|
|
1715
|
+
this.editableColumnDefinitions.push(definition);
|
|
1716
|
+
}
|
|
1717
|
+
if (((_a = definition.displayedColumns) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
1718
|
+
this.viewableColumnDefinitions.push(definition);
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1574
1722
|
set loading(isLoading) {
|
|
1575
1723
|
this.isLoading = isLoading;
|
|
1576
1724
|
}
|
|
1725
|
+
set defaultPageSize(defaultSize) {
|
|
1726
|
+
this.paginatorPageSize = defaultSize;
|
|
1727
|
+
}
|
|
1728
|
+
set externalPaginator(paginator) {
|
|
1729
|
+
this.extPaginator = paginator;
|
|
1730
|
+
}
|
|
1577
1731
|
set paginationEnabled(isPaginationEnabled) {
|
|
1578
1732
|
this.isPaginationEnabled = isPaginationEnabled;
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1733
|
+
this.unsetPageSizeIfNecessary();
|
|
1734
|
+
}
|
|
1735
|
+
set allColumns(allColumns) {
|
|
1736
|
+
this.allAvailableColumns = allColumns;
|
|
1737
|
+
if (allColumns && this.showColumnModal) {
|
|
1738
|
+
this.openColumnModal();
|
|
1583
1739
|
}
|
|
1584
1740
|
}
|
|
1585
1741
|
set filterEnabled(isFilterEnabled) {
|
|
1586
|
-
this.isFilterEnabled = isFilterEnabled;
|
|
1742
|
+
this.isFilterEnabled = !this.useAsync ? isFilterEnabled : false;
|
|
1587
1743
|
this.setFilterValue(undefined);
|
|
1588
1744
|
}
|
|
1589
1745
|
set forceMode(mode) {
|
|
@@ -1593,39 +1749,106 @@ class DataTableComponent {
|
|
|
1593
1749
|
this.setActions();
|
|
1594
1750
|
}
|
|
1595
1751
|
}
|
|
1752
|
+
static compare(a, b, sort) {
|
|
1753
|
+
const x = a[sort.active];
|
|
1754
|
+
const y = b[sort.active];
|
|
1755
|
+
const ascending = sort.direction === 'asc';
|
|
1756
|
+
switch (typeof x) {
|
|
1757
|
+
case 'number':
|
|
1758
|
+
return DataTableComponent.compareNumber(x, y, ascending);
|
|
1759
|
+
case 'string':
|
|
1760
|
+
return DataTableComponent.compareString(x, y, ascending);
|
|
1761
|
+
case 'boolean':
|
|
1762
|
+
return DataTableComponent.compareBoolean(x, y, ascending);
|
|
1763
|
+
default:
|
|
1764
|
+
// cannot compare -> return equal
|
|
1765
|
+
return 0;
|
|
1766
|
+
}
|
|
1767
|
+
}
|
|
1768
|
+
static compareNumber(x, y, ascending) {
|
|
1769
|
+
return ascending ? x - y : y - x;
|
|
1770
|
+
}
|
|
1771
|
+
static compareString(x, y, ascending) {
|
|
1772
|
+
return ascending ? x.localeCompare(y) : y.localeCompare(x);
|
|
1773
|
+
}
|
|
1774
|
+
static compareBoolean(x, y, ascending) {
|
|
1775
|
+
if (x === y) {
|
|
1776
|
+
return 0;
|
|
1777
|
+
}
|
|
1778
|
+
if (ascending) {
|
|
1779
|
+
// true first
|
|
1780
|
+
return x ? -1 : 1;
|
|
1781
|
+
}
|
|
1782
|
+
else {
|
|
1783
|
+
// false first
|
|
1784
|
+
return x ? 1 : -1;
|
|
1785
|
+
}
|
|
1786
|
+
}
|
|
1787
|
+
static transformData(value, transformer, transformerParams) {
|
|
1788
|
+
if (!transformer || !(transformer instanceof Function)) {
|
|
1789
|
+
return value;
|
|
1790
|
+
}
|
|
1791
|
+
return transformer(value, transformerParams);
|
|
1792
|
+
}
|
|
1793
|
+
static generateRowId() {
|
|
1794
|
+
return v4();
|
|
1795
|
+
}
|
|
1796
|
+
static isClickOnRowMenuIcon(event) {
|
|
1797
|
+
var _a;
|
|
1798
|
+
return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains('mat-icon');
|
|
1799
|
+
}
|
|
1596
1800
|
ngOnInit() {
|
|
1597
|
-
this.columnNames = this.columns.map(column => column.label);
|
|
1598
1801
|
this.mode = this.getTableMode();
|
|
1599
1802
|
this.setActions();
|
|
1600
1803
|
if (this.mode !== this.NONE) {
|
|
1601
1804
|
this.isRowClickable = true;
|
|
1602
1805
|
this.defaultAction = this.rowActions[0];
|
|
1603
1806
|
}
|
|
1604
|
-
this.columnNames.unshift(this.ACTION_COLUMN_NAME);
|
|
1605
1807
|
}
|
|
1606
1808
|
ngAfterViewInit() {
|
|
1607
1809
|
this.dataSource.paginator = this.paginator;
|
|
1608
1810
|
this.dataSource.sort = this.sort;
|
|
1609
1811
|
}
|
|
1812
|
+
onColumnSettings(definition) {
|
|
1813
|
+
this.showColumnModal = true;
|
|
1814
|
+
this.selectedDefinition = definition ? definition : this.allColumnDefinitions[0];
|
|
1815
|
+
if (this.allAvailableColumns) {
|
|
1816
|
+
this.openColumnModal();
|
|
1817
|
+
}
|
|
1818
|
+
else {
|
|
1819
|
+
// if no complete definitions have been loaded yet send an event so the app can load it
|
|
1820
|
+
this.allColumnsEvent.emit();
|
|
1821
|
+
}
|
|
1822
|
+
}
|
|
1823
|
+
onViewDefinition(definition) {
|
|
1824
|
+
this.selectedDefinition = definition;
|
|
1825
|
+
this.viewDefinitionChangeEvent.emit(definition);
|
|
1826
|
+
}
|
|
1827
|
+
isCurrentDefinition(definition) {
|
|
1828
|
+
return this.selectedDefinition && this.selectedDefinition.id === definition.id;
|
|
1829
|
+
}
|
|
1610
1830
|
get selectedCount() {
|
|
1611
1831
|
var _a;
|
|
1612
1832
|
return ((_a = this.selectionModel) === null || _a === void 0 ? void 0 : _a.selected) ? this.selectionModel.selected.length : 0;
|
|
1613
1833
|
}
|
|
1614
1834
|
get rowCount() {
|
|
1835
|
+
return this.getAllDataSourceRowsOfCurrentPage() ? this.getAllDataSourceRowsOfCurrentPage().length : 0;
|
|
1836
|
+
}
|
|
1837
|
+
getAllDataSourceRowsOfCurrentPage() {
|
|
1615
1838
|
var _a;
|
|
1616
|
-
return (
|
|
1839
|
+
return (_a = this.dataSource) === null || _a === void 0 ? void 0 : _a._pageData(this.dataSource.data);
|
|
1617
1840
|
}
|
|
1618
1841
|
getSelectedCount(actionType) {
|
|
1619
1842
|
const count = this.selectedCount;
|
|
1620
|
-
if (actionType
|
|
1621
|
-
return
|
|
1843
|
+
if (actionType !== this.BATCH || count < 2) {
|
|
1844
|
+
return '';
|
|
1622
1845
|
}
|
|
1623
|
-
return
|
|
1846
|
+
return ' (' + count + ')';
|
|
1624
1847
|
}
|
|
1625
1848
|
isDisabled(actionType) {
|
|
1626
1849
|
switch (actionType) {
|
|
1627
1850
|
case this.SINGLE:
|
|
1628
|
-
return this.selectedCount
|
|
1851
|
+
return this.selectedCount !== 1;
|
|
1629
1852
|
case this.BATCH:
|
|
1630
1853
|
return this.selectedCount < 1;
|
|
1631
1854
|
default:
|
|
@@ -1639,10 +1862,8 @@ class DataTableComponent {
|
|
|
1639
1862
|
this.allSelected = !this.allSelected;
|
|
1640
1863
|
if (this.allSelected) {
|
|
1641
1864
|
// select all rows of the current page
|
|
1642
|
-
this.
|
|
1643
|
-
|
|
1644
|
-
const rowId = "" + dataRow.rowId;
|
|
1645
|
-
this.selectionModel.select(rowId);
|
|
1865
|
+
this.getAllDataSourceRowsOfCurrentPage().forEach(row => {
|
|
1866
|
+
this.selectionModel.select('' + row.rowId);
|
|
1646
1867
|
});
|
|
1647
1868
|
}
|
|
1648
1869
|
}
|
|
@@ -1675,11 +1896,18 @@ class DataTableComponent {
|
|
|
1675
1896
|
return;
|
|
1676
1897
|
}
|
|
1677
1898
|
}
|
|
1678
|
-
onSortingEvent(
|
|
1679
|
-
this.
|
|
1899
|
+
onSortingEvent(sort) {
|
|
1900
|
+
if (this.useAsync) {
|
|
1901
|
+
this.sortEvent.emit(sort);
|
|
1902
|
+
}
|
|
1903
|
+
else {
|
|
1904
|
+
this.internalSort(sort);
|
|
1905
|
+
}
|
|
1680
1906
|
}
|
|
1681
|
-
|
|
1682
|
-
this.
|
|
1907
|
+
onPageEvent(event) {
|
|
1908
|
+
if (this.useAsync) {
|
|
1909
|
+
this.pageEvent.emit(event);
|
|
1910
|
+
}
|
|
1683
1911
|
}
|
|
1684
1912
|
onTableAction(tableAction) {
|
|
1685
1913
|
if (!!tableAction) {
|
|
@@ -1691,19 +1919,6 @@ class DataTableComponent {
|
|
|
1691
1919
|
this.actionEvent.emit(tableAction);
|
|
1692
1920
|
}
|
|
1693
1921
|
}
|
|
1694
|
-
static transformData(value, transformer, transformerParams) {
|
|
1695
|
-
if (!transformer || !(transformer instanceof Function)) {
|
|
1696
|
-
return value;
|
|
1697
|
-
}
|
|
1698
|
-
return transformer(value, transformerParams);
|
|
1699
|
-
}
|
|
1700
|
-
static generateRowId() {
|
|
1701
|
-
return v4();
|
|
1702
|
-
}
|
|
1703
|
-
static isClickOnRowMenuIcon(event) {
|
|
1704
|
-
var _a;
|
|
1705
|
-
return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains("mat-icon");
|
|
1706
|
-
}
|
|
1707
1922
|
emitTableAction(action, selected) {
|
|
1708
1923
|
const emitAction = Object.assign({}, action);
|
|
1709
1924
|
if (action.type !== this.NONE) {
|
|
@@ -1713,13 +1928,17 @@ class DataTableComponent {
|
|
|
1713
1928
|
}
|
|
1714
1929
|
generateDisplayedDataElement(rowId, actualDataElement) {
|
|
1715
1930
|
const displayedDataElement = {};
|
|
1716
|
-
displayedDataElement
|
|
1931
|
+
displayedDataElement.rowId = rowId;
|
|
1717
1932
|
for (const column of this.columns) {
|
|
1718
1933
|
const actualValue = actualDataElement[column.dataPropertyName];
|
|
1719
1934
|
displayedDataElement[column.dataPropertyName] = DataTableComponent.transformData(actualValue, column.transformer, column.transformerParams);
|
|
1720
1935
|
}
|
|
1721
1936
|
return displayedDataElement;
|
|
1722
1937
|
}
|
|
1938
|
+
internalSort(sort) {
|
|
1939
|
+
const sortedData = [...this.dataSource.data].sort((a, b) => DataTableComponent.compare(a, b, sort));
|
|
1940
|
+
this.dataSource.data = [...sortedData];
|
|
1941
|
+
}
|
|
1723
1942
|
setActions() {
|
|
1724
1943
|
this.rowActions = [];
|
|
1725
1944
|
this.tableActions = [];
|
|
@@ -1749,14 +1968,41 @@ class DataTableComponent {
|
|
|
1749
1968
|
const displayedDataList = [];
|
|
1750
1969
|
this.actualDataMap.clear();
|
|
1751
1970
|
this.displayedDataMap.clear();
|
|
1752
|
-
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1971
|
+
if ((data === null || data === void 0 ? void 0 : data.length) > 0) {
|
|
1972
|
+
for (const dataEntry of data) {
|
|
1973
|
+
const rowId = this.idGenerator ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();
|
|
1974
|
+
this.actualDataMap.set(rowId, dataEntry);
|
|
1975
|
+
const displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);
|
|
1976
|
+
this.displayedDataMap.set(rowId, displayedDataElement);
|
|
1977
|
+
displayedDataList.push(displayedDataElement);
|
|
1978
|
+
}
|
|
1758
1979
|
}
|
|
1759
1980
|
this.dataSource.data = displayedDataList;
|
|
1981
|
+
this.unsetPageSizeIfNecessary();
|
|
1982
|
+
}
|
|
1983
|
+
openColumnModal() {
|
|
1984
|
+
const dialogData = {
|
|
1985
|
+
allColumns: this.allAvailableColumns,
|
|
1986
|
+
definition: this.selectedDefinition,
|
|
1987
|
+
deleteDefinitionAllowed: this.deleteDefinitionAllowed,
|
|
1988
|
+
filterColumnsLabel: this.filterColumnsLabel,
|
|
1989
|
+
filterColumnsPlaceHolder: this.filterColumnsPlaceHolder,
|
|
1990
|
+
noDataText: this.noDataText,
|
|
1991
|
+
titleLabel: this.columnSettingsModalTitleLabel,
|
|
1992
|
+
selectedLabel: this.selectedLabel,
|
|
1993
|
+
availableLabel: this.availableLabel,
|
|
1994
|
+
saveLabel: this.saveLabel,
|
|
1995
|
+
deleteLabel: this.deleteLabel,
|
|
1996
|
+
cancelLabel: this.cancelLabel,
|
|
1997
|
+
infoTextLabel: this.infoTextLabel,
|
|
1998
|
+
};
|
|
1999
|
+
const dialog = this.matDialog.open(DataTableColumnsModalComponent, { data: dialogData });
|
|
2000
|
+
dialog.afterClosed().subscribe(result => {
|
|
2001
|
+
// no event on CANCEL
|
|
2002
|
+
if (result) {
|
|
2003
|
+
this.columnDefinitionChangeEvent.emit(result);
|
|
2004
|
+
}
|
|
2005
|
+
});
|
|
1760
2006
|
}
|
|
1761
2007
|
getTableMode() {
|
|
1762
2008
|
if (this._forceMode) {
|
|
@@ -1777,31 +2023,62 @@ class DataTableComponent {
|
|
|
1777
2023
|
}
|
|
1778
2024
|
return this.NONE;
|
|
1779
2025
|
}
|
|
2026
|
+
unsetPageSizeIfNecessary() {
|
|
2027
|
+
if (!this.useAsync && !this.isPaginationEnabled) {
|
|
2028
|
+
const dataCount = this.dataSource.data ? this.dataSource.data.length : 0;
|
|
2029
|
+
this.paginatorPageSize = dataCount;
|
|
2030
|
+
this.paginatorLength = dataCount;
|
|
2031
|
+
}
|
|
2032
|
+
}
|
|
1780
2033
|
}
|
|
1781
2034
|
DataTableComponent.decorators = [
|
|
1782
2035
|
{ type: Component, args: [{
|
|
1783
|
-
selector:
|
|
1784
|
-
template: "<div class=\"mad-datatable-action-bar\">\n <!-- Table actions: displayed before the table -->\n <div *ngIf=\"tableActions?.length\">\n <mad-outline-button\n [disabled]=\"isDisabled(tableAction.type)\"\n class=\"table-action\"\n *ngFor=\"let tableAction of tableActions\"\n (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label | translate }} {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n </div>\n <!-- Table filter -->\n <mat-form-field *ngIf=\"isFilterEnabled\">\n <mat-label>{{ filterLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"setFilterValue($event?.target?.value)\"\n placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n</div>\n\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <button *ngFor=\"let rowAction of rowActions\" mat-menu-item class=\"row-action\"\n (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Table -->\n<div *ngIf=\"rowCount > 0; else noData\" class=\"
|
|
1785
|
-
styles: [".text-right{padding-right:24px!important;text-align:right!important}.table-action{margin-bottom:.5em;margin-right:.5em}.row-action-button{width:10px}.noDataText{text-align:center
|
|
2036
|
+
selector: 'mad-data-table',
|
|
2037
|
+
template: "<div class=\"mad-datatable-action-bar\">\n <!-- Table actions: displayed before the table -->\n <div *ngIf=\"tableActions?.length\">\n <mad-outline-button\n [disabled]=\"isDisabled(tableAction.type)\"\n class=\"table-action\"\n *ngFor=\"let tableAction of tableActions\"\n (click)=\"onTableAction(tableAction)\">\n {{ tableAction.label | translate }} {{ getSelectedCount(tableAction.type) }}\n </mad-outline-button>\n </div>\n <!-- Table filter -->\n <mat-form-field *ngIf=\"isFilterEnabled\">\n <mat-label>{{ filterLabel | translate }}</mat-label>\n <input matInput autocomplete=\"off\" (keyup)=\"setFilterValue($event?.target?.value)\"\n placeholder=\"{{ filterPlaceholder }}\" />\n </mat-form-field>\n</div>\n\n\n<!-- Row action menu -->\n<mat-menu #rowActionMenu=\"matMenu\">\n <ng-template matMenuContent let-element=\"element\">\n <button *ngFor=\"let rowAction of rowActions\" mat-menu-item class=\"row-action\"\n (click)=\"onRowEvent($event, element, rowAction)\">\n {{ rowAction.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- editable definition menu -->\n<mat-menu #editableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button *ngFor=\"let definition of editableColumnDefinitions\"\n mat-menu-item\n class=\"row-action\"\n (click)=\"onColumnSettings(definition)\"\n [ngClass]=\"{'active-column-definition': isCurrentDefinition(definition)}\"\n >\n {{ definition.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- viewable definition menu -->\n<mat-menu #viewableDefinitionMenu=\"matMenu\">\n <ng-template matMenuContent>\n <button *ngFor=\"let definition of viewableColumnDefinitions\"\n mat-menu-item\n class=\"row-action\"\n (click)=\"onViewDefinition(definition)\"\n [ngClass]=\"{'active-column-definition': isCurrentDefinition(definition)}\"\n >\n {{ definition.label | translate }}\n </button>\n </ng-template>\n</mat-menu>\n\n<!-- Table -->\n<div *ngIf=\"rowCount > 0; else noData\" class=\"datatable\" [class]=\"tableClass\">\n <div class=\"mad-datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n\n <table mat-table [dataSource]=\"dataSource\" matSort (matSortChange)=\"onSortingEvent($event)\">\n <!-- Row actions column-->\n <ng-container [matColumnDef]=\"ACTION_COLUMN_NAME\">\n <th scope=\"col\" mat-header-cell *matHeaderCellDef class=\"row-action-button\">\n <!-- BATCH: master checkbox -->\n <div *ngIf=\"mode === BATCH\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox\n (change)=\"onToggleSelectAll()\"\n [checked]=\"allSelected\"\n >\n </mat-checkbox>\n </div>\n <!-- SINGLE / NONE: nothing in header row -->\n </th>\n <td mat-cell *matCellDef=\"let element\" class=\"row-action-button\">\n <!-- BATCH: row checkbox -->\n <div *ngIf=\"mode === BATCH\" class=\"mad-datatable-checkbox-container\">\n <mat-checkbox\n (click)=\"onRowCheckbox($event, element.rowId)\"\n [checked]=\"isSelected(element.rowId)\"\n >\n </mat-checkbox>\n </div>\n <!-- SINGLE: row action menu icon -->\n <mad-icon-button\n *ngIf=\"mode === SINGLE\"\n [matMenuTriggerData]=\"{ element: element }\" [matMenuTriggerFor]=\"rowActionMenu\"\n >\n <mat-icon>more_vert</mat-icon>\n </mad-icon-button>\n <!-- NONE: nothing -->\n </td>\n </ng-container>\n <!-- Columns with data -->\n <ng-container *ngFor=\"let column of columns\" [matColumnDef]=\"column.id\">\n <ng-container *ngIf=\"column.isSortable; else noSort\">\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header=\"{{ column.orderByName? column.orderByName : column.dataPropertyName }}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n [class.text-right]=\"column.isRightAligned\"\n >\n {{ column.label | translate }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th scope=\"col\" mat-header-cell *matHeaderCellDef [class.text-right]=\"column.isRightAligned\">\n {{ column.label | translate }}\n </th>\n </ng-template>\n <td mat-cell *matCellDef=\"let element\" [class.text-right]=\"column.isRightAligned\" [ngSwitch]=\"column.transformer\">\n <span>\n {{ element[column.dataPropertyName] }}\n </span>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"columnIds\"></tr>\n <tr\n mat-row\n [class.clickable-table-row]=\"isRowClickable\"\n (click)=\"onRowEvent($event, row)\"\n *matRowDef=\"let row; columns: columnIds\"\n ></tr>\n </table>\n</div>\n<div class=\"mad-data-table-bottom-area\">\n <div class=\"mad-data-table-bottom-info-area\">\n <!-- column settings: 1 definition -->\n <mad-icon-button\n *ngIf=\"this.editableColumnDefinitions?.length == 1\"\n (click)=\"onColumnSettings()\"\n >\n <mat-icon class=\"material-icons-outlined\">view_column</mat-icon>\n </mad-icon-button>\n <!-- column settings: multiple definitions -->\n <mad-icon-button\n *ngIf=\"this.editableColumnDefinitions?.length > 0\" [matMenuTriggerFor]=\"editableDefinitionMenu\"\n >\n <mat-icon>view_column</mat-icon>\n </mad-icon-button>\n <!-- column view: multiple definitions -->\n <mad-icon-button\n *ngIf=\"this.viewableColumnDefinitions?.length > 0\" [matMenuTriggerFor]=\"viewableDefinitionMenu\"\n >\n <mat-icon>preview</mat-icon>\n </mad-icon-button>\n </div>\n\n <!-- Pagination -->\n <mat-paginator\n [style.display]=\"isPaginationEnabled ? 'block' : 'none'\"\n [length]=\"paginatorLength\"\n [pageIndex]=\"paginatorPageIndex\"\n [pageSize]=\"paginatorPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPageEvent($event)\"\n showFirstLastButtons\n >\n </mat-paginator>\n</div>\n\n<!-- No data alert -->\n<ng-template #noData>\n <div class=\"noDataText\">\n <div class=\"mad-datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n {{ noDataText }}\n </div>\n</ng-template>\n",
|
|
2038
|
+
styles: [":host{background-color:#fff;display:flex;flex:1 1 auto;flex-direction:column;min-height:112px}.datatable-vertical-stretch-to-parent{display:flex;flex:1;flex-direction:column;max-height:100%;width:100%}.datatable-max-height-500{max-height:500px}.datatable-max-height-300{max-height:300px}.datatable-max-height,.datatable-max-height-300,.datatable-max-height-500{display:flex;flex:1;flex-direction:column;width:100%}.datatable{flex:1 1 auto;height:100%;overflow:auto;position:relative;width:100%}.datatable table{max-height:100%;width:100%}.datatable td,.datatable th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.text-right{padding-right:24px!important;text-align:right!important}.table-action{margin-bottom:.5em;margin-right:.5em}.row-action-button{width:10px}.noDataText{position:relative;text-align:center;width:100%}.mad-datatable-action-bar{align-items:baseline;display:flex;justify-content:space-between}.mad-datatable-checkbox-container{margin-right:16px}.mad-datatable-spinner-wrapper{align-items:center;background-color:#fff;display:flex;height:100%;justify-content:center;left:0;opacity:.8;pointer-events:unset;position:absolute;top:0;width:100%;z-index:99999}.mad-data-table-bottom-area{display:flex;flex-direction:row}.mad-data-table-bottom-area .mad-data-table-bottom-info-area{display:flex;flex:1}.mat-header-row th{background-color:#fff;position:-webkit-sticky;position:sticky;top:0;z-index:1}.active-column-definition{background-color:#f5f5f5;color:#000}"]
|
|
1786
2039
|
},] }
|
|
1787
2040
|
];
|
|
2041
|
+
DataTableComponent.ctorParameters = () => [
|
|
2042
|
+
{ type: MatDialog }
|
|
2043
|
+
];
|
|
1788
2044
|
DataTableComponent.propDecorators = {
|
|
1789
|
-
columns: [{ type: Input }],
|
|
1790
2045
|
filterLabel: [{ type: Input }],
|
|
1791
2046
|
filterPlaceholder: [{ type: Input }],
|
|
2047
|
+
filterColumnsLabel: [{ type: Input }],
|
|
2048
|
+
filterColumnsPlaceHolder: [{ type: Input }],
|
|
1792
2049
|
noDataText: [{ type: Input }],
|
|
2050
|
+
columnSettingsModalTitleLabel: [{ type: Input }],
|
|
2051
|
+
selectedLabel: [{ type: Input }],
|
|
2052
|
+
availableLabel: [{ type: Input }],
|
|
2053
|
+
saveLabel: [{ type: Input }],
|
|
2054
|
+
deleteLabel: [{ type: Input }],
|
|
2055
|
+
cancelLabel: [{ type: Input }],
|
|
2056
|
+
infoTextLabel: [{ type: Input }],
|
|
2057
|
+
tableClass: [{ type: Input }],
|
|
1793
2058
|
pageSizeOptions: [{ type: Input }],
|
|
1794
|
-
|
|
2059
|
+
externalFilter: [{ type: Input }],
|
|
1795
2060
|
actions: [{ type: Input }],
|
|
1796
2061
|
idGenerator: [{ type: Input }],
|
|
2062
|
+
deleteDefinitionAllowed: [{ type: Input }],
|
|
2063
|
+
useAsync: [{ type: Input }],
|
|
2064
|
+
displayedColumns: [{ type: Input }],
|
|
2065
|
+
displayedColumnDefinition: [{ type: Input }],
|
|
1797
2066
|
tableData: [{ type: Input }],
|
|
2067
|
+
page: [{ type: Input }],
|
|
2068
|
+
columnDefinitions: [{ type: Input }],
|
|
1798
2069
|
loading: [{ type: Input }],
|
|
2070
|
+
defaultPageSize: [{ type: Input }],
|
|
2071
|
+
externalPaginator: [{ type: Input }],
|
|
1799
2072
|
paginationEnabled: [{ type: Input }],
|
|
2073
|
+
allColumns: [{ type: Input }],
|
|
1800
2074
|
filterEnabled: [{ type: Input }],
|
|
1801
2075
|
forceMode: [{ type: Input }],
|
|
1802
2076
|
sortEvent: [{ type: Output }],
|
|
1803
2077
|
actionEvent: [{ type: Output }],
|
|
1804
|
-
|
|
2078
|
+
pageEvent: [{ type: Output }],
|
|
2079
|
+
allColumnsEvent: [{ type: Output }],
|
|
2080
|
+
columnDefinitionChangeEvent: [{ type: Output }],
|
|
2081
|
+
viewDefinitionChangeEvent: [{ type: Output }],
|
|
1805
2082
|
paginator: [{ type: ViewChild, args: [MatPaginator, { static: false },] }],
|
|
1806
2083
|
sort: [{ type: ViewChild, args: [MatSort, { static: true },] }]
|
|
1807
2084
|
};
|
|
@@ -1810,7 +2087,7 @@ class DataTableModule {
|
|
|
1810
2087
|
}
|
|
1811
2088
|
DataTableModule.decorators = [
|
|
1812
2089
|
{ type: NgModule, args: [{
|
|
1813
|
-
declarations: [DataTableComponent],
|
|
2090
|
+
declarations: [DataTableComponent, DataTableColumnsModalComponent],
|
|
1814
2091
|
imports: [
|
|
1815
2092
|
CommonModule,
|
|
1816
2093
|
MatButtonModule,
|
|
@@ -1825,9 +2102,11 @@ DataTableModule.decorators = [
|
|
|
1825
2102
|
ButtonModule,
|
|
1826
2103
|
TranslateModule,
|
|
1827
2104
|
MatCheckboxModule,
|
|
1828
|
-
MatBadgeModule
|
|
2105
|
+
MatBadgeModule,
|
|
2106
|
+
DragDropModule,
|
|
2107
|
+
FormsModule,
|
|
1829
2108
|
],
|
|
1830
|
-
exports: [DataTableComponent]
|
|
2109
|
+
exports: [DataTableComponent, DataTableColumnsModalComponent],
|
|
1831
2110
|
},] }
|
|
1832
2111
|
];
|
|
1833
2112
|
|
|
@@ -1878,8 +2157,8 @@ StepHeaderComponent.decorators = [
|
|
|
1878
2157
|
template: "<div\n class=\"header\"\n fxLayout=\"row\"\n fxLayoutGap=\"1em\"\n [style.background]=\"this.selected && !this.closed ? '#d8e2e9' : '#ffffff'\"\n [ngClass]=\"this.hasError ? 'error-border' : 'check-border'\"\n>\n <div [ngClass]=\"this.getCssForState()\"></div>\n <div class=\"header-label\">\n <mat-icon class=\"material-icons-outlined\">\n {{ this.selected && !this.closed ? 'keyboard_arrow_down' : 'keyboard_arrow_right' }}\n </mat-icon>\n </div>\n <div *ngIf=\"this.completed || this.hasError\" class=\"header-label\">\n <mat-icon [ngClass]=\"this.completed ? 'green-check' : 'red-error'\">\n {{ getIcon() }}\n </mat-icon>\n </div>\n <span *ngIf=\"!this.hasError && !this.completed\" class=\"header-label\">{{ this.index + 1 + '.' }}</span>\n <div class=\"header-label\">{{ this.label }}</div>\n</div>\n",
|
|
1879
2158
|
inputs: ['color'],
|
|
1880
2159
|
host: {
|
|
1881
|
-
|
|
1882
|
-
|
|
2160
|
+
class: 'mad-step-header',
|
|
2161
|
+
role: 'tab',
|
|
1883
2162
|
},
|
|
1884
2163
|
encapsulation: ViewEncapsulation.None,
|
|
1885
2164
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -2052,7 +2331,7 @@ StepperComponent.decorators = [
|
|
|
2052
2331
|
host: {
|
|
2053
2332
|
'[class.stepper-vertical]': 'true',
|
|
2054
2333
|
'[attr.aria-orientation]': '"vertical"',
|
|
2055
|
-
|
|
2334
|
+
role: 'tablist',
|
|
2056
2335
|
},
|
|
2057
2336
|
animations: [madStepperAnimations.verticalStepTransition],
|
|
2058
2337
|
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
@@ -2087,9 +2366,6 @@ StepperModule.decorators = [
|
|
|
2087
2366
|
];
|
|
2088
2367
|
|
|
2089
2368
|
class ContentHeaderComponent {
|
|
2090
|
-
constructor() { }
|
|
2091
|
-
ngOnInit() {
|
|
2092
|
-
}
|
|
2093
2369
|
}
|
|
2094
2370
|
ContentHeaderComponent.decorators = [
|
|
2095
2371
|
{ type: Component, args: [{
|
|
@@ -2098,12 +2374,8 @@ ContentHeaderComponent.decorators = [
|
|
|
2098
2374
|
styles: [".content-header{padding-right:.5rem}"]
|
|
2099
2375
|
},] }
|
|
2100
2376
|
];
|
|
2101
|
-
ContentHeaderComponent.ctorParameters = () => [];
|
|
2102
2377
|
|
|
2103
2378
|
class ContentPanelContainerComponent {
|
|
2104
|
-
constructor() { }
|
|
2105
|
-
ngOnInit() {
|
|
2106
|
-
}
|
|
2107
2379
|
}
|
|
2108
2380
|
ContentPanelContainerComponent.decorators = [
|
|
2109
2381
|
{ type: Component, args: [{
|
|
@@ -2112,12 +2384,8 @@ ContentPanelContainerComponent.decorators = [
|
|
|
2112
2384
|
styles: [":host{display:flex;flex:1 1 auto;min-height:.05rem;overflow:hidden;position:relative}.content-panel-outer-wrapper{display:flex;flex:1 1 auto;flex-direction:column}"]
|
|
2113
2385
|
},] }
|
|
2114
2386
|
];
|
|
2115
|
-
ContentPanelContainerComponent.ctorParameters = () => [];
|
|
2116
2387
|
|
|
2117
2388
|
class ContentPanelContainerContentComponent {
|
|
2118
|
-
constructor() { }
|
|
2119
|
-
ngOnInit() {
|
|
2120
|
-
}
|
|
2121
2389
|
}
|
|
2122
2390
|
ContentPanelContainerContentComponent.decorators = [
|
|
2123
2391
|
{ type: Component, args: [{
|
|
@@ -2126,12 +2394,8 @@ ContentPanelContainerContentComponent.decorators = [
|
|
|
2126
2394
|
styles: [":host{border-top:.05rem solid #ccc;flex:1 1 auto;height:1rem;overflow-y:auto;padding:1rem}"]
|
|
2127
2395
|
},] }
|
|
2128
2396
|
];
|
|
2129
|
-
ContentPanelContainerContentComponent.ctorParameters = () => [];
|
|
2130
2397
|
|
|
2131
2398
|
class ContentPanelContainerFooterComponent {
|
|
2132
|
-
constructor() { }
|
|
2133
|
-
ngOnInit() {
|
|
2134
|
-
}
|
|
2135
2399
|
}
|
|
2136
2400
|
ContentPanelContainerFooterComponent.decorators = [
|
|
2137
2401
|
{ type: Component, args: [{
|
|
@@ -2140,12 +2404,8 @@ ContentPanelContainerFooterComponent.decorators = [
|
|
|
2140
2404
|
styles: [":host{align-items:center;border-top:.05rem solid #ccc;display:flex;flex:0 0 auto;min-height:2rem;padding:.25rem 1rem}"]
|
|
2141
2405
|
},] }
|
|
2142
2406
|
];
|
|
2143
|
-
ContentPanelContainerFooterComponent.ctorParameters = () => [];
|
|
2144
2407
|
|
|
2145
2408
|
class MainContainerComponent {
|
|
2146
|
-
constructor() { }
|
|
2147
|
-
ngOnInit() {
|
|
2148
|
-
}
|
|
2149
2409
|
}
|
|
2150
2410
|
MainContainerComponent.decorators = [
|
|
2151
2411
|
{ type: Component, args: [{
|
|
@@ -2154,7 +2414,6 @@ MainContainerComponent.decorators = [
|
|
|
2154
2414
|
styles: [".main-container{display:flex;flex-direction:column;height:100%}"]
|
|
2155
2415
|
},] }
|
|
2156
2416
|
];
|
|
2157
|
-
MainContainerComponent.ctorParameters = () => [];
|
|
2158
2417
|
|
|
2159
2418
|
class ContentPanelModule {
|
|
2160
2419
|
}
|
|
@@ -2189,18 +2448,21 @@ class FlowbarComponent {
|
|
|
2189
2448
|
*/
|
|
2190
2449
|
this._headerClick = new EventEmitter(true);
|
|
2191
2450
|
}
|
|
2451
|
+
get currentStepLabel() {
|
|
2452
|
+
return this._activeStep.label;
|
|
2453
|
+
}
|
|
2454
|
+
get currentSubStepLabel() {
|
|
2455
|
+
var _a;
|
|
2456
|
+
return (_a = this._activeStep.activeSubStep) === null || _a === void 0 ? void 0 : _a.label;
|
|
2457
|
+
}
|
|
2192
2458
|
ngOnInit() {
|
|
2193
2459
|
// If no active step is set as input or the active step is not enabled, select the first enabled step
|
|
2194
2460
|
if (!this._activeStep || !this._activeStep.enabled) {
|
|
2195
|
-
this._activeStep = this._steps.find(step =>
|
|
2196
|
-
return step.enabled;
|
|
2197
|
-
});
|
|
2461
|
+
this._activeStep = this._steps.find(step => step.enabled);
|
|
2198
2462
|
if (this._activeStep) {
|
|
2199
2463
|
// If sub steps exist then set the first non disabled sub step per default
|
|
2200
2464
|
if (this.activeTabHasSubSteps()) {
|
|
2201
|
-
this._activeStep.activeSubStep = this._activeStep.subSteps.find(step =>
|
|
2202
|
-
return step.enabled;
|
|
2203
|
-
});
|
|
2465
|
+
this._activeStep.activeSubStep = this._activeStep.subSteps.find(step => step.enabled);
|
|
2204
2466
|
}
|
|
2205
2467
|
this._activeStepChange.emit(this._activeStep);
|
|
2206
2468
|
}
|
|
@@ -2298,14 +2560,10 @@ class FlowbarComponent {
|
|
|
2298
2560
|
return false;
|
|
2299
2561
|
}
|
|
2300
2562
|
getCurrentIndex() {
|
|
2301
|
-
return this._steps.findIndex(value =>
|
|
2302
|
-
return value === this._activeStep;
|
|
2303
|
-
});
|
|
2563
|
+
return this._steps.findIndex(value => value === this._activeStep);
|
|
2304
2564
|
}
|
|
2305
2565
|
getCurrentSubStepIndex() {
|
|
2306
|
-
return this._activeStep.subSteps.findIndex(value =>
|
|
2307
|
-
return value === this._activeStep.activeSubStep;
|
|
2308
|
-
});
|
|
2566
|
+
return this._activeStep.subSteps.findIndex(value => value === this._activeStep.activeSubStep);
|
|
2309
2567
|
}
|
|
2310
2568
|
triggerClick() {
|
|
2311
2569
|
const selectedStep = this._steps[this.stepper.selectedIndex];
|
|
@@ -2315,13 +2573,6 @@ class FlowbarComponent {
|
|
|
2315
2573
|
event.stopPropagation(); //stop processing current header click event
|
|
2316
2574
|
this._headerClick.emit(step);
|
|
2317
2575
|
}
|
|
2318
|
-
get currentStepLabel() {
|
|
2319
|
-
return this._activeStep.label;
|
|
2320
|
-
}
|
|
2321
|
-
get currentSubStepLabel() {
|
|
2322
|
-
var _a;
|
|
2323
|
-
return (_a = this._activeStep.activeSubStep) === null || _a === void 0 ? void 0 : _a.label;
|
|
2324
|
-
}
|
|
2325
2576
|
activeTabHasSubSteps() {
|
|
2326
2577
|
return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;
|
|
2327
2578
|
}
|
|
@@ -2359,11 +2610,11 @@ FlowbarComponent.decorators = [
|
|
|
2359
2610
|
},] }
|
|
2360
2611
|
];
|
|
2361
2612
|
FlowbarComponent.propDecorators = {
|
|
2362
|
-
stepper: [{ type: ViewChild, args: ['stepper',] }],
|
|
2363
2613
|
_steps: [{ type: Input, args: ['steps',] }],
|
|
2364
2614
|
_activeStep: [{ type: Input, args: ['activeStep',] }],
|
|
2365
2615
|
_activeStepChange: [{ type: Output, args: ['activeStepChange',] }],
|
|
2366
|
-
_headerClick: [{ type: Output, args: ['headerClick',] }]
|
|
2616
|
+
_headerClick: [{ type: Output, args: ['headerClick',] }],
|
|
2617
|
+
stepper: [{ type: ViewChild, args: ['stepper',] }]
|
|
2367
2618
|
};
|
|
2368
2619
|
|
|
2369
2620
|
class FlowbarModule {
|
|
@@ -2401,5 +2652,5 @@ MaterialAddonsModule.decorators = [
|
|
|
2401
2652
|
* Generated bundle index. Do not edit.
|
|
2402
2653
|
*/
|
|
2403
2654
|
|
|
2404
|
-
export { ButtonModule, CardModule, ContentHeaderComponent, ContentPanelContainerComponent, ContentPanelContainerContentComponent, ContentPanelContainerFooterComponent, ContentPanelModule, DataTableModule, FlowbarComponent, FlowbarModule, MainContainerComponent, MaterialActionButtonComponent, MaterialActionButtonModule, MaterialAddonsModule, NumberFormatService, NumericFieldModule, QuickListModule, ReadOnlyFormFieldComponent, ReadOnlyFormFieldModule, ReadOnlyFormFieldWrapperComponent, StepComponent, StepHeaderComponent, StepperComponent, StepperModule, TableModule, ThrottleClickDirective, ThrottleClickModule, ToolbarComponent, ToolbarModule, ToolbarService, madStepperAnimations, PrimaryButtonComponent as
|
|
2655
|
+
export { ButtonModule, CardModule, ContentHeaderComponent, ContentPanelContainerComponent, ContentPanelContainerContentComponent, ContentPanelContainerFooterComponent, ContentPanelModule, DataTableModule, FlowbarComponent, FlowbarModule, MainContainerComponent, MaterialActionButtonComponent, MaterialActionButtonModule, MaterialAddonsModule, NumberFormatService, NumericFieldModule, QuickListModule, ReadOnlyFormFieldComponent, ReadOnlyFormFieldModule, ReadOnlyFormFieldWrapperComponent, StepComponent, StepHeaderComponent, StepperComponent, StepperModule, TableModule, ThrottleClickDirective, ThrottleClickModule, ToolbarComponent, ToolbarModule, ToolbarService, madStepperAnimations, PrimaryButtonComponent as ɵb, MadBasicButton as ɵc, OutlineButtonComponent as ɵd, LinkButtonComponent as ɵe, DangerButtonComponent as ɵf, IconButtonComponent as ɵg, NumericFieldDirective as ɵh, CardComponent as ɵi, QuickListComponent as ɵj, BaseQuickListComponent as ɵk, QuickListCompactComponent as ɵl, TableComponent as ɵm, DataTableComponent as ɵn, DataTableColumnsModalComponent as ɵo };
|
|
2405
2656
|
//# sourceMappingURL=porscheinformatik-material-addons.js.map
|