@porscheinformatik/material-addons 10.3.3 → 10.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/bundles/porscheinformatik-material-addons.umd.js +513 -200
  2. package/bundles/porscheinformatik-material-addons.umd.js.map +1 -1
  3. package/bundles/porscheinformatik-material-addons.umd.min.js +2 -2
  4. package/bundles/porscheinformatik-material-addons.umd.min.js.map +1 -1
  5. package/esm2015/lib/button/button.module.js +2 -2
  6. package/esm2015/lib/button/danger-button/danger-button.component.js +1 -1
  7. package/esm2015/lib/button/flat-button/link-button.component.js +1 -1
  8. package/esm2015/lib/button/icon-button/icon-button.component.js +1 -1
  9. package/esm2015/lib/button/mad-basic-button.js +8 -8
  10. package/esm2015/lib/button/outline-button/outline-button.component.js +1 -1
  11. package/esm2015/lib/button/primary-button/primary-button.component.js +1 -1
  12. package/esm2015/lib/card/card.component.js +13 -7
  13. package/esm2015/lib/card/card.module.js +3 -3
  14. package/esm2015/lib/content-panel/content-header/content-header.component.js +1 -5
  15. package/esm2015/lib/content-panel/content-panel-container/content-panel-container.component.js +1 -5
  16. package/esm2015/lib/content-panel/content-panel-container-content/content-panel-container-content.component.js +1 -5
  17. package/esm2015/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.js +1 -5
  18. package/esm2015/lib/content-panel/main-container/main-container.component.js +1 -5
  19. package/esm2015/lib/data-table/data-table-action-type.js +4 -4
  20. package/esm2015/lib/data-table/data-table-action.js +1 -1
  21. package/esm2015/lib/data-table/data-table-column-definition.js +1 -0
  22. package/esm2015/lib/data-table/data-table-column.js +1 -0
  23. package/esm2015/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.js +93 -0
  24. package/esm2015/lib/data-table/data-table.component.js +248 -66
  25. package/esm2015/lib/data-table/data-table.js +1 -1
  26. package/esm2015/lib/data-table/data-table.module.js +25 -20
  27. package/esm2015/lib/flowbar/flowbar.component.js +14 -22
  28. package/esm2015/lib/flowbar/flowbar.module.js +1 -1
  29. package/esm2015/lib/material-addons.module.js +1 -1
  30. package/esm2015/lib/quick-list/base-quick-list.component.js +4 -2
  31. package/esm2015/lib/quick-list/quick-list-compact/quick-list-compact.component.js +2 -2
  32. package/esm2015/lib/readonly/readonly-form-field/readonly-form-field.component.js +1 -1
  33. package/esm2015/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.js +12 -12
  34. package/esm2015/lib/readonly/readonly-form-field.module.js +1 -1
  35. package/esm2015/lib/stepper/step-header/step-header.component.js +3 -3
  36. package/esm2015/lib/stepper/stepper.component.js +2 -2
  37. package/esm2015/lib/stepper/stepper.module.js +1 -1
  38. package/esm2015/lib/table/table.component.js +6 -6
  39. package/esm2015/lib/throttle-click/throttle-click.directive.js +6 -7
  40. package/esm2015/lib/toolbar/toolbar-action.interface.js +1 -1
  41. package/esm2015/lib/toolbar/toolbar.component.js +7 -4
  42. package/esm2015/lib/toolbar/toolbar.module.js +2 -2
  43. package/esm2015/lib/toolbar/toolbar.service.js +7 -7
  44. package/esm2015/porscheinformatik-material-addons.js +15 -14
  45. package/fesm2015/porscheinformatik-material-addons.js +409 -153
  46. package/fesm2015/porscheinformatik-material-addons.js.map +1 -1
  47. package/lib/button/mad-basic-button.d.ts +4 -4
  48. package/lib/content-panel/content-header/content-header.component.d.ts +1 -4
  49. package/lib/content-panel/content-panel-container/content-panel-container.component.d.ts +1 -4
  50. package/lib/content-panel/content-panel-container-content/content-panel-container-content.component.d.ts +1 -4
  51. package/lib/content-panel/content-panel-container-footer/content-panel-container-footer.component.d.ts +1 -4
  52. package/lib/content-panel/main-container/main-container.component.d.ts +1 -4
  53. package/lib/data-table/data-table-action.d.ts +1 -1
  54. package/lib/data-table/data-table-column-definition.d.ts +26 -0
  55. package/lib/data-table/{data-table-column-header.d.ts → data-table-column.d.ts} +3 -1
  56. package/lib/data-table/data-table-columns-modal/data-table-columns-modal.component.d.ts +23 -0
  57. package/lib/data-table/data-table.component.d.ts +68 -20
  58. package/lib/data-table/data-table.d.ts +2 -1
  59. package/lib/flowbar/flowbar.component.d.ts +3 -3
  60. package/lib/quick-list/base-quick-list.component.d.ts +1 -0
  61. package/lib/readonly/readonly-form-field-wrapper/readonly-form-field-wrapper.component.d.ts +11 -11
  62. package/lib/stepper/step-header/step-header.component.d.ts +2 -2
  63. package/lib/table/table.component.d.ts +4 -4
  64. package/lib/throttle-click/throttle-click.directive.d.ts +1 -2
  65. package/lib/toolbar/toolbar-action.interface.d.ts +2 -1
  66. package/lib/toolbar/toolbar.component.d.ts +1 -0
  67. package/lib/toolbar/toolbar.service.d.ts +2 -2
  68. package/package.json +1 -1
  69. package/porscheinformatik-material-addons.d.ts +15 -13
  70. package/porscheinformatik-material-addons.metadata.json +1 -1
  71. package/themes/common/styles.scss +6 -0
  72. package/esm2015/lib/data-table/data-table-column-header.js +0 -1
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/router'), require('@angular/material/button'), require('@angular/material/icon'), require('@angular/material/tooltip'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/forms'), require('@angular/platform-browser'), require('@ngx-translate/core'), require('rxjs'), require('@angular/cdk/layout'), require('rxjs/operators'), require('@angular/material/menu'), require('@angular/material/toolbar'), require('@angular/material/badge'), require('@angular/material/card'), require('@angular/animations'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/cdk/collections'), require('uuid'), require('@angular/material/checkbox'), require('@angular/material/progress-spinner'), require('@angular/cdk/bidi'), require('@angular/cdk/stepper'), require('@angular/cdk/a11y'), require('@angular/flex-layout'), require('@angular/material/stepper')) :
3
- typeof define === 'function' && define.amd ? define('@porscheinformatik/material-addons', ['exports', '@angular/core', '@angular/common', '@angular/router', '@angular/material/button', '@angular/material/icon', '@angular/material/tooltip', '@angular/material/form-field', '@angular/material/input', '@angular/forms', '@angular/platform-browser', '@ngx-translate/core', 'rxjs', '@angular/cdk/layout', 'rxjs/operators', '@angular/material/menu', '@angular/material/toolbar', '@angular/material/badge', '@angular/material/card', '@angular/animations', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/cdk/collections', 'uuid', '@angular/material/checkbox', '@angular/material/progress-spinner', '@angular/cdk/bidi', '@angular/cdk/stepper', '@angular/cdk/a11y', '@angular/flex-layout', '@angular/material/stepper'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.porscheinformatik = global.porscheinformatik || {}, global.porscheinformatik['material-addons'] = {}), global.ng.core, global.ng.common, global.ng.router, global.ng.material.button, global.ng.material.icon, global.ng.material.tooltip, global.ng.material.formField, global.ng.material.input, global.ng.forms, global.ng.platformBrowser, global.i2, global.rxjs, global.ng.cdk.layout, global.rxjs.operators, global.ng.material.menu, global.ng.material.toolbar, global.ng.material.badge, global.ng.material.card, global.ng.animations, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.cdk.collections, global.uuid, global.ng.material.checkbox, global.ng.material.progressSpinner, global.ng.cdk.bidi, global.ng.cdk.stepper, global.ng.cdk.a11y, global.ng.flexLayout, global.ng.material.stepper));
5
- }(this, (function (exports, i0, common, i1, button, icon, tooltip, formField, input, forms, platformBrowser, i2, rxjs, layout, operators, menu, toolbar, badge, card, animations, table, sort, paginator, collections, uuid, checkbox, progressSpinner, bidi, stepper, a11y, flexLayout, stepper$1) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/router'), require('@angular/material/button'), require('@angular/material/icon'), require('@angular/material/tooltip'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/forms'), require('@angular/platform-browser'), require('@ngx-translate/core'), require('rxjs'), require('@angular/cdk/layout'), require('rxjs/operators'), require('@angular/material/menu'), require('@angular/material/toolbar'), require('@angular/material/badge'), require('@angular/material/card'), require('@angular/animations'), require('@angular/material/table'), require('@angular/material/sort'), require('@angular/material/paginator'), require('@angular/cdk/collections'), require('uuid'), require('@angular/material/dialog'), require('@angular/cdk/drag-drop'), require('@angular/material/checkbox'), require('@angular/material/progress-spinner'), require('@angular/cdk/bidi'), require('@angular/cdk/stepper'), require('@angular/cdk/a11y'), require('@angular/flex-layout'), require('@angular/material/stepper')) :
3
+ typeof define === 'function' && define.amd ? define('@porscheinformatik/material-addons', ['exports', '@angular/core', '@angular/common', '@angular/router', '@angular/material/button', '@angular/material/icon', '@angular/material/tooltip', '@angular/material/form-field', '@angular/material/input', '@angular/forms', '@angular/platform-browser', '@ngx-translate/core', 'rxjs', '@angular/cdk/layout', 'rxjs/operators', '@angular/material/menu', '@angular/material/toolbar', '@angular/material/badge', '@angular/material/card', '@angular/animations', '@angular/material/table', '@angular/material/sort', '@angular/material/paginator', '@angular/cdk/collections', 'uuid', '@angular/material/dialog', '@angular/cdk/drag-drop', '@angular/material/checkbox', '@angular/material/progress-spinner', '@angular/cdk/bidi', '@angular/cdk/stepper', '@angular/cdk/a11y', '@angular/flex-layout', '@angular/material/stepper'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.porscheinformatik = global.porscheinformatik || {}, global.porscheinformatik['material-addons'] = {}), global.ng.core, global.ng.common, global.ng.router, global.ng.material.button, global.ng.material.icon, global.ng.material.tooltip, global.ng.material.formField, global.ng.material.input, global.ng.forms, global.ng.platformBrowser, global.i2, global.rxjs, global.ng.cdk.layout, global.rxjs.operators, global.ng.material.menu, global.ng.material.toolbar, global.ng.material.badge, global.ng.material.card, global.ng.animations, global.ng.material.table, global.ng.material.sort, global.ng.material.paginator, global.ng.cdk.collections, global.uuid, global.ng.material.dialog, global.ng.cdk.dragDrop, global.ng.material.checkbox, global.ng.material.progressSpinner, global.ng.cdk.bidi, global.ng.cdk.stepper, global.ng.cdk.a11y, global.ng.flexLayout, global.ng.material.stepper));
5
+ }(this, (function (exports, i0, common, i1, button, icon, tooltip, formField, input, forms, platformBrowser, i2, rxjs, layout, operators, menu, toolbar, badge, card, animations, table, sort, paginator, collections, uuid, dialog, dragDrop, checkbox, progressSpinner, bidi, stepper, a11y, flexLayout, stepper$1) { 'use strict';
6
6
 
7
7
  var MaterialActionButtonComponent = /** @class */ (function () {
8
8
  function MaterialActionButtonComponent() {
@@ -364,17 +364,6 @@
364
364
  function MadBasicButton() {
365
365
  this.disableClick = function (e) { return e.stopPropagation(); };
366
366
  }
367
- MadBasicButton.prototype.ngOnChanges = function (changes) {
368
- this.disableButton();
369
- };
370
- MadBasicButton.prototype.disableButton = function () {
371
- if (this.disabled) {
372
- this.button.nativeElement.addEventListener('click', this.disableClick);
373
- }
374
- else {
375
- this.button.nativeElement.removeEventListener('click', this.disableClick);
376
- }
377
- };
378
367
  Object.defineProperty(MadBasicButton.prototype, "pointerEvent", {
379
368
  get: function () {
380
369
  return this.disabled ? 'none' : 'auto';
@@ -389,6 +378,17 @@
389
378
  enumerable: false,
390
379
  configurable: true
391
380
  });
381
+ MadBasicButton.prototype.ngOnChanges = function () {
382
+ this.disableButton();
383
+ };
384
+ MadBasicButton.prototype.disableButton = function () {
385
+ if (this.disabled) {
386
+ this.button.nativeElement.addEventListener('click', this.disableClick);
387
+ }
388
+ else {
389
+ this.button.nativeElement.removeEventListener('click', this.disableClick);
390
+ }
391
+ };
392
392
  return MadBasicButton;
393
393
  }());
394
394
  MadBasicButton.propDecorators = {
@@ -571,11 +571,11 @@
571
571
  */
572
572
  this.rows = 3;
573
573
  /**
574
- * If shrinkIfEmpty is set to "false", nothing changes
575
- * If set to "true" and multiline is also "true", the textarea will
576
- * shrink to one row, if value is empty/null/undefined.
577
- * Otherwise, the defined rows-value will be used
578
- */
574
+ * If shrinkIfEmpty is set to "false", nothing changes
575
+ * If set to "true" and multiline is also "true", the textarea will
576
+ * shrink to one row, if value is empty/null/undefined.
577
+ * Otherwise, the defined rows-value will be used
578
+ */
579
579
  this.shrinkIfEmpty = false;
580
580
  this.toolTipForInputEnabled = false;
581
581
  }
@@ -661,7 +661,7 @@
661
661
  };
662
662
  ReadOnlyFormFieldWrapperComponent.prototype.isTextOverflown = function (input) {
663
663
  if (input) {
664
- return (input.offsetWidth < input.scrollWidth);
664
+ return input.offsetWidth < input.scrollWidth;
665
665
  }
666
666
  return false;
667
667
  };
@@ -685,10 +685,10 @@
685
685
  { type: i0.ElementRef }
686
686
  ]; };
687
687
  ReadOnlyFormFieldWrapperComponent.propDecorators = {
688
- readonly: [{ type: i0.Input }],
689
- value: [{ type: i0.Input, args: ['value',] }],
690
688
  originalContent: [{ type: i0.ViewChild, args: ['contentWrapper', { static: false },] }],
691
689
  readOnlyContentWrapper: [{ type: i0.ViewChild, args: ['readOnlyContentWrapper', { static: false },] }],
690
+ readonly: [{ type: i0.Input }],
691
+ value: [{ type: i0.Input, args: ['value',] }],
692
692
  textAlign: [{ type: i0.Input, args: ['textAlign',] }],
693
693
  formatNumber: [{ type: i0.Input, args: ['formatNumber',] }],
694
694
  decimalPlaces: [{ type: i0.Input, args: ['decimalPlaces',] }],
@@ -1015,6 +1015,16 @@
1015
1015
  }
1016
1016
  });
