@smartbit4all/ng-client 3.4.3 → 3.4.4

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 (111) hide show
  1. package/esm2020/lib/smart-component-layout/api/model/componentWidgetType.mjs +2 -1
  2. package/esm2020/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  3. package/esm2020/lib/smart-component-layout/smart-component-layout-utility.mjs +9 -1
  4. package/esm2020/lib/smart-component-layout/smart-component-layout.component.mjs +6 -1
  5. package/esm2020/lib/smart-expandable-section/expandable-section.component.mjs +22 -3
  6. package/esm2020/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
  7. package/esm2020/lib/smart-form/api/api/api.mjs +1 -1
  8. package/esm2020/lib/smart-form/api/api/default.service.mjs +1 -1
  9. package/esm2020/lib/smart-form/api/api.module.mjs +1 -1
  10. package/esm2020/lib/smart-form/api/configuration.mjs +1 -1
  11. package/esm2020/lib/smart-form/api/encoder.mjs +1 -1
  12. package/esm2020/lib/smart-form/api/index.mjs +1 -1
  13. package/esm2020/lib/smart-form/api/model/models.mjs +1 -1
  14. package/esm2020/lib/smart-form/api/model/propertyMapping.mjs +1 -1
  15. package/esm2020/lib/smart-form/api/model/selectionDefinition.mjs +1 -1
  16. package/esm2020/lib/smart-form/api/model/smartFormInputMode.mjs +1 -1
  17. package/esm2020/lib/smart-form/api/model/smartFormWidgetDirection.mjs +1 -1
  18. package/esm2020/lib/smart-form/api/model/smartLayoutDefinition.mjs +1 -1
  19. package/esm2020/lib/smart-form/api/model/smartMatrixModel.mjs +1 -1
  20. package/esm2020/lib/smart-form/api/model/smartWidgetHint.mjs +1 -1
  21. package/esm2020/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  22. package/esm2020/lib/smart-form/api/param.mjs +1 -1
  23. package/esm2020/lib/smart-form/api/variables.mjs +1 -1
  24. package/esm2020/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  25. package/esm2020/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  26. package/esm2020/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  27. package/esm2020/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  28. package/esm2020/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  29. package/esm2020/lib/smart-grid/api/grid-api/index.mjs +1 -1
  30. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  31. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  32. package/esm2020/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  33. package/esm2020/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  34. package/esm2020/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  35. package/esm2020/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  36. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  37. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  38. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  39. package/esm2020/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  40. package/esm2020/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  41. package/esm2020/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  42. package/esm2020/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  43. package/esm2020/lib/smart-grid/api/grid-api/param.mjs +1 -1
  44. package/esm2020/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  45. package/esm2020/lib/view-context/api/api/api.mjs +1 -1
  46. package/esm2020/lib/view-context/api/api/view.service.mjs +1 -1
  47. package/esm2020/lib/view-context/api/api.module.mjs +1 -1
  48. package/esm2020/lib/view-context/api/configuration.mjs +1 -1
  49. package/esm2020/lib/view-context/api/encoder.mjs +1 -1
  50. package/esm2020/lib/view-context/api/index.mjs +1 -1
  51. package/esm2020/lib/view-context/api/model/clipboardData.mjs +1 -1
  52. package/esm2020/lib/view-context/api/model/closeResult.mjs +1 -1
  53. package/esm2020/lib/view-context/api/model/componentModel.mjs +1 -1
  54. package/esm2020/lib/view-context/api/model/componentModelChange.mjs +1 -1
  55. package/esm2020/lib/view-context/api/model/dataChange.mjs +1 -1
  56. package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
  57. package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +1 -1
  58. package/esm2020/lib/view-context/api/model/downloadedFile.mjs +1 -1
  59. package/esm2020/lib/view-context/api/model/iconPosition.mjs +1 -1
  60. package/esm2020/lib/view-context/api/model/imageResource.mjs +1 -1
  61. package/esm2020/lib/view-context/api/model/link.mjs +1 -1
  62. package/esm2020/lib/view-context/api/model/messageData.mjs +1 -1
  63. package/esm2020/lib/view-context/api/model/messageOption.mjs +1 -1
  64. package/esm2020/lib/view-context/api/model/messageOptionType.mjs +1 -1
  65. package/esm2020/lib/view-context/api/model/messageResult.mjs +1 -1
  66. package/esm2020/lib/view-context/api/model/messageTextType.mjs +1 -1
  67. package/esm2020/lib/view-context/api/model/messageType.mjs +1 -1
  68. package/esm2020/lib/view-context/api/model/openPendingData.mjs +1 -1
  69. package/esm2020/lib/view-context/api/model/serverRequestExecutionStat.mjs +1 -1
  70. package/esm2020/lib/view-context/api/model/serverRequestTrack.mjs +1 -1
  71. package/esm2020/lib/view-context/api/model/serverRequestType.mjs +1 -1
  72. package/esm2020/lib/view-context/api/model/smartLinkData.mjs +1 -1
  73. package/esm2020/lib/view-context/api/model/statisticRecord.mjs +1 -1
  74. package/esm2020/lib/view-context/api/model/style.mjs +1 -1
  75. package/esm2020/lib/view-context/api/model/uiAction.mjs +1 -1
  76. package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
  77. package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
  78. package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  79. package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
  80. package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
  81. package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  82. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  83. package/esm2020/lib/view-context/api/model/uiActionTooltip.mjs +1 -1
  84. package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  85. package/esm2020/lib/view-context/api/model/valueSet.mjs +1 -1
  86. package/esm2020/lib/view-context/api/model/view.mjs +1 -1
  87. package/esm2020/lib/view-context/api/model/viewApiError.mjs +1 -1
  88. package/esm2020/lib/view-context/api/model/viewConstraint.mjs +1 -1
  89. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +1 -1
  90. package/esm2020/lib/view-context/api/model/viewData.mjs +1 -1
  91. package/esm2020/lib/view-context/api/model/viewPlaceholder.mjs +1 -1
  92. package/esm2020/lib/view-context/api/model/viewState.mjs +1 -1
  93. package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
  94. package/esm2020/lib/view-context/api/model/viewType.mjs +1 -1
  95. package/esm2020/lib/view-context/api/param.mjs +1 -1
  96. package/esm2020/lib/view-context/api/variables.mjs +1 -1
  97. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +4 -1
  98. package/fesm2015/smartbit4all-ng-client.mjs +43 -4
  99. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  100. package/fesm2020/smartbit4all-ng-client.mjs +38 -2
  101. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  102. package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +2 -1
  103. package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +6 -0
  104. package/lib/smart-expandable-section/expandable-section.component.d.ts +7 -0
  105. package/lib/smart-expandable-section/expandable-section.model.d.ts +9 -1
  106. package/package.json +1 -1
  107. package/smartbit4all-ng-client-3.4.4.tgz +0 -0
  108. package/src/lib/smart-form/api/README.md +226 -226
  109. package/src/lib/smart-grid/api/grid-api/README.md +226 -226
  110. package/src/lib/view-context/api/README.md +226 -226
  111. package/smartbit4all-ng-client-3.4.3.tgz +0 -0
