@smartbit4all/ng-client 4.2.38 → 4.2.40

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 (88) hide show
  1. package/esm2022/lib/smart-client/smart-component-api-client.mjs +6 -1
  2. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +5 -1
  3. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  4. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +13 -0
  5. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  6. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  7. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +2 -1
  8. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +5 -5
  9. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +62 -0
  10. package/esm2022/lib/smart-grid/smart-grid.component.mjs +28 -5
  11. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +80 -9
  12. package/esm2022/lib/smart-table/smarttable.model.mjs +3 -1
  13. package/esm2022/lib/smart-table/smarttable.module.mjs +7 -3
  14. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +6 -5
  15. package/esm2022/lib/smart-table/tables/table.mjs +44 -1
  16. package/esm2022/lib/view-context/api/api/api.mjs +1 -1
  17. package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
  18. package/esm2022/lib/view-context/api/api.module.mjs +1 -1
  19. package/esm2022/lib/view-context/api/configuration.mjs +1 -1
  20. package/esm2022/lib/view-context/api/encoder.mjs +1 -1
  21. package/esm2022/lib/view-context/api/index.mjs +1 -1
  22. package/esm2022/lib/view-context/api/model/clipboardData.mjs +1 -1
  23. package/esm2022/lib/view-context/api/model/closeResult.mjs +1 -1
  24. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +1 -1
  25. package/esm2022/lib/view-context/api/model/componentModel.mjs +1 -1
  26. package/esm2022/lib/view-context/api/model/componentModelChange.mjs +1 -1
  27. package/esm2022/lib/view-context/api/model/dataChange.mjs +1 -1
  28. package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
  29. package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +1 -1
  30. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +1 -1
  31. package/esm2022/lib/view-context/api/model/downloadedFile.mjs +1 -1
  32. package/esm2022/lib/view-context/api/model/iconPosition.mjs +1 -1
  33. package/esm2022/lib/view-context/api/model/imageResource.mjs +1 -1
  34. package/esm2022/lib/view-context/api/model/link.mjs +1 -1
  35. package/esm2022/lib/view-context/api/model/messageData.mjs +1 -1
  36. package/esm2022/lib/view-context/api/model/messageOption.mjs +1 -1
  37. package/esm2022/lib/view-context/api/model/messageOptionType.mjs +1 -1
  38. package/esm2022/lib/view-context/api/model/messageResult.mjs +1 -1
  39. package/esm2022/lib/view-context/api/model/messageTextType.mjs +1 -1
  40. package/esm2022/lib/view-context/api/model/messageType.mjs +1 -1
  41. package/esm2022/lib/view-context/api/model/namedValidator.mjs +1 -1
  42. package/esm2022/lib/view-context/api/model/openPendingData.mjs +1 -1
  43. package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +1 -1
  44. package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +1 -1
  45. package/esm2022/lib/view-context/api/model/serverRequestType.mjs +1 -1
  46. package/esm2022/lib/view-context/api/model/statisticRecord.mjs +1 -1
  47. package/esm2022/lib/view-context/api/model/style.mjs +1 -1
  48. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  49. package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
  50. package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
  51. package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
  52. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  53. package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
  54. package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
  55. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  56. package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  57. package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +1 -1
  58. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  59. package/esm2022/lib/view-context/api/model/valueSet.mjs +1 -1
  60. package/esm2022/lib/view-context/api/model/viewApiError.mjs +1 -1
  61. package/esm2022/lib/view-context/api/model/viewConstraint.mjs +1 -1
  62. package/esm2022/lib/view-context/api/model/viewContext.mjs +1 -1
  63. package/esm2022/lib/view-context/api/model/viewContextChange.mjs +1 -1
  64. package/esm2022/lib/view-context/api/model/viewContextData.mjs +1 -1
  65. package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
  66. package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +1 -1
  67. package/esm2022/lib/view-context/api/model/viewState.mjs +1 -1
  68. package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
  69. package/esm2022/lib/view-context/api/model/viewType.mjs +1 -1
  70. package/esm2022/lib/view-context/api/param.mjs +1 -1
  71. package/esm2022/lib/view-context/api/variables.mjs +1 -1
  72. package/fesm2022/smartbit4all-ng-client.mjs +326 -103
  73. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  74. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +1 -0
  75. package/lib/smart-grid/api/grid-api/model/gridColumnMeta.d.ts +1 -0
  76. package/lib/smart-grid/api/grid-api/model/gridExportDescriptor.d.ts +19 -0
  77. package/lib/smart-grid/api/grid-api/model/gridRow.d.ts +6 -4
  78. package/lib/smart-grid/api/grid-api/model/gridViewDescriptor.d.ts +2 -3
  79. package/lib/smart-grid/api/grid-api/model/models.d.ts +1 -0
  80. package/lib/smart-grid/smart-grid-toolbar-util.d.ts +9 -0
  81. package/lib/smart-grid/smart-grid.component.d.ts +8 -2
  82. package/lib/smart-map/impl/leaflet-map.d.ts +2 -0
  83. package/lib/smart-table/smarttable.model.d.ts +6 -0
  84. package/lib/smart-table/smarttable.module.d.ts +2 -1
  85. package/lib/smart-table/tables/table.d.ts +6 -1
  86. package/package.json +1 -1
  87. package/smartbit4all-ng-client-4.2.40.tgz +0 -0
  88. package/smartbit4all-ng-client-4.2.38.tgz +0 -0
@@ -7194,6 +7194,8 @@ class SmartTable {
7194
7194
  this.onSelection = config.onSelection;
7195
7195
  this.onAllSelection = config.onAllSelection;
7196
7196
  this.rowExpander = config.rowExpander;
7197
+ this.gridId = config.gridId;
7198
+ this.serviceToUse = config.serviceToUse;
7197
7199
  this.pushOptions();
7198
7200
  }
7199
7201
  getPropertyNamesDeeply(element) {
@@ -7408,6 +7410,68 @@ class SmartObjectUtility {
7408
7410
  }
7409
7411
  }
7410
7412
 