1017
1017
  }
1018
+ Object.defineProperty(ToolbarService.prototype, "toolbarTitle", {
1019
+ get: function () {
1020
+ return this.title;
1021
+ },
1022
+ set: function (toolbarTitle) {
1023
+ this.title = toolbarTitle;
1024
+ },
1025
+ enumerable: false,
1026
+ configurable: true
1027
+ });
1018
1028
  ToolbarService.prototype.ngOnDestroy = function () {
1019
1029
  if (this.routerSubscription) {
1020
1030
  this.routerSubscription.unsubscribe();
@@ -1033,16 +1043,6 @@
1033
1043
  _this.toolbarActions.push(action);
1034
1044
  });
1035
1045
  };
1036
- Object.defineProperty(ToolbarService.prototype, "toolbarTitle", {
1037
- get: function () {
1038
- return this.title;
1039
- },
1040
- set: function (toolbarTitle) {
1041
- this.title = toolbarTitle;
1042
- },
1043
- enumerable: false,
1044
- configurable: true
1045
- });
1046
1046
  ToolbarService.prototype.setDataTitle = function (dataTitle) {
1047
1047
  this.dataTitle = dataTitle;
1048
1048
  };
@@ -1169,16 +1169,19 @@
1169
1169
  return this.toolbarService.getToolbarActionsMenuTitle();
1170
1170
  };
1171
1171
  ToolbarComponent.prototype.showBadgeForMenu = function () {
1172
- return this.getToolbarActions()
1172
+ return (this.getToolbarActions()
1173
1173
  .slice(1) // the first icon is not shown in menu
1174
- .filter(function (value) { return value.badge && value.badge.value; }).length > 0;
1174
+ .filter(function (value) { return value.badge && value.badge.value; }).length > 0);
1175
+ };
1176
+ ToolbarComponent.prototype.hasImportantToolbarActions = function () {
1177
+ return this.getToolbarActions().filter(function (value) { return !!value.importantAction; }).length > 0;
1175
1178
  };
1176
1179
  return ToolbarComponent;
1177
1180
  }());