@@ -8357,6 +8357,9 @@ class UiActionFileUploadDialogComponent {
8357
8357
  upload: this.descriptor.upload?.uploadButtonTitle,
8358
8358
  };
8359
8359
  // TODO set max size and file formats by UiAction.params
8360
+ if (this.service.action.params) {
8361
+ this.maxSizeMb = (this.service.action.params['maxFileSize'] ?? 25);
8362
+ }
8360
8363
  if (this.descriptor[this.service.inputTypeName]) {
8361
8364
  this.dialogType = this.service.inputTypeName;
8362
8365
  }
@@ -10655,6 +10658,22 @@ class ExpandableSectionComponent {
10655
10658
  });
10656
10659
  }
10657
10660
  }
10661
+ getTitle() {
10662
+ if (this.data.headerData?.title) {
10663
+ return this.data.headerData.title;
10664
+ }
10665
+ if (this.data.title) {
10666
+ return this.data.title;
10667
+ }
10668
+ return '';
10669
+ }
10670
+ hasSubtitle() {
10671
+ return !!this.data.headerData?.subtitle;
10672
+ }
10673
+ titleStyle() {
10674
+ const flexGrowValue = this.hasSubtitle() ? 'unset' : 1;
10675
+ return { 'flex-grow': flexGrowValue };
10676
+ }
10658
10677
  ngOnInit() { }
10659
10678
  ngAfterViewInit() {
10660
10679
  if (this.data.headerComponent) {
@@ -10701,10 +10720,10 @@ class ExpandableSectionComponent {
10701
10720
  }
10702
10721
  }
10703
10722
  ExpandableSectionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExpandableSectionComponent, deps: [{ token: ComponentFactoryService }], target: i0.ɵɵFactoryTarget.Component });