7413
+ class SmartGridToolbarActionsUtil {
7414
+ static showMenu(row, orderedColumns) {
7415
+ if (!row.columnActions) {
7416
+ return true;
7417
+ }
7418
+ let filteredActionColumns = Object.keys(row.columnActions || {})
7419
+ .filter((key) => orderedColumns.includes(key))
7420
+ .reduce((acc, key) => {
7421
+ acc[key] = row.columnActions[key];
7422
+ return acc;
7423
+ }, {});
7424
+ return (row.actions &&
7425
+ row.actions.length > 0 &&
7426
+ Object.values(filteredActionColumns).flat().length != row.actions.length);
7427
+ }
7428
+ static showToolbar(row, columnName) {
7429
+ return !!row.actions && row.actions.length > 0 && !!row.columnActions?.[columnName];
7430
+ }
7431
+ static calculateCellToActionMap(rows, serviceToUse, gridId) {
7432
+ let cellToActionMap = {};
7433
+ rows.forEach((row) => {
7434
+ if (row?.columnActions && row?.actions) {
7435
+ Object.keys(row.columnActions).forEach((columnName) => {
7436
+ let key = row.id + columnName;
7437
+ const actionCodes = row.columnActions[columnName];
7438
+ const actions = row.actions.filter((action) => action.code && actionCodes.includes(action.code));
7439
+ const actionModels = actions.map((uiAction) => {
7440
+ //Add row to uiAction
7441
+ let _uiAction = { ...uiAction };
7442
+ _uiAction.params = {
7443
+ ...uiAction.params,
7444
+ model: row,
7445
+ };
7446
+ // Add gridId and widgetId to uiActionMod
7447
+ return {
7448
+ serviceToUse: serviceToUse,
7449
+ uiAction: _uiAction,
7450
+ nodeId: row.id,
7451
+ widgetId: gridId,
7452
+ };
7453
+ });
7454
+ cellToActionMap[key] = actionModels;
7455
+ });
7456
+ }
7457
+ });
7458
+ return cellToActionMap;
7459
+ }
7460
+ static calculateMenuActions(row, orderedColumns) {
7461
+ let columnCodes = Object.keys(row.columnActions || {})
7462
+ .filter((key) => orderedColumns.includes(key))
7463
+ .map((key) => row.columnActions[key])
7464
+ .flat();
7465
+ return row.actions?.filter((action) => {
7466
+ return !columnCodes.includes(action.code);
7467
+ });
7468
+ }
7469
+ static getActionModelsFromMap(cellToActionMap, row, header) {
7470
+ let key = row.id + header;
7471
+ return cellToActionMap[key];
7472
+ }
7473
+ }
7474
+
7411
7475
  class Table {
7412
7476
  constructor(cfService) {
7413
7477
  this.cfService = cfService;
@@ -7416,6 +7480,8 @@ class Table {
7416
7480
  this.smartTableButtonType = SmartTableButtonType;
7417
7481
  this.highlightedRows = [];
7418
7482
  this.sortEvent = new Subject();
7483
+ // Cells to UiAction models, used for toolbars in cells
7484
+ this.cellToActionMap = {};
7419
7485
  this.onSelectionChanged = new Subject();
7420
7486
  this.asyncTranslationResult = (translator, param) => translator(param);
7421
7487
  this.ACTION_SEPERATOR = '_actionSeparator_';
@@ -7423,6 +7489,8 @@ class Table {
7423
7489
  ngOnInit() {
7424
7490
  if (this.smartTable.sortable)
7425
7491
  this.sortEvent = new Subject();
7492
+ //Create columns to actions map
7493
+ this.cellToActionMap = SmartGridToolbarActionsUtil.calculateCellToActionMap(this.smartTable.tableRows, this.smartTable.serviceToUse, this.smartTable.gridId);
7426
7494
  }
7427
7495
  ngOnDestroy() {
7428
7496
  this._destroy$.next();
@@ -7799,6 +7867,11 @@ class Table {
7799
7867
  }
7800
7868
  }
7801
7869
  showMenuButton(element, button) {
7870
+ let headers = this.smartTable.tableHeaders.map((header) => this.originalProperty(header));
7871
+ let showMenu = SmartGridToolbarActionsUtil.showMenu(element, headers);
7872
+ if (!showMenu) {
7873
+ return false;
7874
+ }
7802
7875
  if (button.menuItemButtons) {
7803
7876
  return true;
7804
7877
  }
@@ -7894,6 +7967,39 @@ class Table {
7894
7967
  }
7895
7968
  return undefined;
7896
7969
  }
7970
+ // ---- Toolbar ----
7971
+ getRowColumnAction(row, header) {
7972
+ return SmartGridToolbarActionsUtil.getActionModelsFromMap(this.cellToActionMap, row, this.originalProperty(header));
7973
+ }
7974
+ showCellToolbar(row, columnName) {
7975
+ return SmartGridToolbarActionsUtil.showToolbar(row, this.originalProperty(columnName));
7976
+ }
7977
+ getMenuButtons(row, button) {
7978
+ let columnActions = row.columnActions ?? {};
7979
+ // Filter for columnActions that are in a columnAction, but the column is not in the headers
7980
+ let filteredActionColumns = Object.keys(columnActions)
7981
+ .filter((key) => this.smartTable.tableHeaders.includes('data.' + key))
7982
+ .reduce((acc, key) => {
7983
+ acc[key] = columnActions[key];
7984
+ return acc;
7985
+ }, {});
7986
+ let columnCodes = Object.values(filteredActionColumns).flat();
7987
+ return (button.menuItemButtons || []).filter((btn) => !columnCodes.includes(btn.code));
7988
+ }
7989
+ getMenuItemButtonsPropertyName(element, button) {
7990
+ let buttons = this.getValue(element, button.menuItemButtonsPropertyName);
7991
+ let gridRow = element;
7992
+ let columnActions = gridRow.columnActions ?? {};
7993
+ // Filter for columnActions that are in a columnAction, but the column is not in the headers
7994
+ let filteredActionColumns = Object.keys(columnActions)
7995
+ .filter((key) => this.smartTable.tableHeaders.includes('data.' + key))
7996
+ .reduce((acc, key) => {
7997
+ acc[key] = columnActions[key];
7998
+ return acc;
7999
+ }, {});
8000
+ let columnCodes = Object.values(filteredActionColumns || {}).flat();
8001
+ return buttons?.filter((button) => !columnCodes.includes(button.code));
8002
+ }
7897
8003
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: Table, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
7898
8004
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: Table, selector: "ng-component", inputs: { smartTable: "smartTable" }, viewQueries: [{ propertyName: "myTableChild", first: true, predicate: ["myTable"], descendants: true }, { propertyName: "triggers", predicate: MatMenuTrigger, descendants: true }, { propertyName: "vcRef", predicate: ["expandedArea"], descendants: true, read: ViewContainerRef }, { propertyName: "defaultActionMenuComponents", predicate: DefaultActionsPopupComponent, descendants: true }], ngImport: i0, template: '', isInline: true }); }
7899
8005
  }
@@ -7963,7 +8069,7 @@ class MaterialTableComponent extends Table {
7963
8069
  super(cfService);
7964
8070
  }