1178
1181
  ToolbarComponent.decorators = [
1179
1182
  { type: i0.Component, args: [{
1180
1183
  selector: 'mad-toolbar',
1181
- template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"(!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) || i < (getToolbarActions().length > 2 ? 1 : 2)\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\">\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon>\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '&#8288;' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button *ngIf=\"i >= 1\" mat-menu-item (click)=\"action.action()\">\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n",
1184
+ template: "<mat-toolbar class=\"content-toolbar\">\n <a [routerLink]=\"getBackAction().routerLink\" *ngIf=\"isRouterLink()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a [href]=\"getBackAction().href\" *ngIf=\"isAbsoluteLink()\">\n <button [id]=\"'go-back'\" class=\"go-back-button\" color=\"primary\" mat-icon-button>\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n <a (click)=\"getBackAction().action()\" *ngIf=\"isAction()\">\n <button [id]=\"'go-back'\" color=\"primary\" mat-icon-button class=\"go-back-button\">\n <mat-icon>{{ getBackAction().matIcon }}</mat-icon>\n </button>\n </a>\n\n <span class=\"toolbar-title\">{{ getTitle() }}</span>\n\n <ng-container *ngFor=\"let mainAction of getMainActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(mainAction) | async\">\n <div *ngIf=\"!(isHandset$ | async)\">\n <a [routerLink]=\"mainAction.routerLink\">\n <mad-primary-button [id]=\"mainAction.matIcon\" style=\"margin-left: 56px\">\n <mat-icon>{{ mainAction.matIcon }}</mat-icon>\n {{ mainAction.actionName }}\n </mad-primary-button>\n </a>\n </div>\n <div *ngIf=\"isHandset$ | async\">\n <mad-material-action-button\n [actionName]=\"mainAction.actionName\"\n [icon]=\"mainAction.matIcon\"\n [liftHigher]=\"mainAction.liftHigherOnMobile\"\n [liftHigher2]=\"i > 0\"\n [routerLink]=\"mainAction.routerLink\"\n [id]=\"mainAction.matIcon\"\n >\n </mad-material-action-button>\n </div>\n </ng-container>\n </ng-container>\n\n <div class=\"right-aligned no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <mad-icon-button\n (click)=\"action.action()\"\n *ngIf=\"(!(isHandset$ | async) && !getToolbarActionsAlwaysAsMenu()) || i < (getToolbarActions().length > 2 ? (hasImportantToolbarActions() ? 0:1) : 2) || !!action.importantAction\"\n [id]=\"action.matIcon\"\n [matTooltip]=\"action.actionName\"\n type=\"button\">\n <mat-icon\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n matBadgePosition=\"below after\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n >{{ action.matIcon }}</mat-icon>\n </mad-icon-button>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"(isHandset$ | async) || getToolbarActionsAlwaysAsMenu()\">\n <ng-container *ngIf=\"getToolbarActions().length > 2\">\n <mad-icon-button type=\"button\" [matMenuTriggerFor]=\"burgerMenu\" [matTooltip]=\"getToolbarActionsMenuTitle()\">\n <mat-icon\n matBadgeColor=\"warn\"\n [matBadge]=\"showBadgeForMenu() ? '&#8288;' : null\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >more_vert\n </mat-icon>\n </mad-icon-button>\n <mat-menu #burgerMenu=\"matMenu\" class=\"no-print\">\n <ng-container *ngFor=\"let action of getToolbarActions(); let i = index\">\n <ng-container *ngIf=\"!action.importantAction\">\n <ng-container *ngIf=\"hasPermission(action) | async\">\n <button *ngIf=\"i >= (hasImportantToolbarActions() ? 0:1)\" mat-menu-item (click)=\"action.action()\">\n <mat-icon\n color=\"primary\"\n [matBadgeColor]=\"action.badge ? action.badge.color : 'primary'\"\n [matBadge]=\"action.badge ? action.badge.value : null\"\n matBadgePosition=\"below after\"\n >{{ action.matIcon }}</mat-icon\n >\n {{ action.actionName }}\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n </mat-menu>\n </ng-container>\n </ng-container>\n </div>\n</mat-toolbar>\n",
1182
1185
  styles: ["mat-toolbar{background:#fff}.content-toolbar{border-bottom:1px solid #dcdcdc;height:57px}.right-aligned{margin-left:auto;margin-right:0;overflow:hidden}.go-back-button{padding-left:0;padding-right:0}.toolbar-title{margin-right:72px}::ng-deep.mat-badge-content{bottom:-7px!important;right:-7px!important}"]
1183
1186
  },] }
1184
1187
  ];
@@ -1551,14 +1554,20 @@
1551
1554
  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",
1552
1555
  animations: [
1553
1556
  animations.trigger('collapseExpandAnimation', [
1554
- animations.transition(':enter', [animations.style({ opacity: 0, height: 0, overflow: 'hidden' }), animations.animate('100ms', animations.style({
1557
+ animations.transition(':enter', [
1558
+ animations.style({ opacity: 0, height: 0, overflow: 'hidden' }),
1559
+ animations.animate('100ms', animations.style({
1555
1560
  opacity: 1,
1556
- height: '*'
1557
- }))]),
1558
- animations.transition(':leave', [animations.style({ opacity: 1, height: '*', overflow: 'hidden' }), animations.animate('100ms', animations.style({
1561
+ height: '*',
1562
+ })),
1563
+ ]),
1564
+ animations.transition(':leave', [
1565
+ animations.style({ opacity: 1, height: '*', overflow: 'hidden' }),
1566
+ animations.animate('100ms', animations.style({
1559
1567
  opacity: 0,
1560
- height: 0
1561
- }))]),
1568
+ height: 0,
1569
+ })),
1570
+ ]),
1562
1571
  ]),
1563
1572
  animations.trigger('rotateIcon', [
1564
1573
  animations.state('true', animations.style({ transform: 'rotate(0)' })),
@@ -1595,6 +1604,11 @@
1595
1604
  this.throttleClick = new i0.EventEmitter();
1596
1605
  this.clicks = new rxjs.Subject();
1597
1606
  }
1607
+ ThrottleClickDirective.prototype.clickEvent = function (event) {
1608
+ event.preventDefault();
1609
+ event.stopPropagation();
1610
+ this.clicks.next(event);
1611
+ };
1598
1612
  ThrottleClickDirective.prototype.ngOnInit = function () {
1599
1613
  var _this = this;
1600
1614
  this.subscription = this.clicks.pipe(operators.throttleTime(this.throttleTime)).subscribe(function (e) { return _this.throttleClick.emit(e); });
@@ -1602,11 +1616,6 @@
1602
1616
  ThrottleClickDirective.prototype.ngOnDestroy = function () {
1603
1617
  this.subscription.unsubscribe();
1604
1618
  };
1605
- ThrottleClickDirective.prototype.clickEvent = function (event) {
1606
- event.preventDefault();
1607
- event.stopPropagation();
1608
- this.clicks.next(event);
1609
- };
1610
1619
  return ThrottleClickDirective;
1611
1620
  }());
1612
1621
  ThrottleClickDirective.decorators = [
@@ -1614,7 +1623,6 @@
1614
1623
  selector: '[madThrottleClick]',
1615
1624
  },] }
1616
1625
  ];
1617
- ThrottleClickDirective.ctorParameters = function () { return []; };
1618
1626
  ThrottleClickDirective.propDecorators = {
1619
1627
  throttleTime: [{ type: i0.Input }],
1620
1628
  throttleClick: [{ type: i0.Output }],
@@ -1653,6 +1661,7 @@
1653
1661
  this.allItems = [];
1654
1662
  this.addLabel = 'NOT SET';
1655
1663
  this.addPossible = true;
1664
+ this.removePossible = true;
1656
1665
  this.blankItem = {};
1657
1666
  this.added = new i0.EventEmitter();
1658
1667
  this.removed = new i0.EventEmitter();
@@ -1698,7 +1707,7 @@
1698
1707
  return this.addPossible && (!this.maxItems || this.allItems.length < this.maxItems);
1699
1708
  };
1700
1709
  BaseQuickListComponent.prototype.isDeleteAllowed = function () {
1701
- return !this.minItems || this.allItems.length > this.minItems;
1710
+ return this.removePossible && (!this.minItems || this.allItems.length > this.minItems);
1702
1711
  };
1703
1712
  BaseQuickListComponent.prototype.interalAddItem = function () {
1704
1713
  if (this.isAddAllowed()) {
@@ -1728,6 +1737,7 @@
1728
1737
  allItems: [{ type: i0.Input }],
1729
1738
  addLabel: [{ type: i0.Input }],
1730
1739
  addPossible: [{ type: i0.Input }],
1740
+ removePossible: [{ type: i0.Input }],
1731
1741
  blankItem: [{ type: i0.Input }],
1732
1742
  readonly: [{ type: i0.Input }],
1733
1743
  maxItems: [{ type: i0.Input }],
@@ -1792,7 +1802,6 @@
1792
1802
  var TableComponent = /** @class */ (function () {
1793
1803
  function TableComponent() {
1794
1804
  var _a;
1795
- this.ACTION_COLUMN_NAME = '__action__';
1796
1805
  this.columns = [];
1797
1806
  this.filterLabel = 'NOT SET';
1798
1807
  this.filterPlaceholder = 'NOT SET';
@@ -1803,6 +1812,7 @@
1803
1812
  this.tableAction = new i0.EventEmitter();
1804
1813
  this.rowAction = new i0.EventEmitter();
1805
1814
  this.sortEvent = new i0.EventEmitter();
1815
+ this.ACTION_COLUMN_NAME = '__action__';
1806
1816
  this.isFilterEnabled = false;
1807
1817
  this.isPaginationEnabled = false;
1808
1818
  }
@@ -1895,14 +1905,14 @@
1895
1905
  defaultPageSize: [{ type: i0.Input }],
1896
1906
  rowActions: [{ type: i0.Input }],
1897
1907
  tableActions: [{ type: i0.Input }],
1898
- displayedData: [{ type: i0.Input }],
1899
- paginationEnabled: [{ type: i0.Input }],
1900
- filterEnabled: [{ type: i0.Input }],
1901
1908
  tableAction: [{ type: i0.Output }],
1902
1909
  rowAction: [{ type: i0.Output }],
1903
1910
  sortEvent: [{ type: i0.Output }],
1904
1911
  paginator: [{ type: i0.ViewChild, args: [paginator.MatPaginator, { static: false },] }],
1905
- sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }]
1912
+ sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }],
1913
+ displayedData: [{ type: i0.Input }],
1914
+ paginationEnabled: [{ type: i0.Input }],
1915
+ filterEnabled: [{ type: i0.Input }]
1906
1916
  };
