@meshmakers/octo-ui 3.5.100 → 3.5.130

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.
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectionStrategy, Component, Injectable, Input, EventEmitter, Output, LOCALE_ID, ElementRef, forwardRef, ViewChild, signal, computed, input, model, output, effect, untracked, Directive, booleanAttribute, viewChild, afterEveryRender, InjectionToken, HostListener, makeEnvironmentProviders } from '@angular/core';
2
+ import { inject, ChangeDetectionStrategy, Component, Injectable, Input, EventEmitter, Output, Injector, LOCALE_ID, ElementRef, forwardRef, ViewChild, signal, computed, input, model, output, effect, untracked, Directive, booleanAttribute, viewChild, afterEveryRender, InjectionToken, HostListener, makeEnvironmentProviders } from '@angular/core';
3
3
  import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';
4
- import { AttributeSelectorService, AttributeValueTypeDto as AttributeValueTypeDto$1, CkTypeSelectorService, CkTypeAttributeService, toSecretState, secretStateFromAttribute, isSecretValueType, isSecretStateObject, secretStatusOf, formatSecretStatus, GetEntitiesByCkTypeDtoGQL, RuntimeEntitySelectDataSource, RuntimeEntityDialogDataSource, SearchFilterTypesDto, SortOrdersDto, FieldFilterOperatorsDto, GetCkTypesDtoGQL, GetCkModelByIdDtoGQL, GraphDirectionDto, CkTypeMetaData, AssociationModOptionsDto, GraphQL, isSecretAttributeCandidate, toUniqueCamelCaseNames, toCamelCaseAttributeName, DeleteStrategiesDto, CommunicationService, provideOctoServices } from '@meshmakers/octo-services';
4
+ import { AttributeSelectorService, AttributeValueTypeDto as AttributeValueTypeDto$1, CkTypeSelectorService, CkTypeAttributeService, toSecretState, secretStateFromAttribute, isSecretValueType, FileDownloadService, isSecretStateObject, secretStatusOf, formatSecretStatus, GetEntitiesByCkTypeDtoGQL, RuntimeEntitySelectDataSource, RuntimeEntityDialogDataSource, SearchFilterTypesDto, SortOrdersDto, FieldFilterOperatorsDto, GetCkTypesDtoGQL, GetCkModelByIdDtoGQL, GraphDirectionDto, CkTypeMetaData, AssociationModOptionsDto, GraphQL, BinaryDownloadUnavailableError, isSecretAttributeCandidate, toUniqueCamelCaseNames, toCamelCaseAttributeName, DeleteStrategiesDto, CommunicationService, provideOctoServices } from '@meshmakers/octo-services';
5
5
  import { Roles, provideMmSharedAuth } from '@meshmakers/shared-auth';
6
6
  import { WindowStateService, EntitySelectInputComponent, DataSourceTyped, HierarchyDataSourceBase, NotificationDisplayService, TreeComponent, ListViewComponent, FetchResultTyped, DataSourceBase, MM_ACTION_ICONS, ConfirmationService, InputService, BaseTreeDetailComponent, provideMmSharedUi } from '@meshmakers/shared-ui';
7
7
  import * as i1$2 from '@angular/common';
@@ -416,12 +416,12 @@ class AttributeSortSelectorDialogComponent {
416
416
  </div>
417
417
 
418
418
  <!-- Action Bar -->
419
- <div class="action-bar">
419
+ <div class="mm-dialog-actions">
420
420
  <button kendoButton (click)="onCancel()">Cancel</button>
421
421
  <button kendoButton themeColor="primary" (click)="onOk()">Apply</button>
422
422
  </div>
423
423
  </div>
424
- `, isInline: true, styles: [":host{display:block;height:100%}.attribute-sort-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4,.sort-options-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.sort-options-section{width:120px;flex-shrink:0;display:flex;flex-direction:column;padding-top:32px}.sort-buttons{display:flex;flex-direction:row;gap:4px}.sort-button{flex:1;min-width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center}.add-button{width:100%;margin-top:16px}.sort-display{display:flex;align-items:center;gap:6px}.sort-indicator{font-size:14px;font-weight:700;color:var(--kendo-color-primary, #ff6358)}.action-bar{display:flex;justify-content:flex-end;gap:8px;flex-shrink:0;padding-top:8px;border-top:1px solid var(--kendo-color-border, #dee2e6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: GridModule }, { kind: "component", type: i3.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode", "pinnable", "pinnedTopRows", "pinnedBottomRows", "isRowPinnable"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "rowPinChange", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "csvExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i3.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i5.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "ngmodule", type: DropDownListModule }, { kind: "component", type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: WindowModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
424
+ `, isInline: true, styles: [":host{display:block;height:100%}.attribute-sort-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4,.sort-options-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.sort-options-section{width:120px;flex-shrink:0;display:flex;flex-direction:column;padding-top:32px}.sort-buttons{display:flex;flex-direction:row;gap:4px}.sort-button{flex:1;min-width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center}.add-button{width:100%;margin-top:16px}.sort-display{display:flex;align-items:center;gap:6px}.sort-indicator{font-size:14px;font-weight:700;color:var(--kendo-color-primary, #ff6358)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: GridModule }, { kind: "component", type: i3.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode", "pinnable", "pinnedTopRows", "pinnedBottomRows", "isRowPinnable"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "rowPinChange", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "csvExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i3.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i5.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "ngmodule", type: DropDownListModule }, { kind: "component", type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: WindowModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
425
425
  }
426
426
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AttributeSortSelectorDialogComponent, decorators: [{
427
427
  type: Component,
@@ -599,12 +599,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
599
599
  </div>
600
600
 
601
601
  <!-- Action Bar -->
602
- <div class="action-bar">
602
+ <div class="mm-dialog-actions">
603
603
  <button kendoButton (click)="onCancel()">Cancel</button>
604
604
  <button kendoButton themeColor="primary" (click)="onOk()">Apply</button>
605
605
  </div>
606
606
  </div>
607
- `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:block;height:100%}.attribute-sort-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4,.sort-options-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.sort-options-section{width:120px;flex-shrink:0;display:flex;flex-direction:column;padding-top:32px}.sort-buttons{display:flex;flex-direction:row;gap:4px}.sort-button{flex:1;min-width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center}.add-button{width:100%;margin-top:16px}.sort-display{display:flex;align-items:center;gap:6px}.sort-indicator{font-size:14px;font-weight:700;color:var(--kendo-color-primary, #ff6358)}.action-bar{display:flex;justify-content:flex-end;gap:8px;flex-shrink:0;padding-top:8px;border-top:1px solid var(--kendo-color-border, #dee2e6)}\n"] }]
607
+ `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:block;height:100%}.attribute-sort-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4,.sort-options-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.sort-options-section{width:120px;flex-shrink:0;display:flex;flex-direction:column;padding-top:32px}.sort-buttons{display:flex;flex-direction:row;gap:4px}.sort-button{flex:1;min-width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center}.add-button{width:100%;margin-top:16px}.sort-display{display:flex;align-items:center;gap:6px}.sort-indicator{font-size:14px;font-weight:700;color:var(--kendo-color-primary, #ff6358)}\n"] }]
608
608
  }] });
609
609
 