7965
8071
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: MaterialTableComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component }); }
7966
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MaterialTableComponent, selector: "lib-material-table", usesInheritance: true, ngImport: i0, template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(element, i)\"\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\r\n <div [smartTooltip]=\"ir.tooltip!\" [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"btn?.translator(btn)?.icon\"\r\n [icon]=\"btn!.translator!(btn)!.icon!\"\r\n ></smart-icon>\r\n {{ btn?.translator(btn)?.title }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getValue(element, button.menuItemButtonsPropertyName)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n [disabled]=\"btn.disabled\"\r\n [smartTooltip]=\"\r\n btn?.descriptor?.tooltip\r\n ? btn?.descriptor?.tooltip\r\n : button.translator!(btn).tooltip\r\n \"\r\n >\r\n <div\r\n class=\"smart-table-icon-container\"\r\n [ngClass]=\"\r\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\r\n \"\r\n ><smart-icon\r\n *ngIf=\"button.translator!(btn).icon\"\r\n [icon]=\"button.translator!(btn).icon!\"\r\n ></smart-icon>\r\n {{ button.translator!(btn).title }}</div\r\n >\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\r\n <tr\r\n mat-row\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"getRowClasses(element)\"\r\n [ngStyle]=\"getRowStyles(element)\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\r\n ></tr>\r\n <lib-default-actions-popup\r\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { kind: "component", type: i5$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row", "colIdx"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartTimePipe, name: "smartTime" }], animations: [
8072
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: MaterialTableComponent, selector: "lib-material-table", usesInheritance: true, ngImport: i0, template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(element, i)\"\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\r\n <div [smartTooltip]=\"ir.tooltip!\" [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of getMenuButtons(element, button)\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"btn?.translator(btn)?.icon\"\r\n [icon]=\"btn!.translator!(btn)!.icon!\"\r\n ></smart-icon>\r\n {{ btn?.translator(btn)?.title }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getMenuItemButtonsPropertyName(element, button)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n [disabled]=\"btn.disabled\"\r\n [smartTooltip]=\"\r\n btn?.descriptor?.tooltip\r\n ? btn?.descriptor?.tooltip\r\n : button.translator!(btn).tooltip\r\n \"\r\n >\r\n <div\r\n class=\"smart-table-icon-container\"\r\n [ngClass]=\"\r\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\r\n \"\r\n ><smart-icon\r\n *ngIf=\"button.translator!(btn).icon\"\r\n [icon]=\"button.translator!(btn).icon!\"\r\n ></smart-icon>\r\n {{ button.translator!(btn).title }}</div\r\n >\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <!------ TOOLBAR ------>\r\n <ng-container *ngIf=\"showCellToolbar(element, header)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, header)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n <!------ TOOLBAR ------>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\r\n <tr\r\n mat-row\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"getRowClasses(element)\"\r\n [ngStyle]=\"getRowStyles(element)\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\r\n ></tr>\r\n <lib-default-actions-popup\r\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"], dependencies: [{ kind: "directive", type: SmartTooltipDirective, selector: "[smartTooltip]", inputs: ["smartTooltip"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i4$2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i2$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6$1.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6$1.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6$1.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6$1.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6$1.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6$1.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6$1.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6$1.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i6$1.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6$1.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i5$1.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i5$1.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i5$1.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { kind: "component", type: i5$2.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id"] }, { kind: "component", type: DefaultActionsPopupComponent, selector: "lib-default-actions-popup", inputs: ["buttons", "row", "colIdx"] }, { kind: "pipe", type: SmartDateTimePipe, name: "smartDateTime" }, { kind: "pipe", type: SmartDatePipe, name: "smartDate" }, { kind: "pipe", type: SmartTimePipe, name: "smartTime" }], animations: [
7967
8073
  trigger('detailExpand', [
7968
8074
  state('collapsed', style({ height: '0px', minHeight: '0' })),
7969
8075
  state('expanded', style({ height: '*' })),
@@ -7979,7 +8085,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
7979
8085
  state('expanded', style({ height: '*' })),
7980
8086
  transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
7981
8087
  ]),
7982
- ], template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(element, i)\"\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\r\n <div [smartTooltip]=\"ir.tooltip!\" [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"btn?.translator(btn)?.icon\"\r\n [icon]=\"btn!.translator!(btn)!.icon!\"\r\n ></smart-icon>\r\n {{ btn?.translator(btn)?.title }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getValue(element, button.menuItemButtonsPropertyName)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n [disabled]=\"btn.disabled\"\r\n [smartTooltip]=\"\r\n btn?.descriptor?.tooltip\r\n ? btn?.descriptor?.tooltip\r\n : button.translator!(btn).tooltip\r\n \"\r\n >\r\n <div\r\n class=\"smart-table-icon-container\"\r\n [ngClass]=\"\r\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\r\n \"\r\n ><smart-icon\r\n *ngIf=\"button.translator!(btn).icon\"\r\n [icon]=\"button.translator!(btn).icon!\"\r\n ></smart-icon>\r\n {{ button.translator!(btn).title }}</div\r\n >\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\r\n <tr\r\n mat-row\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"getRowClasses(element)\"\r\n [ngStyle]=\"getRowStyles(element)\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\r\n ></tr>\r\n <lib-default-actions-popup\r\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"] }]
8088
+ ], template: "<table\r\n #myTable\r\n mat-table\r\n [dataSource]=\"smartTable.tableRows\"\r\n class=\"full-width\"\r\n multiTemplateDataRows\r\n>\r\n <!-- Column Descriptor -->\r\n <ng-container\r\n *ngFor=\"let header of smartTable.tableHeaders; let i = index\"\r\n matColumnDef=\"{{ header }}\"\r\n >\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n [ngClass]=\"getColumnClasses(smartTable.customSmartTableHeaders![i])\"\r\n [ngStyle]=\"getColumnStyles(smartTable.customSmartTableHeaders![i])\"\r\n >\r\n <div\r\n *ngIf=\"header === 'icon' || header === 'img' || header === 'options' || header === 'button'\"\r\n ></div>\r\n <div *ngIf=\"header === 'select'\">\r\n <mat-checkbox\r\n *ngIf=\"smartTable.customSmartTableHeaders![i].showCheckboxInHeader\"\r\n (change)=\"$event ? toggleAllRows() : null\"\r\n [checked]=\"smartTable.selection!.hasValue() && isAllSelected()\"\r\n [indeterminate]=\"smartTable.selection!.hasValue() && !isAllSelected()\"\r\n [aria-label]=\"checkboxLabel()\"\r\n >\r\n </mat-checkbox>\r\n <div *ngIf=\"!smartTable.customSmartTableHeaders![i].showCheckboxInHeader\">\r\n {{ smartTable.customTableHeaders[i] }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'options' &&\r\n header !== 'button' &&\r\n header !== 'select' &&\r\n header !== 'expand' &&\r\n header !== 'actions'\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.sortable; then sortable; else notSortable\"></div>\r\n <ng-template #sortable>\r\n <button\r\n (click)=\"sortButtonClicked($event, smartTable.customSmartTableHeaders![i])\"\r\n *ngIf=\"smartTable.sortable && isSortable(smartTable.customSmartTableHeaders![i])\"\r\n mat-button\r\n class=\"sortableHeaderButton\"\r\n >\r\n {{ smartTable.customTableHeaders[i] }}\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"getSortIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortIcon(header)!\"\r\n ></smart-icon>\r\n <smart-icon\r\n class=\"sortableHeaderButtonIcon\"\r\n *ngIf=\"hasSortNumIcon(header)\"\r\n title=\"sort\"\r\n [icon]=\"getSortNumIcon(header)\"\r\n ></smart-icon>\r\n </button>\r\n </ng-template>\r\n <ng-template #notSortable>\r\n {{ smartTable.customTableHeaders[i] }}\r\n </ng-template>\r\n </div>\r\n </th>\r\n <td mat-cell *matCellDef=\"let element\" [ngClass]=\"isDisabled(element) ? 'disabledRow' : ''\">\r\n <mat-checkbox\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'select' &&\r\n !isDisabled(element)\r\n \"\r\n (click)=\"$event.stopPropagation()\"\r\n (change)=\"\r\n $event\r\n ? setSelection(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n : null\r\n \"\r\n [disabled]=\"isDisabled(element)\"\r\n [checked]=\"\r\n smartTable.selection!.isSelected(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n [aria-label]=\"\r\n checkboxLabel(\r\n smartTable.selectionProperty\r\n ? smartTable.getValueDeeply(element, smartTable.selectionProperty)\r\n : element\r\n )\r\n \"\r\n >\r\n </mat-checkbox>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].properties\r\n \"\r\n >\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATETIME\">\r\n {{\r\n getValue(element, header)\r\n | smartDateTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().DATE\">\r\n {{\r\n getValue(element, header)\r\n | smartDate : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().TIME\">\r\n {{\r\n getValue(element, header)\r\n | smartTime : smartTable.customSmartTableHeaders[i].properties?.dateFormat\r\n }}\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders[i].properties?.type === type().CHECKBOX\">\r\n <mat-checkbox [disabled]=\"true\" [checked]=\"getValue(element, header)\"></mat-checkbox>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders[i].properties?.type === type().ICON &&\r\n smartTable.customSmartTableHeaders[i].properties?.icons?.length\r\n \"\r\n >\r\n <smart-icon\r\n [smartTooltip]=\"getToolTip(element, i)\"\r\n [icon]=\"getIcon(getValue(element, header), i)!\"\r\n [color]=\"getColor(getValue(element, header), i)\"\r\n >\r\n </smart-icon>\r\n </div>\r\n </div>\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(element, header)\">\r\n <div [smartTooltip]=\"ir.tooltip!\" [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].buttons\"\r\n class=\"smart-table-buttons-col\"\r\n >\r\n <div *ngFor=\"let button of smartTable.customSmartTableHeaders[i].buttons\">\r\n <div *ngIf=\"showButton(button, element)\" [ngSwitch]=\"button.type\">\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.ICON\"\r\n mat-icon-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon title=\"{{ button.label }}\" [icon]=\"button.icon!\"></smart-icon>\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.NORMAL\"\r\n mat-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <button\r\n (click)=\"customButtonClicked($event, button, element)\"\r\n *ngSwitchCase=\"smartTableButtonType.RAISED\"\r\n mat-raised-button\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n {{ button.label ?? (button.translator ? button.translator(element).title : '') }}\r\n </button>\r\n <div *ngSwitchCase=\"smartTableButtonType.MENU\">\r\n <button\r\n *ngIf=\"showMenuButton(element, button)\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"customButtonClicked($event, button, element, undefined, true)\"\r\n color=\"{{ button.color }}\"\r\n >\r\n <smart-icon *ngIf=\"button.icon\" [icon]=\"button.icon\"></smart-icon>\r\n <!-- {{ button.label ?? (button.translator ? button.translator(element).title : '') }} -->\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <div *ngIf=\"button.menuItemButtons\">\r\n <button\r\n *ngFor=\"let btn of getMenuButtons(element, button)\"\r\n (click)=\"customButtonClicked($event, btn, element, undefined, true)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"btn?.translator(btn)?.icon\"\r\n [icon]=\"btn!.translator!(btn)!.icon!\"\r\n ></smart-icon>\r\n {{ btn?.translator(btn)?.title }}\r\n </button>\r\n </div>\r\n <div *ngIf=\"button.menuItemButtonsPropertyName\">\r\n <div *ngFor=\"let btn of getMenuItemButtonsPropertyName(element, button)\">\r\n <button\r\n *ngIf=\"btn.code !== ACTION_SEPERATOR\"\r\n (click)=\"customButtonClicked($event, button, element, btn, true)\"\r\n mat-menu-item\r\n [disabled]=\"btn.disabled\"\r\n [smartTooltip]=\"\r\n btn?.descriptor?.tooltip\r\n ? btn?.descriptor?.tooltip\r\n : button.translator!(btn).tooltip\r\n \"\r\n >\r\n <div\r\n class=\"smart-table-icon-container\"\r\n [ngClass]=\"\r\n button.translator!(btn).iconPosition === 'POST' ? 'reversed' : ''\r\n \"\r\n ><smart-icon\r\n *ngIf=\"button.translator!(btn).icon\"\r\n [icon]=\"button.translator!(btn).icon!\"\r\n ></smart-icon>\r\n {{ button.translator!(btn).title }}</div\r\n >\r\n </button>\r\n <mat-divider *ngIf=\"btn.code === ACTION_SEPERATOR\"></mat-divider>\r\n </div>\r\n </div>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"smartTable.customSmartTableHeaders && smartTable.customSmartTableHeaders[i].icon\">\r\n <smart-icon\r\n *ngIf=\"smartTable.customSmartTableHeaders[i].icon?.icon\"\r\n [ngClass]=\"smartTable.customSmartTableHeaders[i].icon?.cssClass ?? ''\"\r\n [color]=\"smartTable.customSmartTableHeaders[i].icon?.color\"\r\n [icon]=\"smartTable.customSmartTableHeaders[i].icon!.icon\"\r\n >\r\n </smart-icon>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].translator !== undefined\r\n \"\r\n >\r\n {{ smartTable.customSmartTableHeaders[i].translator!(getValue(element, header)) }}\r\n </div>\r\n <button\r\n *ngIf=\"\r\n smartTable.customSmartTableHeaders &&\r\n smartTable.customSmartTableHeaders[i].propertyName === 'expand'\r\n \"\r\n mat-icon-button\r\n aria-label=\"expand row\"\r\n (click)=\"onToggle(element, $event)\"\r\n >\r\n <smart-icon *ngIf=\"expandedElement !== element\" [icon]=\"'keyboard_arrow_down'\"></smart-icon>\r\n <smart-icon *ngIf=\"expandedElement === element\" [icon]=\"'keyboard_arrow_up'\"></smart-icon>\r\n </button>\r\n <div\r\n *ngIf=\"\r\n !smartTable.customSmartTableHeaders ||\r\n (smartTable.customSmartTableHeaders &&\r\n !smartTable.customSmartTableHeaders[i].properties &&\r\n !smartTable.customSmartTableHeaders[i].icon &&\r\n !smartTable.customSmartTableHeaders[i].buttons &&\r\n !smartTable.customSmartTableHeaders[i].translator &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'select') &&\r\n !(smartTable.customSmartTableHeaders[i].propertyName === 'expand'))\r\n \"\r\n >\r\n <smart-icon *ngIf=\"header === 'icon'\" [icon]=\"getValue(element, header)!\"> </smart-icon>\r\n <img\r\n *ngIf=\"header === 'img'\"\r\n [src]=\"getValue(element, header)\"\r\n alt=\"\"\r\n class=\"smarttableImg\"\r\n />\r\n <!------ TOOLBAR ------>\r\n <ng-container *ngIf=\"showCellToolbar(element, header)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(element, header)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n <!------ TOOLBAR ------>\r\n <div\r\n *ngIf=\"\r\n header !== 'icon' &&\r\n header !== 'img' &&\r\n header !== 'option' &&\r\n header !== 'button' &&\r\n !isImageResource(element, header)\r\n \"\r\n [innerHtml]=\"getValue(element, header)\"\r\n ></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->\r\n <ng-container matColumnDef=\"expandedDetail\">\r\n <td mat-cell *matCellDef=\"let element\" [attr.colspan]=\"smartTable.tableHeaders.length\">\r\n <div\r\n class=\"example-element-detail\"\r\n [@detailExpand]=\"element == expandedElement ? 'expanded' : 'collapsed'\"\r\n >\r\n <ng-template #expandedArea></ng-template>\r\n </div>\r\n </td>\r\n </ng-container>\r\n\r\n <tr mat-header-row *matHeaderRowDef=\"smartTable.tableHeaders; sticky: true\"></tr>\r\n <ng-container *matRowDef=\"let element; columns: smartTable.tableHeaders\">\r\n <tr\r\n mat-row\r\n class=\"example-element-row\"\r\n [class.example-expanded-row]=\"expandedElement === element\"\r\n [ngClass]=\"getRowClasses(element)\"\r\n [ngStyle]=\"getRowStyles(element)\"\r\n (click)=\"handleOnRowClick(element)\"\r\n (dblclick)=\"handleOnRowDoubleClick($event, element)\"\r\n ></tr>\r\n <lib-default-actions-popup\r\n *ngIf=\"smartTable.defaultActionCodes && smartTable.defaultActionCodes.length > 0\"\r\n #defaultActionMenu\r\n [buttons]=\"getDefaultActionsForRow(element)!\"\r\n [row]=\"element\"\r\n ></lib-default-actions-popup>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: ['expandedDetail']\" class=\"example-detail-row\"></tr>\r\n</table>\r\n", styles: [".full-width{width:100%}.smarttableImg{width:25px}.smartTableRowHover:hover{cursor:pointer}tr.example-detail-row{height:0}tr.example-element-row:not(.example-expanded-row):hover{background:#f5f5f5}tr.example-element-row:not(.example-expanded-row):active{background:#efefef}.example-element-row td{border-bottom-width:0}.example-element-detail{overflow:hidden;display:flex;flex-direction:column}.example-element-diagram{min-width:80px;border:2px solid black;padding:8px;font-weight:lighter;margin:8px 0;height:104px}.example-element-symbol{font-weight:700;font-size:40px;line-height:normal}.example-element-description{padding:16px}.example-element-description-attribution{opacity:.5}.disabledRow{color:var(--disabled)}.disabledRow:hover{cursor:default}.smart-table-buttons-col{display:flex;flex-direction:row;justify-content:flex-end}.sortableHeaderButton{margin:0!important;padding:0!important;text-align:left!important}.selected{background-color:var(--primary-light-color)}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.reversed{flex-direction:row-reverse;gap:1rem}:host ::ng-deep .mat-mdc-menu-item{line-height:normal!important}.mat-mdc-menu-item[disabled]{cursor:default!important}\n"] }]
7983
8089
  }], ctorParameters: () => [{ type: ComponentFactoryService }] });