1907
1917
 
1908
1918
  var TableModule = /** @class */ (function () {
@@ -1934,39 +1944,182 @@
1934
1944
  }
1935
1945
  return DataTableActionType;
1936
1946
  }());
1937
- DataTableActionType.SINGLE = "SINGLE";
1938
- DataTableActionType.BATCH = "BATCH";
1939
- DataTableActionType.NONE = "NONE";
1947
+ DataTableActionType.SINGLE = 'SINGLE';
1948
+ DataTableActionType.BATCH = 'BATCH';
1949
+ DataTableActionType.NONE = 'NONE';
1940
1950
 
1941
- var DataTableComponent = /** @class */ (function () {
1942
- function DataTableComponent() {
1951
+ var DataTableColumnsModalComponent = /** @class */ (function () {
1952
+ function DataTableColumnsModalComponent(dialogRef, data) {
1953
+ this.dialogRef = dialogRef;
1954
+ this.data = data;
1955
+ this.selectedColumns = [];
1956
+ this.availableColumns = [];
1957
+ this.filteredAvailableColumns = [];
1958
+ }
1959
+ DataTableColumnsModalComponent.prototype.ngOnInit = function () {
1960
+ var e_1, _b;
1961
+ this.definition = this.data.definition;
1962
+ try {
1963
+ for (var _c = __values(this.data.allColumns), _d = _c.next(); !_d.done; _d = _c.next()) {
1964
+ var column = _d.value;
1965
+ var columnId = column.id;
1966
+ var selectedColumnIds = this.definition.displayedColumns.map(function (col) { return col.id; });
1967
+ if (selectedColumnIds.includes(columnId)) {
1968
+ this.selectedColumns.push(column);
1969
+ }
1970
+ else {
1971
+ this.availableColumns.push(column);
1972
+ }
1973
+ }
1974
+ }
1975
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
1976
+ finally {
1977
+ try {
1978
+ if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
1979
+ }
1980
+ finally { if (e_1) throw e_1.error; }
1981
+ }
1982
+ this.clearFilterValue();
1983
+ };
1984
+ DataTableColumnsModalComponent.prototype.onDrop = function (event) {
1985
+ if (event.previousContainer === event.container) {
1986
+ dragDrop.moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
1987
+ }
1988
+ else {
1989
+ var itemIndex = this.findMatchingItemIndex(event.previousContainer, event.item);
1990
+ dragDrop.transferArrayItem(event.previousContainer.data, event.container.data, itemIndex, event.currentIndex);
1991
+ this.clearFilterValue();
1992
+ this.availableColumns.sort(function (a, b) { return a.label.localeCompare(b.label); });
1993
+ }
1994
+ };
1995
+ DataTableColumnsModalComponent.prototype.onSave = function () {
1996
+ this.definition.displayedColumns = this.selectedColumns;
1997
+ var saveChange = {
1998
+ action: 'SAVE',
1999
+ definition: this.definition,
2000
+ };
2001
+ this.dialogRef.close(saveChange);
2002
+ };
2003
+ DataTableColumnsModalComponent.prototype.onDelete = function () {
2004
+ var deleteChange = {
2005
+ action: 'DELETE',
2006
+ definition: this.definition,
2007
+ };
2008
+ this.dialogRef.close(deleteChange);
2009
+ };
2010
+ DataTableColumnsModalComponent.prototype.onCancel = function () {
2011
+ this.dialogRef.close();
2012
+ };
2013
+ DataTableColumnsModalComponent.prototype.updateFilterValue = function () {
2014
+ var _this = this;
1943
2015
  var _a;
1944
- this.ACTION_COLUMN_NAME = "__action__";
1945
- this.SINGLE = DataTableActionType.SINGLE;
1946
- this.BATCH = DataTableActionType.BATCH;
1947
- this.NONE = DataTableActionType.NONE;
1948
- this.columns = [];
1949
- this.filterLabel = "Filter";
1950
- this.filterPlaceholder = "";
1951
- this.noDataText = "No matching data found";
2016
+ if (((_a = this.searchFilter) === null || _a === void 0 ? void 0 : _a.length) > 0) {
2017
+ this.filteredAvailableColumns = this.availableColumns.filter(function (c) { return c.label.toLowerCase().includes(_this.searchFilter.toLowerCase()); });
2018
+ }
2019
+ else {
2020
+ this.filteredAvailableColumns = __spread(this.availableColumns);
2021
+ }
2022
+ };
2023
+ DataTableColumnsModalComponent.prototype.findMatchingItemIndex = function (previousContainer, item) {
2024
+ var itemId = item.element.nativeElement.id;
2025
+ var previousContainerItems = __spread(previousContainer.data);
2026
+ if ((previousContainerItems === null || previousContainerItems === void 0 ? void 0 : previousContainerItems.length) < 1) {
2027
+ return 0;
2028
+ }
2029
+ for (var itemIndex = 0; itemIndex < previousContainerItems.length; itemIndex++) {
2030
+ if (previousContainerItems[itemIndex].id === itemId) {
2031
+ return itemIndex;
2032
+ }
2033
+ }
2034
+ return 0;
2035
+ };
2036
+ DataTableColumnsModalComponent.prototype.clearFilterValue = function () {
2037
+ this.searchFilter = '';
2038
+ this.filteredAvailableColumns = __spread(this.availableColumns);
2039
+ };
2040
+ return DataTableColumnsModalComponent;
2041
+ }());
2042
+ DataTableColumnsModalComponent.decorators = [
2043
+ { type: i0.Component, args: [{
2044
+ selector: 'mad-data-table-columns-modal.component',
2045
+ 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",
2046
+ 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)}"]
2047
+ },] }
2048
+ ];
2049
+ DataTableColumnsModalComponent.ctorParameters = function () { return [
2050
+ { type: dialog.MatDialogRef },
2051
+ { type: undefined, decorators: [{ type: i0.Inject, args: [dialog.MAT_DIALOG_DATA,] }] }
2052
+ ]; };
2053
+
2054
+ var DataTableComponent = /** @class */ (function () {
2055
+ function DataTableComponent(matDialog) {
2056
+ this.matDialog = matDialog;
2057
+ // Translations
2058
+ this.filterLabel = 'Filter';
2059
+ this.filterPlaceholder = '';
2060
+ this.filterColumnsLabel = 'Filter';
2061
+ this.filterColumnsPlaceHolder = 'Filter available columns';
2062
+ this.noDataText = 'No matching data found';
2063
+ this.columnSettingsModalTitleLabel = 'Column settings';
2064
+ this.selectedLabel = 'Selected columns';
2065
+ this.availableLabel = 'Available columns';
2066
+ this.saveLabel = 'Save';
2067
+ this.deleteLabel = 'Delete';
2068
+ this.cancelLabel = 'Cancel';
2069
+ this.infoTextLabel = 'Drag and drop a column to select or reorder it.';
1952
2070
  this.pageSizeOptions = [5, 10, 15];
1953
- this.defaultPageSize = ((_a = this.pageSizeOptions) === null || _a === void 0 ? void 0 : _a[0]) || 10;
1954
2071
  this.actions = [];
2072
+ this.deleteDefinitionAllowed = false;
2073
+ this.useAsync = false;
1955
2074
  this.sortEvent = new i0.EventEmitter();
1956
2075
  this.actionEvent = new i0.EventEmitter();
1957
- this.pagingEvent = new i0.EventEmitter();
2076
+ this.pageEvent = new i0.EventEmitter();
2077
+ this.allColumnsEvent = new i0.EventEmitter();
2078
+ this.columnDefinitionChangeEvent = new i0.EventEmitter();
2079
+ this.viewDefinitionChangeEvent = new i0.EventEmitter();
2080
+ this.ACTION_COLUMN_NAME = '__action__';
2081
+ this.SINGLE = DataTableActionType.SINGLE;
2082
+ this.BATCH = DataTableActionType.BATCH;
2083
+ this.NONE = DataTableActionType.NONE;
1958
2084
  this.tableActions = [];
1959
2085
  this.rowActions = [];
2086
+ this.columns = [];
1960
2087
  this.allSelected = false;
1961
2088
  this.displayedDataMap = new Map();
1962
2089
  this.actualDataMap = new Map();
1963
2090
  this.selectionModel = new collections.SelectionModel(true);
2091
+ this.allColumnDefinitions = [];
1964
2092
  this.isFilterEnabled = false;
1965
2093
  this.isPaginationEnabled = false;
1966
2094
  this.mode = this.NONE;
1967
2095
  this.isRowClickable = false;
2096
+ this.showColumnModal = false;
1968
2097
  this.isLoading = false;
2098
+ this.paginatorLength = 0;
2099
+ this.paginatorPageIndex = 0;
2100
+ this.paginatorPageSize = 50;
1969
2101
  }
2102
+ Object.defineProperty(DataTableComponent.prototype, "displayedColumns", {
2103
+ set: function (cols) {
2104
+ if (!this.displayedColumnDefinition) {
2105
+ this.columns = cols ? __spread(cols) : [];
2106
+ this.columnIds = this.columns.map(function (column) { return column.id; });
2107
+ this.columnIds.unshift(this.ACTION_COLUMN_NAME);
2108
+ }
2109
+ },
2110
+ enumerable: false,
2111
+ configurable: true
2112
+ });
2113
+ Object.defineProperty(DataTableComponent.prototype, "displayedColumnDefinition", {
2114
+ set: function (def) {
2115
+ this.selectedColumnDefinion = def;
2116
+ this.columns = def.displayedColumns;
2117
+ this.columnIds = this.columns.map(function (column) { return column.id; });
2118
+ this.columnIds.unshift(this.ACTION_COLUMN_NAME);
2119
+ },
2120
+ enumerable: false,
2121
+ configurable: true
2122
+ });
1970
2123
  Object.defineProperty(DataTableComponent.prototype, "tableData", {
1971
2124
  set: function (data) {
1972
2125
  if (!this.dataSource) {
@@ -1977,6 +2130,44 @@
1977
2130
  enumerable: false,
1978
2131
  configurable: true
1979
2132
  });
2133
+ Object.defineProperty(DataTableComponent.prototype, "page", {
2134
+ set: function (page) {
2135
+ this.paginatorPageIndex = page.pageIndex;
2136
+ this.paginatorPageSize = page.pageSize;
2137
+ this.paginatorLength = page.length;
2138
+ },
2139
+ enumerable: false,
2140
+ configurable: true
2141
+ });
2142
+ Object.defineProperty(DataTableComponent.prototype, "columnDefinitions", {
2143
+ set: function (definitions) {
2144
+ var e_1, _b;
2145
+ var _a;
2146
+ this.editableColumnDefinitions = [];
2147
+ this.viewableColumnDefinitions = [];
2148
+ this.allColumnDefinitions = __spread(definitions);
2149
+ try {
2150
+ for (var definitions_1 = __values(definitions), definitions_1_1 = definitions_1.next(); !definitions_1_1.done; definitions_1_1 = definitions_1.next()) {
2151
+ var definition = definitions_1_1.value;
2152
+ if (definition.editable) {
2153
+ this.editableColumnDefinitions.push(definition);
2154
+ }
2155
+ if (((_a = definition.displayedColumns) === null || _a === void 0 ? void 0 : _a.length) > 0) {
2156
+ this.viewableColumnDefinitions.push(definition);
2157
+ }
2158
+ }
2159
+ }
2160
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
2161
+ finally {
2162
+ try {
2163
+ if (definitions_1_1 && !definitions_1_1.done && (_b = definitions_1.return)) _b.call(definitions_1);
2164
+ }
2165
+ finally { if (e_1) throw e_1.error; }
2166
+ }
2167
+ },
2168
+ enumerable: false,
2169
+ configurable: true
2170
+ });
1980
2171
  Object.defineProperty(DataTableComponent.prototype, "loading", {
1981
2172
  set: function (isLoading) {
1982
2173
  this.isLoading = isLoading;
@@ -1984,13 +2175,33 @@
1984
2175
  enumerable: false,
1985
2176
  configurable: true
1986
2177
  });
2178
+ Object.defineProperty(DataTableComponent.prototype, "defaultPageSize", {
2179
+ set: function (defaultSize) {
2180
+ this.paginatorPageSize = defaultSize;
2181
+ },
2182
+ enumerable: false,
2183
+ configurable: true
2184
+ });
2185
+ Object.defineProperty(DataTableComponent.prototype, "externalPaginator", {
2186
+ set: function (paginator) {
2187
+ this.extPaginator = paginator;
2188
+ },
2189
+ enumerable: false,
2190
+ configurable: true
2191
+ });
1987
2192
  Object.defineProperty(DataTableComponent.prototype, "paginationEnabled", {
1988
2193
  set: function (isPaginationEnabled) {
1989
2194
  this.isPaginationEnabled = isPaginationEnabled;
1990
- // eslint-disable-next-line
1991
- var pageSize = this.isPaginationEnabled ? this.defaultPageSize : Number.MAX_VALUE;
1992
- if (this.dataSource.paginator) {
1993
- this.dataSource.paginator._changePageSize(pageSize);
2195
+ this.unsetPageSizeIfNecessary();
2196
+ },
2197
+ enumerable: false,
2198
+ configurable: true
2199
+ });
2200
+ Object.defineProperty(DataTableComponent.prototype, "allColumns", {
2201
+ set: function (allColumns) {
2202
+ this.allAvailableColumns = allColumns;
2203
+ if (allColumns && this.showColumnModal) {
2204
+ this.openColumnModal();
1994
2205
  }
1995
2206
  },
1996
2207
  enumerable: false,
@@ -1998,7 +2209,7 @@
1998
2209
  });
1999
2210
  Object.defineProperty(DataTableComponent.prototype, "filterEnabled", {
2000
2211
  set: function (isFilterEnabled) {
2001
- this.isFilterEnabled = isFilterEnabled;
2212
+ this.isFilterEnabled = !this.useAsync ? isFilterEnabled : false;
2002
2213
  this.setFilterValue(undefined);
2003
2214
  },
2004
2215
  enumerable: false,
@@ -2015,20 +2226,84 @@
2015
2226
  enumerable: false,
2016
2227
  configurable: true
2017
2228
  });
2229
+ DataTableComponent.compare = function (a, b, sort) {
2230
+ var x = a[sort.active];
2231
+ var y = b[sort.active];
2232
+ var ascending = sort.direction === 'asc';
2233
+ switch (typeof x) {
2234
+ case 'number':
2235
+ return DataTableComponent.compareNumber(x, y, ascending);
2236
+ case 'string':
2237
+ return DataTableComponent.compareString(x, y, ascending);
2238
+ case 'boolean':
2239
+ return DataTableComponent.compareBoolean(x, y, ascending);
2240
+ default:
2241
+ // cannot compare -> return equal
2242
+ return 0;
2243
+ }
2244
+ };
2245
+ DataTableComponent.compareNumber = function (x, y, ascending) {
2246
+ return ascending ? x - y : y - x;
2247
+ };
2248
+ DataTableComponent.compareString = function (x, y, ascending) {
2249
+ return ascending ? x.localeCompare(y) : y.localeCompare(x);
2250
+ };
2251
+ DataTableComponent.compareBoolean = function (x, y, ascending) {
2252
+ if (x === y) {
2253
+ return 0;
2254
+ }
2255
+ if (ascending) {
2256
+ // true first
2257
+ return x ? -1 : 1;
2258
+ }
2259
+ else {
2260
+ // false first
2261
+ return x ? 1 : -1;
2262
+ }
2263
+ };
2264
+ DataTableComponent.transformData = function (value, transformer, transformerParams) {
2265
+ if (!transformer || !(transformer instanceof Function)) {
2266
+ return value;
2267
+ }
2268
+ return transformer(value, transformerParams);
2269
+ };
2270
+ DataTableComponent.generateRowId = function () {
2271
+ return uuid.v4();
2272
+ };
2273
+ DataTableComponent.isClickOnRowMenuIcon = function (event) {
2274
+ var _a;
2275
+ return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains('mat-icon');
2276
+ };
2018
2277
  DataTableComponent.prototype.ngOnInit = function () {
2019
- this.columnNames = this.columns.map(function (column) { return column.label; });
2020
2278
  this.mode = this.getTableMode();
2021
2279
  this.setActions();
2022
2280
  if (this.mode !== this.NONE) {
2023
2281
  this.isRowClickable = true;
2024
2282
  this.defaultAction = this.rowActions[0];
2025
2283
  }
2026
- this.columnNames.unshift(this.ACTION_COLUMN_NAME);
2027
2284
  };
2028
2285
  DataTableComponent.prototype.ngAfterViewInit = function () {
2029
2286
  this.dataSource.paginator = this.paginator;
2030
2287
  this.dataSource.sort = this.sort;
2031
2288
  };
2289
+ DataTableComponent.prototype.onColumnSettings = function (definition) {
2290
+ this.showColumnModal = true;
2291
+ this.selectedDefinition = definition ? definition : this.allColumnDefinitions[0];
2292
+ if (this.allAvailableColumns) {
2293
+ this.openColumnModal();
2294
+ }
2295
+ else {
2296
+ // if no complete definitions have been loaded yet send an event so the app can load it
2297
+ this.allColumnsEvent.emit();
2298
+ }
2299
+ };
2300
+ DataTableComponent.prototype.onViewDefinition = function (definition) {
2301
+ this.selectedDefinition = definition;
2302
+ this.viewDefinitionChangeEvent.emit(definition);
2303
+ };
2304
+ DataTableComponent.prototype.isCurrentDefinition = function (definition) {
2305
+ return this.selectedDefinition && this.selectedDefinition.id === definition.id;
2306
+ };
2032
2307
  Object.defineProperty(DataTableComponent.prototype, "selectedCount", {
2033
2308
  get: function () {
2034
2309
  var _a;
@@ -2039,23 +2314,26 @@
2039
2314
  });
2040
2315
  Object.defineProperty(DataTableComponent.prototype, "rowCount", {
2041
2316
  get: function () {
2042
- var _a;
2043
- return ((_a = this.dataSource) === null || _a === void 0 ? void 0 : _a._pageData(this.dataSource.data)) ? this.dataSource._pageData(this.dataSource.data).length : 0;
2317
+ return this.getAllDataSourceRowsOfCurrentPage() ? this.getAllDataSourceRowsOfCurrentPage().length : 0;
2044
2318
  },
2045
2319
  enumerable: false,
2046
2320
  configurable: true
2047
2321
  });
2322
+ DataTableComponent.prototype.getAllDataSourceRowsOfCurrentPage = function () {
2323
+ var _a;
2324
+ return (_a = this.dataSource) === null || _a === void 0 ? void 0 : _a._pageData(this.dataSource.data);
2325
+ };
2048
2326
  DataTableComponent.prototype.getSelectedCount = function (actionType) {
2049
2327
  var count = this.selectedCount;
2050
- if (actionType != this.BATCH || count < 2) {
2051
- return "";
2328
+ if (actionType !== this.BATCH || count < 2) {
2329
+ return '';
2052
2330
  }
2053
- return " (" + count + ")";
2331
+ return ' (' + count + ')';
2054
2332
  };
2055
2333
  DataTableComponent.prototype.isDisabled = function (actionType) {
2056
2334
  switch (actionType) {
2057
2335
  case this.SINGLE:
2058
- return this.selectedCount != 1;
2336
+ return this.selectedCount !== 1;
2059
2337
  case this.BATCH:
2060
2338
  return this.selectedCount < 1;
2061
2339
  default:
@@ -2070,10 +2348,8 @@
2070
2348
  this.allSelected = !this.allSelected;
2071
2349
  if (this.allSelected) {
2072
2350
  // select all rows of the current page
2073
- this.dataSource._pageData(this.dataSource.data).forEach(function (row) {
2074
- var dataRow = row;
2075
- var rowId = "" + dataRow.rowId;
2076
- _this.selectionModel.select(rowId);
2351
+ this.getAllDataSourceRowsOfCurrentPage().forEach(function (row) {
2352
+ _this.selectionModel.select('' + row.rowId);
2077
2353
  });
2078
2354
  }
2079
2355
  };
@@ -2107,14 +2383,21 @@
2107
2383
  return;
2108
2384
  }
2109
2385
  };
2110
- DataTableComponent.prototype.onSortingEvent = function (sortingParams) {
2111
- this.sortEvent.emit(sortingParams);
2386
+ DataTableComponent.prototype.onSortingEvent = function (sort) {
2387
+ if (this.useAsync) {
2388
+ this.sortEvent.emit(sort);
2389
+ }
2390
+ else {
2391
+ this.internalSort(sort);
2392
+ }
2112
2393
  };
2113
- DataTableComponent.prototype.onPaginationEvent = function (event) {
2114
- this.pagingEvent.emit(event);
2394
+ DataTableComponent.prototype.onPageEvent = function (event) {
2395
+ if (this.useAsync) {
2396
+ this.pageEvent.emit(event);
2397
+ }
2115
2398
  };
2116
2399
  DataTableComponent.prototype.onTableAction = function (tableAction) {
2117
- var e_1, _b;
2400
+ var e_2, _b;
2118
2401
  if (!!tableAction) {
2119
2402
  var selection = [];
2120
2403
  try {
@@ -2123,30 +2406,17 @@
2123
2406
  selection.push(this.idGenerator ? selected : this.actualDataMap.get(selected));
2124
2407
  }
2125
2408
  }
2126
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
2409
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
2127
2410
  finally {
2128
2411
  try {
2129
2412
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
2130
2413
  }
2131
- finally { if (e_1) throw e_1.error; }
2414
+ finally { if (e_2) throw e_2.error; }
2132
2415
  }
2133
2416
  tableAction.selected = selection;
2134
2417
  this.actionEvent.emit(tableAction);
2135
2418
  }
2136
2419
  };
2137
- DataTableComponent.transformData = function (value, transformer, transformerParams) {
2138
- if (!transformer || !(transformer instanceof Function)) {
2139
- return value;
2140
- }
2141
- return transformer(value, transformerParams);
2142
- };
2143
- DataTableComponent.generateRowId = function () {
2144
- return uuid.v4();
2145
- };
2146
- DataTableComponent.isClickOnRowMenuIcon = function (event) {
2147
- var _a;
2148
- return (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.classList.contains("mat-icon");
2149
- };
2150
2420
  DataTableComponent.prototype.emitTableAction = function (action, selected) {
2151
2421
  var emitAction = Object.assign({}, action);
2152
2422
  if (action.type !== this.NONE) {
@@ -2155,9 +2425,9 @@
2155
2425
  this.actionEvent.emit(emitAction);
2156
2426
  };
2157
2427
  DataTableComponent.prototype.generateDisplayedDataElement = function (rowId, actualDataElement) {
2158
- var e_2, _b;
2428
+ var e_3, _b;
2159
2429
  var displayedDataElement = {};
2160
- displayedDataElement["rowId"] = rowId;
2430
+ displayedDataElement.rowId = rowId;
2161
2431
  try {
2162
2432
  for (var _c = __values(this.columns), _d = _c.next(); !_d.done; _d = _c.next()) {
2163
2433
  var column = _d.value;
@@ -2165,17 +2435,21 @@
2165
2435
  displayedDataElement[column.dataPropertyName] = DataTableComponent.transformData(actualValue, column.transformer, column.transformerParams);
2166
2436
  }
2167
2437
  }
2168
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
2438
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
2169
2439
  finally {
2170
2440
  try {
2171
2441
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
2172
2442
  }
2173
- finally { if (e_2) throw e_2.error; }
2443
+ finally { if (e_3) throw e_3.error; }
2174
2444
  }
2175
2445
  return displayedDataElement;
2176
2446
  };
2447
+ DataTableComponent.prototype.internalSort = function (sort) {
2448
+ var sortedData = __spread(this.dataSource.data).sort(function (a, b) { return DataTableComponent.compare(a, b, sort); });
2449
+ this.dataSource.data = __spread(sortedData);
2450
+ };
2177
2451
  DataTableComponent.prototype.setActions = function () {
2178
- var e_3, _b;
2452
+ var e_4, _b;
2179
2453
  this.rowActions = [];
2180
2454
  this.tableActions = [];
2181
2455
  try {
@@ -2202,40 +2476,68 @@
2202
2476
  }
2203
2477
  }
2204
2478
  }
2205
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
2479
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
2206
2480
  finally {
2207
2481
  try {
2208
2482
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
2209
2483
  }
2210
- finally { if (e_3) throw e_3.error; }
2484
+ finally { if (e_4) throw e_4.error; }
2211
2485
  }
2212
2486
  };
2213
2487
  DataTableComponent.prototype.createDataMapsAndSetDisplayedDataSourceData = function (data) {
2214
- var e_4, _b;
2488
+ var e_5, _b;
2215
2489
  var displayedDataList = [];
2216
2490
  this.actualDataMap.clear();
2217
2491
  this.displayedDataMap.clear();
2218
- try {
2219
- for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
2220
- var dataEntry = data_1_1.value;
2221
- var rowId = (this.idGenerator) ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();
2222
- this.actualDataMap.set(rowId, dataEntry);
2223
- var displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);
2224
- this.displayedDataMap.set(rowId, displayedDataElement);
2225
- displayedDataList.push(displayedDataElement);
2226
- }
2227
- }
2228
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
2229
- finally {
2492
+ if ((data === null || data === void 0 ? void 0 : data.length) > 0) {
2230
2493
  try {
2231
- if (data_1_1 && !data_1_1.done && (_b = data_1.return)) _b.call(data_1);
2494
+ for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {
2495
+ var dataEntry = data_1_1.value;
2496
+ var rowId = this.idGenerator ? this.idGenerator(dataEntry) : DataTableComponent.generateRowId();
2497
+ this.actualDataMap.set(rowId, dataEntry);
2498
+ var displayedDataElement = this.generateDisplayedDataElement(rowId, dataEntry);
2499
+ this.displayedDataMap.set(rowId, displayedDataElement);
2500
+ displayedDataList.push(displayedDataElement);
2501
+ }
2502
+ }
2503
+ catch (e_5_1) { e_5 = { error: e_5_1 }; }
2504
+ finally {
2505
+ try {
2506
+ if (data_1_1 && !data_1_1.done && (_b = data_1.return)) _b.call(data_1);
2507
+ }
2508
+ finally { if (e_5) throw e_5.error; }
2232
2509
  }
2233
- finally { if (e_4) throw e_4.error; }
2234
2510
  }
2235
2511
  this.dataSource.data = displayedDataList;
2512
+ this.unsetPageSizeIfNecessary();
2513
+ };
2514
+ DataTableComponent.prototype.openColumnModal = function () {
2515
+ var _this = this;
2516
+ var dialogData = {
2517
+ allColumns: this.allAvailableColumns,
2518
+ definition: this.selectedDefinition,
2519
+ deleteDefinitionAllowed: this.deleteDefinitionAllowed,
2520
+ filterColumnsLabel: this.filterColumnsLabel,
2521
+ filterColumnsPlaceHolder: this.filterColumnsPlaceHolder,
2522
+ noDataText: this.noDataText,
2523
+ titleLabel: this.columnSettingsModalTitleLabel,
2524
+ selectedLabel: this.selectedLabel,
2525
+ availableLabel: this.availableLabel,
2526
+ saveLabel: this.saveLabel,
2527
+ deleteLabel: this.deleteLabel,
2528
+ cancelLabel: this.cancelLabel,
2529
+ infoTextLabel: this.infoTextLabel,
2530
+ };
2531
+ var dialog = this.matDialog.open(DataTableColumnsModalComponent, { data: dialogData });
2532
+ dialog.afterClosed().subscribe(function (result) {
2533
+ // no event on CANCEL
2534
+ if (result) {
2535
+ _this.columnDefinitionChangeEvent.emit(result);
2536
+ }
2537
+ });
2236
2538
  };
2237
2539
  DataTableComponent.prototype.getTableMode = function () {
2238
- var e_5, _b;
2540
+ var e_6, _b;
2239
2541
  if (this._forceMode) {
2240
2542
  return this._forceMode;
2241
2543
  }
@@ -2249,12 +2551,12 @@
2249
2551
  distinctActionTypes.add(rowAction.type);
2250
2552
  }
2251
2553
  }
2252
- catch (e_5_1) { e_5 = { error: e_5_1 }; }
2554
+ catch (e_6_1) { e_6 = { error: e_6_1 }; }
2253
2555
  finally {
2254
2556
  try {
2255
2557
  if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
2256
2558
  }
2257
- finally { if (e_5) throw e_5.error; }
2559
+ finally { if (e_6) throw e_6.error; }
2258
2560
  }
2259
2561
  if (distinctActionTypes.has(this.BATCH)) {
2260
2562
  return this.BATCH;
@@ -2264,32 +2566,63 @@
2264
2566
  }
2265
2567
  return this.NONE;
2266
2568
  };
2569
+ DataTableComponent.prototype.unsetPageSizeIfNecessary = function () {
2570
+ if (!this.useAsync && !this.isPaginationEnabled) {
2571
+ var dataCount = this.dataSource.data ? this.dataSource.data.length : 0;
2572
+ this.paginatorPageSize = dataCount;
2573
+ this.paginatorLength = dataCount;
2574
+ }
2575
+ };
2267
2576
  return DataTableComponent;
2268
2577
  }());
2269
2578
  DataTableComponent.decorators = [
2270
2579
  { type: i0.Component, args: [{
2271
- selector: "mad-data-table",
2272
- 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=\"mad-table\">\n <div class=\"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.label\">\n <ng-container *ngIf=\"column.isSortable; else noSort\">\n <th\n scope=\"col\"\n mat-header-cell\n *matHeaderCellDef\n mat-sort-header=\"{{ column.label | translate}}\"\n [arrowPosition]=\"column.isRightAligned ? 'before' : 'after'\"\n [class.text-right]=\"column.isRightAligned\"\n >\n {{ column.label }}\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 }}\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=\"columnNames\"></tr>\n <tr\n mat-row\n [class.clickable-table-row]=\"isRowClickable\"\n (click)=\"onRowEvent($event, row)\"\n *matRowDef=\"let row; columns: columnNames\"\n ></tr>\n </table>\n\n <!-- Pagination -->\n <mat-paginator\n [style.display]=\"isPaginationEnabled ? 'block' : 'none'\"\n [pageSize]=\"defaultPageSize\"\n [pageSizeOptions]=\"pageSizeOptions\"\n (page)=\"onPaginationEvent($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=\"datatable-spinner-wrapper\" *ngIf=\"isLoading\">\n <mat-spinner [diameter]=\"50\" [strokeWidth]=\"3\"></mat-spinner>\n </div>\n {{ noDataText }}\n </div>\n</ng-template>\n",
2273
- 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}.mad-table,.noDataText{position:relative;width:100%}.mad-table{overflow-x:auto}.mad-datatable-action-bar{align-items:baseline;display:flex;justify-content:space-between}.mad-datatable-checkbox-container{margin-right:16px}.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}"]
2580
+ selector: 'mad-data-table',
2581
+ 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",
2582
+ 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}"]
2274
2583
  },] }
2275
2584
  ];
2585
+ DataTableComponent.ctorParameters = function () { return [
2586
+ { type: dialog.MatDialog }
2587
+ ]; };
2276
2588
  DataTableComponent.propDecorators = {
2277
- columns: [{ type: i0.Input }],
2278
2589
  filterLabel: [{ type: i0.Input }],
2279
2590
  filterPlaceholder: [{ type: i0.Input }],
2591
+ filterColumnsLabel: [{ type: i0.Input }],
2592
+ filterColumnsPlaceHolder: [{ type: i0.Input }],
2280
2593
  noDataText: [{ type: i0.Input }],
2594
+ columnSettingsModalTitleLabel: [{ type: i0.Input }],
2595
+ selectedLabel: [{ type: i0.Input }],
2596
+ availableLabel: [{ type: i0.Input }],
2597
+ saveLabel: [{ type: i0.Input }],
2598
+ deleteLabel: [{ type: i0.Input }],
2599
+ cancelLabel: [{ type: i0.Input }],
2600
+ infoTextLabel: [{ type: i0.Input }],
2601
+ tableClass: [{ type: i0.Input }],
2281
2602
  pageSizeOptions: [{ type: i0.Input }],
2282
- defaultPageSize: [{ type: i0.Input }],
2603
+ externalFilter: [{ type: i0.Input }],
2283
2604
  actions: [{ type: i0.Input }],
2284
2605
  idGenerator: [{ type: i0.Input }],
2606
+ deleteDefinitionAllowed: [{ type: i0.Input }],
2607
+ useAsync: [{ type: i0.Input }],
2608
+ displayedColumns: [{ type: i0.Input }],
2609
+ displayedColumnDefinition: [{ type: i0.Input }],
2285
2610
  tableData: [{ type: i0.Input }],
2611
+ page: [{ type: i0.Input }],
2612
+ columnDefinitions: [{ type: i0.Input }],
2286
2613
  loading: [{ type: i0.Input }],
2614
+ defaultPageSize: [{ type: i0.Input }],
2615
+ externalPaginator: [{ type: i0.Input }],
2287
2616
  paginationEnabled: [{ type: i0.Input }],
2617
+ allColumns: [{ type: i0.Input }],
2288
2618
  filterEnabled: [{ type: i0.Input }],
2289
2619
  forceMode: [{ type: i0.Input }],
2290
2620
  sortEvent: [{ type: i0.Output }],
2291
2621
  actionEvent: [{ type: i0.Output }],
2292
- pagingEvent: [{ type: i0.Output }],
2622
+ pageEvent: [{ type: i0.Output }],
2623
+ allColumnsEvent: [{ type: i0.Output }],
2624
+ columnDefinitionChangeEvent: [{ type: i0.Output }],
2625
+ viewDefinitionChangeEvent: [{ type: i0.Output }],
2293
2626
  paginator: [{ type: i0.ViewChild, args: [paginator.MatPaginator, { static: false },] }],
2294
2627
  sort: [{ type: i0.ViewChild, args: [sort.MatSort, { static: true },] }]
2295
2628
  };
@@ -2301,7 +2634,7 @@
2301
2634
  }());
2302
2635
  DataTableModule.decorators = [
2303
2636
  { type: i0.NgModule, args: [{
2304
- declarations: [DataTableComponent],
2637
+ declarations: [DataTableComponent, DataTableColumnsModalComponent],
2305
2638
  imports: [
2306
2639
  common.CommonModule,
2307
2640
  button.MatButtonModule,
@@ -2316,9 +2649,11 @@
2316
2649
  ButtonModule,
2317
2650
  i2.TranslateModule,
2318
2651
  checkbox.MatCheckboxModule,
2319
- badge.MatBadgeModule
2652
+ badge.MatBadgeModule,
2653
+ dragDrop.DragDropModule,
2654
+ forms.FormsModule,
2320
2655
  ],
2321
- exports: [DataTableComponent]
2656
+ exports: [DataTableComponent, DataTableColumnsModalComponent],
2322
2657
  },] }
2323
2658
  ];
2324
2659
 
@@ -2372,8 +2707,8 @@
2372
2707
  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",
2373
2708
  inputs: ['color'],
2374
2709
  host: {
2375
- 'class': 'mad-step-header',
2376
- 'role': 'tab',
2710
+ class: 'mad-step-header',
2711
+ role: 'tab',
2377
2712
  },
2378
2713
  encapsulation: i0.ViewEncapsulation.None,
2379
2714
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
@@ -2555,7 +2890,7 @@
2555
2890
  host: {
2556
2891
  '[class.stepper-vertical]': 'true',
2557
2892
  '[attr.aria-orientation]': '"vertical"',
2558
- 'role': 'tablist',
2893
+ role: 'tablist',
2559
2894
  },
2560
2895
  animations: [madStepperAnimations.verticalStepTransition],
2561
2896
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
@@ -2595,8 +2930,6 @@
2595
2930
  var ContentHeaderComponent = /** @class */ (function () {
2596
2931
  function ContentHeaderComponent() {
2597
2932
  }
2598
- ContentHeaderComponent.prototype.ngOnInit = function () {
2599
- };
2600
2933
  return ContentHeaderComponent;
2601
2934
  }());
2602
2935
  ContentHeaderComponent.decorators = [
@@ -2606,13 +2939,10 @@
2606
2939
  styles: [".content-header{padding-right:.5rem}"]
2607
2940
  },] }