610
610
  class AttributeSortSelectorDialogService {
@@ -985,12 +985,12 @@ class CkTypeSelectorDialogComponent {
985
985
  <strong>{{ _messages.selectedLabel }}</strong> {{ selectedType.rtCkTypeId }}
986
986
  </div>
987
987
 
988
- <div class="dialog-actions">
988
+ <div class="mm-dialog-actions">
989
989
  <button kendoButton (click)="onCancel()">{{ _messages.cancel }}</button>
990
990
  <button kendoButton themeColor="primary" [disabled]="!selectedType || (selectedType.isAbstract && !allowAbstract)" (click)="onConfirm()">{{ _messages.ok }}</button>
991
991
  </div>
992
992
  </div>
993
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}.ck-type-selector-container{display:flex;flex-direction:column;flex:1;min-height:0;padding:20px;box-sizing:border-box;gap:12px}.filter-container{margin-bottom:16px;flex-shrink:0}.filter-row{display:flex;gap:16px;align-items:flex-end}.filter-item{display:flex;flex-direction:column;gap:4px}.filter-item label{font-size:12px;font-weight:500}.filter-item.flex-grow{flex:1}.filter-item.filter-actions{flex-shrink:0}.filter-input{min-width:180px}.grid-container{flex:1;min-height:0;display:flex;flex-direction:column}.grid-container kendo-grid,.grid-container .type-grid{flex:1;min-height:200px}.type-grid{border-radius:4px}.type-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.abstract-type{font-style:italic;opacity:.7}.final-type{font-weight:600}.type-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:10px;margin-left:8px}.type-badge.abstract{background-color:var(--kendo-color-warning, #ffc107);color:var(--kendo-color-on-warning, #000);opacity:.8}.type-badge.final{background-color:var(--kendo-color-success, #28a745);color:var(--kendo-color-on-success, #fff);opacity:.8}.selection-info{margin-top:12px;padding:8px 12px;background:var(--kendo-color-success-subtle, #d4edda);border:1px solid var(--kendo-color-success, #28a745);border-radius:4px;font-size:14px;flex-shrink:0}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:8px 20px 0;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: GridModule }, { kind: "component", type: i3.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode", "pinnable", "pinnedTopRows", "pinnedBottomRows", "isRowPinnable"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "rowPinChange", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "csvExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i3.CustomMessagesComponent, selector: "kendo-grid-messages" }, { kind: "component", type: i3.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i5.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "component", type: i3$1.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: LoaderModule }, { kind: "ngmodule", type: WindowModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
993
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%}.ck-type-selector-container{display:flex;flex-direction:column;flex:1;min-height:0;padding:20px;box-sizing:border-box;gap:12px}.filter-container{margin-bottom:16px;flex-shrink:0}.filter-row{display:flex;gap:16px;align-items:flex-end}.filter-item{display:flex;flex-direction:column;gap:4px}.filter-item label{font-size:12px;font-weight:500}.filter-item.flex-grow{flex:1}.filter-item.filter-actions{flex-shrink:0}.filter-input{min-width:180px}.grid-container{flex:1;min-height:0;display:flex;flex-direction:column}.grid-container kendo-grid,.grid-container .type-grid{flex:1;min-height:200px}.type-grid{border-radius:4px}.type-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.abstract-type{font-style:italic;opacity:.7}.final-type{font-weight:600}.type-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:10px;margin-left:8px}.type-badge.abstract{background-color:var(--kendo-color-warning, #ffc107);color:var(--kendo-color-on-warning, #000);opacity:.8}.type-badge.final{background-color:var(--kendo-color-success, #28a745);color:var(--kendo-color-on-success, #fff);opacity:.8}.selection-info{margin-top:12px;padding:8px 12px;background:var(--kendo-color-success-subtle, #d4edda);border:1px solid var(--kendo-color-success, #28a745);border-radius:4px;font-size:14px;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: GridModule }, { kind: "component", type: i3.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode", "pinnable", "pinnedTopRows", "pinnedBottomRows", "isRowPinnable"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "rowPinChange", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "csvExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i3.CustomMessagesComponent, selector: "kendo-grid-messages" }, { kind: "component", type: i3.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i5.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "component", type: i3$1.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: LoaderModule }, { kind: "ngmodule", type: WindowModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
994
994
  }
995
995
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: CkTypeSelectorDialogComponent, decorators: [{
996
996
  type: Component,
@@ -1090,12 +1090,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
1090
1090
  <strong>{{ _messages.selectedLabel }}</strong> {{ selectedType.rtCkTypeId }}
1091
1091
  </div>
1092
1092
 
1093
- <div class="dialog-actions">
1093
+ <div class="mm-dialog-actions">
1094
1094
  <button kendoButton (click)="onCancel()">{{ _messages.cancel }}</button>
1095
1095
  <button kendoButton themeColor="primary" [disabled]="!selectedType || (selectedType.isAbstract && !allowAbstract)" (click)="onConfirm()">{{ _messages.ok }}</button>
1096
1096
  </div>
1097
1097
  </div>
1098
- `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:flex;flex-direction:column;height:100%}.ck-type-selector-container{display:flex;flex-direction:column;flex:1;min-height:0;padding:20px;box-sizing:border-box;gap:12px}.filter-container{margin-bottom:16px;flex-shrink:0}.filter-row{display:flex;gap:16px;align-items:flex-end}.filter-item{display:flex;flex-direction:column;gap:4px}.filter-item label{font-size:12px;font-weight:500}.filter-item.flex-grow{flex:1}.filter-item.filter-actions{flex-shrink:0}.filter-input{min-width:180px}.grid-container{flex:1;min-height:0;display:flex;flex-direction:column}.grid-container kendo-grid,.grid-container .type-grid{flex:1;min-height:200px}.type-grid{border-radius:4px}.type-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.abstract-type{font-style:italic;opacity:.7}.final-type{font-weight:600}.type-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:10px;margin-left:8px}.type-badge.abstract{background-color:var(--kendo-color-warning, #ffc107);color:var(--kendo-color-on-warning, #000);opacity:.8}.type-badge.final{background-color:var(--kendo-color-success, #28a745);color:var(--kendo-color-on-success, #fff);opacity:.8}.selection-info{margin-top:12px;padding:8px 12px;background:var(--kendo-color-success-subtle, #d4edda);border:1px solid var(--kendo-color-success, #28a745);border-radius:4px;font-size:14px;flex-shrink:0}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding:8px 20px 0;flex-shrink:0}\n"] }]
1098
+ `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:flex;flex-direction:column;height:100%}.ck-type-selector-container{display:flex;flex-direction:column;flex:1;min-height:0;padding:20px;box-sizing:border-box;gap:12px}.filter-container{margin-bottom:16px;flex-shrink:0}.filter-row{display:flex;gap:16px;align-items:flex-end}.filter-item{display:flex;flex-direction:column;gap:4px}.filter-item label{font-size:12px;font-weight:500}.filter-item.flex-grow{flex:1}.filter-item.filter-actions{flex-shrink:0}.filter-input{min-width:180px}.grid-container{flex:1;min-height:0;display:flex;flex-direction:column}.grid-container kendo-grid,.grid-container .type-grid{flex:1;min-height:200px}.type-grid{border-radius:4px}.type-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.abstract-type{font-style:italic;opacity:.7}.final-type{font-weight:600}.type-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:10px;margin-left:8px}.type-badge.abstract{background-color:var(--kendo-color-warning, #ffc107);color:var(--kendo-color-on-warning, #000);opacity:.8}.type-badge.final{background-color:var(--kendo-color-success, #28a745);color:var(--kendo-color-on-success, #fff);opacity:.8}.selection-info{margin-top:12px;padding:8px 12px;background:var(--kendo-color-success-subtle, #d4edda);border:1px solid var(--kendo-color-success, #28a745);border-radius:4px;font-size:14px;flex-shrink:0}\n"] }]
1099
1099
  }], propDecorators: { messages: [{
1100
1100
  type: Input
1101
1101
  }] } });