10704
- ExpandableSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: { data: "data", index: "index" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["renderComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "vcRefheader", first: true, predicate: ["headerComponent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\r\n <mat-expansion-panel\r\n [expanded]=\"data.isExpanded\"\r\n (opened)=\"onStateChange(true)\"\r\n (closed)=\"onStateChange(false)\"\r\n [disabled]=\"!!data.isDisabled\"\r\n >\r\n <mat-expansion-panel-header *ngIf=\"data.headerComponent\">\r\n <ng-template #headerComponent></ng-template>\r\n </mat-expansion-panel-header>\r\n <mat-expansion-panel-header *ngIf=\"!data.headerComponent\">\r\n <mat-panel-title> {{ data.title }} </mat-panel-title>\r\n <div class=\"btn-container\" *ngIf=\"data.button\">\r\n <button\r\n *ngIf=\"data.button.type === type().BUTTON\"\r\n class=\"btn\"\r\n (click)=\"action(data.button, $event)\"\r\n mat-stroked-button\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n {{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <button\r\n *ngIf=\"data.button.type === type().MENU\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n color=\"{{ data.button.color }}\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon\r\n >{{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let button of data.button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, button, data.index)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n button.icon && (!button.iconPosition || button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"button.icon\"\r\n ></smart-icon\r\n >{{ button.label }}\r\n <smart-icon\r\n *ngIf=\"button.icon && button.iconPosition === position().POST\"\r\n [icon]=\"button.icon\"\r\n ></smart-icon>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-template #renderComponent></ng-template>\r\n </mat-expansion-panel>\r\n</div>\r\n", styles: [".section-container{margin-bottom:50px}:host::ng-deep .mat-expansion-panel-header{background:var(--primary-lighter-color)}:host::ng-deep .mat-expansion-panel-header-title{color:var(--primary-color)}:host::ng-deep .btn-container{margin:1em 3em 1em 1em}:host::ng-deep .btn{border-radius:24px}\n"], components: [{ type: i2$6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i2$6.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$6.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
10723
+ ExpandableSectionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: ExpandableSectionComponent, selector: "smart-expandable-section", inputs: { data: "data", index: "index" }, viewQueries: [{ propertyName: "vcRef", first: true, predicate: ["renderComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "vcRefheader", first: true, predicate: ["headerComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "toolbar", first: true, predicate: ["toolbar"], descendants: true }], ngImport: i0, template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\r\n <mat-expansion-panel\r\n [expanded]=\"data.isExpanded\"\r\n (opened)=\"onStateChange(true)\"\r\n (closed)=\"onStateChange(false)\"\r\n [disabled]=\"!!data.isDisabled\"\r\n >\r\n <mat-expansion-panel-header *ngIf=\"data.headerComponent\">\r\n <ng-template #headerComponent></ng-template>\r\n </mat-expansion-panel-header>\r\n\r\n <mat-expansion-panel-header *ngIf=\"!data.headerComponent\">\r\n <ui-action-toolbar\r\n *ngIf=\"data.layoutIdentifier\"\r\n [id]=\"data.layoutIdentifier + '-toolbar'\"\r\n ></ui-action-toolbar>\r\n\r\n <mat-panel-title [ngStyle]=\"titleStyle()\"> {{ getTitle() }} </mat-panel-title>\r\n <mat-pane-description *ngIf=\"hasSubtitle()\">\r\n {{ data.headerData?.subtitle }}\r\n </mat-pane-description>\r\n\r\n <smart-ui-action-toolbar\r\n *ngIf=\"!!data.headerData?.toolbarId\"\r\n #toolbar\r\n [id]=\"data.headerData!.toolbarId!\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <div class=\"btn-container\" *ngIf=\"data.button\">\r\n <button\r\n *ngIf=\"data.button.type === type().BUTTON\"\r\n class=\"btn\"\r\n (click)=\"action(data.button, $event)\"\r\n mat-stroked-button\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n {{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <button\r\n *ngIf=\"data.button.type === type().MENU\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n color=\"{{ data.button.color }}\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n {{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let button of data.button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, button, data.index)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n button.icon && (!button.iconPosition || button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"button.icon\"\r\n ></smart-icon>\r\n {{ button.label }}\r\n <smart-icon\r\n *ngIf=\"button.icon && button.iconPosition === position().POST\"\r\n [icon]=\"button.icon\"\r\n ></smart-icon>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <ng-template #renderComponent></ng-template>\r\n </mat-expansion-panel>\r\n</div>\r\n", styles: [".section-container{margin-bottom:50px}:host::ng-deep .mat-expansion-panel-header{background:var(--primary-lighter-color)}:host::ng-deep .mat-expansion-panel-header-title{color:var(--primary-color)}:host::ng-deep .btn-container{margin:1em 3em 1em 1em}:host::ng-deep .btn{border-radius:24px}\n"], components: [{ type: i2$6.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i2$6.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: SmartIconComponent, selector: "smart-icon", inputs: ["icon", "color"] }, { type: i5.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { type: i5.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2$6.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
10705
10724
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: ExpandableSectionComponent, decorators: [{
10706
10725
  type: Component,
10707
- args: [{ selector: 'smart-expandable-section', template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\r\n <mat-expansion-panel\r\n [expanded]=\"data.isExpanded\"\r\n (opened)=\"onStateChange(true)\"\r\n (closed)=\"onStateChange(false)\"\r\n [disabled]=\"!!data.isDisabled\"\r\n >\r\n <mat-expansion-panel-header *ngIf=\"data.headerComponent\">\r\n <ng-template #headerComponent></ng-template>\r\n </mat-expansion-panel-header>\r\n <mat-expansion-panel-header *ngIf=\"!data.headerComponent\">\r\n <mat-panel-title> {{ data.title }} </mat-panel-title>\r\n <div class=\"btn-container\" *ngIf=\"data.button\">\r\n <button\r\n *ngIf=\"data.button.type === type().BUTTON\"\r\n class=\"btn\"\r\n (click)=\"action(data.button, $event)\"\r\n mat-stroked-button\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n {{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <button\r\n *ngIf=\"data.button.type === type().MENU\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n color=\"{{ data.button.color }}\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon\r\n >{{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let button of data.button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, button, data.index)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n button.icon && (!button.iconPosition || button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"button.icon\"\r\n ></smart-icon\r\n >{{ button.label }}\r\n <smart-icon\r\n *ngIf=\"button.icon && button.iconPosition === position().POST\"\r\n [icon]=\"button.icon\"\r\n ></smart-icon>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <ng-template #renderComponent></ng-template>\r\n </mat-expansion-panel>\r\n</div>\r\n", styles: [".section-container{margin-bottom:50px}:host::ng-deep .mat-expansion-panel-header{background:var(--primary-lighter-color)}:host::ng-deep .mat-expansion-panel-header-title{color:var(--primary-color)}:host::ng-deep .btn-container{margin:1em 3em 1em 1em}:host::ng-deep .btn{border-radius:24px}\n"] }]
10726
+ args: [{ selector: 'smart-expandable-section', template: "<div class=\"section-container\" [ngClass]=\"data.cssClass ?? ''\">\r\n <mat-expansion-panel\r\n [expanded]=\"data.isExpanded\"\r\n (opened)=\"onStateChange(true)\"\r\n (closed)=\"onStateChange(false)\"\r\n [disabled]=\"!!data.isDisabled\"\r\n >\r\n <mat-expansion-panel-header *ngIf=\"data.headerComponent\">\r\n <ng-template #headerComponent></ng-template>\r\n </mat-expansion-panel-header>\r\n\r\n <mat-expansion-panel-header *ngIf=\"!data.headerComponent\">\r\n <ui-action-toolbar\r\n *ngIf=\"data.layoutIdentifier\"\r\n [id]=\"data.layoutIdentifier + '-toolbar'\"\r\n ></ui-action-toolbar>\r\n\r\n <mat-panel-title [ngStyle]=\"titleStyle()\"> {{ getTitle() }} </mat-panel-title>\r\n <mat-pane-description *ngIf=\"hasSubtitle()\">\r\n {{ data.headerData?.subtitle }}\r\n </mat-pane-description>\r\n\r\n <smart-ui-action-toolbar\r\n *ngIf=\"!!data.headerData?.toolbarId\"\r\n #toolbar\r\n [id]=\"data.headerData!.toolbarId!\"\r\n ></smart-ui-action-toolbar>\r\n\r\n <div class=\"btn-container\" *ngIf=\"data.button\">\r\n <button\r\n *ngIf=\"data.button.type === type().BUTTON\"\r\n class=\"btn\"\r\n (click)=\"action(data.button, $event)\"\r\n mat-stroked-button\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n {{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <button\r\n *ngIf=\"data.button.type === type().MENU\"\r\n mat-button\r\n [matMenuTriggerFor]=\"menu\"\r\n (click)=\"$event.stopPropagation()\"\r\n color=\"{{ data.button.color }}\"\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n data.button.icon &&\r\n (!data.button.iconPosition || data.button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n {{ data.button.label }}\r\n <smart-icon\r\n *ngIf=\"data.button.icon && data.button.iconPosition === position().POST\"\r\n [icon]=\"data.button.icon\"\r\n ></smart-icon>\r\n </button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button\r\n *ngFor=\"let button of data.button.menuItemButtons\"\r\n (click)=\"customButtonClicked($event, button, data.index)\"\r\n mat-menu-item\r\n >\r\n <smart-icon\r\n *ngIf=\"\r\n button.icon && (!button.iconPosition || button.iconPosition === position().PRE)\r\n \"\r\n [icon]=\"button.icon\"\r\n ></smart-icon>\r\n {{ button.label }}\r\n <smart-icon\r\n *ngIf=\"button.icon && button.iconPosition === position().POST\"\r\n [icon]=\"button.icon\"\r\n ></smart-icon>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <ng-template #renderComponent></ng-template>\r\n </mat-expansion-panel>\r\n</div>\r\n", styles: [".section-container{margin-bottom:50px}:host::ng-deep .mat-expansion-panel-header{background:var(--primary-lighter-color)}:host::ng-deep .mat-expansion-panel-header-title{color:var(--primary-color)}:host::ng-deep .btn-container{margin:1em 3em 1em 1em}:host::ng-deep .btn{border-radius:24px}\n"] }]
10708
10727
  }], ctorParameters: function () { return [{ type: ComponentFactoryService }]; }, propDecorators: { data: [{
10709
10728
  type: Input
10710
10729
  }], index: [{
@@ -10715,6 +10734,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
10715
10734
  }], vcRefheader: [{
10716
10735
  type: ViewChild,
10717
10736
  args: ['headerComponent', { read: ViewContainerRef }]
10737
+ }], toolbar: [{
10738
+ type: ViewChild,
10739
+ args: ['toolbar']
10718
10740
  }] } });
10719
10741
 
10720
10742
  class SmartGridComponent {
@@ -13710,6 +13732,7 @@ var ComponentWidgetType;
13710
13732
  ComponentWidgetType["FILTER"] = "filter";
13711
13733
  ComponentWidgetType["TREE"] = "tree";
13712
13734
  ComponentWidgetType["TOOLBAR"] = "toolbar";
13735
+ ComponentWidgetType["MAP"] = "map";
13713
13736
  })(ComponentWidgetType || (ComponentWidgetType = {}));
13714
13737
 
13715
13738
  /**
@@ -13886,6 +13909,11 @@ class SmartComponentLayoutComponent {
13886
13909
  ['parentSmartComponent', this.parentSmartComponent],
13887
13910
  ['parentLayoutComponent', this.parentLayoutComponent],
13888
13911
  ]),
13912
+ headerData: {
13913
+ title: this.smartComponentLayout?.expandableSectionLabel ?? '',
13914
+ subtitle: this.smartComponentLayout?.expandableSectionSubtitle,
13915
+ toolbarId: this.smartComponentLayout?.expandableSectionHeaderToolbarId,
13916
+ },
13889
13917
  customComponent: SmartComponentLayoutComponent,
13890
13918
  };
13891
13919
  }
@@ -15457,6 +15485,14 @@ class SmartComponentLayoutUtility {
15457
15485
  }
15458
15486
  const expandable = this.getExpandableComponent(comp);
15459
15487
  if (expandable) {
15488
+ const headerToolbarId = comp.expandableSection?.headerData?.toolbarId;
15489
+ if (headerToolbarId) {
15490
+ const headerToolbar = comp.expandableComponents?.first.toolbar;
15491
+ if (headerToolbar) {
15492
+ headerToolbar.id = headerToolbarId;
15493
+ result.push(headerToolbar);
15494
+ }
15495
+ }
15460
15496
  result.push(...this.getToolbars(expandable));
15461
15497
  }
15462
15498
  if (comp.toolbar) {