2608
2941
  ];
2609
- ContentHeaderComponent.ctorParameters = function () { return []; };
2610
2942
 
2611
2943
  var ContentPanelContainerComponent = /** @class */ (function () {
2612
2944
  function ContentPanelContainerComponent() {
2613
2945
  }
2614
- ContentPanelContainerComponent.prototype.ngOnInit = function () {
2615
- };
2616
2946
  return ContentPanelContainerComponent;
2617
2947
  }());
2618
2948
  ContentPanelContainerComponent.decorators = [
@@ -2622,13 +2952,10 @@
2622
2952
  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}"]
2623
2953
  },] }
2624
2954
  ];
2625
- ContentPanelContainerComponent.ctorParameters = function () { return []; };
2626
2955
 
2627
2956
  var ContentPanelContainerContentComponent = /** @class */ (function () {
2628
2957
  function ContentPanelContainerContentComponent() {
2629
2958
  }
2630
- ContentPanelContainerContentComponent.prototype.ngOnInit = function () {
2631
- };
2632
2959
  return ContentPanelContainerContentComponent;
2633
2960
  }());
2634
2961
  ContentPanelContainerContentComponent.decorators = [
@@ -2638,13 +2965,10 @@
2638
2965
  styles: [":host{border-top:.05rem solid #ccc;flex:1 1 auto;height:1rem;overflow-y:auto;padding:1rem}"]
2639
2966
  },] }