@@ -2077,6 +2077,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
2077
2077
  type: Output
2078
2078
  }] } });
2079
2079
 
2080
+ /**
2081
+ * Hands a binary download request to the host when one listens on `emitter`, otherwise downloads
2082
+ * the clicked value itself with the user's bearer through `FileDownloadService` (AB#6179).
2083
+ *
2084
+ * The service is resolved lazily at click time so that merely rendering a property grid never
2085
+ * requires `HttpClient` / `CONFIGURATION_SERVICE` to be provided.
2086
+ */
2087
+ function emitOrDownloadBinary(emitter, event, injector) {
2088
+ if (emitter.observed) {
2089
+ emitter.emit(event);
2090
+ return;
2091
+ }
2092
+ let downloads;
2093
+ try {
2094
+ downloads = injector.get(FileDownloadService);
2095
+ }
2096
+ catch (error) {
2097
+ console.error('Cannot download binary: FileDownloadService is not available', error);
2098
+ return;
2099
+ }
2100
+ downloads.downloadBinary(event).catch(error => {
2101
+ console.error('Binary download failed:', error);
2102
+ });
2103
+ }
2104
+
2080
2105
  /**
2081
2106
  * A secret record member as projected by the server (AB#5528): the marker `{ isSet }` (optionally
2082
2107
  * with `keyMissing` / `setAt`), or a normalised `SecretState`. Nothing else has exactly these keys.
@@ -2097,6 +2122,7 @@ class PropertyValueDisplayComponent {
2097
2122
  // Expansion state
2098
2123
  isExpanded = false;
2099
2124
  windowService = inject(WindowService);
2125
+ injector = inject(Injector);
2100
2126
  locale = inject(LOCALE_ID);
2101
2127
  /** Non-null when the value is a secret state (SECRET value type or record member marker). */
2102
2128
  secretStatus = null;
@@ -2541,25 +2567,27 @@ class PropertyValueDisplayComponent {
2541
2567
  return `${size.toFixed(unitIndex > 0 ? 1 : 0)} ${units[unitIndex]}`;
2542
2568
  }
2543
2569
  /**
2544
- * Handle download button click
2570
+ * Handle download button click.
2571
+ *
2572
+ * Emits {@link binaryDownload} with the clicked value when a host listens. Without a listener the
2573
+ * component downloads the value itself through `FileDownloadService` — an authenticated blob
2574
+ * download with the user's bearer, never `window.open(rawUrl)`, which carries no token (AB#6179).
2545
2575
  */
2546
2576
  onDownload() {
2547
2577
  if (!this.value || typeof this.value !== 'object') {
2548
2578
  return;
2549
2579
  }
2550
2580
  const binaryValue = this.value;
2551
- if (binaryValue.downloadUri) {
2552
- window.open(binaryValue.downloadUri, '_blank', 'noopener,noreferrer');
2581
+ if (!binaryValue.downloadUri && !binaryValue.binaryId) {
2553
2582
  return;
2554
2583
  }
2555
- if (binaryValue.binaryId) {
2556
- const event = {
2557
- binaryId: binaryValue.binaryId,
2558
- filename: binaryValue.filename,
2559
- contentType: binaryValue.contentType
2560
- };
2561
- this.binaryDownload.emit(event);
2562
- }
2584
+ const event = {
2585
+ binaryId: binaryValue.binaryId,
2586
+ filename: binaryValue.filename,
2587
+ contentType: binaryValue.contentType,
2588
+ downloadUri: binaryValue.downloadUri
2589
+ };
2590
+ emitOrDownloadBinary(this.binaryDownload, event, this.injector);
2563
2591
  }
2564
2592
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PropertyValueDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2565
2593
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: PropertyValueDisplayComponent, isStandalone: true, selector: "mm-property-value-display", inputs: { value: "value", type: "type", displayMode: "displayMode", attributeName: "attributeName" }, outputs: { binaryDownload: "binaryDownload" }, usesOnChanges: true, ngImport: i0, template: `
@@ -2885,6 +2913,7 @@ class PropertyGridComponent {
2885
2913
  propertyChange = new EventEmitter();
2886
2914
  saveRequested = new EventEmitter();
2887
2915
  binaryDownload = new EventEmitter();
2916
+ injector = inject(Injector);
2888
2917
  // Component state
2889
2918
  filteredData = [];
2890
2919
  searchTerm = '';
@@ -3019,10 +3048,11 @@ class PropertyGridComponent {
3019
3048
  this.propertyChange.emit(changeEvent);
3020
3049
  }
3021
3050
  /**
3022
- * Handle binary download request from property value display
3051
+ * Handle binary download request from property value display: forwarded to the host when it binds
3052
+ * `(binaryDownload)`, otherwise downloaded here with the user's bearer (AB#6179).
3023
3053
  */
3024
3054
  onBinaryDownload(event) {
3025
- this.binaryDownload.emit(event);
3055
+ emitOrDownloadBinary(this.binaryDownload, event, this.injector);
3026
3056
  }
3027
3057
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: PropertyGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3028
3058
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: PropertyGridComponent, isStandalone: true, selector: "mm-property-grid", inputs: { data: "data", config: "config", showTypeColumn: "showTypeColumn", messages: "messages" }, outputs: { propertyChange: "propertyChange", saveRequested: "saveRequested", binaryDownload: "binaryDownload" }, usesOnChanges: true, ngImport: i0, template: `
@@ -4454,7 +4484,7 @@ class AttributeSelectorDialogComponent {
4454
4484
  </div>
4455
4485
  }
4456
4486
 
4457
- <div class="action-bar">
4487
+ <div class="mm-dialog-actions">
4458
4488
  <button kendoButton (click)="onCancel()">Cancel</button>
4459
4489
  <button
4460
4490
  kendoButton
@@ -4466,7 +4496,7 @@ class AttributeSelectorDialogComponent {
4466
4496
  </button>
4467
4497
  </div>
4468
4498
  </div>
4469
- `, isInline: true, styles: [":host{display:block;height:100%}.attribute-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.options-container{display:flex;align-items:center;gap:8px;font-size:.85rem;flex-shrink:0}.option-label{cursor:pointer}.depth-input{width:90px}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.action-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.separator{height:1px;background-color:var(--kendo-color-border, #dee2e6);margin:8px 0}.order-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.order-number{color:var(--kendo-color-primary, #ff6358);font-weight:600;margin-right:8px;min-width:24px;display:inline-block}.single-select-container{flex:1;min-height:0;display:flex;flex-direction:column}.single-select-container .attribute-grid{flex:1}.selector-editor{display:flex;flex-direction:column;gap:8px;flex-shrink:0;padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px}.selector-editor-title{font-size:.8rem;font-weight:600}.selector-editor-title code{font-weight:400}.selector-editor-fields{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.selector-kind{width:190px;flex-shrink:0}.selector-field{min-width:180px;flex:1}.action-bar{display:flex;justify-content:flex-end;gap:8px;flex-shrink:0;padding-top:8px;border-top:1px solid var(--kendo-color-border, #dee2e6)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: GridModule }, { kind: "component", type: i3.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode", "pinnable", "pinnedTopRows", "pinnedBottomRows", "isRowPinnable"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "rowPinChange", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "csvExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i3.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i5.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "component", type: i5.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: i5.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "ngmodule", type: DropDownListModule }, { kind: "component", type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: WindowModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4499
+ `, isInline: true, styles: [":host{display:block;height:100%}.attribute-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.options-container{display:flex;align-items:center;gap:8px;font-size:.85rem;flex-shrink:0}.option-label{cursor:pointer}.depth-input{width:90px}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.action-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.separator{height:1px;background-color:var(--kendo-color-border, #dee2e6);margin:8px 0}.order-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.order-number{color:var(--kendo-color-primary, #ff6358);font-weight:600;margin-right:8px;min-width:24px;display:inline-block}.single-select-container{flex:1;min-height:0;display:flex;flex-direction:column}.single-select-container .attribute-grid{flex:1}.selector-editor{display:flex;flex-direction:column;gap:8px;flex-shrink:0;padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px}.selector-editor-title{font-size:.8rem;font-weight:600}.selector-editor-title code{font-weight:400}.selector-editor-fields{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.selector-kind{width:190px;flex-shrink:0}.selector-field{min-width:180px;flex:1}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox]:not([ngNoCva])[formControlName],input[type=checkbox]:not([ngNoCva])[formControl],input[type=checkbox]:not([ngNoCva])[ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: GridModule }, { kind: "component", type: i3.GridComponent, selector: "kendo-grid", inputs: ["data", "pageSize", "height", "rowHeight", "adaptiveMode", "detailRowHeight", "skip", "scrollable", "selectable", "sort", "size", "trackBy", "filter", "group", "virtualColumns", "filterable", "sortable", "pageable", "groupable", "gridResizable", "rowReorderable", "navigable", "autoSize", "rowClass", "rowSticky", "rowSelected", "isRowSelectable", "cellSelected", "resizable", "reorderable", "loading", "columnMenu", "hideHeader", "showInactiveTools", "isDetailExpanded", "isGroupExpanded", "dataLayoutMode", "pinnable", "pinnedTopRows", "pinnedBottomRows", "isRowPinnable"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "rowPinChange", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "csvExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { kind: "directive", type: i3.SelectionDirective, selector: "[kendoGridSelectBy]" }, { kind: "component", type: i3.ColumnComponent, selector: "kendo-grid-column", inputs: ["field", "format", "sortable", "groupable", "editor", "filter", "filterVariant", "filterable", "editable"] }, { kind: "directive", type: i3.CellTemplateDirective, selector: "[kendoGridCellTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "directive", type: i5.TextBoxSuffixTemplateDirective, selector: "[kendoTextBoxSuffixTemplate]", inputs: ["showSeparator"] }, { kind: "component", type: i5.NumericTextBoxComponent, selector: "kendo-numerictextbox", inputs: ["focusableId", "disabled", "readonly", "title", "autoCorrect", "format", "max", "min", "decimals", "placeholder", "step", "spinners", "rangeValidation", "tabindex", "tabIndex", "changeValueOnScroll", "selectOnFocus", "value", "maxlength", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoNumericTextBox"] }, { kind: "directive", type: i5.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { kind: "ngmodule", type: DropDownListModule }, { kind: "component", type: i3$1.DropDownListComponent, selector: "kendo-dropdownlist", inputs: ["customIconClass", "showStickyHeader", "icon", "svgIcon", "loading", "data", "value", "textField", "valueField", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "defaultItem", "disabled", "itemDisabled", "readonly", "filterable", "virtual", "ignoreCase", "delay", "valuePrimitive", "tabindex", "tabIndex", "size", "rounded", "fillMode", "leftRightArrowsNavigation", "id"], outputs: ["valueChange", "filterChange", "selectionChange", "open", "opened", "close", "closed", "focus", "blur"], exportAs: ["kendoDropDownList"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: WindowModule }], changeDetection: i0.ChangeDetectionStrategy.Eager });
4470
4500
  }