7984
8090
 
7985
8091
  class MobileTableComponent extends Table {
@@ -8176,91 +8282,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
8176
8282
  }]
8177
8283
  }] });
8178
8284
 
8179
- class SmarttableModule {
8180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8181
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, declarations: [SmarttableComponent,
8182
- LoadingComponent,
8183
- MaterialTableComponent,
8184
- MobileTableComponent,
8185
- DefaultActionsPopupComponent,
8186
- MatContextMenuTriggerForDirective], imports: [SharedModule,
8187
- BrowserModule,
8188
- MatCommonModule,
8189
- FormsModule,
8190
- ReactiveFormsModule,
8191
- MatFormFieldModule,
8192
- MatCheckboxModule,
8193
- MatButtonModule,
8194
- MatTableModule,
8195
- MatIconModule,
8196
- MatMenuModule,
8197
- MatProgressSpinnerModule,
8198
- ComponentFactoryServiceModule,
8199
- SmartIconModule,
8200
- MatDividerModule,
8201
- MatTooltipModule,
8202
- CommonModule,
8203
- SharedModule], exports: [SmarttableComponent] }); }
8204
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, providers: [ComponentFactoryService], imports: [SharedModule,
8205
- BrowserModule,
8206
- MatCommonModule,
8207
- FormsModule,
8208
- ReactiveFormsModule,
8209
- MatFormFieldModule,
8210
- MatCheckboxModule,
8211
- MatButtonModule,
8212
- MatTableModule,
8213
- MatIconModule,
8214
- MatMenuModule,
8215
- MatProgressSpinnerModule,
8216
- ComponentFactoryServiceModule,
8217
- SmartIconModule,
8218
- MatDividerModule,
8219
- MatTooltipModule,
8220
- CommonModule,
8221
- SharedModule] }); }
8222
- }
8223
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, decorators: [{
8224
- type: NgModule,
8225
- args: [{
8226
- declarations: [
8227
- SmarttableComponent,
8228
- LoadingComponent,
8229
- MaterialTableComponent,
8230
- MobileTableComponent,
8231
- DefaultActionsPopupComponent,
8232
- MatContextMenuTriggerForDirective,
8233
- ],
8234
- imports: [
8235
- SharedModule,
8236
- BrowserModule,
8237
- MatCommonModule,
8238
- FormsModule,
8239
- ReactiveFormsModule,
8240
- MatFormFieldModule,
8241
- MatCheckboxModule,
8242
- MatButtonModule,
8243
- MatTableModule,
8244
- MatIconModule,
8245
- MatMenuModule,
8246
- MatProgressSpinnerModule,
8247
- ComponentFactoryServiceModule,
8248
- SmartIconModule,
8249
- MatDividerModule,
8250
- MatTooltipModule,
8251
- CommonModule,
8252
- SharedModule,
8253
- ],
8254
- exports: [SmarttableComponent],
8255
- providers: [ComponentFactoryService],
8256
- schemas: [CUSTOM_ELEMENTS_SCHEMA],
8257
- }]
8258
- }] });
8259
-
8260
- /*
8261
- * Public API Surface of smarttable
8262
- */
8263
-
8264
8285
  class SmartformLayoutDefinitionService {
8265
8286
  static { this.DEFAULT_QUILL_MODULES = {
8266
8287
  toolbar: {
@@ -9739,6 +9760,94 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
9739
9760
  }]
9740
9761
  }] });
9741
9762
 