2640
2967
  ];
2641
- ContentPanelContainerContentComponent.ctorParameters = function () { return []; };
2642
2968
 
2643
2969
  var ContentPanelContainerFooterComponent = /** @class */ (function () {
2644
2970
  function ContentPanelContainerFooterComponent() {
2645
2971
  }
2646
- ContentPanelContainerFooterComponent.prototype.ngOnInit = function () {
2647
- };
2648
2972
  return ContentPanelContainerFooterComponent;
2649
2973
  }());
2650
2974
  ContentPanelContainerFooterComponent.decorators = [
@@ -2654,13 +2978,10 @@
2654
2978
  styles: [":host{align-items:center;border-top:.05rem solid #ccc;display:flex;flex:0 0 auto;min-height:2rem;padding:.25rem 1rem}"]
2655
2979
  },] }
2656
2980
  ];
2657
- ContentPanelContainerFooterComponent.ctorParameters = function () { return []; };
2658
2981
 
2659
2982
  var MainContainerComponent = /** @class */ (function () {
2660
2983
  function MainContainerComponent() {
2661
2984
  }
2662
- MainContainerComponent.prototype.ngOnInit = function () {
2663
- };
2664
2985
  return MainContainerComponent;
2665
2986
  }());
2666
2987
  MainContainerComponent.decorators = [
@@ -2670,7 +2991,6 @@
2670
2991
  styles: [".main-container{display:flex;flex-direction:column;height:100%}"]
2671
2992
  },] }