4471
4501
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: AttributeSelectorDialogComponent, decorators: [{
4472
4502
  type: Component,
@@ -4746,7 +4776,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
4746
4776
  </div>
4747
4777
  }
4748
4778
 
4749
- <div class="action-bar">
4779
+ <div class="mm-dialog-actions">
4750
4780
  <button kendoButton (click)="onCancel()">Cancel</button>
4751
4781
  <button
4752
4782
  kendoButton
@@ -4758,7 +4788,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
4758
4788
  </button>
4759
4789
  </div>
4760
4790
  </div>
4761
- `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:block;height:100%}.attribute-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.options-container{display:flex;align-items:center;gap:8px;font-size:.85rem;flex-shrink:0}.option-label{cursor:pointer}.depth-input{width:90px}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.action-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.separator{height:1px;background-color:var(--kendo-color-border, #dee2e6);margin:8px 0}.order-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.order-number{color:var(--kendo-color-primary, #ff6358);font-weight:600;margin-right:8px;min-width:24px;display:inline-block}.single-select-container{flex:1;min-height:0;display:flex;flex-direction:column}.single-select-container .attribute-grid{flex:1}.selector-editor{display:flex;flex-direction:column;gap:8px;flex-shrink:0;padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px}.selector-editor-title{font-size:.8rem;font-weight:600}.selector-editor-title code{font-weight:400}.selector-editor-fields{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.selector-kind{width:190px;flex-shrink:0}.selector-field{min-width:180px;flex:1}.action-bar{display:flex;justify-content:flex-end;gap:8px;flex-shrink:0;padding-top:8px;border-top:1px solid var(--kendo-color-border, #dee2e6)}\n"] }]
4791
+ `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:block;height:100%}.attribute-selector-container{display:flex;flex-direction:column;height:100%;padding:16px 20px;box-sizing:border-box;gap:16px}.filter-container{display:flex;gap:12px;flex-shrink:0}.search-input{flex:1}.type-filter-dropdown{width:160px;flex-shrink:0}.options-container{display:flex;align-items:center;gap:8px;font-size:.85rem;flex-shrink:0}.option-label{cursor:pointer}.depth-input{width:90px}.lists-container{display:flex;gap:16px;flex:1;min-height:0}.list-section{flex:1;display:flex;flex-direction:column;min-height:0}.list-section h4{margin:0 0 10px;font-size:.85rem;font-weight:600;flex-shrink:0}.attribute-grid{border-radius:4px;flex:1;min-height:200px}.attribute-grid ::ng-deep .k-grid-table tbody tr{cursor:pointer}.action-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.separator{height:1px;background-color:var(--kendo-color-border, #dee2e6);margin:8px 0}.order-buttons{display:flex;flex-direction:column;gap:8px;justify-content:center;padding:32px 8px 0}.order-number{color:var(--kendo-color-primary, #ff6358);font-weight:600;margin-right:8px;min-width:24px;display:inline-block}.single-select-container{flex:1;min-height:0;display:flex;flex-direction:column}.single-select-container .attribute-grid{flex:1}.selector-editor{display:flex;flex-direction:column;gap:8px;flex-shrink:0;padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px}.selector-editor-title{font-size:.8rem;font-weight:600}.selector-editor-title code{font-weight:400}.selector-editor-fields{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.selector-kind{width:190px;flex-shrink:0}.selector-field{min-width:180px;flex:1}\n"] }]
4762
4792
  }] });