9763
+ class SmarttableModule {
9764
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9765
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, declarations: [SmarttableComponent,
9766
+ LoadingComponent,
9767
+ MaterialTableComponent,
9768
+ MobileTableComponent,
9769
+ DefaultActionsPopupComponent,
9770
+ MatContextMenuTriggerForDirective], imports: [SharedModule,
9771
+ BrowserModule,
9772
+ MatCommonModule,
9773
+ FormsModule,
9774
+ ReactiveFormsModule,
9775
+ MatFormFieldModule,
9776
+ MatCheckboxModule,
9777
+ MatButtonModule,
9778
+ MatTableModule,
9779
+ MatIconModule,
9780
+ MatMenuModule,
9781
+ MatProgressSpinnerModule,
9782
+ ComponentFactoryServiceModule,
9783
+ SmartIconModule,
9784
+ MatDividerModule,
9785
+ MatTooltipModule,
9786
+ CommonModule,
9787
+ SharedModule,
9788
+ SmartViewContextModule], exports: [SmarttableComponent] }); }
9789
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, providers: [ComponentFactoryService], imports: [SharedModule,
9790
+ BrowserModule,
9791
+ MatCommonModule,
9792
+ FormsModule,
9793
+ ReactiveFormsModule,
9794
+ MatFormFieldModule,
9795
+ MatCheckboxModule,
9796
+ MatButtonModule,
9797
+ MatTableModule,
9798
+ MatIconModule,
9799
+ MatMenuModule,
9800
+ MatProgressSpinnerModule,
9801
+ ComponentFactoryServiceModule,
9802
+ SmartIconModule,
9803
+ MatDividerModule,
9804
+ MatTooltipModule,
9805
+ CommonModule,
9806
+ SharedModule,
9807
+ SmartViewContextModule] }); }
9808
+ }
9809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmarttableModule, decorators: [{
9810
+ type: NgModule,
9811
+ args: [{
9812
+ declarations: [
9813
+ SmarttableComponent,
9814
+ LoadingComponent,
9815
+ MaterialTableComponent,
9816
+ MobileTableComponent,
9817
+ DefaultActionsPopupComponent,
9818
+ MatContextMenuTriggerForDirective,
9819
+ ],
9820
+ imports: [
9821
+ SharedModule,
9822
+ BrowserModule,
9823
+ MatCommonModule,
9824
+ FormsModule,
9825
+ ReactiveFormsModule,
9826
+ MatFormFieldModule,
9827
+ MatCheckboxModule,
9828
+ MatButtonModule,
9829
+ MatTableModule,
9830
+ MatIconModule,
9831
+ MatMenuModule,
9832
+ MatProgressSpinnerModule,
9833
+ ComponentFactoryServiceModule,
9834
+ SmartIconModule,
9835
+ MatDividerModule,
9836
+ MatTooltipModule,
9837
+ CommonModule,
9838
+ SharedModule,
9839
+ SmartViewContextModule,
9840
+ ],
9841
+ exports: [SmarttableComponent],
9842
+ providers: [ComponentFactoryService],
9843
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
9844
+ }]
9845
+ }] });
9846
+
9847
+ /*
9848
+ * Public API Surface of smarttable
9849
+ */
9850
+
9742
9851
  class SmartdialogModule {
9743
9852
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartdialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9744
9853
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmartdialogModule, declarations: [SmartDialog], imports: [BrowserModule,
@@ -10215,10 +10324,10 @@ class SmartGridCardComponent {
10215
10324
  ['uiActionModels', this.uiActionModels],
10216
10325
  ['gridIdentifier', this.smartGrid.gridIdentifier],
10217
10326
  ['serviceToUse', this.smartGrid.serviceToUse],
10218
- [
10219
- 'smartLayoutDefinition',
10220
- this.smartGrid.gridModel.view?.descriptor?.cardComponentLayouts,
10221
- ],
10327
+ // [
10328
+ // 'smartLayoutDefinition',
10329
+ // this.smartGrid.gridModel.view?.descriptor?.cardComponentLayouts,
10330
+ // ],
10222
10331
  ]));
10223
10332
  }
10224
10333
  }
@@ -10872,6 +10981,18 @@ var GridDataAccessConfigKindEnum;
10872
10981
  * Do not edit the class manually.
10873
10982
  */
10874
10983
 