2672
2993
  ];
2673
- MainContainerComponent.ctorParameters = function () { return []; };
2674
2994
 
2675
2995
  var ContentPanelModule = /** @class */ (function () {
2676
2996
  function ContentPanelModule() {
@@ -2708,18 +3028,29 @@
2708
3028
  */
2709
3029
  this._headerClick = new i0.EventEmitter(true);
2710
3030
  }
3031
+ Object.defineProperty(FlowbarComponent.prototype, "currentStepLabel", {
3032
+ get: function () {
3033
+ return this._activeStep.label;
3034
+ },
3035
+ enumerable: false,
3036
+ configurable: true
3037
+ });
3038
+ Object.defineProperty(FlowbarComponent.prototype, "currentSubStepLabel", {
3039
+ get: function () {
3040
+ var _a;
3041
+ return (_a = this._activeStep.activeSubStep) === null || _a === void 0 ? void 0 : _a.label;
3042
+ },
3043
+ enumerable: false,
3044
+ configurable: true
3045
+ });
2711
3046
  FlowbarComponent.prototype.ngOnInit = function () {
2712
3047
  // If no active step is set as input or the active step is not enabled, select the first enabled step
2713
3048
  if (!this._activeStep || !this._activeStep.enabled) {
2714
- this._activeStep = this._steps.find(function (step) {
2715
- return step.enabled;
2716
- });
3049
+ this._activeStep = this._steps.find(function (step) { return step.enabled; });
2717
3050
  if (this._activeStep) {
2718
3051
  // If sub steps exist then set the first non disabled sub step per default
2719
3052
  if (this.activeTabHasSubSteps()) {
2720
- this._activeStep.activeSubStep = this._activeStep.subSteps.find(function (step) {
2721
- return step.enabled;
2722
- });
3053
+ this._activeStep.activeSubStep = this._activeStep.subSteps.find(function (step) { return step.enabled; });
2723
3054
  }
2724
3055
  this._activeStepChange.emit(this._activeStep);
2725
3056
  }
@@ -2818,15 +3149,11 @@
2818
3149
  };
2819
3150
  FlowbarComponent.prototype.getCurrentIndex = function () {
2820
3151
  var _this = this;
2821
- return this._steps.findIndex(function (value) {
2822
- return value === _this._activeStep;
2823
- });
3152
+ return this._steps.findIndex(function (value) { return value === _this._activeStep; });
2824
3153
  };
2825
3154
  FlowbarComponent.prototype.getCurrentSubStepIndex = function () {
2826
3155
  var _this = this;
2827
- return this._activeStep.subSteps.findIndex(function (value) {
2828
- return value === _this._activeStep.activeSubStep;
2829
- });
3156
+ return this._activeStep.subSteps.findIndex(function (value) { return value === _this._activeStep.activeSubStep; });
2830
3157
  };
2831
3158
  FlowbarComponent.prototype.triggerClick = function () {
2832
3159
  var selectedStep = this._steps[this.stepper.selectedIndex];
@@ -2836,21 +3163,6 @@
2836
3163
  event.stopPropagation(); //stop processing current header click event
2837
3164
  this._headerClick.emit(step);
2838
3165
  };
2839
- Object.defineProperty(FlowbarComponent.prototype, "currentStepLabel", {
2840
- get: function () {
2841
- return this._activeStep.label;
2842
- },
2843
- enumerable: false,
2844
- configurable: true
2845
- });
2846
- Object.defineProperty(FlowbarComponent.prototype, "currentSubStepLabel", {
2847
- get: function () {
2848
- var _a;
2849
- return (_a = this._activeStep.activeSubStep) === null || _a === void 0 ? void 0 : _a.label;
2850
- },
2851
- enumerable: false,
2852
- configurable: true
2853
- });
2854
3166
  FlowbarComponent.prototype.activeTabHasSubSteps = function () {
2855
3167
  return this._activeStep.subSteps && this._activeStep.subSteps.length > 0;
2856
3168
  };
@@ -2889,11 +3201,11 @@
2889
3201
  },] }