4763
4793
 
4764
4794
  class AttributeSelectorDialogService {
@@ -5064,12 +5094,12 @@ class RuntimeEntityVariableDialogComponent {
5064
5094
  </div>
5065
5095
  }
5066
5096
 
5067
- <div class="dialog-actions">
5097
+ <div class="mm-dialog-actions">
5068
5098
  <button kendoButton (click)="onCancel()" fillMode="outline">Cancel</button>
5069
5099
  <button kendoButton (click)="onOk()" themeColor="primary" [disabled]="!isValid()">OK</button>
5070
5100
  </div>
5071
5101
  </div>
5072
- `, isInline: true, styles: [".dialog-content{display:flex;flex-direction:column;gap:16px;padding:16px 20px}.form-row{display:flex;flex-direction:column;gap:4px}.form-label{font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.mappings-grid{border:1px solid var(--kendo-color-border, #e0e0e0);border-radius:4px;background:var(--kendo-color-surface-alt, #fafafa)}.grid-header{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;background:var(--kendo-color-surface, #f5f5f5);border-bottom:1px solid var(--kendo-color-border, #e0e0e0);font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.grid-row{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;align-items:start;border-bottom:1px solid var(--kendo-color-border, #e0e0e0)}.grid-row:last-child{border-bottom:none}.col-name{display:flex;flex-direction:column;gap:2px}.col-path,.col-type{font-size:13px;padding-top:6px;color:var(--kendo-color-on-app-surface, #424242)}.col-actions{display:flex;justify-content:center;padding-top:2px}.error-text{font-size:11px;color:var(--kendo-color-error, #f44336)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:8px;border-top:1px solid var(--kendo-color-border, #e0e0e0)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "ngmodule", type: GridModule }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: CkTypeSelectorInputComponent, selector: "mm-ck-type-selector-input", inputs: ["placeholder", "minSearchLength", "maxResults", "debounceMs", "ckModelIds", "allowAbstract", "dialogTitle", "advancedSearchLabel", "derivedFromRtCkTypeId", "messages", "dialogMessages", "disabled", "required"], outputs: ["ckTypeSelected", "ckTypeCleared"] }, { kind: "component", type: EntitySelectInputComponent, selector: "mm-entity-select-input", inputs: ["dataSource", "placeholder", "minSearchLength", "maxResults", "debounceMs", "prefix", "initialDisplayValue", "dialogDataSource", "dialogTitle", "multiSelect", "advancedSearchLabel", "dialogMessages", "messages", "disabled", "required"], outputs: ["entitySelected", "entityCleared", "entitiesSelected"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
5102
+ `, isInline: true, styles: [".dialog-content{display:flex;flex-direction:column;gap:16px;padding:16px 20px}.form-row{display:flex;flex-direction:column;gap:4px}.form-label{font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.mappings-grid{border:1px solid var(--kendo-color-border, #e0e0e0);border-radius:4px;background:var(--kendo-color-surface-alt, #fafafa)}.grid-header{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;background:var(--kendo-color-surface, #f5f5f5);border-bottom:1px solid var(--kendo-color-border, #e0e0e0);font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.grid-row{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;align-items:start;border-bottom:1px solid var(--kendo-color-border, #e0e0e0)}.grid-row:last-child{border-bottom:none}.col-name{display:flex;flex-direction:column;gap:2px}.col-path,.col-type{font-size:13px;padding-top:6px;color:var(--kendo-color-on-app-surface, #424242)}.col-actions{display:flex;justify-content:center;padding-top:2px}.error-text{font-size:11px;color:var(--kendo-color-error, #f44336)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: InputsModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "ngmodule", type: GridModule }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: CkTypeSelectorInputComponent, selector: "mm-ck-type-selector-input", inputs: ["placeholder", "minSearchLength", "maxResults", "debounceMs", "ckModelIds", "allowAbstract", "dialogTitle", "advancedSearchLabel", "derivedFromRtCkTypeId", "messages", "dialogMessages", "disabled", "required"], outputs: ["ckTypeSelected", "ckTypeCleared"] }, { kind: "component", type: EntitySelectInputComponent, selector: "mm-entity-select-input", inputs: ["dataSource", "placeholder", "minSearchLength", "maxResults", "debounceMs", "prefix", "initialDisplayValue", "dialogDataSource", "dialogTitle", "multiSelect", "advancedSearchLabel", "dialogMessages", "messages", "disabled", "required"], outputs: ["entitySelected", "entityCleared", "entitiesSelected"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
5073
5103
  }
5074
5104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: RuntimeEntityVariableDialogComponent, decorators: [{
5075
5105
  type: Component,
@@ -5157,12 +5187,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
5157
5187
  </div>
5158
5188
  }
5159
5189
 
5160
- <div class="dialog-actions">
5190
+ <div class="mm-dialog-actions">
5161
5191
  <button kendoButton (click)="onCancel()" fillMode="outline">Cancel</button>
5162
5192
  <button kendoButton (click)="onOk()" themeColor="primary" [disabled]="!isValid()">OK</button>
5163
5193
  </div>
5164
5194
  </div>
5165
- `, changeDetection: ChangeDetectionStrategy.Eager, styles: [".dialog-content{display:flex;flex-direction:column;gap:16px;padding:16px 20px}.form-row{display:flex;flex-direction:column;gap:4px}.form-label{font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.mappings-grid{border:1px solid var(--kendo-color-border, #e0e0e0);border-radius:4px;background:var(--kendo-color-surface-alt, #fafafa)}.grid-header{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;background:var(--kendo-color-surface, #f5f5f5);border-bottom:1px solid var(--kendo-color-border, #e0e0e0);font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.grid-row{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;align-items:start;border-bottom:1px solid var(--kendo-color-border, #e0e0e0)}.grid-row:last-child{border-bottom:none}.col-name{display:flex;flex-direction:column;gap:2px}.col-path,.col-type{font-size:13px;padding-top:6px;color:var(--kendo-color-on-app-surface, #424242)}.col-actions{display:flex;justify-content:center;padding-top:2px}.error-text{font-size:11px;color:var(--kendo-color-error, #f44336)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:8px;border-top:1px solid var(--kendo-color-border, #e0e0e0)}\n"] }]
5195
+ `, changeDetection: ChangeDetectionStrategy.Eager, styles: [".dialog-content{display:flex;flex-direction:column;gap:16px;padding:16px 20px}.form-row{display:flex;flex-direction:column;gap:4px}.form-label{font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.mappings-grid{border:1px solid var(--kendo-color-border, #e0e0e0);border-radius:4px;background:var(--kendo-color-surface-alt, #fafafa)}.grid-header{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;background:var(--kendo-color-surface, #f5f5f5);border-bottom:1px solid var(--kendo-color-border, #e0e0e0);font-size:12px;font-weight:600;color:var(--kendo-color-subtle, #666)}.grid-row{display:grid;grid-template-columns:1fr 1fr 100px 40px;gap:.5rem;padding:.5rem .75rem;align-items:start;border-bottom:1px solid var(--kendo-color-border, #e0e0e0)}.grid-row:last-child{border-bottom:none}.col-name{display:flex;flex-direction:column;gap:2px}.col-path,.col-type{font-size:13px;padding-top:6px;color:var(--kendo-color-on-app-surface, #424242)}.col-actions{display:flex;justify-content:center;padding-top:2px}.error-text{font-size:11px;color:var(--kendo-color-error, #f44336)}\n"] }]
5166
5196
  }] });