10984
+ /**
10985
+ * Grid api
10986
+ * The grid api is resposible for the grid components that shows a list of item.
10987
+ *
10988
+ * The version of the OpenAPI document: 1.0.0
10989
+ * Contact: info@it4all.hu
10990
+ *
10991
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
10992
+ * https://openapi-generator.tech
10993
+ * Do not edit the class manually.
10994
+ */
10995
+
10875
10996
  /**
10876
10997
  * Grid api
10877
10998
  * The grid api is resposible for the grid components that shows a list of item.
@@ -11746,6 +11867,7 @@ class SmartGridComponent {
11746
11867
  this.pageSizeOptions = this.defaultPageSizeOptions;
11747
11868
  this.selectionChanges = new Subject();
11748
11869
  this.uiActionDescriptors = new Map();
11870
+ this.cellToActionMap = {};
11749
11871
  this.afterViewInitExecuted = false;
11750
11872
  this.isBlocked = true;
11751
11873
  this.getLevel = (node) => node.level ?? 0;
@@ -11906,6 +12028,7 @@ class SmartGridComponent {
11906
12028
  });
11907
12029
  }
11908
12030
  let tableRow = this.smartGrid.gridModel.page.rows.map((item) => {
12031
+ this.createCellToActionMap();
11909
12032
  return item;
11910
12033
  });
11911
12034
  if (!tableRow.length) {
@@ -11930,6 +12053,8 @@ class SmartGridComponent {
11930
12053
  if (this.smartGrid.layoutDef === SmartLayoutDef.TABLE) {
11931
12054
  let tableConfig = {
11932
12055
  ...this.smartGrid.tableConfig,
12056
+ gridId: this.smartGrid?.gridIdentifier,
12057
+ serviceToUse: this.smartGrid?.serviceToUse,
11933
12058
  tableRows: tableRow,
11934
12059
  tableType: this.tableType,
11935
12060
  customSmartTableHeaders: await this.constructHeader(),
@@ -12491,11 +12616,12 @@ class SmartGridComponent {
12491
12616
  }
12492
12617
  onOptionsClick(event, row) {
12493
12618
  this.menuButtons = [];
12494
- row.actions?.map(async (uiAction) => {
12619
+ let menuActions = this.calculateMenuActions(row);
12620
+ menuActions?.map(async (uiAction) => {
12495
12621
  let desc = await this.uiActionDescriptorService.getActionDescriptor(uiAction);
12496
12622
  this.menuButtons.push({
12497
12623
  label: desc?.title ?? uiAction.code,
12498
- icon: '',
12624
+ icon: desc?.icon,
12499
12625
  command: () => {
12500
12626
  this.execute([], row, uiAction);
12501
12627
  },
@@ -12595,12 +12721,29 @@ class SmartGridComponent {
12595
12721
  getImageResourceStyle(resource) {
12596
12722
  return resource.style ? resource.style : {};
12597
12723
  }
12724
+ getRowColumnAction(row, columnName) {
12725
+ return SmartGridToolbarActionsUtil.getActionModelsFromMap(this.cellToActionMap, row, columnName);
12726
+ }
12727
+ showCellToolbar(row, columnName) {
12728
+ return SmartGridToolbarActionsUtil.showToolbar(row, columnName);
12729
+ }
12730
+ shouldShowOptionsButton(row) {
12731
+ return SmartGridToolbarActionsUtil.showMenu(row, this.smartGrid?.gridModel.view?.orderedColumnNames);
12732
+ }
12733
+ calculateMenuActions(row) {
12734
+ return SmartGridToolbarActionsUtil.calculateMenuActions(row, this.smartGrid?.gridModel.view?.orderedColumnNames);
12735
+ }
12736
+ createCellToActionMap() {
12737
+ if (this.compLib === this.componentLibrary.PRIMENG && this.smartGrid?.gridModel.page.rows) {
12738
+ this.cellToActionMap = SmartGridToolbarActionsUtil.calculateCellToActionMap(this.smartGrid?.gridModel.page.rows, this.smartGrid.serviceToUse, this.smartGrid.gridIdentifier);
12739
+ }
12740
+ }
12598
12741
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartGridComponent, deps: [{ token: SmartGridService }, { token: ComponentFactoryService }, { token: i1$1.MatDialog }, { token: i0.Injector }, { token: UiActionDescriptorService }, { token: COMPONENT_LIBRARY }, { token: 'gridMenuIcon' }], target: i0.ɵɵFactoryTarget.Component }); }
12599
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartGridComponent, selector: "smart-grid", inputs: { smartGrid: "smartGrid", uuid: "uuid", dev: "dev" }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n </div>\r\n <p-table\r\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\r\n #pTable\r\n [value]=\"smartGrid.gridModel.page.rows!\"\r\n (onSort)=\"gridSort($event)\"\r\n [customSort]=\"true\"\r\n [sortMode]=\"'multiple'\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\r\n [columns]=\"columns\"\r\n (onColReorder)=\"onColOrder($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\"\r\n (onRowUnselect)=\"onRowUnselect($event)\"\r\n [selection]=\"selectedRows\"\r\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\r\n dataKey=\"id\"\r\n >\r\n <ng-container *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <p-multiSelect\r\n display=\"chip\"\r\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\r\n optionLabel=\"label\"\r\n [(ngModel)]=\"columns\"\r\n selectedItemsLabel=\"{0} columns selected\"\r\n [style]=\"{ 'min-width': '200px' }\"\r\n placeholder=\"Choose Columns\"\r\n (onChange)=\"headerChange($event)\"\r\n />\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template pTemplate=\"header\">\r\n <tr *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <tr *ngIf=\"!smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <!-- <tr>\r\n <th *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <p-columnFilter\r\n type=\"text\"\r\n [field]=\"'data.' + col\"\r\n [placeholder]=\"'Search by ' + col\"\r\n [ariaLabel]=\"'Filter ' + col\"\r\n />\r\n </th>\r\n </tr> -->\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr (dblclick)=\"onDoubleClick(row)\" *ngIf=\"row && row.data\">\r\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\r\n </td>\r\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableRadioButton [value]=\"row\" />\r\n </td>\r\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <div *ngIf=\"row.icons[col]\">\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\r\n <div\r\n pTooltip=\"{{ ir.tooltip?.tooltip }}\"\r\n tooltipPosition=\"right\"\r\n placeholder=\"Right\"\r\n [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\r\n </td>\r\n <td class=\"menu-button\">\r\n <p-button\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n *ngIf=\"row.actions && row.actions.length > 0\"\r\n (onClick)=\"onOptionsClick($event, row)\"\r\n >\r\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\r\n </p-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <p-paginator\r\n *ngIf=\"smartGrid.paginator\"\r\n [first]=\"pageIndex!\"\r\n [totalRecords]=\"length!\"\r\n [rows]=\"pageSize\"\r\n [rowsPerPageOptions]=\"pageSizeOptions\"\r\n (onPageChange)=\"onPrimeChangePage($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n dropdownAppendTo=\"body\"\r\n />\r\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\r\n</div>\r\n}@else {\r\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n}\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{text-align:-webkit-right}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i9$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i10$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i10$1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i10$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i10$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i10$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i4$2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id"] }, { kind: "directive", type: ComparableMultiselectDirective, selector: "p-multiSelect", inputs: ["compareWith"] }, { kind: "component", type: i15.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i15.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i15.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i15.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i15.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i15.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i15.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i18$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i19$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i20$1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "onSelect"] }] }); }
12742
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartGridComponent, selector: "smart-grid", inputs: { smartGrid: "smartGrid", uuid: "uuid", dev: "dev" }, providers: [SmartGridService], viewQueries: [{ propertyName: "vcRefTable", first: true, predicate: ["table"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }, { propertyName: "menu", first: true, predicate: ["menu"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n </div>\r\n <p-table\r\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\r\n #pTable\r\n [value]=\"smartGrid.gridModel.page.rows!\"\r\n (onSort)=\"gridSort($event)\"\r\n [customSort]=\"true\"\r\n [sortMode]=\"'multiple'\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\r\n [columns]=\"columns\"\r\n (onColReorder)=\"onColOrder($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\"\r\n (onRowUnselect)=\"onRowUnselect($event)\"\r\n [selection]=\"selectedRows\"\r\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\r\n dataKey=\"id\"\r\n >\r\n <ng-container *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <p-multiSelect\r\n display=\"chip\"\r\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\r\n optionLabel=\"label\"\r\n [(ngModel)]=\"columns\"\r\n selectedItemsLabel=\"{0} columns selected\"\r\n [style]=\"{ 'min-width': '200px' }\"\r\n placeholder=\"Choose Columns\"\r\n (onChange)=\"headerChange($event)\"\r\n />\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template pTemplate=\"header\">\r\n <tr *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <tr *ngIf=\"!smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <!-- <tr>\r\n <th *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <p-columnFilter\r\n type=\"text\"\r\n [field]=\"'data.' + col\"\r\n [placeholder]=\"'Search by ' + col\"\r\n [ariaLabel]=\"'Filter ' + col\"\r\n />\r\n </th>\r\n </tr> -->\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr (dblclick)=\"onDoubleClick(row)\" *ngIf=\"row && row.data\">\r\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\r\n </td>\r\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableRadioButton [value]=\"row\" />\r\n </td>\r\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <div *ngIf=\"row.icons[col]\">\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\r\n <div\r\n pTooltip=\"{{ ir.tooltip?.tooltip }}\"\r\n tooltipPosition=\"right\"\r\n placeholder=\"Right\"\r\n [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showCellToolbar(row, col)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(row, col)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\r\n </td>\r\n <td class=\"menu-button\">\r\n <p-button\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n *ngIf=\"shouldShowOptionsButton(row)\"\r\n (onClick)=\"onOptionsClick($event, row)\"\r\n >\r\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\r\n </p-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <p-paginator\r\n *ngIf=\"smartGrid.paginator\"\r\n [first]=\"pageIndex!\"\r\n [totalRecords]=\"length!\"\r\n [rows]=\"pageSize\"\r\n [rowsPerPageOptions]=\"pageSizeOptions\"\r\n (onPageChange)=\"onPrimeChangePage($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n dropdownAppendTo=\"body\"\r\n />\r\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\r\n</div>\r\n}@else {\r\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n}\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{text-align:-webkit-right}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i2$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i2$1.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "component", type: i9$1.MatPaginator, selector: "mat-paginator", inputs: ["color", "pageIndex", "length", "pageSize", "pageSizeOptions", "hidePageSize", "showFirstLastButtons", "selectConfig", "disabled"], outputs: ["page"], exportAs: ["matPaginator"] }, { kind: "directive", type: i10$1.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i10$1.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i10$1.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i10$1.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i10$1.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "component", type: i4$2.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: ["data", "index"] }, { kind: "component", type: UiActionToolbarComponent, selector: "smart-ui-action-toolbar", inputs: ["uiActionModels", "uiActionDescriptorService", "id"] }, { kind: "directive", type: ComparableMultiselectDirective, selector: "p-multiSelect", inputs: ["compareWith"] }, { kind: "component", type: i15.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i6.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i15.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "directive", type: i15.ReorderableColumn, selector: "[pReorderableColumn]", inputs: ["pReorderableColumnDisabled"] }, { kind: "component", type: i15.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i15.TableRadioButton, selector: "p-tableRadioButton", inputs: ["disabled", "value", "index", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i15.TableCheckbox, selector: "p-tableCheckbox", inputs: ["disabled", "value", "index", "inputId", "name", "required", "ariaLabel"] }, { kind: "component", type: i15.TableHeaderCheckbox, selector: "p-tableHeaderCheckbox", inputs: ["disabled", "inputId", "name", "ariaLabel"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i18$1.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i19$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i20$1.Paginator, selector: "p-paginator", inputs: ["pageLinkSize", "style", "styleClass", "alwaysShow", "dropdownAppendTo", "templateLeft", "templateRight", "appendTo", "dropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showFirstLastIcon", "totalRecords", "rows", "rowsPerPageOptions", "showJumpToPageDropdown", "showJumpToPageInput", "jumpToPageItemTemplate", "showPageLinks", "locale", "dropdownItemTemplate", "first"], outputs: ["onPageChange"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1$5.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: SmartGridCardComponent, selector: "app-smart-grid-card", inputs: ["item", "smartGrid", "onSelect"] }] }); }
12600
12743
  }
12601
12744
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartGridComponent, decorators: [{
12602
12745
  type: Component,
12603
- args: [{ selector: 'smart-grid', providers: [SmartGridService], template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n </div>\r\n <p-table\r\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\r\n #pTable\r\n [value]=\"smartGrid.gridModel.page.rows!\"\r\n (onSort)=\"gridSort($event)\"\r\n [customSort]=\"true\"\r\n [sortMode]=\"'multiple'\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\r\n [columns]=\"columns\"\r\n (onColReorder)=\"onColOrder($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\"\r\n (onRowUnselect)=\"onRowUnselect($event)\"\r\n [selection]=\"selectedRows\"\r\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\r\n dataKey=\"id\"\r\n >\r\n <ng-container *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <p-multiSelect\r\n display=\"chip\"\r\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\r\n optionLabel=\"label\"\r\n [(ngModel)]=\"columns\"\r\n selectedItemsLabel=\"{0} columns selected\"\r\n [style]=\"{ 'min-width': '200px' }\"\r\n placeholder=\"Choose Columns\"\r\n (onChange)=\"headerChange($event)\"\r\n />\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template pTemplate=\"header\">\r\n <tr *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <tr *ngIf=\"!smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <!-- <tr>\r\n <th *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <p-columnFilter\r\n type=\"text\"\r\n [field]=\"'data.' + col\"\r\n [placeholder]=\"'Search by ' + col\"\r\n [ariaLabel]=\"'Filter ' + col\"\r\n />\r\n </th>\r\n </tr> -->\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr (dblclick)=\"onDoubleClick(row)\" *ngIf=\"row && row.data\">\r\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\r\n </td>\r\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableRadioButton [value]=\"row\" />\r\n </td>\r\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <div *ngIf=\"row.icons[col]\">\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\r\n <div\r\n pTooltip=\"{{ ir.tooltip?.tooltip }}\"\r\n tooltipPosition=\"right\"\r\n placeholder=\"Right\"\r\n [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\r\n </td>\r\n <td class=\"menu-button\">\r\n <p-button\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n *ngIf=\"row.actions && row.actions.length > 0\"\r\n (onClick)=\"onOptionsClick($event, row)\"\r\n >\r\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\r\n </p-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <p-paginator\r\n *ngIf=\"smartGrid.paginator\"\r\n [first]=\"pageIndex!\"\r\n [totalRecords]=\"length!\"\r\n [rows]=\"pageSize\"\r\n [rowsPerPageOptions]=\"pageSizeOptions\"\r\n (onPageChange)=\"onPrimeChangePage($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n dropdownAppendTo=\"body\"\r\n />\r\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\r\n</div>\r\n}@else {\r\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n}\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{text-align:-webkit-right}\n"] }]
12746
+ args: [{ selector: 'smart-grid', providers: [SmartGridService], template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<div *ngIf=\"smartGrid\" class=\"primeSmartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n </div>\r\n <p-table\r\n *ngIf=\"!smartGrid.layoutDef || smartGrid.layoutDef === layoutDef().TABLE\"\r\n #pTable\r\n [value]=\"smartGrid.gridModel.page.rows!\"\r\n (onSort)=\"gridSort($event)\"\r\n [customSort]=\"true\"\r\n [sortMode]=\"'multiple'\"\r\n [lazy]=\"true\"\r\n (onLazyLoad)=\"lazyLoad($event)\"\r\n [reorderableColumns]=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\"\r\n [columns]=\"columns\"\r\n (onColReorder)=\"onColOrder($event)\"\r\n (onRowSelect)=\"onRowSelect($event)\"\r\n (onRowUnselect)=\"onRowUnselect($event)\"\r\n [selection]=\"selectedRows\"\r\n (onHeaderCheckboxToggle)=\"onSelectAllRow($event)\"\r\n dataKey=\"id\"\r\n >\r\n <ng-container *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <ng-template pTemplate=\"caption\">\r\n <div *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <p-multiSelect\r\n display=\"chip\"\r\n [options]=\"smartGrid.gridModel.view?.descriptor?.columns\"\r\n optionLabel=\"label\"\r\n [(ngModel)]=\"columns\"\r\n selectedItemsLabel=\"{0} columns selected\"\r\n [style]=\"{ 'min-width': '200px' }\"\r\n placeholder=\"Choose Columns\"\r\n (onChange)=\"headerChange($event)\"\r\n />\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template pTemplate=\"header\">\r\n <tr *ngIf=\"smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\" pReorderableColumn>\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <tr *ngIf=\"!smartGrid.gridModel.view?.descriptor?.showEditColumns\">\r\n <th\r\n *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n >\r\n <p-tableHeaderCheckbox />\r\n </th>\r\n <th\r\n *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\"\r\n style=\"width: 4rem\"\r\n ></th>\r\n <th [pSortableColumn]=\"col.propertyName\" *ngFor=\"let col of columns\">\r\n <p-sortIcon [field]=\"col.propertyName\" />\r\n {{ col.label }}\r\n </th>\r\n <th></th>\r\n </tr>\r\n <!-- <tr>\r\n <th *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <p-columnFilter\r\n type=\"text\"\r\n [field]=\"'data.' + col\"\r\n [placeholder]=\"'Search by ' + col\"\r\n [ariaLabel]=\"'Filter ' + col\"\r\n />\r\n </th>\r\n </tr> -->\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-row>\r\n <tr (dblclick)=\"onDoubleClick(row)\" *ngIf=\"row && row.data\">\r\n <td *ngIf=\"isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableCheckbox *ngIf=\"row.selectable != false\" [value]=\"row\" />\r\n </td>\r\n <td *ngIf=\"!isMultiple && (tableType === 'checkbox' || tableType === 'CheckBox')\">\r\n <p-tableRadioButton [value]=\"row\" />\r\n </td>\r\n <td *ngFor=\"let col of smartGrid?.gridModel?.view?.orderedColumnNames\">\r\n <div *ngIf=\"row.icons[col]\">\r\n <div class=\"smart-table-icon-container\">\r\n <div *ngFor=\"let ir of getImageResourceIcons(row, col)\">\r\n <div\r\n pTooltip=\"{{ ir.tooltip?.tooltip }}\"\r\n tooltipPosition=\"right\"\r\n placeholder=\"Right\"\r\n [ngStyle]=\"getImageResourceStyle(ir)\"\r\n ><smart-icon [icon]=\"ir.identifier!\" [color]=\"ir.color!\"> </smart-icon\r\n ></div>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"showCellToolbar(row, col)\">\r\n <smart-ui-action-toolbar\r\n [uiActionModels]=\"getRowColumnAction(row, col)\"\r\n ></smart-ui-action-toolbar>\r\n </ng-container>\r\n\r\n <div *ngIf=\"!row.icons[col]\" [innerHtml]=\"getColValue(col, row)\"> </div>\r\n </td>\r\n <td class=\"menu-button\">\r\n <p-button\r\n [rounded]=\"true\"\r\n [text]=\"true\"\r\n *ngIf=\"shouldShowOptionsButton(row)\"\r\n (onClick)=\"onOptionsClick($event, row)\"\r\n >\r\n <smart-icon icon=\"ellipsis-v\"></smart-icon>\r\n </p-button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <p-paginator\r\n *ngIf=\"smartGrid.paginator\"\r\n [first]=\"pageIndex!\"\r\n [totalRecords]=\"length!\"\r\n [rows]=\"pageSize\"\r\n [rowsPerPageOptions]=\"pageSizeOptions\"\r\n (onPageChange)=\"onPrimeChangePage($event)\"\r\n [showCurrentPageReport]=\"true\"\r\n dropdownAppendTo=\"body\"\r\n />\r\n <p-menu #menu [model]=\"menuButtons\" [popup]=\"true\" appendTo=\"body\"> </p-menu>\r\n</div>\r\n}@else {\r\n<div *ngIf=\"smartGrid\" class=\"smartGrid-container\">\r\n <div class=\"smart-grid-toolbar\">\r\n <smart-ui-action-toolbar #toolbar [id]=\"'grid_not_initialized'\"></smart-ui-action-toolbar>\r\n <button\r\n (click)=\"editColumns()\"\r\n mat-mini-fab\r\n color=\"text-primary\"\r\n *ngIf=\"smartGrid.showEditColumns\"\r\n >\r\n <mat-icon aria-hidden=\"false\" aria-label=\"Columns\" class=\"smart-grid-edit-icon\"\r\n >view_columns</mat-icon\r\n >\r\n </button>\r\n </div>\r\n <!-- <div [ngClass]=\"isBlocked ? 'blocked' : ''\"></div> -->\r\n <div class=\"smartGridContent\">\r\n <div>\r\n <div *ngIf=\"smartGrid.showResultCount\">\r\n <div class=\"smartGrid-data-number\">\r\n {{ smartGrid.gridModel.totalRowCount }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"smart-grid-table-container\">\r\n <ng-template #table></ng-template>\r\n </div>\r\n\r\n <div *ngIf=\"smartGrid.layoutDef === layoutDef().EXPANDABLE\">\r\n <smart-expandable-section\r\n #gridExpandableSection\r\n *ngFor=\"let expandableSection of expandableSections\"\r\n [data]=\"expandableSection\"\r\n ></smart-expandable-section>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().CARD && smartGrid.dataLayoutDef\"\r\n class=\"cards-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <app-smart-grid-card\r\n class=\"smartGrid-card-container\"\r\n *ngFor=\"let task of smartGrid.gridModel.page.rows\"\r\n [item]=\"task\"\r\n [smartGrid]=\"smartGrid\"\r\n [onSelect]=\"onSelect.bind(this)\"\r\n ></app-smart-grid-card>\r\n </div>\r\n <div\r\n *ngIf=\"smartGrid.layoutDef === layoutDef().TREE && treeControl\"\r\n class=\"tree-container\"\r\n [ngStyle]=\"{\r\n 'grid-template-columns':\r\n smartGrid.numberOfColumn !== undefined\r\n ? 'repeat(' + smartGrid.numberOfColumn + ', 1fr)'\r\n : ''\r\n }\"\r\n >\r\n <mat-tree [dataSource]=\"treeDataSource!\" [treeControl]=\"treeControl!\">\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodeToggle\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button mat-icon-button disabled class=\"tree-button\"></button>\r\n <mat-checkbox\r\n class=\"checklist-leaf-node\"\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n matTreeNodePaddingIndent=\"24\"\r\n >\r\n <button\r\n mat-icon-button\r\n matTreeNodeToggle\r\n class=\"tree-button\"\r\n [attr.aria-label]=\"'Toggle ' + node.item\"\r\n >\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{ treeControl!.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox\r\n [checked]=\"treeChecklistSelection?.isSelected(node)\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\"\r\n (change)=\"treeNodeSelectionToggle(node)\"\r\n >{{ getTreeItem(node) }}</mat-checkbox\r\n >\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n\r\n <mat-paginator\r\n *ngIf=\"smartGrid.paginator && !treeControl\"\r\n #paginator\r\n [length]=\"length\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onChangePage($event)\"\r\n ></mat-paginator>\r\n</div>\r\n}\r\n", styles: [".smartGrid-container{position:relative;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.primeSmartGrid-container{display:flex;flex-direction:column;gap:1rem}.smartGrid-data-number{padding-bottom:1rem}.smart-table-icon-container{display:flex;flex-direction:row;justify-content:space-between;white-space:initial}.cards-container{display:grid;gap:1rem;padding:1rem}.smartGrid-card-container{height:auto;border:1px solid black;border-radius:8px}.smartGrid-container ::ng-deep .mat-form-field-appearance-legacy .mat-form-field-underline{bottom:0}.smartGridContent{width:100%;flex:1;overflow:auto}.blocked{position:absolute;width:calc(100% - 3rem);height:calc(100% - 3rem);z-index:110;background-color:#0003}.smart-grid-table-container{display:flex;flex-direction:column;gap:1rem}.smart-grid-toolbar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}.smart-grid-toolbar smart-ui-action-toolbar{width:100%}.smart-grid-edit-icon{color:var(--light-gray)}.tree-button{width:24px!important;height:24px!important}.menu-button{text-align:-webkit-right}\n"] }]
12604
12747
  }], ctorParameters: () => [{ type: SmartGridService }, { type: ComponentFactoryService }, { type: i1$1.MatDialog }, { type: i0.Injector }, { type: UiActionDescriptorService }, { type: ComponentLibrary, decorators: [{
12605
12748
  type: Inject,
12606
12749
  args: [COMPONENT_LIBRARY]
@@ -15525,6 +15668,7 @@ function createLeafletMapItem(item, config) {
15525
15668
  title: item.label,
15526
15669
  markerColor: config.color,
15527
15670
  draggable: config.draggable,
15671
+ icon: getIcon(config.color),
15528
15672
  })),
15529
15673
  ]);
15530
15674
  case GeoMapItemKind.LINE:
@@ -15535,6 +15679,7 @@ function createLeafletMapItem(item, config) {
15535
15679
  title: item.label,
15536
15680
  color: config.color,
15537
15681
  draggable: config.draggable,
15682
+ icon: getIcon(config.color),
15538
15683
  })),
15539
15684
  ]);
15540
15685
  }
@@ -15544,6 +15689,7 @@ class LeafletMap extends AbstractMap {
15544
15689
  constructor(el, cd, zone) {
15545
15690
  super(el, cd, zone, createLeafletMapItem);
15546
15691
  this.offsetDistance = 0.00004;
15692
+ this.markers = [];
15547
15693
  }
15548
15694
  ngAfterViewChecked() {
15549
15695
  if (!this.map && this.el.nativeElement.offsetParent) {
@@ -15639,6 +15785,7 @@ class LeafletMap extends AbstractMap {
15639
15785
  if (!this.map) {
15640
15786
  return;
15641
15787
  }
15788
+ this.markers = [];
15642
15789
  const markerGroups = new Map();
15643
15790
  toAdd.forEach((item) => {
15644
15791
  if (item.record instanceof L.Marker) {
@@ -15687,7 +15834,16 @@ class LeafletMap extends AbstractMap {
15687
15834
  let group = markerGroups.get(it.record.getLatLng().lat.toFixed(6) + ',' + it.record.getLatLng().lng.toFixed(6));
15688
15835
  if (group && group.length > 1) {
15689
15836
  const icon = this.createNumberedIcon(group.length);
15690
- const clusterMarker = L.marker(group[0].originalLatLng, { icon }).addTo(this.map);
15837
+ const label = this.createLabel(group);
15838
+ const extraMarker = L.marker(group[0].originalLatLng, { icon });
15839
+ if (!extraMarker._tooltip) {
15840
+ extraMarker.bindTooltip(label, {
15841
+ permanent: false,
15842
+ direction: 'auto',
15843
+ });
15844
+ this.markers.push(extraMarker);
15845
+ }
15846
+ const clusterMarker = extraMarker.addTo(this.map);
15691
15847
  it.record.on('mouseover', (_event) => {
15692
15848
  toAdd.forEach((item, index) => {
15693
15849
  if (item.record instanceof L.Marker &&
@@ -15716,6 +15872,9 @@ class LeafletMap extends AbstractMap {
15716
15872
  }
15717
15873
  });
15718
15874
  }
15875
+ else {
15876
+ this.markers.push(it.record);
15877
+ }
15719
15878
  }
15720
15879
  it.record.addTo(this.map);
15721
15880
  this.overlays.set(it.id, it.record);
@@ -15807,14 +15966,48 @@ class LeafletMap extends AbstractMap {
15807
15966
  }
15808
15967
  toBase64() {
15809
15968
  return new Promise((resolve, reject) => {
15810
- leafletImage(this.map, (err, canvas) => {
15811
- if (err) {
15812
- console.error('Leaflet image capture error', err);
15813
- reject(err);
15814
- }
15815
- resolve(canvas.toDataURL('image/png'));
15816
- });
15969
+ setTimeout(() => {
15970
+ leafletImage(this.map, (err, canvas) => {
15971
+ if (err) {
15972
+ console.error('Leaflet image capture error', err);
15973
+ reject(err);
15974
+ return;
15975
+ }
15976
+ const ctx = canvas.getContext('2d');
15977
+ if (!ctx) {
15978
+ reject('No context');
15979
+ return;
15980
+ }
15981
+ this.markers.forEach((marker) => {
15982
+ const tooltip = marker.getTooltip();
15983
+ if (!tooltip) {
15984
+ return;
15985
+ }
15986
+ const latLng = marker.getLatLng();
15987
+ const point = this.map.latLngToContainerPoint(latLng);
15988
+ const text = tooltip.getContent();
15989
+ // Tooltip szöveg megjelenítése
15990
+ ctx.font = 'bold 14px sans-serif';
15991
+ ctx.fillStyle = 'black';
15992
+ ctx.strokeStyle = 'white';
15993
+ ctx.lineWidth = 4;
15994
+ ctx.textAlign = 'center';
15995
+ ctx.textBaseline = 'bottom';
15996
+ ctx.strokeText(text, point.x, point.y + 10); // fehér kontúr
15997
+ ctx.fillText(text, point.x, point.y + 10); // fekete szöveg
15998
+ });
15999
+ resolve(canvas.toDataURL('image/png'));
16000
+ });
16001
+ }, 300);
16002
+ });
16003
+ }
16004
+ createLabel(group) {
16005
+ let label = '';
16006
+ group.forEach((item) => {
16007
+ label += item._tooltip._content + ', ';
16008
+ item._tooltip.permanent = false;
15817
16009
  });
16010
+ return label;
15818
16011
  }
15819
16012
  createNumberedIcon(number) {
15820
16013
  const size = 35;
@@ -15852,6 +16045,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
15852
16045
  type: Component,
15853
16046
  args: [{ selector: 'leaflet-map', template: ` <div id="leaflet"></div>`, styles: ["#leaflet{height:720px}::ng-deep .marker-count{background-color:#0078d4;color:#fff;font-weight:700;border-radius:50%;width:30px;height:30px;line-height:30px;text-align:center;border:2px solid white;box-shadow:0 0 4px #0006}::ng-deep .custom-cluster-icon{pointer-events:auto!important}\n"] }]
15854
16047
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }] });
16048
+ function getIcon(color) {
16049
+ const size = 12;
16050
+ const scaleFactor = 12;
16051
+ const scaledSize = size * scaleFactor;
16052
+ const canvas = document.createElement('canvas');
16053
+ canvas.width = scaledSize;
16054
+ canvas.height = scaledSize;
16055
+ canvas.style.width = canvas.style.height = `${size}px`;
16056
+ const ctx = canvas.getContext('2d');
16057
+ ctx.scale(scaleFactor, scaleFactor);
16058
+ ctx.beginPath();
16059
+ ctx.arc(size / 2, size / 2, size / 2, 0, 2 * Math.PI, false);
16060
+ ctx.fillStyle = color;
16061
+ ctx.fill();
16062
+ return L.icon({
16063
+ iconUrl: canvas.toDataURL(),
16064
+ iconSize: [size, size],
16065
+ iconAnchor: [size / 2, size / 2],
16066
+ popupAnchor: [0, -size / 2],
16067
+ });
16068
+ }
15855
16069
 
15856
16070
  var MapEngine;
15857
16071
  (function (MapEngine) {
@@ -17747,6 +17961,10 @@ class SmartComponentLayoutUtility {
17747
17961
  }
17748
17962
  }
17749
17963
  }
17964
+ static setUuid(comp, uuid) {
17965
+ comp.uuid = uuid;
17966
+ comp.components?.forEach((child) => this.setUuid(child, uuid));
17967
+ }
17750
17968
  }
17751
17969
 
17752
17970
  /*
@@ -18121,6 +18339,11 @@ class SmartComponentApiClient {
18121
18339
  firstUuid = false;
18122
18340
  }
18123
18341
  this._uuid = uuid;
18342
+ if (this.getSmartComponentLayoutsQL()) {
18343
+ this.getSmartComponentLayoutsQL()?.forEach((comp) => {
18344
+ SmartComponentLayoutUtility.setUuid(comp, uuid);
18345
+ });
18346
+ }
18124
18347
  this.getWidgets().forEach((ref, key) => {
18125
18348
  if (ref instanceof SmartGridComponent) {
18126
18349
  ref.uuid = this.componentModelLoaded ? uuid : undefined;