2890
3202
  ];
2891
3203
  FlowbarComponent.propDecorators = {
2892
- stepper: [{ type: i0.ViewChild, args: ['stepper',] }],
2893
3204
  _steps: [{ type: i0.Input, args: ['steps',] }],
2894
3205
  _activeStep: [{ type: i0.Input, args: ['activeStep',] }],
2895
3206
  _activeStepChange: [{ type: i0.Output, args: ['activeStepChange',] }],
2896
- _headerClick: [{ type: i0.Output, args: ['headerClick',] }]
3207
+ _headerClick: [{ type: i0.Output, args: ['headerClick',] }],
3208
+ stepper: [{ type: i0.ViewChild, args: ['stepper',] }]
2897
3209
  };
2898
3210
 
2899
3211
  var FlowbarModule = /** @class */ (function () {
@@ -2968,19 +3280,20 @@
2968
3280
  exports.ToolbarModule = ToolbarModule;
2969
3281
  exports.ToolbarService = ToolbarService;
2970
3282
  exports.madStepperAnimations = madStepperAnimations;
2971
- exports.ɵa = PrimaryButtonComponent;
2972
- exports.ɵb = MadBasicButton;
2973
- exports.ɵc = OutlineButtonComponent;
2974
- exports.ɵd = LinkButtonComponent;
2975
- exports.ɵe = DangerButtonComponent;
2976
- exports.ɵf = IconButtonComponent;
2977
- exports.ɵg = NumericFieldDirective;
2978
- exports.ɵh = CardComponent;
2979
- exports.ɵi = QuickListComponent;
2980
- exports.ɵj = BaseQuickListComponent;
2981
- exports.ɵk = QuickListCompactComponent;
2982
- exports.ɵl = TableComponent;
2983
- exports.ɵm = DataTableComponent;
3283
+ exports.ɵb = PrimaryButtonComponent;
3284
+ exports.ɵc = MadBasicButton;
3285
+ exports.ɵd = OutlineButtonComponent;
3286
+ exports.ɵe = LinkButtonComponent;
3287
+ exports.ɵf = DangerButtonComponent;
3288
+ exports.ɵg = IconButtonComponent;
3289
+ exports.ɵh = NumericFieldDirective;
3290
+ exports.ɵi = CardComponent;
3291
+ exports.ɵj = QuickListComponent;
3292
+ exports.ɵk = BaseQuickListComponent;
3293
+ exports.ɵl = QuickListCompactComponent;
3294
+ exports.ɵm = TableComponent;
3295
+ exports.ɵn = DataTableComponent;
3296
+ exports.ɵo = DataTableColumnsModalComponent;
2984
3297
 
2985
3298
  Object.defineProperty(exports, '__esModule', { value: true });
2986
3299