5167
5197
 
5168
5198
  class RuntimeEntityVariableDialogService {
@@ -8117,14 +8147,14 @@ class EntitySelectorDialogComponent {
8117
8147
  }
8118
8148
  </div>
8119
8149
 
8120
- <div class="dialog-actions">
8150
+ <div class="mm-dialog-actions">
8121
8151
  <button kendoButton (click)="onCancel()">Cancel</button>
8122
8152
  <button kendoButton themeColor="primary" [disabled]="!selectedEntity" (click)="onConfirm()">
8123
8153
  Select
8124
8154
  </button>
8125
8155
  </div>
8126
8156
  </div>
8127
- `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0}.entity-selector{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;box-sizing:border-box}.entity-selector-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.tree-section{flex:1;min-height:0;overflow:auto;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface, #ffffff)}.selection-preview{padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface-alt, #f8f9fa);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.preview-row{display:flex;gap:8px}.preview-row .preview-label{font-weight:600;min-width:45px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem}.preview-row .preview-value{font-size:.85rem}.preview-row .monospace{font-family:monospace}.selection-hint{text-align:center;padding:8px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem;flex-shrink:0}.dialog-actions{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:10px 14px;border-top:1px solid var(--kendo-color-border, #dee2e6);background:var(--kendo-color-surface, transparent)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: TreeComponent, selector: "mm-tree-view", inputs: ["dataSource"], outputs: ["nodeSelected", "nodeClick", "nodeDoubleClick", "nodeDrop", "expand", "collapse"] }, { kind: "component", type: PerspectiveSwitcherComponent, selector: "mm-perspective-switcher", inputs: ["perspectives", "activeKey", "label"], outputs: ["perspectiveChange"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
8157
+ `, isInline: true, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0}.entity-selector{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;box-sizing:border-box}.entity-selector-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.tree-section{flex:1;min-height:0;overflow:auto;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface, #ffffff)}.selection-preview{padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface-alt, #f8f9fa);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.preview-row{display:flex;gap:8px}.preview-row .preview-label{font-weight:600;min-width:45px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem}.preview-row .preview-value{font-size:.85rem}.preview-row .monospace{font-family:monospace}.selection-hint{text-align:center;padding:8px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem;flex-shrink:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: TreeComponent, selector: "mm-tree-view", inputs: ["dataSource"], outputs: ["nodeSelected", "nodeClick", "nodeDoubleClick", "nodeDrop", "expand", "collapse"] }, { kind: "component", type: PerspectiveSwitcherComponent, selector: "mm-perspective-switcher", inputs: ["perspectives", "activeKey", "label"], outputs: ["perspectiveChange"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
8128
8158
  }
8129
8159
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: EntitySelectorDialogComponent, decorators: [{
8130
8160
  type: Component,
@@ -8171,14 +8201,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
8171
8201
  }
8172
8202
  </div>
8173
8203
 
8174
- <div class="dialog-actions">
8204
+ <div class="mm-dialog-actions">
8175
8205
  <button kendoButton (click)="onCancel()">Cancel</button>
8176
8206
  <button kendoButton themeColor="primary" [disabled]="!selectedEntity" (click)="onConfirm()">
8177
8207
  Select
8178
8208
  </button>
8179
8209
  </div>
8180
8210
  </div>
8181
- `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0}.entity-selector{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;box-sizing:border-box}.entity-selector-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.tree-section{flex:1;min-height:0;overflow:auto;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface, #ffffff)}.selection-preview{padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface-alt, #f8f9fa);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.preview-row{display:flex;gap:8px}.preview-row .preview-label{font-weight:600;min-width:45px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem}.preview-row .preview-value{font-size:.85rem}.preview-row .monospace{font-family:monospace}.selection-hint{text-align:center;padding:8px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem;flex-shrink:0}.dialog-actions{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:10px 14px;border-top:1px solid var(--kendo-color-border, #dee2e6);background:var(--kendo-color-surface, transparent)}\n"] }]
8211
+ `, changeDetection: ChangeDetectionStrategy.Eager, styles: [":host{display:flex;flex-direction:column;height:100%;min-height:0}.entity-selector{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;box-sizing:border-box}.entity-selector-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.tree-section{flex:1;min-height:0;overflow:auto;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface, #ffffff)}.selection-preview{padding:10px 12px;border:1px solid var(--kendo-color-border, #dee2e6);border-radius:4px;background:var(--kendo-color-surface-alt, #f8f9fa);display:flex;flex-direction:column;gap:4px;flex-shrink:0}.preview-row{display:flex;gap:8px}.preview-row .preview-label{font-weight:600;min-width:45px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem}.preview-row .preview-value{font-size:.85rem}.preview-row .monospace{font-family:monospace}.selection-hint{text-align:center;padding:8px;color:var(--kendo-color-subtle, #6c757d);font-size:.85rem;flex-shrink:0}\n"] }]
8182
8212
  }], propDecorators: { tree: [{
8183
8213
  type: ViewChild,
8184
8214
  args: ['tree']
@@ -9759,41 +9789,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
9759
9789
  }]
9760
9790
  }], ctorParameters: () => [{ type: i1$3.Apollo }] });
9761
9791
 
