@meshmakers/octo-ui 3.3.34 → 3.3.390

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.
@@ -0,0 +1,806 @@
1
+ import * as i0 from '@angular/core';
2
+ import { OnInit, OnChanges, EventEmitter, SimpleChanges, OnDestroy, EnvironmentProviders } from '@angular/core';
3
+ import * as _progress_kendo_svg_icons from '@progress/kendo-svg-icons';
4
+ import { DialogContentBase } from '@progress/kendo-angular-dialog';
5
+ import { GridDataResult, CellClickEvent, RowArgs, PageChangeEvent, SelectionEvent } from '@progress/kendo-angular-grid';
6
+ import { FieldFilterDto, SearchFilterDto, SortDto, AttributeItem, CkTypeSelectorItem, FieldFilterOperatorsDto } from '@meshmakers/octo-services';
7
+ import { ControlValueAccessor, Validator, FormControl, AbstractControl, ValidationErrors } from '@angular/forms';
8
+ import { AutoCompleteComponent } from '@progress/kendo-angular-dropdowns';
9
+ import { DataSourceTyped, ListViewComponent, HierarchyDataSourceBase } from '@meshmakers/shared-ui';
10
+ import { State } from '@progress/kendo-data-query/dist/npm/state';
11
+ import { TreeItemDataTyped } from '@meshmakers/shared-services';
12
+ import { Observable } from 'rxjs';
13
+
14
+ declare abstract class OctoGraphQlDataSource<TDto> extends DataSourceTyped<TDto | null> {
15
+ private _searchFilterAttributePaths;
16
+ protected constructor(listViewComponent: ListViewComponent);
17
+ protected get searchFilterAttributePaths(): string[];
18
+ protected set searchFilterAttributePaths(value: string[]);
19
+ protected getFieldFilterDefinitions(state: State): FieldFilterDto[] | null;
20
+ protected getSearchFilterDefinitions(textSearchValue: string | null): SearchFilterDto | null;
21
+ protected getSortDefinitions(state: State): SortDto[] | null;
22
+ private static getOperatorAndValue;
23
+ }
24
+
25
+ declare abstract class OctoGraphQlHierarchyDataSource<TQueryDto> extends HierarchyDataSourceBase<TQueryDto> {
26
+ abstract fetchChildren(item: TreeItemDataTyped<TQueryDto>): Promise<TreeItemDataTyped<TQueryDto>[]>;
27
+ abstract fetchRootNodes(): Promise<TreeItemDataTyped<TQueryDto>[]>;
28
+ }
29
+
30
+ declare enum AttributeValueTypeDto {
31
+ BinaryDto = "BINARY",
32
+ BinaryLinkedDto = "BINARY_LINKED",
33
+ BooleanDto = "BOOLEAN",
34
+ DateTimeDto = "DATE_TIME",
35
+ DateTimeOffsetDto = "DATE_TIME_OFFSET",
36
+ DoubleDto = "DOUBLE",
37
+ EnumDto = "ENUM",
38
+ GeospatialPointDto = "GEOSPATIAL_POINT",
39
+ IntDto = "INT",
40
+ IntegerDto = "INTEGER",
41
+ Integer_64Dto = "INTEGER_64",
42
+ IntegerArrayDto = "INTEGER_ARRAY",
43
+ Int_64Dto = "INT_64",
44
+ IntArrayDto = "INT_ARRAY",
45
+ RecordDto = "RECORD",
46
+ RecordArrayDto = "RECORD_ARRAY",
47
+ StringDto = "STRING",
48
+ StringArrayDto = "STRING_ARRAY",
49
+ TimeSpanDto = "TIME_SPAN"
50
+ }
51
+ /**
52
+ * Represents a property item in the property grid
53
+ */
54
+ interface PropertyGridItem {
55
+ /** Unique identifier for the property */
56
+ id: string;
57
+ /** Property name/key */
58
+ name: string;
59
+ /** Display name for the property (optional, falls back to name) */
60
+ displayName?: string;
61
+ /** Current value of the property */
62
+ value: any;
63
+ /** Data type of the property */
64
+ type: AttributeValueTypeDto;
65
+ /** Description/tooltip for the property */
66
+ description?: string;
67
+ /** Whether the property is read-only */
68
+ readOnly?: boolean;
69
+ /** Category for grouping properties */
70
+ category?: string;
71
+ /** Whether the property is required */
72
+ required?: boolean;
73
+ /** Custom validation rules */
74
+ validators?: any[];
75
+ /** Custom editor configuration */
76
+ editorConfig?: any;
77
+ }
78
+ /**
79
+ * Configuration options for the property grid
80
+ */
81
+ interface PropertyGridConfig {
82
+ /** Whether the grid is in read-only mode */
83
+ readOnlyMode?: boolean;
84
+ /** Custom editors for specific types */
85
+ customEditors?: Record<string, any>;
86
+ /** Whether to show type icons */
87
+ showTypeIcons?: boolean;
88
+ /** Height of the grid */
89
+ height?: string;
90
+ /** Whether to show the search box */
91
+ showSearch?: boolean;
92
+ }
93
+ /**
94
+ * Event data for property changes
95
+ */
96
+ interface PropertyChangeEvent {
97
+ /** The property that changed */
98
+ property: PropertyGridItem;
99
+ /** The old value */
100
+ oldValue: any;
101
+ /** The new value */
102
+ newValue: any;
103
+ }
104
+ /**
105
+ * Supported display modes for complex values
106
+ */
107
+ declare enum PropertyDisplayMode {
108
+ /** Simple text representation */
109
+ Text = "text",
110
+ /** JSON formatted display */
111
+ Json = "json",
112
+ /** Custom template display */
113
+ Custom = "custom"
114
+ }
115
+ /**
116
+ * Categories for default property grouping
117
+ */
118
+ declare enum DefaultPropertyCategory {
119
+ General = "General",
120
+ System = "System",
121
+ Attributes = "Attributes",
122
+ Associations = "Associations",
123
+ Metadata = "Metadata"
124
+ }
125
+ /**
126
+ * Event data for binary download requests
127
+ */
128
+ interface BinaryDownloadEvent {
129
+ /** The binary ID to download */
130
+ binaryId: string;
131
+ /** Optional filename for the download */
132
+ filename?: string;
133
+ /** Optional content type */
134
+ contentType?: string;
135
+ /** Optional download URI if already available */
136
+ downloadUri?: string;
137
+ }
138
+
139
+ /**
140
+ * Service for converting various data structures to PropertyGridItem format.
141
+ * Uses Construction Kit (CK) type definitions for accurate attribute type resolution.
142
+ */
143
+ declare class PropertyConverterService {
144
+ private readonly ckTypeAttributeService;
145
+ /**
146
+ * Convert OctoMesh RtEntity attributes to property grid items using CK type definitions.
147
+ * @param attributes The attributes array from RtEntity
148
+ * @param ckTypeId The fullName of the CK type to look up attribute types
149
+ * @returns Observable of PropertyGridItem array
150
+ */
151
+ convertRtEntityAttributes(attributes: any[], ckTypeId: string): Observable<PropertyGridItem[]>;
152
+ /**
153
+ * Convert any JavaScript object to property grid items using reflection.
154
+ * This method remains synchronous as there is no CK type for generic JS objects.
155
+ */
156
+ convertObjectToProperties(obj: any, category?: string): PropertyGridItem[];
157
+ /**
158
+ * Convert RtRecord to property grid items using CK type definitions.
159
+ * @param record The record object containing ckRecordId and attributes
160
+ * @returns Observable of PropertyGridItem array
161
+ */
162
+ convertRtRecordToProperties(record: any): Observable<PropertyGridItem[]>;
163
+ /**
164
+ * Convert OctoMesh RtEntity to comprehensive property list using CK type definitions.
165
+ * @param entity The RtEntity object
166
+ * @returns Observable of PropertyGridItem array
167
+ */
168
+ convertRtEntityToProperties(entity: any): Observable<PropertyGridItem[]>;
169
+ /**
170
+ * Build a map from attribute name to attribute value type from CK definitions
171
+ */
172
+ private buildAttributeTypeMap;
173
+ /**
174
+ * Convert attributes using CK type map for type resolution
175
+ */
176
+ private convertAttributesWithCkTypes;
177
+ /**
178
+ * Convert a single attribute to PropertyGridItem
179
+ */
180
+ private convertSingleAttribute;
181
+ /**
182
+ * Get attribute type from CK map
183
+ */
184
+ private getAttributeType;
185
+ /**
186
+ * Map CK type string to AttributeValueTypeDto enum
187
+ */
188
+ private mapCkTypeToAttributeValueType;
189
+ /**
190
+ * Convert attribute value synchronously (for non-record values)
191
+ */
192
+ private convertRtEntityAttributeValueSync;
193
+ /**
194
+ * Infer attribute type from JavaScript value.
195
+ * Used only for convertObjectToProperties where no CK type is available.
196
+ */
197
+ private inferAttributeType;
198
+ /**
199
+ * Check if string is ISO date format
200
+ */
201
+ private isIsoDateString;
202
+ static ɵfac: i0.ɵɵFactoryDeclaration<PropertyConverterService, never>;
203
+ static ɵprov: i0.ɵɵInjectableDeclaration<PropertyConverterService>;
204
+ }
205
+
206
+ /**
207
+ * Generic property grid component for OctoMesh
208
+ */
209
+ declare class PropertyGridComponent implements OnInit, OnChanges {
210
+ data: PropertyGridItem[];
211
+ config: PropertyGridConfig;
212
+ showTypeColumn: boolean;
213
+ propertyChange: EventEmitter<PropertyChangeEvent>;
214
+ saveRequested: EventEmitter<PropertyGridItem[]>;
215
+ binaryDownload: EventEmitter<BinaryDownloadEvent>;
216
+ filteredData: PropertyGridItem[];
217
+ searchTerm: string;
218
+ hasChanges: boolean;
219
+ pendingChanges: PropertyChangeEvent[];
220
+ readonly fileIcon: _progress_kendo_svg_icons.SVGIcon;
221
+ readonly folderIcon: _progress_kendo_svg_icons.SVGIcon;
222
+ readonly calendarIcon: _progress_kendo_svg_icons.SVGIcon;
223
+ readonly checkboxCheckedIcon: _progress_kendo_svg_icons.SVGIcon;
224
+ readonly listUnorderedIcon: _progress_kendo_svg_icons.SVGIcon;
225
+ readonly AttributeValueTypeDto: typeof AttributeValueTypeDto;
226
+ ngOnInit(): void;
227
+ ngOnChanges(changes: SimpleChanges): void;
228
+ get gridHeight(): string;
229
+ /**
230
+ * Update filtered data based on search term
231
+ */
232
+ updateFilteredData(): void;
233
+ /**
234
+ * Handle search input
235
+ */
236
+ onSearch(): void;
237
+ /**
238
+ * Get appropriate icon for property type
239
+ */
240
+ getTypeIcon(type: AttributeValueTypeDto): any;
241
+ /**
242
+ * Format type name for display
243
+ */
244
+ formatTypeName(type: AttributeValueTypeDto): string;
245
+ /**
246
+ * Save pending changes
247
+ */
248
+ saveChanges(): void;
249
+ /**
250
+ * Discard pending changes
251
+ */
252
+ discardChanges(): void;
253
+ /**
254
+ * Handle property value change
255
+ */
256
+ onPropertyChange(property: PropertyGridItem, oldValue: any, newValue: any): void;
257
+ /**
258
+ * Handle binary download request from property value display
259
+ */
260
+ onBinaryDownload(event: BinaryDownloadEvent): void;
261
+ static ɵfac: i0.ɵɵFactoryDeclaration<PropertyGridComponent, never>;
262
+ static ɵcmp: i0.ɵɵComponentDeclaration<PropertyGridComponent, "mm-property-grid", never, { "data": { "alias": "data"; "required": false; }; "config": { "alias": "config"; "required": false; }; "showTypeColumn": { "alias": "showTypeColumn"; "required": false; }; }, { "propertyChange": "propertyChange"; "saveRequested": "saveRequested"; "binaryDownload": "binaryDownload"; }, never, never, true, never>;
263
+ }
264
+
265
+ /**
266
+ * Component for displaying property values with appropriate formatting
267
+ */
268
+ declare class PropertyValueDisplayComponent implements OnInit {
269
+ value: any;
270
+ type: AttributeValueTypeDto;
271
+ displayMode: PropertyDisplayMode;
272
+ /** Emitted when a binary download is requested */
273
+ binaryDownload: EventEmitter<BinaryDownloadEvent>;
274
+ isExpanded: boolean;
275
+ readonly PropertyDisplayMode: typeof PropertyDisplayMode;
276
+ readonly AttributeValueTypeDto: typeof AttributeValueTypeDto;
277
+ readonly Array: ArrayConstructor;
278
+ readonly chevronRightIcon: _progress_kendo_svg_icons.SVGIcon;
279
+ readonly chevronDownIcon: _progress_kendo_svg_icons.SVGIcon;
280
+ readonly downloadIcon: _progress_kendo_svg_icons.SVGIcon;
281
+ ngOnInit(): void;
282
+ /**
283
+ * Get formatted display value
284
+ */
285
+ getFormattedValue(): string;
286
+ /**
287
+ * Check if this is an expandable record type
288
+ */
289
+ isExpandableRecord(): boolean;
290
+ /**
291
+ * Check if the type is complex (object/array)
292
+ */
293
+ isComplexType(): boolean;
294
+ /**
295
+ * Get type indicator text
296
+ */
297
+ getTypeIndicator(): string;
298
+ /**
299
+ * Get type description for tooltip
300
+ */
301
+ getTypeDescription(): string;
302
+ /**
303
+ * Format date/time values
304
+ */
305
+ private formatDateTime;
306
+ /**
307
+ * Format array values
308
+ */
309
+ private formatArray;
310
+ /**
311
+ * Format object values
312
+ */
313
+ private formatObject;
314
+ /**
315
+ * Format binary data
316
+ */
317
+ private formatBinary;
318
+ /**
319
+ * Format numeric values
320
+ */
321
+ private formatNumber;
322
+ /**
323
+ * Truncate long values for preview
324
+ */
325
+ private truncateValue;
326
+ /**
327
+ * Toggle expansion state
328
+ */
329
+ toggleExpansion(): void;
330
+ /**
331
+ * Get summary text for record header
332
+ */
333
+ getRecordSummary(): string;
334
+ /**
335
+ * Get properties of an object for display
336
+ */
337
+ getObjectProperties(obj: any): {
338
+ key: string;
339
+ value: any;
340
+ }[];
341
+ /**
342
+ * Determine the appropriate type for a nested property value
343
+ */
344
+ getPropertyType(value: any): AttributeValueTypeDto;
345
+ /**
346
+ * Check if this is a BINARY_LINKED type with download capability
347
+ */
348
+ isBinaryLinkedWithDownload(): boolean;
349
+ /**
350
+ * Get the filename from binary info
351
+ */
352
+ getBinaryFilename(): string | null;
353
+ /**
354
+ * Get the file size from binary info
355
+ */
356
+ getBinarySize(): number | null;
357
+ /**
358
+ * Get the content type from binary info
359
+ */
360
+ getBinaryContentType(): string | null;
361
+ /**
362
+ * Format file size to human readable format
363
+ */
364
+ formatFileSize(bytes: number | null): string;
365
+ /**
366
+ * Handle download button click
367
+ */
368
+ onDownload(): void;
369
+ static ɵfac: i0.ɵɵFactoryDeclaration<PropertyValueDisplayComponent, never>;
370
+ static ɵcmp: i0.ɵɵComponentDeclaration<PropertyValueDisplayComponent, "mm-property-value-display", never, { "value": { "alias": "value"; "required": false; }; "type": { "alias": "type"; "required": false; }; "displayMode": { "alias": "displayMode"; "required": false; }; }, { "binaryDownload": "binaryDownload"; }, never, never, true, never>;
371
+ }
372
+
373
+ interface AttributeSelectorDialogData {
374
+ rtCkTypeId: string;
375
+ selectedAttributes?: string[];
376
+ dialogTitle?: string;
377
+ }
378
+ interface AttributeSelectorDialogResult {
379
+ selectedAttributes: AttributeItem[];
380
+ }
381
+ declare class AttributeSelectorDialogComponent extends DialogContentBase implements OnInit {
382
+ private readonly attributeService;
383
+ private searchSubject;
384
+ constructor();
385
+ protected readonly arrowRightIcon: _progress_kendo_svg_icons.SVGIcon;
386
+ protected readonly arrowLeftIcon: _progress_kendo_svg_icons.SVGIcon;
387
+ protected readonly chevronDoubleRightIcon: _progress_kendo_svg_icons.SVGIcon;
388
+ protected readonly chevronDoubleLeftIcon: _progress_kendo_svg_icons.SVGIcon;
389
+ protected readonly searchIcon: _progress_kendo_svg_icons.SVGIcon;
390
+ protected readonly arrowUpIcon: _progress_kendo_svg_icons.SVGIcon;
391
+ protected readonly arrowDownIcon: _progress_kendo_svg_icons.SVGIcon;
392
+ dialogTitle: string;
393
+ rtCkTypeId: string;
394
+ searchText: string;
395
+ availableAttributes: AttributeItem[];
396
+ selectedAttributes: AttributeItem[];
397
+ availableGridData: GridDataResult;
398
+ selectedGridData: GridDataResult;
399
+ selectedAvailableKeys: string[];
400
+ selectedChosenKeys: string[];
401
+ private lastClickTime;
402
+ private lastClickedItem;
403
+ private readonly doubleClickDelay;
404
+ ngOnInit(): void;
405
+ private loadAvailableAttributes;
406
+ private loadInitialSelectedAttributes;
407
+ onSearchChange(value: string): void;
408
+ addSelected(): void;
409
+ removeSelected(): void;
410
+ addAll(): void;
411
+ removeAll(): void;
412
+ private sortAvailableAttributes;
413
+ canMoveUp(): boolean;
414
+ canMoveDown(): boolean;
415
+ moveUp(): void;
416
+ moveDown(): void;
417
+ private updateGrids;
418
+ private updateAvailableGrid;
419
+ private updateSelectedGrid;
420
+ onCancel(): void;
421
+ onConfirm(): void;
422
+ /**
423
+ * Handle cell click on available attributes grid to detect double-click
424
+ */
425
+ onAvailableCellClick(event: CellClickEvent): void;
426
+ /**
427
+ * Handle cell click on selected attributes grid to detect double-click
428
+ */
429
+ onSelectedCellClick(event: CellClickEvent): void;
430
+ /**
431
+ * Move a single attribute from available to selected
432
+ */
433
+ private moveAttributeToSelected;
434
+ /**
435
+ * Move a single attribute from selected to available
436
+ */
437
+ private moveAttributeToAvailable;
438
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributeSelectorDialogComponent, never>;
439
+ static ɵcmp: i0.ɵɵComponentDeclaration<AttributeSelectorDialogComponent, "mm-attribute-selector-dialog", never, {}, {}, never, never, true, never>;
440
+ }
441
+
442
+ interface AttributeSelectorResult {
443
+ confirmed: boolean;
444
+ selectedAttributes: AttributeItem[];
445
+ }
446
+ declare class AttributeSelectorDialogService {
447
+ private readonly dialogService;
448
+ /**
449
+ * Opens the attribute selector dialog
450
+ * @param rtCkTypeId The RtCkType ID to fetch attributes for
451
+ * @param selectedAttributes Optional array of pre-selected attribute paths
452
+ * @param dialogTitle Optional custom dialog title
453
+ * @returns Promise that resolves with the result containing selected attributes and confirmation status
454
+ */
455
+ openAttributeSelector(rtCkTypeId: string, selectedAttributes?: string[], dialogTitle?: string): Promise<AttributeSelectorResult>;
456
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributeSelectorDialogService, never>;
457
+ static ɵprov: i0.ɵɵInjectableDeclaration<AttributeSelectorDialogService>;
458
+ }
459
+
460
+ interface AttributeSortItem {
461
+ attributePath: string;
462
+ attributeValueType: string;
463
+ sortOrder: 'standard' | 'ascending' | 'descending';
464
+ }
465
+ interface AttributeSortSelectorDialogData {
466
+ ckTypeId: string;
467
+ selectedAttributes?: AttributeSortItem[];
468
+ dialogTitle?: string;
469
+ }
470
+ interface AttributeSortSelectorDialogResult {
471
+ selectedAttributes: AttributeSortItem[];
472
+ }
473
+ interface SortOption {
474
+ text: string;
475
+ value: 'standard' | 'ascending' | 'descending';
476
+ }
477
+ declare class AttributeSortSelectorDialogComponent extends DialogContentBase implements OnInit {
478
+ private readonly attributeService;
479
+ private searchSubject;
480
+ constructor();
481
+ ckTypeId: string;
482
+ searchText: string;
483
+ currentSortOrder: 'standard' | 'ascending' | 'descending';
484
+ availableAttributes: AttributeItem[];
485
+ selectedAttributes: AttributeSortItem[];
486
+ availableGridData: GridDataResult;
487
+ selectedGridData: GridDataResult;
488
+ selectedAvailableKeys: string[];
489
+ selectedChosenKeys: string[];
490
+ private lastClickTime;
491
+ private lastClickedItem;
492
+ private readonly doubleClickDelay;
493
+ dialogTitle: string;
494
+ sortOptions: SortOption[];
495
+ protected readonly searchIcon: _progress_kendo_svg_icons.SVGIcon;
496
+ protected readonly sortAscIcon: _progress_kendo_svg_icons.SVGIcon;
497
+ protected readonly sortDescIcon: _progress_kendo_svg_icons.SVGIcon;
498
+ ngOnInit(): void;
499
+ private loadAvailableAttributes;
500
+ onSearchChange(value: string): void;
501
+ setSortOrder(order: 'standard' | 'ascending' | 'descending'): void;
502
+ addAttributeWithSort(): void;
503
+ onAvailableCellClick(event: CellClickEvent): void;
504
+ onSelectedCellClick(event: CellClickEvent): void;
505
+ private addAttributeToSelected;
506
+ removeAttribute(attribute: AttributeSortItem): void;
507
+ getSortIndicator(sortOrder: string): string;
508
+ getSortText(sortOrder: string): string;
509
+ private updateGrids;
510
+ private updateAvailableGrid;
511
+ private updateSelectedGrid;
512
+ onOk(): void;
513
+ onCancel(): void;
514
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributeSortSelectorDialogComponent, never>;
515
+ static ɵcmp: i0.ɵɵComponentDeclaration<AttributeSortSelectorDialogComponent, "mm-attribute-sort-selector-dialog", never, {}, {}, never, never, true, never>;
516
+ }
517
+
518
+ interface AttributeSortSelectorResult {
519
+ confirmed: boolean;
520
+ selectedAttributes: AttributeSortItem[];
521
+ }
522
+ declare class AttributeSortSelectorDialogService {
523
+ private readonly dialogService;
524
+ /**
525
+ * Opens the attribute sort selector dialog
526
+ * @param ckTypeId The CkType ID to fetch attributes for
527
+ * @param selectedAttributes Optional array of pre-selected attributes with sort orders
528
+ * @param dialogTitle Optional custom dialog title
529
+ * @returns Promise that resolves with the result containing selected attributes with sort orders and confirmation status
530
+ */
531
+ openAttributeSortSelector(ckTypeId: string, selectedAttributes?: AttributeSortItem[], dialogTitle?: string): Promise<AttributeSortSelectorResult>;
532
+ static ɵfac: i0.ɵɵFactoryDeclaration<AttributeSortSelectorDialogService, never>;
533
+ static ɵprov: i0.ɵɵInjectableDeclaration<AttributeSortSelectorDialogService>;
534
+ }
535
+
536
+ interface CkTypeSelectorDialogData {
537
+ selectedCkTypeId?: string;
538
+ ckModelIds?: string[];
539
+ dialogTitle?: string;
540
+ allowAbstract?: boolean;
541
+ }
542
+ interface CkTypeSelectorDialogResult {
543
+ selectedCkType: CkTypeSelectorItem;
544
+ }
545
+ declare class CkTypeSelectorDialogComponent extends DialogContentBase implements OnInit, OnDestroy {
546
+ private readonly ckTypeSelectorService;
547
+ private searchSubject;
548
+ private subscriptions;
549
+ protected readonly searchIcon: _progress_kendo_svg_icons.SVGIcon;
550
+ protected readonly filterClearIcon: _progress_kendo_svg_icons.SVGIcon;
551
+ dialogTitle: string;
552
+ allowAbstract: boolean;
553
+ searchText: string;
554
+ selectedModel: string | null;
555
+ availableModels: string[];
556
+ gridData: GridDataResult;
557
+ isLoading: boolean;
558
+ pageSize: number;
559
+ skip: number;
560
+ selectedKeys: string[];
561
+ selectedType: CkTypeSelectorItem | null;
562
+ selectItemBy: (context: RowArgs) => string;
563
+ private initialCkModelIds?;
564
+ constructor();
565
+ ngOnInit(): void;
566
+ ngOnDestroy(): void;
567
+ private loadTypes;
568
+ private loadAvailableModels;
569
+ onSearchChange(value: string): void;
570
+ onModelFilterChange(_value: string | null): void;
571
+ clearFilters(): void;
572
+ onPageChange(event: PageChangeEvent): void;
573
+ onSelectionChange(event: SelectionEvent): void;
574
+ onCancel(): void;
575
+ onConfirm(): void;
576
+ static ɵfac: i0.ɵɵFactoryDeclaration<CkTypeSelectorDialogComponent, never>;
577
+ static ɵcmp: i0.ɵɵComponentDeclaration<CkTypeSelectorDialogComponent, "mm-ck-type-selector-dialog", never, {}, {}, never, never, true, never>;
578
+ }
579
+
580
+ interface CkTypeSelectorResult {
581
+ confirmed: boolean;
582
+ selectedCkType: CkTypeSelectorItem | null;
583
+ }
584
+ declare class CkTypeSelectorDialogService {
585
+ private readonly dialogService;
586
+ /**
587
+ * Opens the CkType selector dialog
588
+ * @param options Dialog options
589
+ * @returns Promise that resolves with the result containing selected CkType and confirmation status
590
+ */
591
+ openCkTypeSelector(options?: {
592
+ selectedCkTypeId?: string;
593
+ ckModelIds?: string[];
594
+ dialogTitle?: string;
595
+ allowAbstract?: boolean;
596
+ }): Promise<CkTypeSelectorResult>;
597
+ static ɵfac: i0.ɵɵFactoryDeclaration<CkTypeSelectorDialogService, never>;
598
+ static ɵprov: i0.ɵɵInjectableDeclaration<CkTypeSelectorDialogService>;
599
+ }
600
+
601
+ declare class CkTypeSelectorInputComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {
602
+ autocomplete: AutoCompleteComponent;
603
+ placeholder: string;
604
+ minSearchLength: number;
605
+ maxResults: number;
606
+ debounceMs: number;
607
+ ckModelIds?: string[];
608
+ allowAbstract: boolean;
609
+ dialogTitle: string;
610
+ advancedSearchLabel: string;
611
+ private _disabled;
612
+ get disabled(): boolean;
613
+ set disabled(value: boolean);
614
+ private _required;
615
+ get required(): boolean;
616
+ set required(value: boolean);
617
+ ckTypeSelected: EventEmitter<CkTypeSelectorItem>;
618
+ ckTypeCleared: EventEmitter<void>;
619
+ searchFormControl: FormControl<any>;
620
+ filteredTypes: string[];
621
+ selectedCkType: CkTypeSelectorItem | null;
622
+ isLoading: boolean;
623
+ private typeMap;
624
+ private searchSubject;
625
+ private subscriptions;
626
+ private onChange;
627
+ private onTouched;
628
+ protected readonly searchIcon: _progress_kendo_svg_icons.SVGIcon;
629
+ private readonly ckTypeSelectorService;
630
+ private readonly dialogService;
631
+ ngOnInit(): void;
632
+ ngOnDestroy(): void;
633
+ writeValue(value: CkTypeSelectorItem | null): void;
634
+ registerOnChange(fn: (value: CkTypeSelectorItem | null) => void): void;
635
+ registerOnTouched(fn: () => void): void;
636
+ setDisabledState(isDisabled: boolean): void;
637
+ validate(control: AbstractControl): ValidationErrors | null;
638
+ onFilterChange(filter: string): void;
639
+ onSelectionChange(value: string): void;
640
+ onFocus(): void;
641
+ onBlur(): void;
642
+ clear(): void;
643
+ focus(): void;
644
+ reset(): void;
645
+ private setupSearch;
646
+ private selectCkType;
647
+ openDialog(event?: Event): Promise<void>;
648
+ static ɵfac: i0.ɵɵFactoryDeclaration<CkTypeSelectorInputComponent, never>;
649
+ static ɵcmp: i0.ɵɵComponentDeclaration<CkTypeSelectorInputComponent, "mm-ck-type-selector-input", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "minSearchLength": { "alias": "minSearchLength"; "required": false; }; "maxResults": { "alias": "maxResults"; "required": false; }; "debounceMs": { "alias": "debounceMs"; "required": false; }; "ckModelIds": { "alias": "ckModelIds"; "required": false; }; "allowAbstract": { "alias": "allowAbstract"; "required": false; }; "dialogTitle": { "alias": "dialogTitle"; "required": false; }; "advancedSearchLabel": { "alias": "advancedSearchLabel"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "required": { "alias": "required"; "required": false; }; }, { "ckTypeSelected": "ckTypeSelected"; "ckTypeCleared": "ckTypeCleared"; }, never, never, true, never>;
650
+ }
651
+
652
+ /**
653
+ * Variable definition for use in filter values.
654
+ * Generic interface that can be provided by any consumer (e.g., MeshBoard).
655
+ */
656
+ interface FilterVariable {
657
+ /** Variable name (without $ prefix) */
658
+ name: string;
659
+ /** Display label for UI */
660
+ label?: string;
661
+ /** Variable data type */
662
+ type?: 'string' | 'number' | 'boolean' | 'date' | 'datetime';
663
+ }
664
+ interface FieldFilterItem extends FieldFilterDto {
665
+ id: number;
666
+ /** If true, comparisonValue contains a variable reference (e.g., $myVar) */
667
+ useVariable?: boolean;
668
+ }
669
+ type InputType = 'text' | 'number' | 'boolean' | 'datetime';
670
+ declare class FieldFilterEditorComponent implements OnChanges {
671
+ protected readonly plusIcon: _progress_kendo_svg_icons.SVGIcon;
672
+ protected readonly minusIcon: _progress_kendo_svg_icons.SVGIcon;
673
+ protected readonly trashIcon: _progress_kendo_svg_icons.SVGIcon;
674
+ protected readonly dollarIcon: _progress_kendo_svg_icons.SVGIcon;
675
+ private readonly arrayOperators;
676
+ readonly operators: {
677
+ label: string;
678
+ value: FieldFilterOperatorsDto;
679
+ }[];
680
+ readonly booleanOptions: string[];
681
+ availableAttributes: AttributeItem[];
682
+ /** Enable variable mode - allows using variables instead of literal values */
683
+ enableVariables: boolean;
684
+ /** Available variables for selection when enableVariables is true */
685
+ availableVariables: FilterVariable[];
686
+ private _filters;
687
+ private nextId;
688
+ filteredAttributeList: AttributeItem[];
689
+ private attributeTypeMap;
690
+ get filters(): FieldFilterItem[];
691
+ set filters(value: FieldFilterItem[]);
692
+ filtersChange: EventEmitter<FieldFilterItem[]>;
693
+ selectedKeys: number[];
694
+ ngOnChanges(): void;
695
+ /**
696
+ * Detects filters that contain variable references and sets useVariable flag.
697
+ * This ensures proper display when filters are loaded from saved configuration.
698
+ */
699
+ private detectVariableFilters;
700
+ private buildAttributeTypeMap;
701
+ addFilter(): void;
702
+ removeFilter(filter: FieldFilterItem): void;
703
+ removeSelected(): void;
704
+ onFilterChange(): void;
705
+ onAttributeChange(filter: FieldFilterItem, attributePath: string): void;
706
+ onOperatorChange(filter: FieldFilterItem): void;
707
+ onComparisonValueChange(filter: FieldFilterItem, inputValue: string | null): void;
708
+ onComparisonValueBlur(filter: FieldFilterItem): void;
709
+ onBooleanValueChange(filter: FieldFilterItem, value: string): void;
710
+ onNumericValueChange(filter: FieldFilterItem, value: number | null): void;
711
+ onDateTimeValueChange(filter: FieldFilterItem, value: Date | null): void;
712
+ getDisplayValue(filter: FieldFilterItem): string;
713
+ getBooleanValue(filter: FieldFilterItem): string;
714
+ getNumericValue(filter: FieldFilterItem): number;
715
+ getDateTimeValue(filter: FieldFilterItem): Date | null;
716
+ getInputType(filter: FieldFilterItem): InputType;
717
+ getDecimals(filter: FieldFilterItem): number;
718
+ getNumberFormat(filter: FieldFilterItem): string;
719
+ getValuePlaceholder(filter: FieldFilterItem): string;
720
+ isArrayOperator(operator: FieldFilterOperatorsDto): boolean;
721
+ isSelected(filter: FieldFilterItem): boolean;
722
+ toggleSelection(filter: FieldFilterItem): void;
723
+ isAllSelected(): boolean;
724
+ isIndeterminate(): boolean;
725
+ toggleSelectAll(event: Event): void;
726
+ onAttributeFilterChange(filter: string): void;
727
+ /**
728
+ * Toggles between literal value and variable mode for a filter.
729
+ */
730
+ toggleVariableMode(filter: FieldFilterItem): void;
731
+ /**
732
+ * Gets the selected variable object for a filter that uses variable mode.
733
+ */
734
+ getSelectedVariable(filter: FieldFilterItem): FilterVariable | null;
735
+ /**
736
+ * Handles variable selection from the dropdown.
737
+ */
738
+ onVariableSelected(filter: FieldFilterItem, variable: FilterVariable | null): void;
739
+ /**
740
+ * Extracts variable name from ${variableName} or $variableName format.
741
+ */
742
+ private extractVariableName;
743
+ /**
744
+ * Checks if a filter value is a variable reference.
745
+ */
746
+ isVariableValue(value: unknown): boolean;
747
+ /**
748
+ * Formats a variable name for display (e.g., "myVar" -> "${myVar}").
749
+ */
750
+ formatVariableDisplay(name: string): string;
751
+ getFieldFilters(): FieldFilterDto[];
752
+ setFieldFilters(filters: FieldFilterDto[]): void;
753
+ clear(): void;
754
+ private isArrayValue;
755
+ private extractArrayContent;
756
+ private parseAndCleanArrayValues;
757
+ static ɵfac: i0.ɵɵFactoryDeclaration<FieldFilterEditorComponent, never>;
758
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldFilterEditorComponent, "mm-field-filter-editor", never, { "availableAttributes": { "alias": "availableAttributes"; "required": false; }; "enableVariables": { "alias": "enableVariables"; "required": false; }; "availableVariables": { "alias": "availableVariables"; "required": false; }; "filters": { "alias": "filters"; "required": false; }; }, { "filtersChange": "filtersChange"; }, never, never, true, never>;
759
+ }
760
+
761
+ interface CopyOption {
762
+ label: string;
763
+ value: string;
764
+ displayText: string;
765
+ }
766
+ /**
767
+ * A reusable component for displaying and copying entity identifiers.
768
+ * Provides a dropdown button with options to copy:
769
+ * - RtId: The runtime ObjectId
770
+ * - CkTypeId: The full versioned Construction Kit type ID
771
+ * - RtCkTypeId: The runtime CK type ID (unversioned)
772
+ * - RtEntityId: Combined format {RtCkTypeId}@{RtId}
773
+ *
774
+ * @example
775
+ * ```html
776
+ * <mm-entity-id-info
777
+ * [rtId]="entity.rtId"
778
+ * [rtCkTypeId]="entity.ckTypeId"
779
+ * [ckTypeId]="entity.constructionKitType?.ckTypeId?.fullName">
780
+ * </mm-entity-id-info>
781
+ * ```
782
+ */
783
+ declare class EntityIdInfoComponent {
784
+ private readonly notificationService;
785
+ protected readonly copyIcon: _progress_kendo_svg_icons.SVGIcon;
786
+ /** The RtId (ObjectId) of the entity */
787
+ rtId: string;
788
+ /** The RtCkTypeId - runtime CK type ID (e.g., System.Communication/MeshAdapter) */
789
+ rtCkTypeId: string;
790
+ /** The CkTypeId - full versioned Construction Kit type ID (e.g., System.Communication-2.0.3/MeshAdapter-1) */
791
+ ckTypeId?: string;
792
+ protected get copyOptions(): CopyOption[];
793
+ private truncateValue;
794
+ protected copyToClipboard(option: CopyOption): Promise<void>;
795
+ static ɵfac: i0.ɵɵFactoryDeclaration<EntityIdInfoComponent, never>;
796
+ static ɵcmp: i0.ɵɵComponentDeclaration<EntityIdInfoComponent, "mm-entity-id-info", never, { "rtId": { "alias": "rtId"; "required": true; }; "rtCkTypeId": { "alias": "rtCkTypeId"; "required": true; }; "ckTypeId": { "alias": "ckTypeId"; "required": false; }; }, {}, never, never, true, never>;
797
+ }
798
+
799
+ /**
800
+ * Provides OctoUi services using modern Angular provider functions.
801
+ * This is the recommended approach for library providers.
802
+ */
803
+ declare function provideOctoUi(): EnvironmentProviders;
804
+
805
+ export { AttributeSelectorDialogComponent, AttributeSelectorDialogService, AttributeSortSelectorDialogComponent, AttributeSortSelectorDialogService, AttributeValueTypeDto, CkTypeSelectorDialogComponent, CkTypeSelectorDialogService, CkTypeSelectorInputComponent, DefaultPropertyCategory, EntityIdInfoComponent, FieldFilterEditorComponent, OctoGraphQlDataSource, OctoGraphQlHierarchyDataSource, PropertyConverterService, PropertyDisplayMode, PropertyGridComponent, PropertyValueDisplayComponent, provideOctoUi };
806
+ export type { AttributeSelectorDialogData, AttributeSelectorDialogResult, AttributeSelectorResult, AttributeSortItem, AttributeSortSelectorDialogData, AttributeSortSelectorDialogResult, AttributeSortSelectorResult, BinaryDownloadEvent, CkTypeSelectorDialogData, CkTypeSelectorDialogResult, CkTypeSelectorResult, FieldFilterItem, FilterVariable, PropertyChangeEvent, PropertyGridConfig, PropertyGridItem, SortOption };