@meshmakers/octo-ui 3.3.460 → 3.3.470
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/fesm2022/meshmakers-octo-ui.mjs +313 -181
- package/fesm2022/meshmakers-octo-ui.mjs.map +1 -1
- package/package.json +13 -13
- package/types/meshmakers-octo-ui.d.ts +74 -29
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Component, Injectable, EventEmitter, Output, Input, forwardRef, ViewChild, makeEnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { AttributeSelectorService, CkTypeAttributeService, CkTypeSelectorService, SearchFilterTypesDto, SortOrdersDto, FieldFilterOperatorsDto,
|
|
3
|
+
import { AttributeSelectorService, AttributeValueTypeDto as AttributeValueTypeDto$1, CkTypeAttributeService, CkTypeSelectorService, SearchFilterTypesDto, SortOrdersDto, FieldFilterOperatorsDto, provideOctoServices } from '@meshmakers/octo-services';
|
|
4
4
|
import { DataSourceTyped, HierarchyDataSourceBase, NotificationDisplayService, provideMmSharedUi } from '@meshmakers/shared-ui';
|
|
5
5
|
import { provideMmSharedAuth } from '@meshmakers/shared-auth';
|
|
6
6
|
import * as i1 from '@angular/common';
|
|
@@ -15,11 +15,11 @@ import * as i5 from '@progress/kendo-angular-inputs';
|
|
|
15
15
|
import { InputsModule } from '@progress/kendo-angular-inputs';
|
|
16
16
|
import * as i3$1 from '@progress/kendo-angular-dropdowns';
|
|
17
17
|
import { DropDownListModule, DropDownsModule, AutoCompleteModule } from '@progress/kendo-angular-dropdowns';
|
|
18
|
-
import * as i5$
|
|
18
|
+
import * as i5$1 from '@progress/kendo-angular-icons';
|
|
19
19
|
import { IconsModule, SVGIconModule } from '@progress/kendo-angular-icons';
|
|
20
20
|
import { searchIcon, sortAscSmallIcon, sortDescSmallIcon, chevronRightIcon, chevronDownIcon, downloadIcon, fileIcon, folderIcon, calendarIcon, checkboxCheckedIcon, listUnorderedIcon, filterClearIcon, arrowRightIcon, arrowLeftIcon, chevronDoubleRightIcon, chevronDoubleLeftIcon, arrowUpIcon, arrowDownIcon, plusIcon, minusIcon, trashIcon, dollarIcon, copyIcon } from '@progress/kendo-svg-icons';
|
|
21
|
-
import * as
|
|
22
|
-
import { DialogContentBase, DialogRef, DialogModule, DialogService } from '@progress/kendo-angular-dialog';
|
|
21
|
+
import * as i7 from '@progress/kendo-angular-dialog';
|
|
22
|
+
import { WindowRef, WindowModule, WindowService, WindowCloseResult, DialogContentBase, DialogRef, DialogModule, DialogService } from '@progress/kendo-angular-dialog';
|
|
23
23
|
import { Subject, firstValueFrom, of, forkJoin, Subscription } from 'rxjs';
|
|
24
24
|
import { debounceTime, distinctUntilChanged, switchMap, map, tap, catchError } from 'rxjs/operators';
|
|
25
25
|
import { LoaderModule } from '@progress/kendo-angular-indicators';
|
|
@@ -29,16 +29,16 @@ import { DateInputsModule } from '@progress/kendo-angular-dateinputs';
|
|
|
29
29
|
import { PopupModule } from '@progress/kendo-angular-popup';
|
|
30
30
|
import { IntlModule } from '@progress/kendo-angular-intl';
|
|
31
31
|
|
|
32
|
-
class AttributeSortSelectorDialogComponent
|
|
32
|
+
class AttributeSortSelectorDialogComponent {
|
|
33
|
+
windowRef = inject(WindowRef);
|
|
33
34
|
attributeService = inject(AttributeSelectorService);
|
|
34
35
|
searchSubject = new Subject();
|
|
35
|
-
constructor() {
|
|
36
|
-
super(inject(DialogRef));
|
|
37
|
-
}
|
|
38
36
|
// Dialog data
|
|
37
|
+
data;
|
|
39
38
|
ckTypeId;
|
|
40
39
|
searchText = '';
|
|
41
40
|
currentSortOrder = 'standard';
|
|
41
|
+
selectedValueTypeFilter = null;
|
|
42
42
|
// Grid data
|
|
43
43
|
availableAttributes = [];
|
|
44
44
|
selectedAttributes = [];
|
|
@@ -58,27 +58,31 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
58
58
|
{ text: 'Ascending', value: 'ascending' },
|
|
59
59
|
{ text: 'Descending', value: 'descending' }
|
|
60
60
|
];
|
|
61
|
+
valueTypeOptions = [
|
|
62
|
+
{ text: 'All Types', value: null },
|
|
63
|
+
{ text: 'String', value: AttributeValueTypeDto$1.StringDto },
|
|
64
|
+
{ text: 'Integer', value: AttributeValueTypeDto$1.IntegerDto },
|
|
65
|
+
{ text: 'Double', value: AttributeValueTypeDto$1.DoubleDto },
|
|
66
|
+
{ text: 'Boolean', value: AttributeValueTypeDto$1.BooleanDto },
|
|
67
|
+
{ text: 'DateTime', value: AttributeValueTypeDto$1.DateTimeDto },
|
|
68
|
+
{ text: 'DateTimeOffset', value: AttributeValueTypeDto$1.DateTimeOffsetDto },
|
|
69
|
+
{ text: 'Enum', value: AttributeValueTypeDto$1.EnumDto },
|
|
70
|
+
{ text: 'TimeSpan', value: AttributeValueTypeDto$1.TimeSpanDto }
|
|
71
|
+
];
|
|
61
72
|
// Icons
|
|
62
73
|
searchIcon = searchIcon;
|
|
63
74
|
sortAscIcon = sortAscSmallIcon;
|
|
64
75
|
sortDescIcon = sortDescSmallIcon;
|
|
65
76
|
ngOnInit() {
|
|
66
77
|
// Get dialog data
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
this.
|
|
71
|
-
|
|
72
|
-
console.log('Set ckTypeId:', this.ckTypeId);
|
|
73
|
-
if (data.selectedAttributes && data.selectedAttributes.length > 0) {
|
|
74
|
-
this.selectedAttributes = [...data.selectedAttributes];
|
|
78
|
+
if (this.data) {
|
|
79
|
+
this.ckTypeId = this.data.ckTypeId;
|
|
80
|
+
this.dialogTitle = this.data.dialogTitle || 'Select Attributes with Sort Order';
|
|
81
|
+
if (this.data.selectedAttributes && this.data.selectedAttributes.length > 0) {
|
|
82
|
+
this.selectedAttributes = [...this.data.selectedAttributes];
|
|
75
83
|
this.updateSelectedGrid();
|
|
76
|
-
console.log('Pre-populated selectedAttributes:', this.selectedAttributes);
|
|
77
84
|
}
|
|
78
85
|
}
|
|
79
|
-
else {
|
|
80
|
-
console.warn('No dialog data received');
|
|
81
|
-
}
|
|
82
86
|
// Set up search debouncing
|
|
83
87
|
this.searchSubject.pipe(debounceTime(300), distinctUntilChanged()).subscribe(searchText => {
|
|
84
88
|
this.loadAvailableAttributes(searchText);
|
|
@@ -86,8 +90,8 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
86
90
|
// Load initial data
|
|
87
91
|
this.loadAvailableAttributes();
|
|
88
92
|
}
|
|
89
|
-
loadAvailableAttributes(
|
|
90
|
-
this.attributeService.getAvailableAttributes(this.ckTypeId,
|
|
93
|
+
loadAvailableAttributes(searchTerm) {
|
|
94
|
+
this.attributeService.getAvailableAttributes(this.ckTypeId, undefined, undefined, undefined, this.selectedValueTypeFilter || undefined, searchTerm || undefined).subscribe(result => {
|
|
91
95
|
// Filter out already selected attributes
|
|
92
96
|
const selectedPaths = new Set(this.selectedAttributes.map(a => a.attributePath));
|
|
93
97
|
this.availableAttributes = result.items.filter(item => !selectedPaths.has(item.attributePath));
|
|
@@ -97,6 +101,9 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
97
101
|
onSearchChange(value) {
|
|
98
102
|
this.searchSubject.next(value);
|
|
99
103
|
}
|
|
104
|
+
onValueTypeFilterChange(_value) {
|
|
105
|
+
this.loadAvailableAttributes(this.searchText || undefined);
|
|
106
|
+
}
|
|
100
107
|
setSortOrder(order) {
|
|
101
108
|
this.currentSortOrder = order;
|
|
102
109
|
}
|
|
@@ -146,14 +153,12 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
146
153
|
}
|
|
147
154
|
}
|
|
148
155
|
addAttributeToSelected(attribute) {
|
|
149
|
-
console.log('Adding attribute to selected:', attribute, 'with sort order:', this.currentSortOrder);
|
|
150
156
|
const sortItem = {
|
|
151
157
|
attributePath: attribute.attributePath,
|
|
152
158
|
attributeValueType: attribute.attributeValueType,
|
|
153
159
|
sortOrder: this.currentSortOrder
|
|
154
160
|
};
|
|
155
161
|
this.selectedAttributes.push(sortItem);
|
|
156
|
-
console.log('Selected attributes after add:', this.selectedAttributes);
|
|
157
162
|
// Remove from available
|
|
158
163
|
this.availableAttributes = this.availableAttributes.filter(item => item.attributePath !== attribute.attributePath);
|
|
159
164
|
// Clear selections
|
|
@@ -202,31 +207,37 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
202
207
|
};
|
|
203
208
|
}
|
|
204
209
|
onOk() {
|
|
205
|
-
console.log('onOk called, selectedAttributes:', this.selectedAttributes);
|
|
206
210
|
const result = {
|
|
207
211
|
selectedAttributes: this.selectedAttributes
|
|
208
212
|
};
|
|
209
|
-
|
|
210
|
-
this.dialog.close(result);
|
|
213
|
+
this.windowRef.close(result);
|
|
211
214
|
}
|
|
212
215
|
onCancel() {
|
|
213
|
-
|
|
214
|
-
this.dialog.close();
|
|
216
|
+
this.windowRef.close();
|
|
215
217
|
}
|
|
216
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
217
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
218
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSortSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: AttributeSortSelectorDialogComponent, isStandalone: true, selector: "mm-attribute-sort-selector-dialog", host: { attributes: { "data-component": "attribute-sort-selector" } }, ngImport: i0, template: `
|
|
218
220
|
<div class="attribute-sort-selector-container">
|
|
219
|
-
<!--
|
|
220
|
-
<div class="
|
|
221
|
+
<!-- Filter Section -->
|
|
222
|
+
<div class="filter-container">
|
|
221
223
|
<kendo-textbox
|
|
222
224
|
[(ngModel)]="searchText"
|
|
223
225
|
(ngModelChange)="onSearchChange($event)"
|
|
224
|
-
placeholder="Search
|
|
226
|
+
placeholder="Search path & description..."
|
|
225
227
|
class="search-input">
|
|
226
228
|
<ng-template kendoTextBoxSuffixTemplate>
|
|
227
229
|
<button kendoButton [svgIcon]="searchIcon" fillMode="clear"></button>
|
|
228
230
|
</ng-template>
|
|
229
231
|
</kendo-textbox>
|
|
232
|
+
<kendo-dropdownlist
|
|
233
|
+
[data]="valueTypeOptions"
|
|
234
|
+
[(ngModel)]="selectedValueTypeFilter"
|
|
235
|
+
(valueChange)="onValueTypeFilterChange($event)"
|
|
236
|
+
textField="text"
|
|
237
|
+
valueField="value"
|
|
238
|
+
[valuePrimitive]="true"
|
|
239
|
+
class="type-filter-dropdown">
|
|
240
|
+
</kendo-dropdownlist>
|
|
230
241
|
</div>
|
|
231
242
|
|
|
232
243
|
<!-- Main Content Area - All side by side -->
|
|
@@ -236,15 +247,16 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
236
247
|
<h4>Available Attributes</h4>
|
|
237
248
|
<kendo-grid
|
|
238
249
|
[data]="availableGridData"
|
|
239
|
-
[height]="350"
|
|
240
250
|
[scrollable]="'scrollable'"
|
|
241
251
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
242
252
|
[kendoGridSelectBy]="'attributePath'"
|
|
243
253
|
[(selectedKeys)]="selectedAvailableKeys"
|
|
244
254
|
(cellClick)="onAvailableCellClick($event)"
|
|
255
|
+
[resizable]="true"
|
|
245
256
|
class="attribute-grid">
|
|
246
|
-
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="
|
|
247
|
-
<kendo-grid-column field="attributeValueType" title="Type" [width]="
|
|
257
|
+
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="250"></kendo-grid-column>
|
|
258
|
+
<kendo-grid-column field="attributeValueType" title="Type" [width]="100"></kendo-grid-column>
|
|
259
|
+
<kendo-grid-column field="description" title="Description"></kendo-grid-column>
|
|
248
260
|
</kendo-grid>
|
|
249
261
|
</div>
|
|
250
262
|
|
|
@@ -296,12 +308,12 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
296
308
|
<h4>Selected ({{ selectedAttributes.length }})</h4>
|
|
297
309
|
<kendo-grid
|
|
298
310
|
[data]="selectedGridData"
|
|
299
|
-
[height]="350"
|
|
300
311
|
[scrollable]="'scrollable'"
|
|
301
312
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
302
313
|
[kendoGridSelectBy]="'attributePath'"
|
|
303
314
|
[(selectedKeys)]="selectedChosenKeys"
|
|
304
315
|
(cellClick)="onSelectedCellClick($event)"
|
|
316
|
+
[resizable]="true"
|
|
305
317
|
class="attribute-grid">
|
|
306
318
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="180"></kendo-grid-column>
|
|
307
319
|
<kendo-grid-column field="sortOrder" title="Sort" [width]="100">
|
|
@@ -327,15 +339,16 @@ class AttributeSortSelectorDialogComponent extends DialogContentBase {
|
|
|
327
339
|
</kendo-grid>
|
|
328
340
|
</div>
|
|
329
341
|
</div>
|
|
330
|
-
</div>
|
|
331
342
|
|
|
332
|
-
|
|
333
|
-
<
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
343
|
+
<!-- Action Bar -->
|
|
344
|
+
<div class="action-bar">
|
|
345
|
+
<button kendoButton (click)="onCancel()">Cancel</button>
|
|
346
|
+
<button kendoButton themeColor="primary" (click)="onOk()">Apply</button>
|
|
347
|
+
</div>
|
|
348
|
+
</div>
|
|
349
|
+
`, 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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "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: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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 }] });
|
|
337
350
|
}
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
351
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSortSelectorDialogComponent, decorators: [{
|
|
339
352
|
type: Component,
|
|
340
353
|
args: [{ selector: 'mm-attribute-sort-selector-dialog', standalone: true, host: { 'data-component': 'attribute-sort-selector' }, imports: [
|
|
341
354
|
CommonModule,
|
|
@@ -345,20 +358,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
345
358
|
InputsModule,
|
|
346
359
|
DropDownListModule,
|
|
347
360
|
IconsModule,
|
|
348
|
-
|
|
361
|
+
WindowModule
|
|
349
362
|
], template: `
|
|
350
363
|
<div class="attribute-sort-selector-container">
|
|
351
|
-
<!--
|
|
352
|
-
<div class="
|
|
364
|
+
<!-- Filter Section -->
|
|
365
|
+
<div class="filter-container">
|
|
353
366
|
<kendo-textbox
|
|
354
367
|
[(ngModel)]="searchText"
|
|
355
368
|
(ngModelChange)="onSearchChange($event)"
|
|
356
|
-
placeholder="Search
|
|
369
|
+
placeholder="Search path & description..."
|
|
357
370
|
class="search-input">
|
|
358
371
|
<ng-template kendoTextBoxSuffixTemplate>
|
|
359
372
|
<button kendoButton [svgIcon]="searchIcon" fillMode="clear"></button>
|
|
360
373
|
</ng-template>
|
|
361
374
|
</kendo-textbox>
|
|
375
|
+
<kendo-dropdownlist
|
|
376
|
+
[data]="valueTypeOptions"
|
|
377
|
+
[(ngModel)]="selectedValueTypeFilter"
|
|
378
|
+
(valueChange)="onValueTypeFilterChange($event)"
|
|
379
|
+
textField="text"
|
|
380
|
+
valueField="value"
|
|
381
|
+
[valuePrimitive]="true"
|
|
382
|
+
class="type-filter-dropdown">
|
|
383
|
+
</kendo-dropdownlist>
|
|
362
384
|
</div>
|
|
363
385
|
|
|
364
386
|
<!-- Main Content Area - All side by side -->
|
|
@@ -368,15 +390,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
368
390
|
<h4>Available Attributes</h4>
|
|
369
391
|
<kendo-grid
|
|
370
392
|
[data]="availableGridData"
|
|
371
|
-
[height]="350"
|
|
372
393
|
[scrollable]="'scrollable'"
|
|
373
394
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
374
395
|
[kendoGridSelectBy]="'attributePath'"
|
|
375
396
|
[(selectedKeys)]="selectedAvailableKeys"
|
|
376
397
|
(cellClick)="onAvailableCellClick($event)"
|
|
398
|
+
[resizable]="true"
|
|
377
399
|
class="attribute-grid">
|
|
378
|
-
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="
|
|
379
|
-
<kendo-grid-column field="attributeValueType" title="Type" [width]="
|
|
400
|
+
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="250"></kendo-grid-column>
|
|
401
|
+
<kendo-grid-column field="attributeValueType" title="Type" [width]="100"></kendo-grid-column>
|
|
402
|
+
<kendo-grid-column field="description" title="Description"></kendo-grid-column>
|
|
380
403
|
</kendo-grid>
|
|
381
404
|
</div>
|
|
382
405
|
|
|
@@ -428,12 +451,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
428
451
|
<h4>Selected ({{ selectedAttributes.length }})</h4>
|
|
429
452
|
<kendo-grid
|
|
430
453
|
[data]="selectedGridData"
|
|
431
|
-
[height]="350"
|
|
432
454
|
[scrollable]="'scrollable'"
|
|
433
455
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
434
456
|
[kendoGridSelectBy]="'attributePath'"
|
|
435
457
|
[(selectedKeys)]="selectedChosenKeys"
|
|
436
458
|
(cellClick)="onSelectedCellClick($event)"
|
|
459
|
+
[resizable]="true"
|
|
437
460
|
class="attribute-grid">
|
|
438
461
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="180"></kendo-grid-column>
|
|
439
462
|
<kendo-grid-column field="sortOrder" title="Sort" [width]="100">
|
|
@@ -459,17 +482,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
459
482
|
</kendo-grid>
|
|
460
483
|
</div>
|
|
461
484
|
</div>
|
|
462
|
-
</div>
|
|
463
485
|
|
|
464
|
-
|
|
465
|
-
<
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
486
|
+
<!-- Action Bar -->
|
|
487
|
+
<div class="action-bar">
|
|
488
|
+
<button kendoButton (click)="onCancel()">Cancel</button>
|
|
489
|
+
<button kendoButton themeColor="primary" (click)="onOk()">Apply</button>
|
|
490
|
+
</div>
|
|
491
|
+
</div>
|
|
492
|
+
`, 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"] }]
|
|
493
|
+
}] });
|
|
470
494
|
|
|
471
495
|
class AttributeSortSelectorDialogService {
|
|
472
|
-
|
|
496
|
+
windowService = inject(WindowService);
|
|
473
497
|
/**
|
|
474
498
|
* Opens the attribute sort selector dialog
|
|
475
499
|
* @param ckTypeId The CkType ID to fetch attributes for
|
|
@@ -483,20 +507,29 @@ class AttributeSortSelectorDialogService {
|
|
|
483
507
|
selectedAttributes,
|
|
484
508
|
dialogTitle
|
|
485
509
|
};
|
|
486
|
-
const
|
|
510
|
+
const windowRef = this.windowService.open({
|
|
487
511
|
content: AttributeSortSelectorDialogComponent,
|
|
488
|
-
width:
|
|
512
|
+
width: 1200,
|
|
489
513
|
height: 750,
|
|
490
514
|
minWidth: 1050,
|
|
491
515
|
minHeight: 700,
|
|
516
|
+
resizable: true,
|
|
492
517
|
title: dialogTitle || 'Select Attributes with Sort Order'
|
|
493
518
|
});
|
|
494
519
|
// Pass data to the component
|
|
495
|
-
|
|
496
|
-
|
|
520
|
+
const contentRef = windowRef.content;
|
|
521
|
+
if (contentRef?.instance) {
|
|
522
|
+
contentRef.instance.data = data;
|
|
497
523
|
}
|
|
498
524
|
try {
|
|
499
|
-
const result = await firstValueFrom(
|
|
525
|
+
const result = await firstValueFrom(windowRef.result);
|
|
526
|
+
if (result instanceof WindowCloseResult) {
|
|
527
|
+
// User closed the window via X button
|
|
528
|
+
return {
|
|
529
|
+
confirmed: false,
|
|
530
|
+
selectedAttributes: []
|
|
531
|
+
};
|
|
532
|
+
}
|
|
500
533
|
if (result && typeof result === 'object' && 'selectedAttributes' in result) {
|
|
501
534
|
// User clicked OK
|
|
502
535
|
const dialogResult = result;
|
|
@@ -521,10 +554,10 @@ class AttributeSortSelectorDialogService {
|
|
|
521
554
|
};
|
|
522
555
|
}
|
|
523
556
|
}
|
|
524
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
525
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
557
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSortSelectorDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
558
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSortSelectorDialogService });
|
|
526
559
|
}
|
|
527
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
560
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSortSelectorDialogService, decorators: [{
|
|
528
561
|
type: Injectable
|
|
529
562
|
}] });
|
|
530
563
|
|
|
@@ -643,7 +676,7 @@ class PropertyConverterService {
|
|
|
643
676
|
readOnly: true,
|
|
644
677
|
description: 'Construction kit record identifier'
|
|
645
678
|
});
|
|
646
|
-
// Convert attributes with CK types
|
|
679
|
+
// Convert attributes with CK types (record.attributes is guaranteed non-null by the guard above)
|
|
647
680
|
return this.convertAttributesWithCkTypes(record.attributes, ckAttributeMap).pipe(map(attributeProperties => {
|
|
648
681
|
properties.push(...attributeProperties);
|
|
649
682
|
return properties;
|
|
@@ -746,7 +779,7 @@ class PropertyConverterService {
|
|
|
746
779
|
return of([]);
|
|
747
780
|
}
|
|
748
781
|
// Check if any attributes have nested records that need async conversion
|
|
749
|
-
const hasNestedRecords = attributes.some(attr => attr?.value && typeof attr.value === 'object' && attr.value
|
|
782
|
+
const hasNestedRecords = attributes.some(attr => attr?.value && typeof attr.value === 'object' && attr.value !== null && 'attributes' in attr.value);
|
|
750
783
|
if (!hasNestedRecords) {
|
|
751
784
|
// No nested records - convert synchronously
|
|
752
785
|
const items = attributes.map((attr, index) => this.convertSingleAttribute(attr, index, ckAttributeMap));
|
|
@@ -754,7 +787,7 @@ class PropertyConverterService {
|
|
|
754
787
|
}
|
|
755
788
|
// Has nested records - need to handle async conversion
|
|
756
789
|
const conversionObservables = attributes.map((attr, index) => {
|
|
757
|
-
if (attr?.value && typeof attr.value === 'object' && attr.value
|
|
790
|
+
if (attr?.value && typeof attr.value === 'object' && attr.value !== null && 'attributes' in attr.value) {
|
|
758
791
|
// Nested record - convert async
|
|
759
792
|
return this.convertRtRecordToProperties(attr.value).pipe(map(nestedProperties => ({
|
|
760
793
|
id: `attr_${index}_${attr?.attributeName || 'unknown'}`,
|
|
@@ -843,7 +876,7 @@ class PropertyConverterService {
|
|
|
843
876
|
return value.map(v => this.convertRtEntityAttributeValueSync(v));
|
|
844
877
|
}
|
|
845
878
|
// For nested records, return as-is (will be handled by async conversion if needed)
|
|
846
|
-
if (typeof value === 'object' &&
|
|
879
|
+
if (typeof value === 'object' && 'attributes' in value) {
|
|
847
880
|
return value;
|
|
848
881
|
}
|
|
849
882
|
return value;
|
|
@@ -900,10 +933,10 @@ class PropertyConverterService {
|
|
|
900
933
|
const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{3})?Z?$/;
|
|
901
934
|
return isoDateRegex.test(value) && !isNaN(Date.parse(value));
|
|
902
935
|
}
|
|
903
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
904
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
936
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyConverterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
937
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyConverterService, providedIn: 'root' });
|
|
905
938
|
}
|
|
906
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
939
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyConverterService, decorators: [{
|
|
907
940
|
type: Injectable,
|
|
908
941
|
args: [{
|
|
909
942
|
providedIn: 'root'
|
|
@@ -1078,7 +1111,7 @@ class PropertyValueDisplayComponent {
|
|
|
1078
1111
|
*/
|
|
1079
1112
|
formatDateTime(value) {
|
|
1080
1113
|
try {
|
|
1081
|
-
const date = value instanceof Date ? value : new Date(value);
|
|
1114
|
+
const date = value instanceof Date ? value : new Date(String(value));
|
|
1082
1115
|
if (isNaN(date.getTime())) {
|
|
1083
1116
|
return String(value);
|
|
1084
1117
|
}
|
|
@@ -1110,15 +1143,16 @@ class PropertyValueDisplayComponent {
|
|
|
1110
1143
|
if (typeof value !== 'object' || value === null) {
|
|
1111
1144
|
return String(value);
|
|
1112
1145
|
}
|
|
1113
|
-
const
|
|
1146
|
+
const obj = value;
|
|
1147
|
+
const keys = Object.keys(obj);
|
|
1114
1148
|
if (keys.length === 0) {
|
|
1115
1149
|
return '{}';
|
|
1116
1150
|
}
|
|
1117
1151
|
if (keys.length <= 2) {
|
|
1118
|
-
const preview = keys.map(key => `${key}: ${this.truncateValue(
|
|
1152
|
+
const preview = keys.map(key => `${key}: ${this.truncateValue(obj[key])}`).join(', ');
|
|
1119
1153
|
return `{${preview}}`;
|
|
1120
1154
|
}
|
|
1121
|
-
return `{${keys.slice(0, 2).map(key => `${key}: ${this.truncateValue(
|
|
1155
|
+
return `{${keys.slice(0, 2).map(key => `${key}: ${this.truncateValue(obj[key])}`).join(', ')}, ... +${keys.length - 2} more}`;
|
|
1122
1156
|
}
|
|
1123
1157
|
/**
|
|
1124
1158
|
* Format binary data
|
|
@@ -1176,17 +1210,18 @@ class PropertyValueDisplayComponent {
|
|
|
1176
1210
|
if (typeof obj !== 'object' || obj === null) {
|
|
1177
1211
|
return [];
|
|
1178
1212
|
}
|
|
1179
|
-
if (Array.isArray(obj) && obj.length > 0 && obj[0].id === 'ckRecordId') {
|
|
1213
|
+
if (Array.isArray(obj) && obj.length > 0 && typeof obj[0] === 'object' && obj[0] !== null && 'id' in obj[0] && obj[0].id === 'ckRecordId') {
|
|
1180
1214
|
// Handle array of records
|
|
1181
|
-
return obj.map((item
|
|
1182
|
-
key: item
|
|
1183
|
-
value: item
|
|
1215
|
+
return obj.map((item) => ({
|
|
1216
|
+
key: String(item['name']),
|
|
1217
|
+
value: item['value']
|
|
1184
1218
|
}));
|
|
1185
1219
|
}
|
|
1186
1220
|
// Handle regular objects
|
|
1187
|
-
|
|
1221
|
+
const record = obj;
|
|
1222
|
+
return Object.keys(record).map(key => ({
|
|
1188
1223
|
key,
|
|
1189
|
-
value:
|
|
1224
|
+
value: record[key]
|
|
1190
1225
|
}));
|
|
1191
1226
|
}
|
|
1192
1227
|
/**
|
|
@@ -1210,7 +1245,7 @@ class PropertyValueDisplayComponent {
|
|
|
1210
1245
|
return AttributeValueTypeDto.StringDto;
|
|
1211
1246
|
}
|
|
1212
1247
|
if (Array.isArray(value)) {
|
|
1213
|
-
if (value.length > 0 && typeof value[0] === 'object' && value[0].id === 'ckRecordId') {
|
|
1248
|
+
if (value.length > 0 && typeof value[0] === 'object' && value[0] !== null && 'id' in value[0] && value[0].id === 'ckRecordId') {
|
|
1214
1249
|
return AttributeValueTypeDto.RecordDto;
|
|
1215
1250
|
}
|
|
1216
1251
|
if (value.length > 0 && typeof value[0] === 'object') {
|
|
@@ -1235,7 +1270,7 @@ class PropertyValueDisplayComponent {
|
|
|
1235
1270
|
return false;
|
|
1236
1271
|
}
|
|
1237
1272
|
// Check if value has binaryId or downloadUri (LargeBinaryInfo structure)
|
|
1238
|
-
return this.value && typeof this.value === 'object' && ('binaryId' in this.value || 'downloadUri' in this.value);
|
|
1273
|
+
return !!this.value && typeof this.value === 'object' && ('binaryId' in this.value || 'downloadUri' in this.value);
|
|
1239
1274
|
}
|
|
1240
1275
|
/**
|
|
1241
1276
|
* Get the filename from binary info
|
|
@@ -1288,17 +1323,18 @@ class PropertyValueDisplayComponent {
|
|
|
1288
1323
|
console.warn('No binary value available');
|
|
1289
1324
|
return;
|
|
1290
1325
|
}
|
|
1326
|
+
const binaryValue = this.value;
|
|
1291
1327
|
// If downloadUri is available, open directly
|
|
1292
|
-
if (
|
|
1293
|
-
window.open(
|
|
1328
|
+
if (binaryValue.downloadUri) {
|
|
1329
|
+
window.open(binaryValue.downloadUri, '_blank', 'noopener,noreferrer');
|
|
1294
1330
|
return;
|
|
1295
1331
|
}
|
|
1296
1332
|
// Otherwise, emit event for parent to handle (needs to load downloadUri)
|
|
1297
|
-
if (
|
|
1333
|
+
if (binaryValue.binaryId) {
|
|
1298
1334
|
const event = {
|
|
1299
|
-
binaryId:
|
|
1300
|
-
filename:
|
|
1301
|
-
contentType:
|
|
1335
|
+
binaryId: binaryValue.binaryId,
|
|
1336
|
+
filename: binaryValue.filename,
|
|
1337
|
+
contentType: binaryValue.contentType
|
|
1302
1338
|
};
|
|
1303
1339
|
this.binaryDownload.emit(event);
|
|
1304
1340
|
}
|
|
@@ -1306,8 +1342,8 @@ class PropertyValueDisplayComponent {
|
|
|
1306
1342
|
console.warn('No binaryId or downloadUri available');
|
|
1307
1343
|
}
|
|
1308
1344
|
}
|
|
1309
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1310
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
1345
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyValueDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1346
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: PropertyValueDisplayComponent, isStandalone: true, selector: "mm-property-value-display", inputs: { value: "value", type: "type", displayMode: "displayMode" }, outputs: { binaryDownload: "binaryDownload" }, ngImport: i0, template: `
|
|
1311
1347
|
<div class="property-value-display" [ngClass]="'type-' + type.toLowerCase()">
|
|
1312
1348
|
|
|
1313
1349
|
@if (isExpandableRecord()) {
|
|
@@ -1405,9 +1441,9 @@ class PropertyValueDisplayComponent {
|
|
|
1405
1441
|
}
|
|
1406
1442
|
}
|
|
1407
1443
|
</div>
|
|
1408
|
-
`, isInline: true, styles: [".property-value-display{display:flex;align-items:flex-start;gap:8px;min-height:20px;font-family:inherit;width:100%}.expandable-record{width:100%}.record-header{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s}.record-header:hover{background:var(--kendo-color-base-subtle)}.expand-icon{width:16px;height:16px;flex-shrink:0;transition:transform .2s}.record-summary{flex:1;font-size:.9em}.record-content{margin-left:22px;margin-top:8px;border-left:2px solid var(--kendo-color-border);padding-left:12px;background:var(--kendo-color-base-subtle);border-radius:0 4px 4px 0}.nested-properties{display:flex;flex-direction:column;gap:6px;padding:8px}.nested-property{display:flex;align-items:flex-start;gap:8px;min-height:24px}.property-key{font-weight:500;color:var(--kendo-color-primary);min-width:100px;flex-shrink:0;font-size:.9em}.array-item{border:1px solid var(--kendo-color-border);border-radius:4px;margin-bottom:8px;background:transparent}.array-index{display:inline-block;background:var(--kendo-color-primary);color:#fff;padding:2px 8px;font-size:.8em;font-weight:700;border-radius:4px 0;margin-bottom:4px}.json-display{font-family:Courier New,monospace;font-size:12px;margin:0;padding:4px 8px;background:var(--kendo-color-base-subtle);border-radius:4px;max-width:300px;overflow:auto}.text-display,.default-display{flex:1;word-break:break-word;overflow-wrap:anywhere}.type-boolean .default-display{font-weight:500}.type-boolean .default-display.value-true{color:#28a745}.type-boolean .default-display.value-false{color:#dc3545}:is(.type-datetime,.type-datetimeoffset) .default-display{font-family:monospace;font-size:.9em}:is(.type-int,.type-integer,.type-double) .default-display{font-family:monospace;text-align:right}.type-indicator{font-size:.75em;padding:2px 6px;background:var(--kendo-color-primary);color:#fff;border-radius:3px;text-transform:uppercase;font-weight:500;flex-shrink:0}.empty-value{color:var(--kendo-color-subtle);font-style:italic}.null-value{color:var(--kendo-color-error);font-style:italic}.binary-linked-display{display:flex;align-items:center;gap:12px;width:100%}.binary-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.filename{font-weight:500;color:var(--kendo-color-on-app-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-size:.85em;color:var(--kendo-color-subtle);flex-shrink:0}.content-type{font-size:.75em;padding:2px 6px;background:var(--kendo-color-base-subtle);border-radius:3px;color:var(--kendo-color-subtle);flex-shrink:0}\n"], dependencies: [{ kind: "component", type: PropertyValueDisplayComponent, selector: "mm-property-value-display", inputs: ["value", "type", "displayMode"], outputs: ["binaryDownload"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SVGIconModule }, { kind: "component", type: i5$
|
|
1444
|
+
`, isInline: true, styles: [".property-value-display{display:flex;align-items:flex-start;gap:8px;min-height:20px;font-family:inherit;width:100%}.expandable-record{width:100%}.record-header{display:flex;align-items:center;gap:6px;cursor:pointer;padding:4px;border-radius:4px;transition:background-color .2s}.record-header:hover{background:var(--kendo-color-base-subtle)}.expand-icon{width:16px;height:16px;flex-shrink:0;transition:transform .2s}.record-summary{flex:1;font-size:.9em}.record-content{margin-left:22px;margin-top:8px;border-left:2px solid var(--kendo-color-border);padding-left:12px;background:var(--kendo-color-base-subtle);border-radius:0 4px 4px 0}.nested-properties{display:flex;flex-direction:column;gap:6px;padding:8px}.nested-property{display:flex;align-items:flex-start;gap:8px;min-height:24px}.property-key{font-weight:500;color:var(--kendo-color-primary);min-width:100px;flex-shrink:0;font-size:.9em}.array-item{border:1px solid var(--kendo-color-border);border-radius:4px;margin-bottom:8px;background:transparent}.array-index{display:inline-block;background:var(--kendo-color-primary);color:#fff;padding:2px 8px;font-size:.8em;font-weight:700;border-radius:4px 0;margin-bottom:4px}.json-display{font-family:Courier New,monospace;font-size:12px;margin:0;padding:4px 8px;background:var(--kendo-color-base-subtle);border-radius:4px;max-width:300px;overflow:auto}.text-display,.default-display{flex:1;word-break:break-word;overflow-wrap:anywhere}.type-boolean .default-display{font-weight:500}.type-boolean .default-display.value-true{color:#28a745}.type-boolean .default-display.value-false{color:#dc3545}:is(.type-datetime,.type-datetimeoffset) .default-display{font-family:monospace;font-size:.9em}:is(.type-int,.type-integer,.type-double) .default-display{font-family:monospace;text-align:right}.type-indicator{font-size:.75em;padding:2px 6px;background:var(--kendo-color-primary);color:#fff;border-radius:3px;text-transform:uppercase;font-weight:500;flex-shrink:0}.empty-value{color:var(--kendo-color-subtle);font-style:italic}.null-value{color:var(--kendo-color-error);font-style:italic}.binary-linked-display{display:flex;align-items:center;gap:12px;width:100%}.binary-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.filename{font-weight:500;color:var(--kendo-color-on-app-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{font-size:.85em;color:var(--kendo-color-subtle);flex-shrink:0}.content-type{font-size:.75em;padding:2px 6px;background:var(--kendo-color-base-subtle);border-radius:3px;color:var(--kendo-color-subtle);flex-shrink:0}\n"], dependencies: [{ kind: "component", type: PropertyValueDisplayComponent, selector: "mm-property-value-display", inputs: ["value", "type", "displayMode"], outputs: ["binaryDownload"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: SVGIconModule }, { kind: "component", type: i5$1.SVGIconComponent, selector: "kendo-svg-icon, kendo-svgicon", inputs: ["icon"], exportAs: ["kendoSVGIcon"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }] });
|
|
1409
1445
|
}
|
|
1410
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1446
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyValueDisplayComponent, decorators: [{
|
|
1411
1447
|
type: Component,
|
|
1412
1448
|
args: [{ selector: 'mm-property-value-display', standalone: true, imports: [CommonModule, SVGIconModule, ButtonModule], template: `
|
|
1413
1449
|
<div class="property-value-display" [ngClass]="'type-' + type.toLowerCase()">
|
|
@@ -1660,8 +1696,8 @@ class PropertyGridComponent {
|
|
|
1660
1696
|
onBinaryDownload(event) {
|
|
1661
1697
|
this.binaryDownload.emit(event);
|
|
1662
1698
|
}
|
|
1663
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1664
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
1699
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyGridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1700
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: PropertyGridComponent, isStandalone: true, selector: "mm-property-grid", inputs: { data: "data", config: "config", showTypeColumn: "showTypeColumn" }, outputs: { propertyChange: "propertyChange", saveRequested: "saveRequested", binaryDownload: "binaryDownload" }, usesOnChanges: true, ngImport: i0, template: `
|
|
1665
1701
|
<div class="mm-property-grid" [style.height]="config.height || '400px'">
|
|
1666
1702
|
|
|
1667
1703
|
@if (config.showSearch) {
|
|
@@ -1743,9 +1779,9 @@ class PropertyGridComponent {
|
|
|
1743
1779
|
|
|
1744
1780
|
</kendo-grid>
|
|
1745
1781
|
</div>
|
|
1746
|
-
`, isInline: true, styles: [".mm-property-grid{display:flex;flex-direction:column;border:1px solid var(--kendo-color-border);border-radius:4px;overflow:hidden}.search-toolbar{padding:8px;border-bottom:1px solid var(--kendo-color-border);background:var(--kendo-color-base-subtle)}.property-grid{flex:1;border:none}.property-name-cell{display:flex;align-items:center;gap:8px;min-height:24px}.type-icon{width:16px;height:16px;opacity:.7}.property-info{display:flex;align-items:center;gap:4px;flex:1}.property-name{font-weight:500}.required-indicator{color:var(--kendo-color-error);font-weight:700}.readonly-indicator{font-size:12px;opacity:.7}.property-editor{width:100%;min-width:200px}.validation-error{color:var(--kendo-color-error);font-size:.8em;margin-top:4px}.type-badge{font-size:.75em;padding:2px 6px;border-radius:3px;text-transform:uppercase;font-weight:500;background:var(--kendo-color-base-subtle);color:var(--kendo-color-on-base)}.grid-toolbar{padding:8px;border-top:1px solid var(--kendo-color-border);background:var(--kendo-color-base-subtle);display:flex;align-items:center;gap:8px}.changes-indicator{margin-left:auto;font-size:.9em;color:var(--kendo-color-primary);font-style:italic}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "columnResize", "columnReorder", "columnVisibilityChange", "columnLockedChange", "columnStickyChange", "scrollBottom", "contentScroll"], exportAs: ["kendoGrid"] }, { 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: 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: DropDownsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SVGIconModule }, { kind: "component", type: i5$
|
|
1782
|
+
`, isInline: true, styles: [".mm-property-grid{display:flex;flex-direction:column;border:1px solid var(--kendo-color-border);border-radius:4px;overflow:hidden}.search-toolbar{padding:8px;border-bottom:1px solid var(--kendo-color-border);background:var(--kendo-color-base-subtle)}.property-grid{flex:1;border:none}.property-name-cell{display:flex;align-items:center;gap:8px;min-height:24px}.type-icon{width:16px;height:16px;opacity:.7}.property-info{display:flex;align-items:center;gap:4px;flex:1}.property-name{font-weight:500}.required-indicator{color:var(--kendo-color-error);font-weight:700}.readonly-indicator{font-size:12px;opacity:.7}.property-editor{width:100%;min-width:200px}.validation-error{color:var(--kendo-color-error);font-size:.8em;margin-top:4px}.type-badge{font-size:.75em;padding:2px 6px;border-radius:3px;text-transform:uppercase;font-weight:500;background:var(--kendo-color-base-subtle);color:var(--kendo-color-on-base)}.grid-toolbar{padding:8px;border-top:1px solid var(--kendo-color-border);background:var(--kendo-color-base-subtle);display:flex;align-items:center;gap:8px}.changes-indicator{margin-left:auto;font-size:.9em;color:var(--kendo-color-primary);font-style:italic}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "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: "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: 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: DropDownsModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "ngmodule", type: SVGIconModule }, { kind: "component", type: i5$1.SVGIconComponent, selector: "kendo-svg-icon, kendo-svgicon", inputs: ["icon"], exportAs: ["kendoSVGIcon"] }, { kind: "component", type: PropertyValueDisplayComponent, selector: "mm-property-value-display", inputs: ["value", "type", "displayMode"], outputs: ["binaryDownload"] }] });
|
|
1747
1783
|
}
|
|
1748
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
1784
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: PropertyGridComponent, decorators: [{
|
|
1749
1785
|
type: Component,
|
|
1750
1786
|
args: [{ selector: 'mm-property-grid', standalone: true, imports: [
|
|
1751
1787
|
CommonModule,
|
|
@@ -1991,8 +2027,8 @@ class CkTypeSelectorDialogComponent extends DialogContentBase {
|
|
|
1991
2027
|
this.dialog.close(result);
|
|
1992
2028
|
}
|
|
1993
2029
|
}
|
|
1994
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
1995
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
2030
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2031
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CkTypeSelectorDialogComponent, isStandalone: true, selector: "mm-ck-type-selector-dialog", usesInheritance: true, ngImport: i0, template: `
|
|
1996
2032
|
<div class="ck-type-selector-container">
|
|
1997
2033
|
<div class="filter-container">
|
|
1998
2034
|
<div class="filter-row">
|
|
@@ -2072,9 +2108,9 @@ class CkTypeSelectorDialogComponent extends DialogContentBase {
|
|
|
2072
2108
|
<button kendoButton (click)="onCancel()">Cancel</button>
|
|
2073
2109
|
<button kendoButton themeColor="primary" [disabled]="!selectedType || (selectedType.isAbstract && !allowAbstract)" (click)="onConfirm()">OK</button>
|
|
2074
2110
|
</kendo-dialog-actions>
|
|
2075
|
-
`, isInline: true, styles: [".ck-type-selector-container{display:flex;flex-direction:column;height:100%;padding:20px;min-width:700px;box-sizing:border-box}.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}.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;text-transform:uppercase}.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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "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: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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: DialogModule }, { kind: "component", type:
|
|
2111
|
+
`, isInline: true, styles: [".ck-type-selector-container{display:flex;flex-direction:column;height:100%;padding:20px;min-width:700px;box-sizing:border-box}.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}.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;text-transform:uppercase}.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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "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: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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: DialogModule }, { kind: "component", type: i7.DialogActionsComponent, selector: "kendo-dialog-actions", inputs: ["actions", "layout"], outputs: ["action"] }] });
|
|
2076
2112
|
}
|
|
2077
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2113
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorDialogComponent, decorators: [{
|
|
2078
2114
|
type: Component,
|
|
2079
2115
|
args: [{ selector: 'mm-ck-type-selector-dialog', standalone: true, imports: [
|
|
2080
2116
|
CommonModule,
|
|
@@ -2222,10 +2258,10 @@ class CkTypeSelectorDialogService {
|
|
|
2222
2258
|
};
|
|
2223
2259
|
}
|
|
2224
2260
|
}
|
|
2225
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2226
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
2261
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
2262
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorDialogService });
|
|
2227
2263
|
}
|
|
2228
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorDialogService, decorators: [{
|
|
2229
2265
|
type: Injectable
|
|
2230
2266
|
}] });
|
|
2231
2267
|
|
|
@@ -2341,12 +2377,10 @@ class OctoGraphQlDataSource extends DataSourceTyped {
|
|
|
2341
2377
|
class OctoGraphQlHierarchyDataSource extends HierarchyDataSourceBase {
|
|
2342
2378
|
}
|
|
2343
2379
|
|
|
2344
|
-
class AttributeSelectorDialogComponent
|
|
2380
|
+
class AttributeSelectorDialogComponent {
|
|
2381
|
+
windowRef = inject(WindowRef);
|
|
2345
2382
|
attributeService = inject(AttributeSelectorService);
|
|
2346
2383
|
searchSubject = new Subject();
|
|
2347
|
-
constructor() {
|
|
2348
|
-
super(inject(DialogRef));
|
|
2349
|
-
}
|
|
2350
2384
|
arrowRightIcon = arrowRightIcon;
|
|
2351
2385
|
arrowLeftIcon = arrowLeftIcon;
|
|
2352
2386
|
chevronDoubleRightIcon = chevronDoubleRightIcon;
|
|
@@ -2354,34 +2388,50 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2354
2388
|
searchIcon = searchIcon;
|
|
2355
2389
|
arrowUpIcon = arrowUpIcon;
|
|
2356
2390
|
arrowDownIcon = arrowDownIcon;
|
|
2391
|
+
data;
|
|
2357
2392
|
dialogTitle = 'Select Attributes';
|
|
2358
2393
|
rtCkTypeId;
|
|
2359
2394
|
singleSelect = false;
|
|
2360
2395
|
searchText = '';
|
|
2361
2396
|
selectedSingleKey = [];
|
|
2397
|
+
selectedValueTypeFilter = null;
|
|
2398
|
+
includeNavigationProperties = true;
|
|
2399
|
+
maxDepth = null;
|
|
2362
2400
|
availableAttributes = [];
|
|
2363
2401
|
selectedAttributes = [];
|
|
2364
2402
|
availableGridData = { data: [], total: 0 };
|
|
2365
2403
|
selectedGridData = { data: [], total: 0 };
|
|
2366
2404
|
selectedAvailableKeys = [];
|
|
2367
2405
|
selectedChosenKeys = [];
|
|
2406
|
+
valueTypeOptions = [
|
|
2407
|
+
{ text: 'All Types', value: null },
|
|
2408
|
+
{ text: 'String', value: AttributeValueTypeDto$1.StringDto },
|
|
2409
|
+
{ text: 'Integer', value: AttributeValueTypeDto$1.IntegerDto },
|
|
2410
|
+
{ text: 'Double', value: AttributeValueTypeDto$1.DoubleDto },
|
|
2411
|
+
{ text: 'Boolean', value: AttributeValueTypeDto$1.BooleanDto },
|
|
2412
|
+
{ text: 'DateTime', value: AttributeValueTypeDto$1.DateTimeDto },
|
|
2413
|
+
{ text: 'DateTimeOffset', value: AttributeValueTypeDto$1.DateTimeOffsetDto },
|
|
2414
|
+
{ text: 'Enum', value: AttributeValueTypeDto$1.EnumDto },
|
|
2415
|
+
{ text: 'TimeSpan', value: AttributeValueTypeDto$1.TimeSpanDto }
|
|
2416
|
+
];
|
|
2368
2417
|
// Double-click tracking
|
|
2369
2418
|
lastClickTime = 0;
|
|
2370
2419
|
lastClickedItem = null;
|
|
2371
2420
|
doubleClickDelay = 300; // milliseconds
|
|
2372
2421
|
ngOnInit() {
|
|
2373
|
-
|
|
2374
|
-
|
|
2375
|
-
this.
|
|
2376
|
-
this.
|
|
2377
|
-
this.
|
|
2378
|
-
|
|
2422
|
+
if (this.data) {
|
|
2423
|
+
this.rtCkTypeId = this.data.rtCkTypeId;
|
|
2424
|
+
this.dialogTitle = this.data.dialogTitle || 'Select Attributes';
|
|
2425
|
+
this.singleSelect = this.data.singleSelect ?? false;
|
|
2426
|
+
this.includeNavigationProperties = this.data.includeNavigationProperties ?? true;
|
|
2427
|
+
this.maxDepth = this.data.maxDepth ?? null;
|
|
2428
|
+
if (this.data.selectedAttributes && this.data.selectedAttributes.length > 0) {
|
|
2379
2429
|
if (this.singleSelect) {
|
|
2380
|
-
this.selectedSingleKey = [data.selectedAttributes[0]];
|
|
2430
|
+
this.selectedSingleKey = [this.data.selectedAttributes[0]];
|
|
2381
2431
|
}
|
|
2382
2432
|
else {
|
|
2383
2433
|
// Pre-populate selected attributes if provided
|
|
2384
|
-
this.loadInitialSelectedAttributes(data.selectedAttributes);
|
|
2434
|
+
this.loadInitialSelectedAttributes(this.data.selectedAttributes);
|
|
2385
2435
|
}
|
|
2386
2436
|
}
|
|
2387
2437
|
}
|
|
@@ -2392,8 +2442,8 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2392
2442
|
// Load initial attributes
|
|
2393
2443
|
this.loadAvailableAttributes();
|
|
2394
2444
|
}
|
|
2395
|
-
loadAvailableAttributes(
|
|
2396
|
-
this.attributeService.getAvailableAttributes(this.rtCkTypeId,
|
|
2445
|
+
loadAvailableAttributes(searchTerm) {
|
|
2446
|
+
this.attributeService.getAvailableAttributes(this.rtCkTypeId, undefined, undefined, undefined, this.selectedValueTypeFilter || undefined, searchTerm || undefined, this.includeNavigationProperties, this.maxDepth ?? undefined).subscribe(result => {
|
|
2397
2447
|
// Filter out already selected attributes
|
|
2398
2448
|
const selectedPaths = new Set(this.selectedAttributes.map(a => a.attributePath));
|
|
2399
2449
|
this.availableAttributes = result.items.filter(item => !selectedPaths.has(item.attributePath));
|
|
@@ -2419,6 +2469,19 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2419
2469
|
onSearchChange(value) {
|
|
2420
2470
|
this.searchSubject.next(value);
|
|
2421
2471
|
}
|
|
2472
|
+
onValueTypeFilterChange(_value) {
|
|
2473
|
+
this.loadAvailableAttributes(this.searchText || undefined);
|
|
2474
|
+
}
|
|
2475
|
+
onNavigationPropertiesChange() {
|
|
2476
|
+
if (!this.includeNavigationProperties) {
|
|
2477
|
+
this.maxDepth = null;
|
|
2478
|
+
}
|
|
2479
|
+
this.loadAvailableAttributes(this.searchText || undefined);
|
|
2480
|
+
}
|
|
2481
|
+
onMaxDepthChange(value) {
|
|
2482
|
+
this.maxDepth = value;
|
|
2483
|
+
this.loadAvailableAttributes(this.searchText || undefined);
|
|
2484
|
+
}
|
|
2422
2485
|
addSelected() {
|
|
2423
2486
|
const itemsToAdd = this.availableAttributes.filter(item => this.selectedAvailableKeys.includes(item.attributePath));
|
|
2424
2487
|
this.selectedAttributes.push(...itemsToAdd);
|
|
@@ -2495,7 +2558,7 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2495
2558
|
};
|
|
2496
2559
|
}
|
|
2497
2560
|
onCancel() {
|
|
2498
|
-
this.
|
|
2561
|
+
this.windowRef.close();
|
|
2499
2562
|
}
|
|
2500
2563
|
onConfirm() {
|
|
2501
2564
|
if (this.singleSelect) {
|
|
@@ -2503,13 +2566,13 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2503
2566
|
const result = {
|
|
2504
2567
|
selectedAttributes: selected ? [selected] : []
|
|
2505
2568
|
};
|
|
2506
|
-
this.
|
|
2569
|
+
this.windowRef.close(result);
|
|
2507
2570
|
}
|
|
2508
2571
|
else {
|
|
2509
2572
|
const result = {
|
|
2510
2573
|
selectedAttributes: this.selectedAttributes
|
|
2511
2574
|
};
|
|
2512
|
-
this.
|
|
2575
|
+
this.windowRef.close(result);
|
|
2513
2576
|
}
|
|
2514
2577
|
}
|
|
2515
2578
|
/**
|
|
@@ -2606,19 +2669,46 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2606
2669
|
this.sortAvailableAttributes();
|
|
2607
2670
|
this.updateGrids();
|
|
2608
2671
|
}
|
|
2609
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2610
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
2672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSelectorDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2673
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: AttributeSelectorDialogComponent, isStandalone: true, selector: "mm-attribute-selector-dialog", ngImport: i0, template: `
|
|
2611
2674
|
<div class="attribute-selector-container">
|
|
2612
|
-
<div class="
|
|
2675
|
+
<div class="filter-container">
|
|
2613
2676
|
<kendo-textbox
|
|
2614
2677
|
[(ngModel)]="searchText"
|
|
2615
2678
|
(ngModelChange)="onSearchChange($event)"
|
|
2616
|
-
placeholder="Search
|
|
2679
|
+
placeholder="Search path & description..."
|
|
2617
2680
|
class="search-input">
|
|
2618
2681
|
<ng-template kendoTextBoxSuffixTemplate>
|
|
2619
2682
|
<button kendoButton [svgIcon]="searchIcon" fillMode="clear"></button>
|
|
2620
2683
|
</ng-template>
|
|
2621
2684
|
</kendo-textbox>
|
|
2685
|
+
<kendo-dropdownlist
|
|
2686
|
+
[data]="valueTypeOptions"
|
|
2687
|
+
[(ngModel)]="selectedValueTypeFilter"
|
|
2688
|
+
(valueChange)="onValueTypeFilterChange($event)"
|
|
2689
|
+
textField="text"
|
|
2690
|
+
valueField="value"
|
|
2691
|
+
[valuePrimitive]="true"
|
|
2692
|
+
class="type-filter-dropdown">
|
|
2693
|
+
</kendo-dropdownlist>
|
|
2694
|
+
</div>
|
|
2695
|
+
|
|
2696
|
+
<div class="options-container">
|
|
2697
|
+
<input type="checkbox" kendoCheckBox
|
|
2698
|
+
[(ngModel)]="includeNavigationProperties"
|
|
2699
|
+
(ngModelChange)="onNavigationPropertiesChange()" />
|
|
2700
|
+
<label class="option-label">Include Navigation Properties</label>
|
|
2701
|
+
|
|
2702
|
+
<kendo-numerictextbox
|
|
2703
|
+
[(ngModel)]="maxDepth"
|
|
2704
|
+
[min]="1" [max]="5" [step]="1" [format]="'n0'"
|
|
2705
|
+
[placeholder]="'Depth'"
|
|
2706
|
+
[spinners]="true"
|
|
2707
|
+
[disabled]="!includeNavigationProperties"
|
|
2708
|
+
(valueChange)="onMaxDepthChange($event)"
|
|
2709
|
+
class="depth-input">
|
|
2710
|
+
</kendo-numerictextbox>
|
|
2711
|
+
<label class="option-label">Max Depth</label>
|
|
2622
2712
|
</div>
|
|
2623
2713
|
|
|
2624
2714
|
<div class="lists-container" *ngIf="!singleSelect">
|
|
@@ -2626,15 +2716,16 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2626
2716
|
<h4>Available Attributes</h4>
|
|
2627
2717
|
<kendo-grid
|
|
2628
2718
|
[data]="availableGridData"
|
|
2629
|
-
[height]="350"
|
|
2630
2719
|
[scrollable]="'scrollable'"
|
|
2631
2720
|
[selectable]="{ mode: 'multiple', enabled: true }"
|
|
2632
2721
|
[kendoGridSelectBy]="'attributePath'"
|
|
2633
2722
|
[(selectedKeys)]="selectedAvailableKeys"
|
|
2634
2723
|
(cellClick)="onAvailableCellClick($event)"
|
|
2724
|
+
[resizable]="true"
|
|
2635
2725
|
class="attribute-grid">
|
|
2636
|
-
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="
|
|
2726
|
+
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="250"></kendo-grid-column>
|
|
2637
2727
|
<kendo-grid-column field="attributeValueType" title="Type" [width]="100"></kendo-grid-column>
|
|
2728
|
+
<kendo-grid-column field="description" title="Description"></kendo-grid-column>
|
|
2638
2729
|
</kendo-grid>
|
|
2639
2730
|
</div>
|
|
2640
2731
|
|
|
@@ -2674,12 +2765,12 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2674
2765
|
<h4>Selected Attributes ({{ selectedAttributes.length }})</h4>
|
|
2675
2766
|
<kendo-grid
|
|
2676
2767
|
[data]="selectedGridData"
|
|
2677
|
-
[height]="350"
|
|
2678
2768
|
[scrollable]="'scrollable'"
|
|
2679
2769
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
2680
2770
|
[kendoGridSelectBy]="'attributePath'"
|
|
2681
2771
|
[(selectedKeys)]="selectedChosenKeys"
|
|
2682
2772
|
(cellClick)="onSelectedCellClick($event)"
|
|
2773
|
+
[resizable]="true"
|
|
2683
2774
|
class="attribute-grid">
|
|
2684
2775
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="200">
|
|
2685
2776
|
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
|
|
@@ -2712,26 +2803,27 @@ class AttributeSelectorDialogComponent extends DialogContentBase {
|
|
|
2712
2803
|
<div class="single-select-container" *ngIf="singleSelect">
|
|
2713
2804
|
<kendo-grid
|
|
2714
2805
|
[data]="availableGridData"
|
|
2715
|
-
[height]="400"
|
|
2716
2806
|
[scrollable]="'scrollable'"
|
|
2717
2807
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
2718
2808
|
[kendoGridSelectBy]="'attributePath'"
|
|
2719
2809
|
[(selectedKeys)]="selectedSingleKey"
|
|
2720
2810
|
(cellClick)="onSingleSelectCellClick($event)"
|
|
2811
|
+
[resizable]="true"
|
|
2721
2812
|
class="attribute-grid">
|
|
2722
2813
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="250"></kendo-grid-column>
|
|
2723
2814
|
<kendo-grid-column field="attributeValueType" title="Type" [width]="100"></kendo-grid-column>
|
|
2815
|
+
<kendo-grid-column field="description" title="Description"></kendo-grid-column>
|
|
2724
2816
|
</kendo-grid>
|
|
2725
2817
|
</div>
|
|
2726
|
-
</div>
|
|
2727
2818
|
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2819
|
+
<div class="action-bar">
|
|
2820
|
+
<button kendoButton (click)="onCancel()">Cancel</button>
|
|
2821
|
+
<button kendoButton themeColor="primary" [disabled]="singleSelect && selectedSingleKey.length === 0" (click)="onConfirm()">OK</button>
|
|
2822
|
+
</div>
|
|
2823
|
+
</div>
|
|
2824
|
+
`, 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}.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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "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: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], 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 }] });
|
|
2733
2825
|
}
|
|
2734
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
2826
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSelectorDialogComponent, decorators: [{
|
|
2735
2827
|
type: Component,
|
|
2736
2828
|
args: [{ selector: 'mm-attribute-selector-dialog', standalone: true, imports: [
|
|
2737
2829
|
CommonModule,
|
|
@@ -2739,20 +2831,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
2739
2831
|
GridModule,
|
|
2740
2832
|
ButtonsModule,
|
|
2741
2833
|
InputsModule,
|
|
2834
|
+
DropDownListModule,
|
|
2742
2835
|
IconsModule,
|
|
2743
|
-
|
|
2836
|
+
WindowModule
|
|
2744
2837
|
], template: `
|
|
2745
2838
|
<div class="attribute-selector-container">
|
|
2746
|
-
<div class="
|
|
2839
|
+
<div class="filter-container">
|
|
2747
2840
|
<kendo-textbox
|
|
2748
2841
|
[(ngModel)]="searchText"
|
|
2749
2842
|
(ngModelChange)="onSearchChange($event)"
|
|
2750
|
-
placeholder="Search
|
|
2843
|
+
placeholder="Search path & description..."
|
|
2751
2844
|
class="search-input">
|
|
2752
2845
|
<ng-template kendoTextBoxSuffixTemplate>
|
|
2753
2846
|
<button kendoButton [svgIcon]="searchIcon" fillMode="clear"></button>
|
|
2754
2847
|
</ng-template>
|
|
2755
2848
|
</kendo-textbox>
|
|
2849
|
+
<kendo-dropdownlist
|
|
2850
|
+
[data]="valueTypeOptions"
|
|
2851
|
+
[(ngModel)]="selectedValueTypeFilter"
|
|
2852
|
+
(valueChange)="onValueTypeFilterChange($event)"
|
|
2853
|
+
textField="text"
|
|
2854
|
+
valueField="value"
|
|
2855
|
+
[valuePrimitive]="true"
|
|
2856
|
+
class="type-filter-dropdown">
|
|
2857
|
+
</kendo-dropdownlist>
|
|
2858
|
+
</div>
|
|
2859
|
+
|
|
2860
|
+
<div class="options-container">
|
|
2861
|
+
<input type="checkbox" kendoCheckBox
|
|
2862
|
+
[(ngModel)]="includeNavigationProperties"
|
|
2863
|
+
(ngModelChange)="onNavigationPropertiesChange()" />
|
|
2864
|
+
<label class="option-label">Include Navigation Properties</label>
|
|
2865
|
+
|
|
2866
|
+
<kendo-numerictextbox
|
|
2867
|
+
[(ngModel)]="maxDepth"
|
|
2868
|
+
[min]="1" [max]="5" [step]="1" [format]="'n0'"
|
|
2869
|
+
[placeholder]="'Depth'"
|
|
2870
|
+
[spinners]="true"
|
|
2871
|
+
[disabled]="!includeNavigationProperties"
|
|
2872
|
+
(valueChange)="onMaxDepthChange($event)"
|
|
2873
|
+
class="depth-input">
|
|
2874
|
+
</kendo-numerictextbox>
|
|
2875
|
+
<label class="option-label">Max Depth</label>
|
|
2756
2876
|
</div>
|
|
2757
2877
|
|
|
2758
2878
|
<div class="lists-container" *ngIf="!singleSelect">
|
|
@@ -2760,15 +2880,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
2760
2880
|
<h4>Available Attributes</h4>
|
|
2761
2881
|
<kendo-grid
|
|
2762
2882
|
[data]="availableGridData"
|
|
2763
|
-
[height]="350"
|
|
2764
2883
|
[scrollable]="'scrollable'"
|
|
2765
2884
|
[selectable]="{ mode: 'multiple', enabled: true }"
|
|
2766
2885
|
[kendoGridSelectBy]="'attributePath'"
|
|
2767
2886
|
[(selectedKeys)]="selectedAvailableKeys"
|
|
2768
2887
|
(cellClick)="onAvailableCellClick($event)"
|
|
2888
|
+
[resizable]="true"
|
|
2769
2889
|
class="attribute-grid">
|
|
2770
|
-
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="
|
|
2890
|
+
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="250"></kendo-grid-column>
|
|
2771
2891
|
<kendo-grid-column field="attributeValueType" title="Type" [width]="100"></kendo-grid-column>
|
|
2892
|
+
<kendo-grid-column field="description" title="Description"></kendo-grid-column>
|
|
2772
2893
|
</kendo-grid>
|
|
2773
2894
|
</div>
|
|
2774
2895
|
|
|
@@ -2808,12 +2929,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
2808
2929
|
<h4>Selected Attributes ({{ selectedAttributes.length }})</h4>
|
|
2809
2930
|
<kendo-grid
|
|
2810
2931
|
[data]="selectedGridData"
|
|
2811
|
-
[height]="350"
|
|
2812
2932
|
[scrollable]="'scrollable'"
|
|
2813
2933
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
2814
2934
|
[kendoGridSelectBy]="'attributePath'"
|
|
2815
2935
|
[(selectedKeys)]="selectedChosenKeys"
|
|
2816
2936
|
(cellClick)="onSelectedCellClick($event)"
|
|
2937
|
+
[resizable]="true"
|
|
2817
2938
|
class="attribute-grid">
|
|
2818
2939
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="200">
|
|
2819
2940
|
<ng-template kendoGridCellTemplate let-dataItem let-rowIndex="rowIndex">
|
|
@@ -2846,33 +2967,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
2846
2967
|
<div class="single-select-container" *ngIf="singleSelect">
|
|
2847
2968
|
<kendo-grid
|
|
2848
2969
|
[data]="availableGridData"
|
|
2849
|
-
[height]="400"
|
|
2850
2970
|
[scrollable]="'scrollable'"
|
|
2851
2971
|
[selectable]="{ mode: 'single', enabled: true }"
|
|
2852
2972
|
[kendoGridSelectBy]="'attributePath'"
|
|
2853
2973
|
[(selectedKeys)]="selectedSingleKey"
|
|
2854
2974
|
(cellClick)="onSingleSelectCellClick($event)"
|
|
2975
|
+
[resizable]="true"
|
|
2855
2976
|
class="attribute-grid">
|
|
2856
2977
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="250"></kendo-grid-column>
|
|
2857
2978
|
<kendo-grid-column field="attributeValueType" title="Type" [width]="100"></kendo-grid-column>
|
|
2979
|
+
<kendo-grid-column field="description" title="Description"></kendo-grid-column>
|
|
2858
2980
|
</kendo-grid>
|
|
2859
2981
|
</div>
|
|
2860
|
-
</div>
|
|
2861
2982
|
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2983
|
+
<div class="action-bar">
|
|
2984
|
+
<button kendoButton (click)="onCancel()">Cancel</button>
|
|
2985
|
+
<button kendoButton themeColor="primary" [disabled]="singleSelect && selectedSingleKey.length === 0" (click)="onConfirm()">OK</button>
|
|
2986
|
+
</div>
|
|
2987
|
+
</div>
|
|
2988
|
+
`, 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}.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"] }]
|
|
2989
|
+
}] });
|
|
2868
2990
|
|
|
2869
2991
|
class AttributeSelectorDialogService {
|
|
2870
|
-
|
|
2992
|
+
windowService = inject(WindowService);
|
|
2871
2993
|
/**
|
|
2872
2994
|
* Opens the attribute selector dialog
|
|
2873
2995
|
* @param rtCkTypeId The RtCkType ID to fetch attributes for
|
|
2874
2996
|
* @param selectedAttributes Optional array of pre-selected attribute paths
|
|
2875
2997
|
* @param dialogTitle Optional custom dialog title
|
|
2998
|
+
* @param singleSelect Optional flag for single-select mode
|
|
2876
2999
|
* @returns Promise that resolves with the result containing selected attributes and confirmation status
|
|
2877
3000
|
*/
|
|
2878
3001
|
async openAttributeSelector(rtCkTypeId, selectedAttributes, dialogTitle, singleSelect) {
|
|
@@ -2882,20 +3005,29 @@ class AttributeSelectorDialogService {
|
|
|
2882
3005
|
dialogTitle,
|
|
2883
3006
|
singleSelect
|
|
2884
3007
|
};
|
|
2885
|
-
const
|
|
3008
|
+
const windowRef = this.windowService.open({
|
|
2886
3009
|
content: AttributeSelectorDialogComponent,
|
|
2887
|
-
width: singleSelect ?
|
|
2888
|
-
height: singleSelect ?
|
|
2889
|
-
minWidth: singleSelect ?
|
|
2890
|
-
minHeight: singleSelect ?
|
|
3010
|
+
width: singleSelect ? 550 : 1000,
|
|
3011
|
+
height: singleSelect ? 650 : 700,
|
|
3012
|
+
minWidth: singleSelect ? 450 : 850,
|
|
3013
|
+
minHeight: singleSelect ? 550 : 650,
|
|
3014
|
+
resizable: true,
|
|
2891
3015
|
title: dialogTitle || 'Select Attributes'
|
|
2892
3016
|
});
|
|
2893
3017
|
// Pass data to the component
|
|
2894
|
-
|
|
2895
|
-
|
|
3018
|
+
const contentRef = windowRef.content;
|
|
3019
|
+
if (contentRef?.instance) {
|
|
3020
|
+
contentRef.instance.data = data;
|
|
2896
3021
|
}
|
|
2897
3022
|
try {
|
|
2898
|
-
const result = await firstValueFrom(
|
|
3023
|
+
const result = await firstValueFrom(windowRef.result);
|
|
3024
|
+
if (result instanceof WindowCloseResult) {
|
|
3025
|
+
// User closed the window via X button
|
|
3026
|
+
return {
|
|
3027
|
+
confirmed: false,
|
|
3028
|
+
selectedAttributes: []
|
|
3029
|
+
};
|
|
3030
|
+
}
|
|
2899
3031
|
if (result && typeof result === 'object' && 'selectedAttributes' in result) {
|
|
2900
3032
|
// User clicked OK and we have a result
|
|
2901
3033
|
const dialogResult = result;
|
|
@@ -2920,10 +3052,10 @@ class AttributeSelectorDialogService {
|
|
|
2920
3052
|
};
|
|
2921
3053
|
}
|
|
2922
3054
|
}
|
|
2923
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
2924
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.
|
|
3055
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSelectorDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3056
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSelectorDialogService });
|
|
2925
3057
|
}
|
|
2926
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: AttributeSelectorDialogService, decorators: [{
|
|
2927
3059
|
type: Injectable
|
|
2928
3060
|
}] });
|
|
2929
3061
|
|
|
@@ -3121,8 +3253,8 @@ class CkTypeSelectorInputComponent {
|
|
|
3121
3253
|
this.selectCkType(result.selectedCkType);
|
|
3122
3254
|
}
|
|
3123
3255
|
}
|
|
3124
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3125
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
3256
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3257
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: CkTypeSelectorInputComponent, isStandalone: true, selector: "mm-ck-type-selector-input", inputs: { placeholder: "placeholder", minSearchLength: "minSearchLength", maxResults: "maxResults", debounceMs: "debounceMs", ckModelIds: "ckModelIds", allowAbstract: "allowAbstract", dialogTitle: "dialogTitle", advancedSearchLabel: "advancedSearchLabel", derivedFromRtCkTypeId: "derivedFromRtCkTypeId", disabled: "disabled", required: "required" }, outputs: { ckTypeSelected: "ckTypeSelected", ckTypeCleared: "ckTypeCleared" }, providers: [
|
|
3126
3258
|
{
|
|
3127
3259
|
provide: NG_VALUE_ACCESSOR,
|
|
3128
3260
|
useExisting: forwardRef(() => CkTypeSelectorInputComponent),
|
|
@@ -3186,9 +3318,9 @@ class CkTypeSelectorInputComponent {
|
|
|
3186
3318
|
(click)="openDialog()">
|
|
3187
3319
|
</button>
|
|
3188
3320
|
</div>
|
|
3189
|
-
`, isInline: true, styles: [":host{display:block;width:100%}.ck-type-select-wrapper{position:relative;display:flex;align-items:center;width:100%;gap:4px}.ck-type-select-wrapper.disabled{opacity:.6;pointer-events:none}.ck-type-autocomplete{flex:1;min-width:0}.dialog-button{flex-shrink:0;height:30px;width:30px;padding:0;display:flex;align-items:center;justify-content:center}.ck-type-item{padding:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-data-message{padding:8px 12px;color:var(--kendo-color-subtle);font-style:italic;text-align:center}.advanced-search-footer{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;color:var(--kendo-color-primary);border-top:1px solid var(--kendo-color-border);background:var(--kendo-color-surface-alt);transition:background-color .2s}.advanced-search-footer:hover{background:var(--kendo-color-base-hover)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i3$1.AutoCompleteComponent, selector: "kendo-autocomplete", inputs: ["highlightFirst", "showStickyHeader", "focusableId", "data", "value", "valueField", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "clearButton", "suggest", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoAutoComplete"] }, { kind: "directive", type: i3$1.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3$1.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3$1.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "ngmodule", type: LoaderModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: i5$
|
|
3321
|
+
`, isInline: true, styles: [":host{display:block;width:100%}.ck-type-select-wrapper{position:relative;display:flex;align-items:center;width:100%;gap:4px}.ck-type-select-wrapper.disabled{opacity:.6;pointer-events:none}.ck-type-autocomplete{flex:1;min-width:0}.dialog-button{flex-shrink:0;height:30px;width:30px;padding:0;display:flex;align-items:center;justify-content:center}.ck-type-item{padding:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-data-message{padding:8px 12px;color:var(--kendo-color-subtle);font-style:italic;text-align:center}.advanced-search-footer{display:flex;align-items:center;gap:8px;padding:8px 12px;cursor:pointer;color:var(--kendo-color-primary);border-top:1px solid var(--kendo-color-border);background:var(--kendo-color-surface-alt);transition:background-color .2s}.advanced-search-footer:hover{background:var(--kendo-color-base-hover)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AutoCompleteModule }, { kind: "component", type: i3$1.AutoCompleteComponent, selector: "kendo-autocomplete", inputs: ["highlightFirst", "showStickyHeader", "focusableId", "data", "value", "valueField", "placeholder", "adaptiveMode", "adaptiveTitle", "adaptiveSubtitle", "popupSettings", "listHeight", "loading", "clearButton", "suggest", "disabled", "itemDisabled", "readonly", "tabindex", "tabIndex", "filterable", "virtual", "size", "rounded", "fillMode", "inputAttributes"], outputs: ["valueChange", "filterChange", "open", "opened", "close", "closed", "focus", "blur", "inputFocus", "inputBlur"], exportAs: ["kendoAutoComplete"] }, { kind: "directive", type: i3$1.FooterTemplateDirective, selector: "[kendoDropDownListFooterTemplate],[kendoComboBoxFooterTemplate],[kendoDropDownTreeFooterTemplate],[kendoMultiColumnComboBoxFooterTemplate],[kendoAutoCompleteFooterTemplate],[kendoMultiSelectFooterTemplate],[kendoMultiSelectTreeFooterTemplate]" }, { kind: "directive", type: i3$1.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { kind: "directive", type: i3$1.NoDataTemplateDirective, selector: "[kendoDropDownListNoDataTemplate],[kendoDropDownTreeNoDataTemplate],[kendoComboBoxNoDataTemplate],[kendoMultiColumnComboBoxNoDataTemplate],[kendoAutoCompleteNoDataTemplate],[kendoMultiSelectNoDataTemplate],[kendoMultiSelectTreeNoDataTemplate]" }, { kind: "ngmodule", type: LoaderModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: IconsModule }, { kind: "component", type: i5$1.SVGIconComponent, selector: "kendo-svg-icon, kendo-svgicon", inputs: ["icon"], exportAs: ["kendoSVGIcon"] }, { kind: "ngmodule", type: SVGIconModule }] });
|
|
3190
3322
|
}
|
|
3191
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
3323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: CkTypeSelectorInputComponent, decorators: [{
|
|
3192
3324
|
type: Component,
|
|
3193
3325
|
args: [{ selector: 'mm-ck-type-selector-input', standalone: true, imports: [
|
|
3194
3326
|
CommonModule,
|
|
@@ -3684,8 +3816,8 @@ class FieldFilterEditorComponent {
|
|
|
3684
3816
|
}
|
|
3685
3817
|
return values;
|
|
3686
3818
|
}
|
|
3687
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
3688
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.
|
|
3819
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FieldFilterEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3820
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: FieldFilterEditorComponent, isStandalone: true, selector: "mm-field-filter-editor", inputs: { availableAttributes: "availableAttributes", enableVariables: "enableVariables", availableVariables: "availableVariables", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3689
3821
|
<div class="field-filter-editor">
|
|
3690
3822
|
<div class="toolbar">
|
|
3691
3823
|
<button
|
|
@@ -3914,9 +4046,9 @@ class FieldFilterEditorComponent {
|
|
|
3914
4046
|
</div>
|
|
3915
4047
|
}
|
|
3916
4048
|
</div>
|
|
3917
|
-
`, isInline: true, styles: [".field-filter-editor{display:flex;flex-direction:column;gap:10px}.toolbar{display:flex;gap:10px;margin-bottom:5px}.filter-grid{border:1px solid #d5d5d5}.filter-grid ::ng-deep .k-grid-header .k-header{font-weight:600}.checkbox-column{text-align:center}.attribute-dropdown,.operator-dropdown,.attribute-input,.value-input{width:100%}.attribute-item{display:flex;justify-content:space-between;align-items:center;width:100%}.attribute-path{flex:1}.attribute-type{font-size:11px;color:#888;margin-left:8px;padding:2px 6px;background:#f0f0f0;border-radius:3px}.empty-state{padding:40px;text-align:center;border:1px dashed;border-radius:8px;font-family:Montserrat,sans-serif;font-size:.9rem}.empty-state p{margin:0}.value-cell{display:flex;gap:4px;align-items:center}.value-cell .value-input{flex:1}.variable-toggle{flex-shrink:0}.variable-item{display:flex;flex-direction:column;gap:2px}.variable-name{font-family:monospace;font-weight:500}.variable-label{font-size:11px;color:var(--kendo-color-subtle, #888)}.variable-value{font-family:monospace;color:var(--kendo-color-primary, #0d6efd)}.variable-placeholder{color:var(--kendo-color-subtle, #888)}.variable-dropdown ::ng-deep .k-input-value-text{font-family:monospace}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "dataStateChange", "gridStateChange", "groupExpand", "groupCollapse", "detailExpand", "detailCollapse", "edit", "cancel", "save", "remove", "add", "cellClose", "cellClick", "pdfExport", "excelExport", "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: "directive", type: i3.HeaderTemplateDirective, selector: "[kendoGridHeaderTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "directive", type: i3$1.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { 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: "directive", type: i3$1.ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { 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: "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: "ngmodule", type: DateInputsModule }, { kind: "component", type: i6.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "weekDaysFormat", "showOtherMonthDays", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "adaptiveTitle", "adaptiveSubtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "clearButton", "autoFill", "adaptiveMode", "inputAttributes", "defaultTab", "size", "rounded", "fillMode", "headerTemplate", "footerTemplate", "footer"], outputs: ["valueChange", "open", "close", "focus", "blur", "escape"], exportAs: ["kendo-datetimepicker"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: PopupModule }, { kind: "ngmodule", type: IntlModule }] });
|
|
4049
|
+
`, isInline: true, styles: [".field-filter-editor{display:flex;flex-direction:column;gap:10px}.toolbar{display:flex;gap:10px;margin-bottom:5px}.filter-grid{border:1px solid #d5d5d5}.filter-grid ::ng-deep .k-grid-header .k-header{font-weight:600}.checkbox-column{text-align:center}.attribute-dropdown,.operator-dropdown,.attribute-input,.value-input{width:100%}.attribute-item{display:flex;justify-content:space-between;align-items:center;width:100%}.attribute-path{flex:1}.attribute-type{font-size:11px;color:#888;margin-left:8px;padding:2px 6px;background:#f0f0f0;border-radius:3px}.empty-state{padding:40px;text-align:center;border:1px dashed;border-radius:8px;font-family:Montserrat,sans-serif;font-size:.9rem}.empty-state p{margin:0}.value-cell{display:flex;gap:4px;align-items:center}.value-cell .value-input{flex:1}.variable-toggle{flex-shrink:0}.variable-item{display:flex;flex-direction:column;gap:2px}.variable-name{font-family:monospace;font-weight:500}.variable-label{font-size:11px;color:var(--kendo-color-subtle, #888)}.variable-value{font-family:monospace;color:var(--kendo-color-primary, #0d6efd)}.variable-placeholder{color:var(--kendo-color-subtle, #888)}.variable-dropdown ::ng-deep .k-input-value-text{font-family:monospace}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.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"], outputs: ["filterChange", "pageChange", "groupChange", "sortChange", "selectionChange", "rowReorder", "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: "directive", type: i3.HeaderTemplateDirective, selector: "[kendoGridHeaderTemplate]" }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i4.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "ngmodule", type: DropDownsModule }, { kind: "directive", type: i3$1.ItemTemplateDirective, selector: "[kendoDropDownListItemTemplate],[kendoComboBoxItemTemplate],[kendoAutoCompleteItemTemplate],[kendoMultiSelectItemTemplate]" }, { 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: "directive", type: i3$1.ValueTemplateDirective, selector: "[kendoDropDownListValueTemplate],[kendoDropDownTreeValueTemplate]" }, { 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: "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: "ngmodule", type: DateInputsModule }, { kind: "component", type: i6.DateTimePickerComponent, selector: "kendo-datetimepicker", inputs: ["focusableId", "weekDaysFormat", "showOtherMonthDays", "value", "format", "twoDigitYearMax", "tabindex", "disabledDates", "popupSettings", "adaptiveTitle", "adaptiveSubtitle", "disabled", "readonly", "readOnlyInput", "cancelButton", "formatPlaceholder", "placeholder", "steps", "focusedDate", "calendarType", "animateCalendarNavigation", "weekNumber", "min", "max", "rangeValidation", "disabledDatesValidation", "incompleteDateValidation", "autoCorrectParts", "autoSwitchParts", "autoSwitchKeys", "enableMouseWheel", "allowCaretMode", "clearButton", "autoFill", "adaptiveMode", "inputAttributes", "defaultTab", "size", "rounded", "fillMode", "headerTemplate", "footerTemplate", "footer"], outputs: ["valueChange", "open", "close", "focus", "blur", "escape"], exportAs: ["kendo-datetimepicker"] }, { kind: "ngmodule", type: IconsModule }, { kind: "ngmodule", type: PopupModule }, { kind: "ngmodule", type: IntlModule }] });
|
|
3918
4050
|
}
|
|
3919
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4051
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FieldFilterEditorComponent, decorators: [{
|
|
3920
4052
|
type: Component,
|
|
3921
4053
|
args: [{ selector: 'mm-field-filter-editor', standalone: true, imports: [
|
|
3922
4054
|
CommonModule,
|
|
@@ -4238,8 +4370,8 @@ class EntityIdInfoComponent {
|
|
|
4238
4370
|
this.notificationService.showError('Failed to copy to clipboard');
|
|
4239
4371
|
}
|
|
4240
4372
|
}
|
|
4241
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4242
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
4373
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: EntityIdInfoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4374
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: EntityIdInfoComponent, isStandalone: true, selector: "mm-entity-id-info", inputs: { rtId: "rtId", rtCkTypeId: "rtCkTypeId", ckTypeId: "ckTypeId" }, ngImport: i0, template: `
|
|
4243
4375
|
<kendo-dropdownbutton
|
|
4244
4376
|
[data]="copyOptions"
|
|
4245
4377
|
[svgIcon]="copyIcon"
|
|
@@ -4257,7 +4389,7 @@ class EntityIdInfoComponent {
|
|
|
4257
4389
|
</kendo-dropdownbutton>
|
|
4258
4390
|
`, isInline: true, styles: [":host{display:inline-block}.copy-item{display:flex;flex-direction:column;gap:2px;padding:8px 12px;width:100%}.copy-label{font-size:.7rem;font-weight:600;color:var(--kendo-color-primary, #64ceb9);text-transform:uppercase;letter-spacing:.5px}.copy-value{font-family:Roboto Mono,monospace;font-size:.75rem;color:var(--kendo-color-subtle, #9292a6);word-break:break-all}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ButtonsModule }, { kind: "component", type: i4.DropDownButtonComponent, selector: "kendo-dropdownbutton", inputs: ["arrowIcon", "icon", "svgIcon", "iconClass", "imageUrl", "textField", "data", "size", "rounded", "fillMode", "themeColor", "buttonAttributes"], outputs: ["itemClick", "focus", "blur"], exportAs: ["kendoDropDownButton"] }, { kind: "directive", type: i4.ButtonItemTemplateDirective, selector: "[kendoDropDownButtonItemTemplate],[kendoSplitButtonItemTemplate]" }, { kind: "ngmodule", type: SVGIconModule }] });
|
|
4259
4391
|
}
|
|
4260
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: EntityIdInfoComponent, decorators: [{
|
|
4261
4393
|
type: Component,
|
|
4262
4394
|
args: [{ selector: 'mm-entity-id-info', standalone: true, imports: [
|
|
4263
4395
|
CommonModule,
|
|
@@ -4306,8 +4438,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImpor
|
|
|
4306
4438
|
*/
|
|
4307
4439
|
class OctoLoaderComponent {
|
|
4308
4440
|
size = 'medium';
|
|
4309
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
4310
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.
|
|
4441
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: OctoLoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4442
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: OctoLoaderComponent, isStandalone: true, selector: "mm-octo-loader", inputs: { size: "size" }, ngImport: i0, template: `
|
|
4311
4443
|
<div class="octo-loader" [class.octo-loader--small]="size === 'small'" [class.octo-loader--medium]="size === 'medium'">
|
|
4312
4444
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-22 -8 112 118" class="octo-loader__svg" overflow="visible">
|
|
4313
4445
|
<!-- Orbit track -->
|
|
@@ -4398,7 +4530,7 @@ class OctoLoaderComponent {
|
|
|
4398
4530
|
</div>
|
|
4399
4531
|
`, isInline: true, styles: [":host{display:inline-flex;align-items:center;justify-content:center;color:var(--kendo-color-primary, #64ceb9)}.octo-loader{display:inline-flex;align-items:center;justify-content:center}.octo-loader--small .octo-loader__svg{width:24px;height:24px}.octo-loader--medium .octo-loader__svg{width:48px;height:48px}.octo-arm--ol{transform-origin:7px 52.74px;animation:octo-wiggle-outer 1.2s ease-in-out infinite}.octo-arm--or{transform-origin:56px 52.74px;animation:octo-wiggle-outer 1.2s ease-in-out infinite;animation-delay:-.6s}.octo-leg--left{transform-origin:21.8px 52.74px;animation:octo-wiggle-inner 1s ease-in-out infinite}.octo-leg--center{transform-origin:31.5px 52.74px;animation:octo-wiggle-inner 1s ease-in-out infinite reverse;animation-delay:-.33s}.octo-leg--right{transform-origin:46px 52.74px;animation:octo-wiggle-inner 1s ease-in-out infinite;animation-delay:-.66s}@keyframes octo-wiggle-inner{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes octo-wiggle-outer{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.octo-orbit{stroke:var(--neo-cyan, #00a8dc)}.octo-data{fill:var(--neo-cyan, #00a8dc)}\n"] });
|
|
4400
4532
|
}
|
|
4401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
4533
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: OctoLoaderComponent, decorators: [{
|
|
4402
4534
|
type: Component,
|
|
4403
4535
|
args: [{ selector: 'mm-octo-loader', standalone: true, template: `
|
|
4404
4536
|
<div class="octo-loader" [class.octo-loader--small]="size === 'small'" [class.octo-loader--medium]="size === 'medium'">
|