9762
- const GetBinaryInfoDocumentDto = gql `
9763
- query getBinaryInfo($rtId: OctoObjectId!) {
9764
- runtime {
9765
- systemReportingFileSystemItem(rtId: $rtId) {
9766
- items {
9767
- rtId
9768
- ckTypeId
9769
- name
9770
- content {
9771
- binaryId
9772
- size
9773
- contentType
9774
- filename
9775
- downloadUri
9776
- }
9777
- }
9778
- }
9779
- }
9780
- }
9781
- `;
9782
- class GetBinaryInfoDtoGQL extends i1$3.Query {
9783
- document = GetBinaryInfoDocumentDto;
9784
- constructor(apollo) {
9785
- super(apollo);
9786
- }
9787
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: GetBinaryInfoDtoGQL, deps: [{ token: i1$3.Apollo }], target: i0.ɵɵFactoryTarget.Injectable });
9788
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: GetBinaryInfoDtoGQL, providedIn: 'root' });
9789
- }
9790
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: GetBinaryInfoDtoGQL, decorators: [{
9791
- type: Injectable,
9792
- args: [{
9793
- providedIn: 'root'
9794
- }]
9795
- }], ctorParameters: () => [{ type: i1$3.Apollo }] });
9796
-
9797
9792
  class EntityAssociationsDataSourceDirective extends OctoGraphQlDataSource {
9798
9793
  getAssociationsGQL = inject(GetRuntimeEntityAssociationsByIdDtoGQL);
9799
9794
  rtId = null;
@@ -9983,7 +9978,7 @@ const DEFAULT_RUNTIME_BROWSER_MESSAGES = {
9983
9978
  copiedToClipboard: 'copied to clipboard',
9984
9979
  failedToCopyToClipboard: 'Failed to copy to clipboard',
9985
9980
  downloadNotAvailable: 'Download not available for this file',
9986
- failedToLoadDownloadInfo: 'Failed to load download information',
9981
+ failedToLoadDownloadInfo: 'Failed to download the file',
9987
9982
  missingRequiredIdentifiers: 'Missing required identifiers to create an entity.',
9988
9983
  failedToCreateEntity: 'Failed to create entity. Please try again.',
9989
9984
  failedToUpdateEntity: 'Failed to update entity. Please try again.',
@@ -10332,7 +10327,7 @@ class EntityDetailViewComponent {
10332
10327
  associationsDataSource;
10333
10328
  notificationService = inject(NotificationService);
10334
10329
  propertyConverter = inject(PropertyConverterService);
10335
- getBinaryInfoGQL = inject(GetBinaryInfoDtoGQL);
10330
+ fileDownloadService = inject(FileDownloadService);
10336
10331
  _messages = {
10337
10332
  ...DEFAULT_RUNTIME_BROWSER_MESSAGES,
10338
10333
  };
@@ -10547,25 +10542,20 @@ class EntityDetailViewComponent {
10547
10542
  }
10548
10543
  /**
10549
10544
  * Handle binary download request from property grid.
10550
- * Loads the full binary info including downloadUri and opens the download.
10545
+ *
10546
+ * Downloads the clicked attribute's own value — whatever CK type owns it (Basic File,
10547
+ * System.Communication binaries, FileSystemItem, …) and whether or not the tenant has
10548
+ * System.Reporting. The value is the stored binary info `{ binaryId, filename, contentType, size }`
10549
+ * (plus `downloadUri` when a typed query supplied one); `FileDownloadService` fetches it with the
10550
+ * user's bearer and saves it under its real file name (AB#6179, decision D9).
10551
10551
  */
10552
- async onBinaryDownload(_event) {
10553
- if (!this.entity?.rtId) {
10554
- console.warn('Cannot download: no entity rtId available');
10555
- return;
10556
- }
10552
+ async onBinaryDownload(event) {
10557
10553
  try {
10558
- // Load binary info with downloadUri using the entity's rtId
10559
- const result = await firstValueFrom(this.getBinaryInfoGQL.fetch({
10560
- variables: { rtId: this.entity.rtId },
10561
- }));
10562
- const item = result.data?.runtime?.systemReportingFileSystemItem?.items?.[0];
10563
- if (item?.content?.downloadUri) {
10564
- // Open download in new tab
10565
- window.open(item.content.downloadUri, '_blank', 'noopener,noreferrer');
10566
- }
10567
- else {
10568
- console.warn('No downloadUri found for binary');
10554
+ await this.fileDownloadService.downloadBinary(event);
10555
+ }
10556
+ catch (error) {
10557
+ if (error instanceof BinaryDownloadUnavailableError) {
10558
+ console.warn('Binary download not available:', error.message);
10569
10559
  this.notificationService.show({
10570
10560
  content: this._messages.downloadNotAvailable,
10571
10561
  type: { style: 'warning', icon: true },
@@ -10573,10 +10563,9 @@ class EntityDetailViewComponent {
10573
10563
  hideAfter: 3000,
10574
10564
  animation: { type: 'fade', duration: 400 },
10575
10565
  });
10566
+ return;
10576
10567
  }
10577
- }
10578
- catch (error) {
10579
- console.error('Failed to load binary info:', error);
10568
+ console.error('Binary download failed:', error);
10580
10569
  this.notificationService.show({
10581
10570
  content: this._messages.failedToLoadDownloadInfo,
10582
10571
  type: { style: 'error', icon: true },
@@ -18423,13 +18412,13 @@ class BulkMappingDialogComponent {
18423
18412
  </div>
18424
18413
  </div>
18425
18414
  </div>
18426
- <div class="dialog-actions">
18415
+ <div class="mm-dialog-actions">
18427
18416
  <button kendoButton (click)="onCancel()">Cancel</button>
18428
18417
  <button kendoButton themeColor="primary" (click)="onSave()"
18429
18418
  [disabled]="!isValid()">Create {{ sources().length }} mappings</button>
18430
18419
  </div>
18431
18420
  </div>
18432
- `, isInline: true, styles: [".bulk-mapping{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.bulk-mapping-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.source-summary{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.source-summary .source-count{font-weight:600;font-size:.85rem}.source-summary .source-preview{font-size:.72rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}.dialog-actions{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:10px 18px;border-top:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 70%,transparent)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i3$1.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "ngmodule", type: SwitchModule }, { kind: "component", type: i5.SwitchComponent, selector: "kendo-switch", inputs: ["focusableId", "onLabel", "offLabel", "checked", "disabled", "readonly", "tabindex", "size", "thumbRounded", "trackRounded", "tabIndex"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoSwitch"] }, { kind: "ngmodule", type: TextBoxModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: DataPointPickerComponent, selector: "mm-data-point-picker", inputs: ["entity", "entityRtId", "entityCkTypeId", "value", "placeholder", "disabled"], outputs: ["valueChange", "filterChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18421
+ `, isInline: true, styles: [".bulk-mapping{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.bulk-mapping-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.source-summary{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.source-summary .source-count{font-weight:600;font-size:.85rem}.source-summary .source-preview{font-size:.72rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i3$1.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "ngmodule", type: SwitchModule }, { kind: "component", type: i5.SwitchComponent, selector: "kendo-switch", inputs: ["focusableId", "onLabel", "offLabel", "checked", "disabled", "readonly", "tabindex", "size", "thumbRounded", "trackRounded", "tabIndex"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoSwitch"] }, { kind: "ngmodule", type: TextBoxModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: DataPointPickerComponent, selector: "mm-data-point-picker", inputs: ["entity", "entityRtId", "entityCkTypeId", "value", "placeholder", "disabled"], outputs: ["valueChange", "filterChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
18433
18422
  }
18434
18423
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: BulkMappingDialogComponent, decorators: [{
18435
18424
  type: Component,
@@ -18549,13 +18538,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
18549
18538
  </div>
18550
18539
  </div>
18551
18540
  </div>
18552
- <div class="dialog-actions">
18541
+ <div class="mm-dialog-actions">
18553
18542
  <button kendoButton (click)="onCancel()">Cancel</button>
18554
18543
  <button kendoButton themeColor="primary" (click)="onSave()"
18555
18544
  [disabled]="!isValid()">Create {{ sources().length }} mappings</button>
18556
18545
  </div>
18557
18546
  </div>
18558
- `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".bulk-mapping{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.bulk-mapping-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.source-summary{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.source-summary .source-count{font-weight:600;font-size:.85rem}.source-summary .source-preview{font-size:.72rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}.dialog-actions{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:10px 18px;border-top:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 70%,transparent)}\n"] }]
18547
+ `, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".bulk-mapping{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.bulk-mapping-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.source-summary{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.source-summary .source-count{font-weight:600;font-size:.85rem}.source-summary .source-preview{font-size:.72rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}\n"] }]
18559
18548
  }], propDecorators: { sourcePicker: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DataPointPickerComponent), { isSignal: true }] }] } });
18560
18549
 
18561
18550
  const DIALOG_KEY$1 = 'bulk-mapping-dialog';
@@ -19686,13 +19675,13 @@ class MappingEditDialogComponent {
19686
19675
  </div>
19687
19676
 
19688
19677
  </div>
19689
- <div class="dialog-actions">
19678
+ <div class="mm-dialog-actions">
19690
19679
  <button kendoButton (click)="onCancel()">Cancel</button>
19691
19680
  <button kendoButton themeColor="primary" (click)="onSave()"
19692
19681
  [disabled]="!isValid()">Save</button>
19693
19682
  </div>
19694
19683
  </div>
19695
- `, isInline: true, styles: [".mapping-edit{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.mapping-edit-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.dialog-actions{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:10px 18px;border-top:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 70%,transparent)}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.attribute-option{display:flex;justify-content:space-between;align-items:center;width:100%;gap:8px}.attribute-option .attribute-path{flex:1;font-family:monospace;font-size:.85rem}.attribute-option .attribute-type{font-size:.7rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f0f0f0)) 80%,transparent);color:var(--theme-text-secondary, var(--kendo-color-subtle, #888))}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i3$1.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "directive", type: i3$1.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "ngmodule", type: SVGIconModule }, { kind: "ngmodule", type: SwitchModule }, { kind: "component", type: i5.SwitchComponent, selector: "kendo-switch", inputs: ["focusableId", "onLabel", "offLabel", "checked", "disabled", "readonly", "tabindex", "size", "thumbRounded", "trackRounded", "tabIndex"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoSwitch"] }, { kind: "ngmodule", type: TextBoxModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: DataPointPickerComponent, selector: "mm-data-point-picker", inputs: ["entity", "entityRtId", "entityCkTypeId", "value", "placeholder", "disabled"], outputs: ["valueChange", "filterChange"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
19684
+ `, isInline: true, styles: [".mapping-edit{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.mapping-edit-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.attribute-option{display:flex;justify-content:space-between;align-items:center;width:100%;gap:8px}.attribute-option .attribute-path{flex:1;font-family:monospace;font-size:.85rem}.attribute-option .attribute-type{font-size:.7rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f0f0f0)) 80%,transparent);color:var(--theme-text-secondary, var(--kendo-color-subtle, #888))}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i1$1.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconPosition", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: ComboBoxModule }, { kind: "component", type: i3$1.ComboBoxComponent, selector: "kendo-combobox", inputs: ["icon", "svgIcon", "inputAttributes", "showStickyHeader", "focusableId", "allowCustom", "data", "value", "textField", "valueField", "valuePrimitive", "valueNormalizer", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "suggest", "clearButton", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode"], outputs: ["valueChange", "selectionChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur", "escape"], exportAs: ["kendoComboBox"] }, { kind: "directive", type: i3$1.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "ngmodule", type: SVGIconModule }, { kind: "ngmodule", type: SwitchModule }, { kind: "component", type: i5.SwitchComponent, selector: "kendo-switch", inputs: ["focusableId", "onLabel", "offLabel", "checked", "disabled", "readonly", "tabindex", "size", "thumbRounded", "trackRounded", "tabIndex"], outputs: ["focus", "blur", "valueChange"], exportAs: ["kendoSwitch"] }, { kind: "ngmodule", type: TextBoxModule }, { kind: "component", type: i5.TextBoxComponent, selector: "kendo-textbox", inputs: ["focusableId", "title", "type", "disabled", "readonly", "tabindex", "value", "selectOnFocus", "showSuccessIcon", "showErrorIcon", "clearButton", "successIcon", "successSvgIcon", "errorIcon", "errorSvgIcon", "clearButtonIcon", "clearButtonSvgIcon", "size", "rounded", "fillMode", "tabIndex", "placeholder", "maxlength", "inputAttributes"], outputs: ["valueChange", "inputFocus", "inputBlur", "focus", "blur"], exportAs: ["kendoTextBox"] }, { kind: "component", type: DataPointPickerComponent, selector: "mm-data-point-picker", inputs: ["entity", "entityRtId", "entityCkTypeId", "value", "placeholder", "disabled"], outputs: ["valueChange", "filterChange"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
19696
19685
  }
19697
19686
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: MappingEditDialogComponent, decorators: [{
19698
19687
  type: Component,
@@ -19868,13 +19857,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
19868
19857
  </div>
19869
19858
 
19870
19859
  </div>
19871
- <div class="dialog-actions">
19860
+ <div class="mm-dialog-actions">
19872
19861
  <button kendoButton (click)="onCancel()">Cancel</button>
19873
19862
  <button kendoButton themeColor="primary" (click)="onSave()"
19874
19863
  [disabled]="!isValid()">Save</button>
19875
19864
  </div>
19876
19865
  </div>
19877
- `, changeDetection: ChangeDetectionStrategy.Eager, styles: [".mapping-edit{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.mapping-edit-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.dialog-actions{flex:0 0 auto;display:flex;gap:8px;justify-content:flex-end;padding:10px 18px;border-top:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 70%,transparent)}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.attribute-option{display:flex;justify-content:space-between;align-items:center;width:100%;gap:8px}.attribute-option .attribute-path{flex:1;font-family:monospace;font-size:.85rem}.attribute-option .attribute-type{font-size:.7rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f0f0f0)) 80%,transparent);color:var(--theme-text-secondary, var(--kendo-color-subtle, #888))}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}\n"] }]
19866
+ `, changeDetection: ChangeDetectionStrategy.Eager, styles: [".mapping-edit{display:flex;flex-direction:column;height:100%;box-sizing:border-box}.mapping-edit-body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:14px}.field-row{display:flex;flex-direction:column;gap:4px}.field-row label{font-size:.72rem;font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.field-row .hint{font-size:.7rem;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));font-style:italic}.field-row.inline{flex-direction:row;align-items:center;gap:8px}.entity-display{display:flex;flex-direction:column;gap:2px;padding:6px 10px;border:1px solid var(--theme-border-subtle, var(--kendo-color-border, #dee2e6));border-radius:4px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f8f9fa)) 65%,transparent)}.entity-display.empty{flex-direction:row;align-items:center;justify-content:space-between}.entity-main{display:flex;align-items:center;gap:8px}.entity-main .entity-name{flex:1;font-weight:600;font-size:.9rem}.entity-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-size:.7rem;font-family:monospace;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d));word-break:break-all}.entity-meta .sep{opacity:.7}.combo-row{display:flex;align-items:stretch;gap:4px}.combo-row kendo-combobox{flex:1}.attribute-option{display:flex;justify-content:space-between;align-items:center;width:100%;gap:8px}.attribute-option .attribute-path{flex:1;font-family:monospace;font-size:.85rem}.attribute-option .attribute-type{font-size:.7rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--theme-bg-elevated, var(--kendo-color-surface-alt, #f0f0f0)) 80%,transparent);color:var(--theme-text-secondary, var(--kendo-color-subtle, #888))}.loading-pill{margin-left:6px;font-size:.65rem;padding:1px 6px;border-radius:8px;background:color-mix(in srgb,var(--kendo-color-info, #0dcaf0) 18%,transparent);color:var(--kendo-color-info, #0dcaf0);text-transform:none;font-style:italic}.expression-preview{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:4px 10px;border-radius:4px;font-size:.75rem;background:color-mix(in srgb,var(--kendo-color-success, #28a745) 10%,transparent)}.expression-preview.expression-preview-error{background:color-mix(in srgb,var(--kendo-color-error, #dc3545) 10%,transparent)}.expression-preview .preview-label{font-weight:600;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview code{font-family:monospace}.expression-preview .preview-arrow{opacity:.7}.expression-preview .preview-note{font-style:italic;color:var(--theme-text-secondary, var(--kendo-color-subtle, #6c757d))}.expression-preview .preview-error-text{color:var(--kendo-color-error, #dc3545)}\n"] }]
19878
19867
  }], propDecorators: { sourcePicker: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DataPointPickerComponent), { isSignal: true }] }] } });
19879
19868
  /**
19880
19869
  * Client-side filter mirroring the substring search Kendo's combobox does