@meshmakers/octo-ui 3.3.470 → 3.3.480
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Component, Injectable, EventEmitter, Output, Input, forwardRef, ViewChild, makeEnvironmentProviders } from '@angular/core';
|
|
2
|
+
import { inject, Component, Injectable, EventEmitter, Output, Input, ElementRef, forwardRef, ViewChild, makeEnvironmentProviders } from '@angular/core';
|
|
3
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';
|
|
@@ -3102,10 +3102,14 @@ class CkTypeSelectorInputComponent {
|
|
|
3102
3102
|
onChange = () => { };
|
|
3103
3103
|
onTouched = () => { };
|
|
3104
3104
|
searchIcon = searchIcon;
|
|
3105
|
+
popupSettings = { appendTo: 'root', popupClass: 'mm-ck-type-popup' };
|
|
3106
|
+
static popupStyleInjected = false;
|
|
3105
3107
|
ckTypeSelectorService = inject(CkTypeSelectorService);
|
|
3106
3108
|
dialogService = inject(CkTypeSelectorDialogService, { optional: true });
|
|
3109
|
+
elementRef = inject(ElementRef);
|
|
3107
3110
|
ngOnInit() {
|
|
3108
3111
|
this.setupSearch();
|
|
3112
|
+
this.injectPopupStyles();
|
|
3109
3113
|
}
|
|
3110
3114
|
ngOnDestroy() {
|
|
3111
3115
|
this.subscriptions.unsubscribe();
|
|
@@ -3223,6 +3227,29 @@ class CkTypeSelectorInputComponent {
|
|
|
3223
3227
|
this.typeMap = new Map(items.map(item => [item.rtCkTypeId, item]));
|
|
3224
3228
|
}));
|
|
3225
3229
|
}
|
|
3230
|
+
injectPopupStyles() {
|
|
3231
|
+
if (CkTypeSelectorInputComponent.popupStyleInjected)
|
|
3232
|
+
return;
|
|
3233
|
+
const style = document.createElement('style');
|
|
3234
|
+
style.setAttribute('data-mm-ck-type-popup', '');
|
|
3235
|
+
style.textContent = `
|
|
3236
|
+
.mm-ck-type-popup {
|
|
3237
|
+
max-width: 500px !important;
|
|
3238
|
+
min-width: 0 !important;
|
|
3239
|
+
}
|
|
3240
|
+
.mm-ck-type-popup .k-child-animation-container {
|
|
3241
|
+
max-width: 500px !important;
|
|
3242
|
+
}
|
|
3243
|
+
.mm-ck-type-popup .k-list-item {
|
|
3244
|
+
padding: 4px 12px !important;
|
|
3245
|
+
min-height: 0 !important;
|
|
3246
|
+
font-size: 13px !important;
|
|
3247
|
+
line-height: 20px !important;
|
|
3248
|
+
}
|
|
3249
|
+
`;
|
|
3250
|
+
document.head.appendChild(style);
|
|
3251
|
+
CkTypeSelectorInputComponent.popupStyleInjected = true;
|
|
3252
|
+
}
|
|
3226
3253
|
selectCkType(ckType) {
|
|
3227
3254
|
this.selectedCkType = ckType;
|
|
3228
3255
|
this.searchFormControl.setValue(ckType.rtCkTypeId, { emitEvent: false });
|
|
@@ -3276,6 +3303,7 @@ class CkTypeSelectorInputComponent {
|
|
|
3276
3303
|
[suggest]="true"
|
|
3277
3304
|
[clearButton]="true"
|
|
3278
3305
|
[filterable]="true"
|
|
3306
|
+
[popupSettings]="popupSettings"
|
|
3279
3307
|
(filterChange)="onFilterChange($event)"
|
|
3280
3308
|
(valueChange)="onSelectionChange($event)"
|
|
3281
3309
|
(blur)="onBlur()"
|
|
@@ -3352,6 +3380,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
3352
3380
|
[suggest]="true"
|
|
3353
3381
|
[clearButton]="true"
|
|
3354
3382
|
[filterable]="true"
|
|
3383
|
+
[popupSettings]="popupSettings"
|
|
3355
3384
|
(filterChange)="onFilterChange($event)"
|
|
3356
3385
|
(valueChange)="onSelectionChange($event)"
|
|
3357
3386
|
(blur)="onBlur()"
|
|
@@ -3427,6 +3456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
3427
3456
|
}] } });
|
|
3428
3457
|
|
|
3429
3458
|
class FieldFilterEditorComponent {
|
|
3459
|
+
attributeService = inject(AttributeSelectorService, { optional: true });
|
|
3430
3460
|
plusIcon = plusIcon;
|
|
3431
3461
|
minusIcon = minusIcon;
|
|
3432
3462
|
trashIcon = trashIcon;
|
|
@@ -3451,10 +3481,21 @@ class FieldFilterEditorComponent {
|
|
|
3451
3481
|
];
|
|
3452
3482
|
booleanOptions = ['true', 'false'];
|
|
3453
3483
|
availableAttributes = [];
|
|
3484
|
+
/**
|
|
3485
|
+
* Optional CK type ID for self-loading attributes.
|
|
3486
|
+
* When set, the component loads available attributes itself and shows
|
|
3487
|
+
* navigation property controls (checkbox + max depth).
|
|
3488
|
+
* When not set, the component uses the externally provided availableAttributes input.
|
|
3489
|
+
*/
|
|
3490
|
+
ckTypeId;
|
|
3454
3491
|
/** Enable variable mode - allows using variables instead of literal values */
|
|
3455
3492
|
enableVariables = false;
|
|
3456
3493
|
/** Available variables for selection when enableVariables is true */
|
|
3457
3494
|
availableVariables = [];
|
|
3495
|
+
/** Controls for self-loading mode (when ckTypeId is set) */
|
|
3496
|
+
includeNavigationProperties = true;
|
|
3497
|
+
maxDepth = null;
|
|
3498
|
+
isLoadingAttributes = false;
|
|
3458
3499
|
_filters = [];
|
|
3459
3500
|
nextId = 1;
|
|
3460
3501
|
filteredAttributeList = [];
|
|
@@ -3468,7 +3509,11 @@ class FieldFilterEditorComponent {
|
|
|
3468
3509
|
}
|
|
3469
3510
|
filtersChange = new EventEmitter();
|
|
3470
3511
|
selectedKeys = [];
|
|
3471
|
-
ngOnChanges() {
|
|
3512
|
+
ngOnChanges(changes) {
|
|
3513
|
+
// Self-load attributes when ckTypeId changes
|
|
3514
|
+
if (changes?.['ckTypeId'] && this.ckTypeId) {
|
|
3515
|
+
this.loadAttributesFromCkType();
|
|
3516
|
+
}
|
|
3472
3517
|
this.filteredAttributeList = [...this.availableAttributes];
|
|
3473
3518
|
this.buildAttributeTypeMap();
|
|
3474
3519
|
// Ensure useVariable flag is set correctly for filters with variable values
|
|
@@ -3493,6 +3538,43 @@ class FieldFilterEditorComponent {
|
|
|
3493
3538
|
this.attributeTypeMap.set(attr.attributePath, attr.attributeValueType);
|
|
3494
3539
|
}
|
|
3495
3540
|
}
|
|
3541
|
+
// ============================================================================
|
|
3542
|
+
// Self-loading attribute methods (when ckTypeId is set)
|
|
3543
|
+
// ============================================================================
|
|
3544
|
+
onNavigationPropertiesChange() {
|
|
3545
|
+
if (!this.includeNavigationProperties) {
|
|
3546
|
+
this.maxDepth = null;
|
|
3547
|
+
}
|
|
3548
|
+
this.loadAttributesFromCkType();
|
|
3549
|
+
}
|
|
3550
|
+
onMaxDepthChange(value) {
|
|
3551
|
+
this.maxDepth = value;
|
|
3552
|
+
this.loadAttributesFromCkType();
|
|
3553
|
+
}
|
|
3554
|
+
async loadAttributesFromCkType() {
|
|
3555
|
+
if (!this.ckTypeId || !this.attributeService)
|
|
3556
|
+
return;
|
|
3557
|
+
this.isLoadingAttributes = true;
|
|
3558
|
+
try {
|
|
3559
|
+
const result = await firstValueFrom(this.attributeService.getAvailableAttributes(this.ckTypeId, undefined, // filter
|
|
3560
|
+
1000, // first
|
|
3561
|
+
undefined, // after
|
|
3562
|
+
undefined, // attributeValueType
|
|
3563
|
+
undefined, // searchTerm
|
|
3564
|
+
this.includeNavigationProperties, this.maxDepth ?? undefined));
|
|
3565
|
+
this.availableAttributes = result.items;
|
|
3566
|
+
this.filteredAttributeList = [...this.availableAttributes];
|
|
3567
|
+
this.buildAttributeTypeMap();
|
|
3568
|
+
}
|
|
3569
|
+
catch (error) {
|
|
3570
|
+
console.error('Error loading filter attributes:', error);
|
|
3571
|
+
this.availableAttributes = [];
|
|
3572
|
+
this.filteredAttributeList = [];
|
|
3573
|
+
}
|
|
3574
|
+
finally {
|
|
3575
|
+
this.isLoadingAttributes = false;
|
|
3576
|
+
}
|
|
3577
|
+
}
|
|
3496
3578
|
addFilter() {
|
|
3497
3579
|
const newFilter = {
|
|
3498
3580
|
id: this.nextId++,
|
|
@@ -3817,8 +3899,32 @@ class FieldFilterEditorComponent {
|
|
|
3817
3899
|
return values;
|
|
3818
3900
|
}
|
|
3819
3901
|
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: `
|
|
3902
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: FieldFilterEditorComponent, isStandalone: true, selector: "mm-field-filter-editor", inputs: { availableAttributes: "availableAttributes", ckTypeId: "ckTypeId", enableVariables: "enableVariables", availableVariables: "availableVariables", filters: "filters" }, outputs: { filtersChange: "filtersChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3821
3903
|
<div class="field-filter-editor">
|
|
3904
|
+
@if (ckTypeId) {
|
|
3905
|
+
<div class="attribute-options">
|
|
3906
|
+
<label class="inline-checkbox">
|
|
3907
|
+
<input type="checkbox" kendoCheckBox
|
|
3908
|
+
[(ngModel)]="includeNavigationProperties"
|
|
3909
|
+
(ngModelChange)="onNavigationPropertiesChange()" />
|
|
3910
|
+
Include Navigation Properties
|
|
3911
|
+
</label>
|
|
3912
|
+
<label class="inline-field">
|
|
3913
|
+
Max Depth
|
|
3914
|
+
<kendo-numerictextbox
|
|
3915
|
+
[(ngModel)]="maxDepth"
|
|
3916
|
+
[min]="1" [max]="5" [step]="1" [format]="'n0'"
|
|
3917
|
+
[spinners]="true"
|
|
3918
|
+
[disabled]="!includeNavigationProperties"
|
|
3919
|
+
(valueChange)="onMaxDepthChange($event)"
|
|
3920
|
+
class="depth-input">
|
|
3921
|
+
</kendo-numerictextbox>
|
|
3922
|
+
</label>
|
|
3923
|
+
@if (isLoadingAttributes) {
|
|
3924
|
+
<span class="loading-hint">Loading...</span>
|
|
3925
|
+
}
|
|
3926
|
+
</div>
|
|
3927
|
+
}
|
|
3822
3928
|
<div class="toolbar">
|
|
3823
3929
|
<button
|
|
3824
3930
|
kendoButton
|
|
@@ -3865,25 +3971,26 @@ class FieldFilterEditorComponent {
|
|
|
3865
3971
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="280">
|
|
3866
3972
|
<ng-template kendoGridCellTemplate let-dataItem>
|
|
3867
3973
|
@if (availableAttributes.length > 0) {
|
|
3868
|
-
<kendo-
|
|
3974
|
+
<kendo-combobox
|
|
3869
3975
|
[data]="filteredAttributeList"
|
|
3870
3976
|
[(ngModel)]="dataItem.attributePath"
|
|
3871
3977
|
(valueChange)="onAttributeChange(dataItem, $event)"
|
|
3872
3978
|
[textField]="'attributePath'"
|
|
3873
3979
|
[valueField]="'attributePath'"
|
|
3874
3980
|
[valuePrimitive]="true"
|
|
3981
|
+
[allowCustom]="true"
|
|
3875
3982
|
[filterable]="true"
|
|
3876
3983
|
(filterChange)="onAttributeFilterChange($event)"
|
|
3877
3984
|
[listHeight]="300"
|
|
3878
3985
|
[popupSettings]="{ appendTo: 'root', animate: true }"
|
|
3879
3986
|
class="attribute-dropdown">
|
|
3880
|
-
<ng-template
|
|
3987
|
+
<ng-template kendoComboBoxItemTemplate let-item>
|
|
3881
3988
|
<div class="attribute-item">
|
|
3882
3989
|
<span class="attribute-path">{{ item.attributePath }}</span>
|
|
3883
3990
|
<span class="attribute-type">{{ item.attributeValueType }}</span>
|
|
3884
3991
|
</div>
|
|
3885
3992
|
</ng-template>
|
|
3886
|
-
</kendo-
|
|
3993
|
+
</kendo-combobox>
|
|
3887
3994
|
} @else {
|
|
3888
3995
|
<kendo-textbox
|
|
3889
3996
|
[(ngModel)]="dataItem.attributePath"
|
|
@@ -4046,7 +4153,7 @@ class FieldFilterEditorComponent {
|
|
|
4046
4153
|
</div>
|
|
4047
4154
|
}
|
|
4048
4155
|
</div>
|
|
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 }] });
|
|
4156
|
+
`, isInline: true, styles: [".field-filter-editor{display:flex;flex-direction:column;gap:10px}.attribute-options{display:flex;align-items:center;gap:16px;font-size:.85rem}.inline-checkbox{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:400}.inline-field{display:flex;align-items:center;gap:6px;font-weight:400}.depth-input{width:80px}.loading-hint{font-size:.8rem;color:var(--kendo-color-subtle, #6c757d)}.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.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: "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.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: "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: "directive", type: i5.CheckBoxDirective, selector: "input[kendoCheckBox]", inputs: ["size", "rounded"] }, { 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 }] });
|
|
4050
4157
|
}
|
|
4051
4158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: FieldFilterEditorComponent, decorators: [{
|
|
4052
4159
|
type: Component,
|
|
@@ -4063,6 +4170,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
4063
4170
|
IntlModule
|
|
4064
4171
|
], template: `
|
|
4065
4172
|
<div class="field-filter-editor">
|
|
4173
|
+
@if (ckTypeId) {
|
|
4174
|
+
<div class="attribute-options">
|
|
4175
|
+
<label class="inline-checkbox">
|
|
4176
|
+
<input type="checkbox" kendoCheckBox
|
|
4177
|
+
[(ngModel)]="includeNavigationProperties"
|
|
4178
|
+
(ngModelChange)="onNavigationPropertiesChange()" />
|
|
4179
|
+
Include Navigation Properties
|
|
4180
|
+
</label>
|
|
4181
|
+
<label class="inline-field">
|
|
4182
|
+
Max Depth
|
|
4183
|
+
<kendo-numerictextbox
|
|
4184
|
+
[(ngModel)]="maxDepth"
|
|
4185
|
+
[min]="1" [max]="5" [step]="1" [format]="'n0'"
|
|
4186
|
+
[spinners]="true"
|
|
4187
|
+
[disabled]="!includeNavigationProperties"
|
|
4188
|
+
(valueChange)="onMaxDepthChange($event)"
|
|
4189
|
+
class="depth-input">
|
|
4190
|
+
</kendo-numerictextbox>
|
|
4191
|
+
</label>
|
|
4192
|
+
@if (isLoadingAttributes) {
|
|
4193
|
+
<span class="loading-hint">Loading...</span>
|
|
4194
|
+
}
|
|
4195
|
+
</div>
|
|
4196
|
+
}
|
|
4066
4197
|
<div class="toolbar">
|
|
4067
4198
|
<button
|
|
4068
4199
|
kendoButton
|
|
@@ -4109,25 +4240,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
4109
4240
|
<kendo-grid-column field="attributePath" title="Attribute Path" [width]="280">
|
|
4110
4241
|
<ng-template kendoGridCellTemplate let-dataItem>
|
|
4111
4242
|
@if (availableAttributes.length > 0) {
|
|
4112
|
-
<kendo-
|
|
4243
|
+
<kendo-combobox
|
|
4113
4244
|
[data]="filteredAttributeList"
|
|
4114
4245
|
[(ngModel)]="dataItem.attributePath"
|
|
4115
4246
|
(valueChange)="onAttributeChange(dataItem, $event)"
|
|
4116
4247
|
[textField]="'attributePath'"
|
|
4117
4248
|
[valueField]="'attributePath'"
|
|
4118
4249
|
[valuePrimitive]="true"
|
|
4250
|
+
[allowCustom]="true"
|
|
4119
4251
|
[filterable]="true"
|
|
4120
4252
|
(filterChange)="onAttributeFilterChange($event)"
|
|
4121
4253
|
[listHeight]="300"
|
|
4122
4254
|
[popupSettings]="{ appendTo: 'root', animate: true }"
|
|
4123
4255
|
class="attribute-dropdown">
|
|
4124
|
-
<ng-template
|
|
4256
|
+
<ng-template kendoComboBoxItemTemplate let-item>
|
|
4125
4257
|
<div class="attribute-item">
|
|
4126
4258
|
<span class="attribute-path">{{ item.attributePath }}</span>
|
|
4127
4259
|
<span class="attribute-type">{{ item.attributeValueType }}</span>
|
|
4128
4260
|
</div>
|
|
4129
4261
|
</ng-template>
|
|
4130
|
-
</kendo-
|
|
4262
|
+
</kendo-combobox>
|
|
4131
4263
|
} @else {
|
|
4132
4264
|
<kendo-textbox
|
|
4133
4265
|
[(ngModel)]="dataItem.attributePath"
|
|
@@ -4290,9 +4422,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
|
|
|
4290
4422
|
</div>
|
|
4291
4423
|
}
|
|
4292
4424
|
</div>
|
|
4293
|
-
`, 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"] }]
|
|
4425
|
+
`, styles: [".field-filter-editor{display:flex;flex-direction:column;gap:10px}.attribute-options{display:flex;align-items:center;gap:16px;font-size:.85rem}.inline-checkbox{display:flex;align-items:center;gap:6px;cursor:pointer;font-weight:400}.inline-field{display:flex;align-items:center;gap:6px;font-weight:400}.depth-input{width:80px}.loading-hint{font-size:.8rem;color:var(--kendo-color-subtle, #6c757d)}.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"] }]
|
|
4294
4426
|
}], propDecorators: { availableAttributes: [{
|
|
4295
4427
|
type: Input
|
|
4428
|
+
}], ckTypeId: [{
|
|
4429
|
+
type: Input
|
|
4296
4430
|
}], enableVariables: [{
|
|
4297
4431
|
type: Input
|
|
4298
4432
|
}], availableVariables: [{
|