@acorex-platform/module-data-management-client 0.0.32 → 0.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/fesm2022/acorex-platform-module-data-management-client-contracts-entities-data-source.mjs +919 -0
  2. package/fesm2022/acorex-platform-module-data-management-client-contracts-entities-data-source.mjs.map +1 -0
  3. package/fesm2022/acorex-platform-module-data-management-client-contracts-entities-meta-data-definition.mjs +288 -0
  4. package/fesm2022/acorex-platform-module-data-management-client-contracts-entities-meta-data-definition.mjs.map +1 -0
  5. package/fesm2022/acorex-platform-module-data-management-client-contracts-entities-tag.mjs +190 -0
  6. package/fesm2022/acorex-platform-module-data-management-client-contracts-entities-tag.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-acorex-platform-module-data-management-client-contracts-entity-catalog-BIY8VQ23.mjs +88 -0
  8. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-acorex-platform-module-data-management-client-contracts-entity-catalog-BIY8VQ23.mjs.map +1 -0
  9. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-data-source.entity-CJ7ky5Gc.mjs +852 -0
  10. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-data-source.entity-CJ7ky5Gc.mjs.map +1 -0
  11. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-meta-data-definition.entity-Dj3FPJ3n.mjs +221 -0
  12. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-meta-data-definition.entity-Dj3FPJ3n.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-tag.entity-CFKCEoHu.mjs +123 -0
  14. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog-tag.entity-CFKCEoHu.mjs.map +1 -0
  15. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog.mjs +2 -0
  16. package/fesm2022/acorex-platform-module-data-management-client-contracts-entity-catalog.mjs.map +1 -0
  17. package/fesm2022/acorex-platform-module-data-management-client-contracts.mjs.map +1 -1
  18. package/fesm2022/acorex-platform-module-data-management-client-index-CMxKYDas.mjs.map +1 -1
  19. package/fesm2022/acorex-platform-module-data-management-client-list-agreement-scale-options.query-Dl7jMXp1.mjs.map +1 -1
  20. package/fesm2022/acorex-platform-module-data-management-client-list-availability-options.query-CdaHTgij.mjs.map +1 -1
  21. package/fesm2022/acorex-platform-module-data-management-client-list-frequency-options.query-BvsPPzFj.mjs.map +1 -1
  22. package/fesm2022/acorex-platform-module-data-management-client-list-gender-options.query-BA6Bwv66.mjs.map +1 -1
  23. package/fesm2022/acorex-platform-module-data-management-client-list-nps-scale-options.query-C8Pbp0Ow.mjs.map +1 -1
  24. package/fesm2022/acorex-platform-module-data-management-client-list-priority-options.query-GCuv4lU3.mjs.map +1 -1
  25. package/fesm2022/acorex-platform-module-data-management-client-list-rating-1-10-options.query-BYBU_yzv.mjs.map +1 -1
  26. package/fesm2022/acorex-platform-module-data-management-client-list-rating-scale-options.query-H-jWx7_1.mjs.map +1 -1
  27. package/fesm2022/acorex-platform-module-data-management-client-list-satisfaction-options.query-BIDjWNP5.mjs.map +1 -1
  28. package/fesm2022/acorex-platform-module-data-management-client-list-yes-no-maybe-options.query-C90RnQ5A.mjs.map +1 -1
  29. package/fesm2022/acorex-platform-module-data-management-client-list-yes-no-na-options.query-tz9dR33P.mjs.map +1 -1
  30. package/fesm2022/acorex-platform-module-data-management-client-list-yes-no-options.query-w2mqJJNZ.mjs.map +1 -1
  31. package/fesm2022/acorex-platform-module-data-management-client-local-entities.mjs +31 -0
  32. package/fesm2022/acorex-platform-module-data-management-client-local-entities.mjs.map +1 -0
  33. package/fesm2022/acorex-platform-module-data-management-client.mjs +68 -57
  34. package/fesm2022/acorex-platform-module-data-management-client.mjs.map +1 -1
  35. package/package.json +21 -1
  36. package/types/acorex-platform-module-data-management-client-contracts-entities-data-source.d.ts +5 -0
  37. package/types/acorex-platform-module-data-management-client-contracts-entities-meta-data-definition.d.ts +5 -0
  38. package/types/acorex-platform-module-data-management-client-contracts-entities-tag.d.ts +5 -0
  39. package/types/acorex-platform-module-data-management-client-contracts-entity-catalog.d.ts +10 -0
  40. package/types/acorex-platform-module-data-management-client-local-entities.d.ts +12 -0
@@ -4,12 +4,11 @@ import { AXPContextStore, AXPDataGenerator, AXPTagProvider, AXP_TAG_PROVIDER, AX
4
4
  import { AXPStateMessageComponent, AXPStandardSectionItemsBuilderComponent, AXPWidgetPropertyViewerService, AXPItemConfiguratorComponent, AXP_PAGE_COMPONENT_PROVIDER } from '@acorex-platform/framework-client/layout/components';
5
5
  import { AXPEntityDefinitionRegistryService, AXPEntityService, AXPEntityDataSelectorService, resolveEntityPluginDetailPageOrder, actionExists, AXP_ENTITY_ACTION_PLUGIN, ensureListActions, cloneLayoutArrays, ensureLayoutSection, ensureLayoutPropertyView, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
6
6
  import { RootConfig, AXMDataManagementFeatureKeys, AXPInsightsReportingPermissionKeys, AXPDataManagementMenuKeys, convertValueToState } from '@acorex-platform/module-data-management-client/contracts';
7
- import * as i4 from '@acorex-platform/framework-client/layout/widget-core';
7
+ import * as i3 from '@acorex-platform/framework-client/layout/widget-core';
8
8
  import { AXP_WIDGETS_EDITOR_CATEGORY, AXPValueWidgetComponent, AXPWidgetCoreModule, AXPWidgetRegistryService, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
9
9
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY, AXP_LABEL_PROPERTY, AXP_READONLY_PROPERTY } from '@acorex-platform/framework-client/layout/widgets';
10
- import * as i3 from '@acorex/components/select-box';
11
- import { AXSelectBoxModule } from '@acorex/components/select-box';
12
- import * as i5 from '@acorex/components/decorators';
10
+ import { AXLookupComponent } from '@acorex/components/lookup';
11
+ import * as i4 from '@acorex/components/decorators';
13
12
  import { AXDecoratorModule } from '@acorex/components/decorators';
14
13
  import { AXDataSource } from '@acorex/cdk/common';
15
14
  import * as i1 from '@angular/forms';
@@ -19,22 +18,23 @@ import { AXTextBoxModule } from '@acorex/components/text-box';
19
18
  import { AXPWidgetGroupEnum, AXPPageStatus } from '@acorex-platform/framework-shared/widget-core';
20
19
  import * as i1$1 from '@acorex/components/tabs';
21
20
  import { AXTabsModule } from '@acorex/components/tabs';
22
- import * as i5$1 from '@acorex/components/label';
21
+ import * as i3$1 from '@acorex/components/label';
23
22
  import { AXLabelModule } from '@acorex/components/label';
24
- import * as i7 from '@acorex/core/translation';
23
+ import * as i5 from '@acorex/core/translation';
25
24
  import { AXTranslationModule, AXTranslationService, isEffectivelyEmptyLocalizedValue } from '@acorex/core/translation';
26
- import * as i6 from '@angular/common';
25
+ import * as i4$1 from '@angular/common';
27
26
  import { CommonModule, isPlatformBrowser } from '@angular/common';
28
- import * as i2$1 from '@acorex/components/button';
27
+ import * as i2$2 from '@acorex/components/button';
29
28
  import { AXButtonModule } from '@acorex/components/button';
30
29
  import { AXDropdownModule } from '@acorex/components/dropdown';
31
30
  import { moveItemInArray, AXDragDirective, AXDragHandleDirective, AXDropListDirective } from '@acorex/cdk/drag-drop';
32
- import * as i3$1 from '@acorex/components/check-box';
31
+ import * as i2$1 from '@acorex/components/check-box';
33
32
  import { AXCheckBoxModule } from '@acorex/components/check-box';
34
- import * as i4$1 from '@acorex/components/search-box';
33
+ import * as i3$2 from '@acorex/components/search-box';
35
34
  import { AXSearchBoxModule } from '@acorex/components/search-box';
36
- import * as i4$2 from '@acorex/components/text-area';
35
+ import * as i3$3 from '@acorex/components/text-area';
37
36
  import { AXTextAreaModule } from '@acorex/components/text-area';
37
+ import { AXComboBoxComponent } from '@acorex/components/combo-box';
38
38
  import { AXP_MENU_PROVIDER } from '@acorex-platform/framework-client/common';
39
39
  import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
40
40
  import { AXPQueryService, provideCommandSetups, provideQuerySetups } from '@acorex-platform/framework-client/runtime';
@@ -230,17 +230,19 @@ class AXMColumnFilterSelectorWidgetEditComponent extends AXPValueWidgetComponent
230
230
  <axp-widgets-container
231
231
  [context]="getValue()"
232
232
  (onContextChanged)="handleWidgetValueChange($event)">
233
- <ax-select-box
233
+ <ax-lookup
234
+ mode="drop-down-list"
234
235
  [placeholder]="'Select Column'"
235
236
  [dataSource]="columnsDataSource()"
236
237
  [valueField]="'name'"
237
238
  [textField]="'title'"
238
239
  [ngModel]="getValue().columnName"
239
240
  [disabled]="disabled()"
241
+ [searchable]="false"
240
242
  (onValueChanged)="handleColumnChange($event)"
241
243
  >
242
244
  <ax-clear-button></ax-clear-button>
243
- </ax-select-box>
245
+ </ax-lookup>
244
246
 
245
247
  @if (filterWidgetNode()) {
246
248
 
@@ -252,7 +254,7 @@ class AXMColumnFilterSelectorWidgetEditComponent extends AXPValueWidgetComponent
252
254
  }
253
255
  </axp-widgets-container>
254
256
  </div>
255
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i4.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i4.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
257
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
256
258
  }
257
259
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMColumnFilterSelectorWidgetEditComponent, decorators: [{
258
260
  type: Component,
@@ -263,17 +265,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
263
265
  <axp-widgets-container
264
266
  [context]="getValue()"
265
267
  (onContextChanged)="handleWidgetValueChange($event)">
266
- <ax-select-box
268
+ <ax-lookup
269
+ mode="drop-down-list"
267
270
  [placeholder]="'Select Column'"
268
271
  [dataSource]="columnsDataSource()"
269
272
  [valueField]="'name'"
270
273
  [textField]="'title'"
271
274
  [ngModel]="getValue().columnName"
272
275
  [disabled]="disabled()"
276
+ [searchable]="false"
273
277
  (onValueChanged)="handleColumnChange($event)"
274
278
  >
275
279
  <ax-clear-button></ax-clear-button>
276
- </ax-select-box>
280
+ </ax-lookup>
277
281
 
278
282
  @if (filterWidgetNode()) {
279
283
 
@@ -289,7 +293,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
289
293
  changeDetection: ChangeDetectionStrategy.OnPush,
290
294
  imports: [
291
295
  FormsModule,
292
- AXSelectBoxModule,
296
+ AXLookupComponent,
293
297
  AXDecoratorModule,
294
298
  AXPWidgetCoreModule
295
299
  ],
@@ -455,7 +459,7 @@ class AXMColumnFilterSelectorWidgetFilterComponent extends AXPValueWidgetCompone
455
459
  >
456
460
  <ax-clear-button></ax-clear-button>
457
461
  </ax-text-box>
458
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
462
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
459
463
  }
460
464
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMColumnFilterSelectorWidgetFilterComponent, decorators: [{
461
465
  type: Component,
@@ -616,16 +620,25 @@ class AXPQueryBuilderConditionComponent {
616
620
  }, /* @ts-ignore */
617
621
  ...(ngDevMode ? [{ debugName: "context" }] : /* istanbul ignore next */ []));
618
622
  /**
619
- * Available filter definitions formatted for select-box
623
+ * Available filter definitions formatted for lookup
620
624
  */
621
- this.availableFields = computed(() => {
622
- return this.filterDefinitions.map(def => ({
625
+ this.availableFieldsDataSource = computed(() => {
626
+ const fields = this.filterDefinitions.map(def => ({
623
627
  value: def.field,
624
628
  text: def.title,
625
- definition: def
629
+ definition: def,
626
630
  }));
631
+ return new AXDataSource({
632
+ load: () => Promise.resolve({ items: fields, total: fields.length }),
633
+ byKey: (key) => {
634
+ const item = fields.find(f => f.value === key);
635
+ return Promise.resolve(item ?? null);
636
+ },
637
+ pageSize: 1000,
638
+ key: 'value',
639
+ });
627
640
  }, /* @ts-ignore */
628
- ...(ngDevMode ? [{ debugName: "availableFields" }] : /* istanbul ignore next */ []));
641
+ ...(ngDevMode ? [{ debugName: "availableFieldsDataSource" }] : /* istanbul ignore next */ []));
629
642
  /**
630
643
  * Current filter definition for the selected field
631
644
  */
@@ -774,21 +787,21 @@ class AXPQueryBuilderConditionComponent {
774
787
  this.removeItem.emit(this.item.id);
775
788
  }
776
789
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPQueryBuilderConditionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
777
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPQueryBuilderConditionComponent, isStandalone: true, selector: "axp-query-builder-condition", inputs: { item: "item", filterDefinitions: "filterDefinitions", onResolveWidget: "onResolveWidget" }, outputs: { itemChange: "itemChange", removeItem: "removeItem" }, ngImport: i0, template: "<div class=\"__condition-row\">\n <div class=\"__item-content\">\n <!-- Field Selector -->\n <div class=\"__field-selector\">\n <ax-select-box\n class=\"ax-sm\"\n [dataSource]=\"availableFields()\"\n [ngModel]=\"selectedFieldValue()\"\n (onValueChanged)=\"onFieldChange($event)\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.condition.select-field' | translate | async) || 'Select a field'\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n\n <!-- Default Filter Widget (Operator + Value) -->\n <div class=\"__operator-selector\">\n @if (selectedField()?.field && filterNode().type) {\n <axp-widgets-container \n class=\"__filter-widget-container\" \n [context]=\"context()\" \n (onContextChanged)=\"onContextChange($event)\">\n <ng-container \n axp-widget-renderer \n [node]=\"filterNode()\" \n [mode]=\"'edit'\">\n </ng-container>\n </axp-widgets-container>\n } @else {\n <div class=\"__filter-placeholder\">\n <span class=\"__placeholder-text\">{{ ('@data-management:metadata-definitions.components.query-builder.condition.select-field-first' | translate | async) || 'Select a field first' }}</span>\n </div>\n }\n </div>\n\n <!-- Fill By User (isParametric) -->\n <div class=\"__fill-by-user\">\n <ax-check-box\n class=\"text-xs\"\n [ngModel]=\"$safeNavigationMigration(selectedField()?.isParametric)\"\n (ngModelChange)=\"onFillByUserChange($event)\"\n >\n <ax-label>\n {{ '@data-management:metadata-definitions.components.query-builder.condition.fill-by-user' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n </div>\n</div>\n\n", styles: ["@layer properties;.__condition-row{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__field-selector{flex-shrink:0;min-width:180px}.__condition-row .__item-content .__field-selector ax-select-box{width:100%}.__condition-row .__item-content .__operator-selector{min-width:200px;flex:1}.__condition-row .__item-content .__operator-selector .__filter-widget-container{width:100%}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep .axp-widgets-container{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-select-box{min-width:140px}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-text-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-number-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-date-time-box{flex:1}.__condition-row .__item-content .__operator-selector .__filter-placeholder{display:flex;align-items:center;justify-content:center;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1);border-width:1px}.__condition-row .__item-content .__operator-selector .__filter-placeholder .__placeholder-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-500, oklch(55.6% 0 none));font-style:italic}@media(max-width:768px){.__condition-row{flex-direction:column;align-items:stretch}.__condition-row .__item-content{flex-direction:column;align-items:stretch;gap:calc(var(--spacing, .25rem) * 2)}.__condition-row .__field-selector,.__condition-row .__operator-selector{width:100%;min-width:0px}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i3$1.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i4.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i4.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPQueryBuilderConditionComponent, isStandalone: true, selector: "axp-query-builder-condition", inputs: { item: "item", filterDefinitions: "filterDefinitions", onResolveWidget: "onResolveWidget" }, outputs: { itemChange: "itemChange", removeItem: "removeItem" }, ngImport: i0, template: "<div class=\"__condition-row\">\n <div class=\"__item-content\">\n <!-- Field Selector -->\n <div class=\"__field-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"ax-sm\"\n [dataSource]=\"availableFieldsDataSource()\"\n [ngModel]=\"selectedFieldValue()\"\n (onValueChanged)=\"onFieldChange($event)\"\n valueField=\"value\"\n textField=\"text\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.condition.select-field' | translate | async) || 'Select a field'\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n\n <!-- Default Filter Widget (Operator + Value) -->\n <div class=\"__operator-selector\">\n @if (selectedField()?.field && filterNode().type) {\n <axp-widgets-container \n class=\"__filter-widget-container\" \n [context]=\"context()\" \n (onContextChanged)=\"onContextChange($event)\">\n <ng-container \n axp-widget-renderer \n [node]=\"filterNode()\" \n [mode]=\"'edit'\">\n </ng-container>\n </axp-widgets-container>\n } @else {\n <div class=\"__filter-placeholder\">\n <span class=\"__placeholder-text\">{{ ('@data-management:metadata-definitions.components.query-builder.condition.select-field-first' | translate | async) || 'Select a field first' }}</span>\n </div>\n }\n </div>\n\n <!-- Fill By User (isParametric) -->\n <div class=\"__fill-by-user\">\n <ax-check-box\n class=\"text-xs\"\n [ngModel]=\"$safeNavigationMigration(selectedField()?.isParametric)\"\n (ngModelChange)=\"onFillByUserChange($event)\"\n >\n <ax-label>\n {{ '@data-management:metadata-definitions.components.query-builder.condition.fill-by-user' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n </div>\n</div>\n\n", styles: ["@layer properties;.__condition-row{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__field-selector{flex-shrink:0;min-width:180px}.__condition-row .__item-content .__field-selector ax-lookup{width:100%}.__condition-row .__item-content .__operator-selector{min-width:200px;flex:1}.__condition-row .__item-content .__operator-selector .__filter-widget-container{width:100%}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep .axp-widgets-container{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-lookup{min-width:140px}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-text-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-number-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-date-time-box{flex:1}.__condition-row .__item-content .__operator-selector .__filter-placeholder{display:flex;align-items:center;justify-content:center;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1);border-width:1px}.__condition-row .__item-content .__operator-selector .__filter-placeholder .__placeholder-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-500, oklch(55.6% 0 none));font-style:italic}@media(max-width:768px){.__condition-row{flex-direction:column;align-items:stretch}.__condition-row .__item-content{flex-direction:column;align-items:stretch;gap:calc(var(--spacing, .25rem) * 2)}.__condition-row .__field-selector,.__condition-row .__operator-selector{width:100%;min-width:0px}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i2$1.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i3.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
778
791
  }
779
792
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPQueryBuilderConditionComponent, decorators: [{
780
793
  type: Component,
781
794
  args: [{ selector: 'axp-query-builder-condition', standalone: true, imports: [
782
795
  CommonModule,
783
796
  FormsModule,
784
- AXSelectBoxModule,
797
+ AXLookupComponent,
785
798
  AXButtonModule,
786
799
  AXDecoratorModule,
787
800
  AXCheckBoxModule,
788
801
  AXLabelModule,
789
802
  AXPWidgetCoreModule,
790
803
  AXTranslationModule
791
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"__condition-row\">\n <div class=\"__item-content\">\n <!-- Field Selector -->\n <div class=\"__field-selector\">\n <ax-select-box\n class=\"ax-sm\"\n [dataSource]=\"availableFields()\"\n [ngModel]=\"selectedFieldValue()\"\n (onValueChanged)=\"onFieldChange($event)\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.condition.select-field' | translate | async) || 'Select a field'\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n\n <!-- Default Filter Widget (Operator + Value) -->\n <div class=\"__operator-selector\">\n @if (selectedField()?.field && filterNode().type) {\n <axp-widgets-container \n class=\"__filter-widget-container\" \n [context]=\"context()\" \n (onContextChanged)=\"onContextChange($event)\">\n <ng-container \n axp-widget-renderer \n [node]=\"filterNode()\" \n [mode]=\"'edit'\">\n </ng-container>\n </axp-widgets-container>\n } @else {\n <div class=\"__filter-placeholder\">\n <span class=\"__placeholder-text\">{{ ('@data-management:metadata-definitions.components.query-builder.condition.select-field-first' | translate | async) || 'Select a field first' }}</span>\n </div>\n }\n </div>\n\n <!-- Fill By User (isParametric) -->\n <div class=\"__fill-by-user\">\n <ax-check-box\n class=\"text-xs\"\n [ngModel]=\"$safeNavigationMigration(selectedField()?.isParametric)\"\n (ngModelChange)=\"onFillByUserChange($event)\"\n >\n <ax-label>\n {{ '@data-management:metadata-definitions.components.query-builder.condition.fill-by-user' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n </div>\n</div>\n\n", styles: ["@layer properties;.__condition-row{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__field-selector{flex-shrink:0;min-width:180px}.__condition-row .__item-content .__field-selector ax-select-box{width:100%}.__condition-row .__item-content .__operator-selector{min-width:200px;flex:1}.__condition-row .__item-content .__operator-selector .__filter-widget-container{width:100%}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep .axp-widgets-container{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-select-box{min-width:140px}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-text-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-number-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-date-time-box{flex:1}.__condition-row .__item-content .__operator-selector .__filter-placeholder{display:flex;align-items:center;justify-content:center;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1);border-width:1px}.__condition-row .__item-content .__operator-selector .__filter-placeholder .__placeholder-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-500, oklch(55.6% 0 none));font-style:italic}@media(max-width:768px){.__condition-row{flex-direction:column;align-items:stretch}.__condition-row .__item-content{flex-direction:column;align-items:stretch;gap:calc(var(--spacing, .25rem) * 2)}.__condition-row .__field-selector,.__condition-row .__operator-selector{width:100%;min-width:0px}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
804
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"__condition-row\">\n <div class=\"__item-content\">\n <!-- Field Selector -->\n <div class=\"__field-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"ax-sm\"\n [dataSource]=\"availableFieldsDataSource()\"\n [ngModel]=\"selectedFieldValue()\"\n (onValueChanged)=\"onFieldChange($event)\"\n valueField=\"value\"\n textField=\"text\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.condition.select-field' | translate | async) || 'Select a field'\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n\n <!-- Default Filter Widget (Operator + Value) -->\n <div class=\"__operator-selector\">\n @if (selectedField()?.field && filterNode().type) {\n <axp-widgets-container \n class=\"__filter-widget-container\" \n [context]=\"context()\" \n (onContextChanged)=\"onContextChange($event)\">\n <ng-container \n axp-widget-renderer \n [node]=\"filterNode()\" \n [mode]=\"'edit'\">\n </ng-container>\n </axp-widgets-container>\n } @else {\n <div class=\"__filter-placeholder\">\n <span class=\"__placeholder-text\">{{ ('@data-management:metadata-definitions.components.query-builder.condition.select-field-first' | translate | async) || 'Select a field first' }}</span>\n </div>\n }\n </div>\n\n <!-- Fill By User (isParametric) -->\n <div class=\"__fill-by-user\">\n <ax-check-box\n class=\"text-xs\"\n [ngModel]=\"$safeNavigationMigration(selectedField()?.isParametric)\"\n (ngModelChange)=\"onFillByUserChange($event)\"\n >\n <ax-label>\n {{ '@data-management:metadata-definitions.components.query-builder.condition.fill-by-user' | translate | async }}\n </ax-label>\n </ax-check-box>\n </div>\n </div>\n</div>\n\n", styles: ["@layer properties;.__condition-row{display:flex;width:100%;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__field-selector{flex-shrink:0;min-width:180px}.__condition-row .__item-content .__field-selector ax-lookup{width:100%}.__condition-row .__item-content .__operator-selector{min-width:200px;flex:1}.__condition-row .__item-content .__operator-selector .__filter-widget-container{width:100%}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep .axp-widgets-container{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-lookup{min-width:140px}.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-text-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-number-box,.__condition-row .__item-content .__operator-selector .__filter-widget-container ::ng-deep ax-date-time-box{flex:1}.__condition-row .__item-content .__operator-selector .__filter-placeholder{display:flex;align-items:center;justify-content:center;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding:calc(var(--spacing, .25rem) * 3);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1);border-width:1px}.__condition-row .__item-content .__operator-selector .__filter-placeholder .__placeholder-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-500, oklch(55.6% 0 none));font-style:italic}@media(max-width:768px){.__condition-row{flex-direction:column;align-items:stretch}.__condition-row .__item-content{flex-direction:column;align-items:stretch;gap:calc(var(--spacing, .25rem) * 2)}.__condition-row .__field-selector,.__condition-row .__operator-selector{width:100%;min-width:0px}}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
792
805
  }], propDecorators: { item: [{
793
806
  type: Input
794
807
  }], filterDefinitions: [{
@@ -1581,7 +1594,7 @@ class AXPWhereBuilderComponent {
1581
1594
  }
1582
1595
  }
1583
1596
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWhereBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1584
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPWhereBuilderComponent, isStandalone: true, selector: "axp-where-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, filterDefinitions: { classPropertyName: "filterDefinitions", publicName: "filterDefinitions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-where-builder\">\n <div class=\"__content\">\n <!-- Root Group - Render directly to ensure reactivity -->\n <div class=\"__group __root-group\" [class.__connectors-enabled]=\"(queryData().filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"queryData().logic\"\n textField=\"text\" valueField=\"value\"\n (onValueChanged)=\"updateGroupLogicalOperator(queryData().id!, $event.value)\" [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList\n (dropListDropped)=\"reorderGroupItemsEvent(queryData().id!, $event)\">\n @if ((queryData().filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(queryData().filters || []); track item.id; let i = $index; let first = $first;\n let last = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (queryData().filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (queryData().filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: queryData().logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n\n<!-- Group Template -->\n<ng-template #groupTemplate let-group=\"group\" let-parentLogic=\"parentLogic\" let-isRoot=\"isRoot\">\n <div class=\"__group\" [class.__root-group]=\"isRoot\" [class.__connectors-enabled]=\"(group.filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"group.logic\"\n textField=\"text\" valueField=\"value\" (onValueChanged)=\"updateGroupLogicalOperator(group.id, $event.value)\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList (dropListDropped)=\"reorderGroupItemsEvent(group.id, $event)\">\n @if ((group.filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(group.filters || []); track item.id; let i = $index; let first = $first; let last\n = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (group.filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (group.filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: group.logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((group.filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n</ng-template>", styles: ["@layer properties;.axp-where-builder{display:flex;height:100%;width:100%;flex-direction:column}.axp-where-builder .__content{flex:1;overflow:auto;padding:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group{position:relative}.axp-where-builder .__group.__root-group{border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.axp-where-builder .__group:not(.__root-group){margin-top:calc(var(--spacing, .25rem) * 2);margin-bottom:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface),1)}.axp-where-builder .__group .__group-wrapper{--qb-connector-col: 4.25rem;display:grid;grid-template-columns:var(--qb-connector-col) 1fr;align-items:stretch;width:100%;min-height:2rem;min-width:0}.axp-where-builder .__group .__group-connector{position:relative;width:var(--qb-connector-col);display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:stretch;padding:0;--qb-operator-gap: 1.15rem}.axp-where-builder .__group .__group-connector:before,.axp-where-builder .__group .__group-connector:after{content:\"\";position:absolute;left:50%;transform:translate(-50%);top:var(--qb-connector-top, 1.5rem);bottom:var(--qb-connector-bottom, 1.5rem);width:0;border-left:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__group .__group-connector:before{bottom:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector:after{top:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector .__operator-selector{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:10;flex-shrink:0;margin:0;max-width:100%;box-sizing:border-box}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip{min-width:5rem;max-width:100%;position:relative;z-index:1}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip ::ng-deep .select-box{border-color:rgba(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface));color:var(--color-white, #fff);border-radius:.375rem;border-width:1px;background-color:rgba(var(--ax-sys-color-primary-500),1)!important;position:relative}.axp-where-builder .__group .__conditions-container{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);min-height:2rem;padding-left:.75rem;padding-right:0;padding-top:0;padding-bottom:0;position:relative;min-width:0}.axp-where-builder .__group .__conditions-container .__group-empty{display:flex;min-height:calc(var(--spacing, .25rem) * 12);flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group .__group-actions{margin-top:calc(var(--spacing, .25rem) * 2);display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);border-top:1px solid rgba(var(--ax-sys-color-border-lighter-surface),1);grid-column:1/-1}.axp-where-builder .__condition-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);cursor:move;-webkit-user-select:none;user-select:none;min-height:3rem;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface),1);position:relative}.axp-where-builder .__condition-item:hover{background-color:var(--color-lighter);color:var(--color-on-lighter);border-color:var(--color-border-lighter);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1)}.axp-where-builder .__condition-item.__is-first:before,.axp-where-builder .__condition-item.__is-last:before{content:\"\";position:absolute;left:calc(-1 * (var(--qb-connector-col) * .5 + .75rem));top:50%;transform:translateY(-50%);width:calc(var(--qb-connector-col) * .5 + .75rem);height:0;border-top:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__condition-item .__drag-handle{display:flex;height:calc(var(--spacing, .25rem) * 5);width:calc(var(--spacing, .25rem) * 5);align-items:center;justify-content:center;color:var(--color-neutral-400, oklch(70.8% 0 none));cursor:grab;transition:color .15s ease-in-out;flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__drag-handle:active{cursor:grabbing}.axp-where-builder .__condition-item .__drag-handle:hover{color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-where-builder .__condition-item .__item-content{flex:1;position:relative;z-index:1;min-width:0}.axp-where-builder .__condition-item .__item-controls{display:flex;width:calc(var(--spacing, .25rem) * 8);flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing, .25rem);flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__icon-btn{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;flex-shrink:0}.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:before,.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:after{content:none}.__condition-item.drag-preview{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);opacity:.9;border-width:1px;min-height:3rem}.__condition-item.drag-placeholder{position:relative;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);border-color:rgba(var(--ax-sys-color-primary-300),.5);min-height:3rem;margin-bottom:.5rem;opacity:.5;border-width:1px}.__condition-item.drag-placeholder>*{opacity:0%}.__condition-item.drag-animating{transition:transform .25s cubic-bezier(.4,0,.2,1)}.__group:not(.__root-group).drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}.__group:not(.__root-group).drag-placeholder{border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);opacity:50%;border-color:rgba(var(--ax-sys-color-primary-300),.5);margin-bottom:.5rem;min-height:4rem;border-width:1px}.__group:not(.__root-group).drag-dragging{opacity:70%}.__group:not(.__root-group):hover:not(.drag-dragging) .__drag-handle{color:rgba(var(--ax-sys-color-primary-surface))}.__conditions-container.drop-list-dragging{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder){margin-bottom:.375rem}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder):last-child{margin-bottom:0}.__conditions-container.drop-list-dragging:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}.__conditions-container.drop-list-receiving{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-receiving:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDragHandleDirective, selector: "[axDragHandle]" }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["axDropList", "sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped"], exportAs: ["axDropList"] }, { kind: "component", type: AXPQueryBuilderConditionComponent, selector: "axp-query-builder-condition", inputs: ["item", "filterDefinitions", "onResolveWidget"], outputs: ["itemChange", "removeItem"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1597
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPWhereBuilderComponent, isStandalone: true, selector: "axp-where-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, filterDefinitions: { classPropertyName: "filterDefinitions", publicName: "filterDefinitions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-where-builder\">\n <div class=\"__content\">\n <!-- Root Group - Render directly to ensure reactivity -->\n <div class=\"__group __root-group\" [class.__connectors-enabled]=\"(queryData().filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"ax-sm __operator-chip\"\n [dataSource]=\"logicalOperators\"\n [ngModel]=\"queryData().logic\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n (onValueChanged)=\"updateGroupLogicalOperator(queryData().id!, $event.value)\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList\n (dropListDropped)=\"reorderGroupItemsEvent(queryData().id!, $event)\">\n @if ((queryData().filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(queryData().filters || []); track item.id; let i = $index; let first = $first;\n let last = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (queryData().filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (queryData().filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: queryData().logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n\n<!-- Group Template -->\n<ng-template #groupTemplate let-group=\"group\" let-parentLogic=\"parentLogic\" let-isRoot=\"isRoot\">\n <div class=\"__group\" [class.__root-group]=\"isRoot\" [class.__connectors-enabled]=\"(group.filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"ax-sm __operator-chip\"\n [dataSource]=\"logicalOperators\"\n [ngModel]=\"group.logic\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n (onValueChanged)=\"updateGroupLogicalOperator(group.id, $event.value)\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList (dropListDropped)=\"reorderGroupItemsEvent(group.id, $event)\">\n @if ((group.filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(group.filters || []); track item.id; let i = $index; let first = $first; let last\n = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (group.filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (group.filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: group.logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((group.filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n</ng-template>", styles: ["@layer properties;.axp-where-builder{display:flex;height:100%;width:100%;flex-direction:column}.axp-where-builder .__content{flex:1;overflow:auto;padding:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group{position:relative}.axp-where-builder .__group.__root-group{border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.axp-where-builder .__group:not(.__root-group){margin-top:calc(var(--spacing, .25rem) * 2);margin-bottom:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface),1)}.axp-where-builder .__group .__group-wrapper{--qb-connector-col: 4.25rem;display:grid;grid-template-columns:var(--qb-connector-col) 1fr;align-items:stretch;width:100%;min-height:2rem;min-width:0}.axp-where-builder .__group .__group-connector{position:relative;width:var(--qb-connector-col);display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:stretch;padding:0;--qb-operator-gap: 1.15rem}.axp-where-builder .__group .__group-connector:before,.axp-where-builder .__group .__group-connector:after{content:\"\";position:absolute;left:50%;transform:translate(-50%);top:var(--qb-connector-top, 1.5rem);bottom:var(--qb-connector-bottom, 1.5rem);width:0;border-left:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__group .__group-connector:before{bottom:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector:after{top:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector .__operator-selector{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:10;flex-shrink:0;margin:0;max-width:100%;box-sizing:border-box}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip{min-width:5rem;max-width:100%;position:relative;z-index:1}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip ::ng-deep .select-box{border-color:rgba(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface));color:var(--color-white, #fff);border-radius:.375rem;border-width:1px;background-color:rgba(var(--ax-sys-color-primary-500),1)!important;position:relative}.axp-where-builder .__group .__conditions-container{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);min-height:2rem;padding-left:.75rem;padding-right:0;padding-top:0;padding-bottom:0;position:relative;min-width:0}.axp-where-builder .__group .__conditions-container .__group-empty{display:flex;min-height:calc(var(--spacing, .25rem) * 12);flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group .__group-actions{margin-top:calc(var(--spacing, .25rem) * 2);display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);border-top:1px solid rgba(var(--ax-sys-color-border-lighter-surface),1);grid-column:1/-1}.axp-where-builder .__condition-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);cursor:move;-webkit-user-select:none;user-select:none;min-height:3rem;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface),1);position:relative}.axp-where-builder .__condition-item:hover{background-color:var(--color-lighter);color:var(--color-on-lighter);border-color:var(--color-border-lighter);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1)}.axp-where-builder .__condition-item.__is-first:before,.axp-where-builder .__condition-item.__is-last:before{content:\"\";position:absolute;left:calc(-1 * (var(--qb-connector-col) * .5 + .75rem));top:50%;transform:translateY(-50%);width:calc(var(--qb-connector-col) * .5 + .75rem);height:0;border-top:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__condition-item .__drag-handle{display:flex;height:calc(var(--spacing, .25rem) * 5);width:calc(var(--spacing, .25rem) * 5);align-items:center;justify-content:center;color:var(--color-neutral-400, oklch(70.8% 0 none));cursor:grab;transition:color .15s ease-in-out;flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__drag-handle:active{cursor:grabbing}.axp-where-builder .__condition-item .__drag-handle:hover{color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-where-builder .__condition-item .__item-content{flex:1;position:relative;z-index:1;min-width:0}.axp-where-builder .__condition-item .__item-controls{display:flex;width:calc(var(--spacing, .25rem) * 8);flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing, .25rem);flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__icon-btn{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;flex-shrink:0}.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:before,.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:after{content:none}.__condition-item.drag-preview{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);opacity:.9;border-width:1px;min-height:3rem}.__condition-item.drag-placeholder{position:relative;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);border-color:rgba(var(--ax-sys-color-primary-300),.5);min-height:3rem;margin-bottom:.5rem;opacity:.5;border-width:1px}.__condition-item.drag-placeholder>*{opacity:0%}.__condition-item.drag-animating{transition:transform .25s cubic-bezier(.4,0,.2,1)}.__group:not(.__root-group).drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}.__group:not(.__root-group).drag-placeholder{border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);opacity:50%;border-color:rgba(var(--ax-sys-color-primary-300),.5);margin-bottom:.5rem;min-height:4rem;border-width:1px}.__group:not(.__root-group).drag-dragging{opacity:70%}.__group:not(.__root-group):hover:not(.drag-dragging) .__drag-handle{color:rgba(var(--ax-sys-color-primary-surface))}.__conditions-container.drop-list-dragging{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder){margin-bottom:.375rem}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder):last-child{margin-bottom:0}.__conditions-container.drop-list-dragging:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}.__conditions-container.drop-list-receiving{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-receiving:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDragHandleDirective, selector: "[axDragHandle]" }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["axDropList", "sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped", "sortPreviewChanged"], exportAs: ["axDropList"] }, { kind: "component", type: AXPQueryBuilderConditionComponent, selector: "axp-query-builder-condition", inputs: ["item", "filterDefinitions", "onResolveWidget"], outputs: ["itemChange", "removeItem"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1585
1598
  }
1586
1599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWhereBuilderComponent, decorators: [{
1587
1600
  type: Component,
@@ -1589,7 +1602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1589
1602
  CommonModule,
1590
1603
  FormsModule,
1591
1604
  AXButtonModule,
1592
- AXSelectBoxModule,
1605
+ AXLookupComponent,
1593
1606
  AXDropdownModule,
1594
1607
  AXDecoratorModule,
1595
1608
  AXDragDirective,
@@ -1597,7 +1610,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1597
1610
  AXDropListDirective,
1598
1611
  AXPQueryBuilderConditionComponent,
1599
1612
  AXTranslationModule,
1600
- ], template: "<div class=\"axp-where-builder\">\n <div class=\"__content\">\n <!-- Root Group - Render directly to ensure reactivity -->\n <div class=\"__group __root-group\" [class.__connectors-enabled]=\"(queryData().filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"queryData().logic\"\n textField=\"text\" valueField=\"value\"\n (onValueChanged)=\"updateGroupLogicalOperator(queryData().id!, $event.value)\" [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList\n (dropListDropped)=\"reorderGroupItemsEvent(queryData().id!, $event)\">\n @if ((queryData().filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(queryData().filters || []); track item.id; let i = $index; let first = $first;\n let last = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (queryData().filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (queryData().filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: queryData().logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n\n<!-- Group Template -->\n<ng-template #groupTemplate let-group=\"group\" let-parentLogic=\"parentLogic\" let-isRoot=\"isRoot\">\n <div class=\"__group\" [class.__root-group]=\"isRoot\" [class.__connectors-enabled]=\"(group.filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-select-box class=\"ax-sm __operator-chip\" [dataSource]=\"logicalOperators\" [ngModel]=\"group.logic\"\n textField=\"text\" valueField=\"value\" (onValueChanged)=\"updateGroupLogicalOperator(group.id, $event.value)\"\n [look]=\"'outline'\">\n </ax-select-box>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList (dropListDropped)=\"reorderGroupItemsEvent(group.id, $event)\">\n @if ((group.filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(group.filters || []); track item.id; let i = $index; let first = $first; let last\n = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (group.filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (group.filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: group.logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((group.filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n</ng-template>", styles: ["@layer properties;.axp-where-builder{display:flex;height:100%;width:100%;flex-direction:column}.axp-where-builder .__content{flex:1;overflow:auto;padding:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group{position:relative}.axp-where-builder .__group.__root-group{border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.axp-where-builder .__group:not(.__root-group){margin-top:calc(var(--spacing, .25rem) * 2);margin-bottom:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface),1)}.axp-where-builder .__group .__group-wrapper{--qb-connector-col: 4.25rem;display:grid;grid-template-columns:var(--qb-connector-col) 1fr;align-items:stretch;width:100%;min-height:2rem;min-width:0}.axp-where-builder .__group .__group-connector{position:relative;width:var(--qb-connector-col);display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:stretch;padding:0;--qb-operator-gap: 1.15rem}.axp-where-builder .__group .__group-connector:before,.axp-where-builder .__group .__group-connector:after{content:\"\";position:absolute;left:50%;transform:translate(-50%);top:var(--qb-connector-top, 1.5rem);bottom:var(--qb-connector-bottom, 1.5rem);width:0;border-left:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__group .__group-connector:before{bottom:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector:after{top:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector .__operator-selector{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:10;flex-shrink:0;margin:0;max-width:100%;box-sizing:border-box}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip{min-width:5rem;max-width:100%;position:relative;z-index:1}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip ::ng-deep .select-box{border-color:rgba(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface));color:var(--color-white, #fff);border-radius:.375rem;border-width:1px;background-color:rgba(var(--ax-sys-color-primary-500),1)!important;position:relative}.axp-where-builder .__group .__conditions-container{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);min-height:2rem;padding-left:.75rem;padding-right:0;padding-top:0;padding-bottom:0;position:relative;min-width:0}.axp-where-builder .__group .__conditions-container .__group-empty{display:flex;min-height:calc(var(--spacing, .25rem) * 12);flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group .__group-actions{margin-top:calc(var(--spacing, .25rem) * 2);display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);border-top:1px solid rgba(var(--ax-sys-color-border-lighter-surface),1);grid-column:1/-1}.axp-where-builder .__condition-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);cursor:move;-webkit-user-select:none;user-select:none;min-height:3rem;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface),1);position:relative}.axp-where-builder .__condition-item:hover{background-color:var(--color-lighter);color:var(--color-on-lighter);border-color:var(--color-border-lighter);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1)}.axp-where-builder .__condition-item.__is-first:before,.axp-where-builder .__condition-item.__is-last:before{content:\"\";position:absolute;left:calc(-1 * (var(--qb-connector-col) * .5 + .75rem));top:50%;transform:translateY(-50%);width:calc(var(--qb-connector-col) * .5 + .75rem);height:0;border-top:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__condition-item .__drag-handle{display:flex;height:calc(var(--spacing, .25rem) * 5);width:calc(var(--spacing, .25rem) * 5);align-items:center;justify-content:center;color:var(--color-neutral-400, oklch(70.8% 0 none));cursor:grab;transition:color .15s ease-in-out;flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__drag-handle:active{cursor:grabbing}.axp-where-builder .__condition-item .__drag-handle:hover{color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-where-builder .__condition-item .__item-content{flex:1;position:relative;z-index:1;min-width:0}.axp-where-builder .__condition-item .__item-controls{display:flex;width:calc(var(--spacing, .25rem) * 8);flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing, .25rem);flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__icon-btn{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;flex-shrink:0}.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:before,.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:after{content:none}.__condition-item.drag-preview{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);opacity:.9;border-width:1px;min-height:3rem}.__condition-item.drag-placeholder{position:relative;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);border-color:rgba(var(--ax-sys-color-primary-300),.5);min-height:3rem;margin-bottom:.5rem;opacity:.5;border-width:1px}.__condition-item.drag-placeholder>*{opacity:0%}.__condition-item.drag-animating{transition:transform .25s cubic-bezier(.4,0,.2,1)}.__group:not(.__root-group).drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}.__group:not(.__root-group).drag-placeholder{border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);opacity:50%;border-color:rgba(var(--ax-sys-color-primary-300),.5);margin-bottom:.5rem;min-height:4rem;border-width:1px}.__group:not(.__root-group).drag-dragging{opacity:70%}.__group:not(.__root-group):hover:not(.drag-dragging) .__drag-handle{color:rgba(var(--ax-sys-color-primary-surface))}.__conditions-container.drop-list-dragging{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder){margin-bottom:.375rem}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder):last-child{margin-bottom:0}.__conditions-container.drop-list-dragging:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}.__conditions-container.drop-list-receiving{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-receiving:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1613
+ ], template: "<div class=\"axp-where-builder\">\n <div class=\"__content\">\n <!-- Root Group - Render directly to ensure reactivity -->\n <div class=\"__group __root-group\" [class.__connectors-enabled]=\"(queryData().filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"ax-sm __operator-chip\"\n [dataSource]=\"logicalOperators\"\n [ngModel]=\"queryData().logic\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n (onValueChanged)=\"updateGroupLogicalOperator(queryData().id!, $event.value)\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList\n (dropListDropped)=\"reorderGroupItemsEvent(queryData().id!, $event)\">\n @if ((queryData().filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(queryData().filters || []); track item.id; let i = $index; let first = $first;\n let last = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (queryData().filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (queryData().filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: queryData().logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, queryData().id!)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((queryData().filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(queryData().id!)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n\n<!-- Group Template -->\n<ng-template #groupTemplate let-group=\"group\" let-parentLogic=\"parentLogic\" let-isRoot=\"isRoot\">\n <div class=\"__group\" [class.__root-group]=\"isRoot\" [class.__connectors-enabled]=\"(group.filters?.length ?? 0) > 1\">\n <div class=\"__group-wrapper\">\n <!-- Single Connector Line for the Group -->\n <div class=\"__group-connector\">\n <div class=\"__operator-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"ax-sm __operator-chip\"\n [dataSource]=\"logicalOperators\"\n [ngModel]=\"group.logic\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n (onValueChanged)=\"updateGroupLogicalOperator(group.id, $event.value)\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n </div>\n\n <!-- Conditions Container -->\n <div class=\"__conditions-container\" axDropList (dropListDropped)=\"reorderGroupItemsEvent(group.id, $event)\">\n @if ((group.filters?.length ?? 0) === 0) {\n <div class=\"__group-empty\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n } @else {\n @for (item of getSortedFilters(group.filters || []); track item.id; let i = $index; let first = $first; let last\n = $last) {\n <div class=\"__condition-item\" axDrag [class.__is-first]=\"first && (group.filters?.length ?? 0) > 1\"\n [class.__is-last]=\"last && (group.filters?.length ?? 0) > 1\">\n <!-- Drag Handle -->\n <div class=\"__drag-handle\" axDragHandle>\n <ax-icon icon=\"fa-solid fa-grip-vertical\"></ax-icon>\n </div>\n\n <!-- Condition or Nested Group Content -->\n <div class=\"__item-content\">\n @if (item.filters === undefined) {\n <axp-query-builder-condition [item]=\"item\" [filterDefinitions]=\"filterDefinitions()\"\n [onResolveWidget]=\"resolveDefaultFilterWidget.bind(this)\" (itemChange)=\"updateCondition($event)\"\n (removeItem)=\"removeItem($event)\">\n </axp-query-builder-condition>\n } @else {\n <ng-container [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{group: item, parentLogic: group.logic, isRoot: false}\">\n </ng-container>\n }\n </div>\n\n <!-- Item Controls (Up / Remove / Down) -->\n <div class=\"__item-controls\">\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"first\"\n title=\"Move up\" (onClick)=\"moveItemUp(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-up\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'danger'\"\n [title]=\"'@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async\"\n (onClick)=\"removeItem(item.id!)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n <ax-button class=\"ax-sm __icon-btn\" [look]=\"'blank'\" [color]=\"'secondary'\" [disabled]=\"last\"\n title=\"Move down\" (onClick)=\"moveItemDown(i, group.id)\">\n <ax-icon icon=\"fa-light fa-chevron-down\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n }\n </div>\n </div>\n\n <!-- Add Condition/Group Buttons (appears after group conditions) -->\n @if ((group.filters?.length ?? 0) > 0) {\n <div class=\"__group-actions\">\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'primary'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-condition.title' | translate | async\"\n (onClick)=\"addConditionToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button class=\"ax-sm\" [look]=\"'outline'\" [color]=\"'accent2'\"\n [text]=\"'@data-management:metadata-definitions.components.query-builder.actions.add-inner-group.title' | translate | async\"\n (onClick)=\"addGroupToGroup(group.id)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n }\n </div>\n</ng-template>", styles: ["@layer properties;.axp-where-builder{display:flex;height:100%;width:100%;flex-direction:column}.axp-where-builder .__content{flex:1;overflow:auto;padding:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group{position:relative}.axp-where-builder .__group.__root-group{border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0;--tw-shadow: 0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.axp-where-builder .__group:not(.__root-group){margin-top:calc(var(--spacing, .25rem) * 2);margin-bottom:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface),1)}.axp-where-builder .__group .__group-wrapper{--qb-connector-col: 4.25rem;display:grid;grid-template-columns:var(--qb-connector-col) 1fr;align-items:stretch;width:100%;min-height:2rem;min-width:0}.axp-where-builder .__group .__group-connector{position:relative;width:var(--qb-connector-col);display:flex;flex-direction:column;align-items:center;justify-content:center;align-self:stretch;padding:0;--qb-operator-gap: 1.15rem}.axp-where-builder .__group .__group-connector:before,.axp-where-builder .__group .__group-connector:after{content:\"\";position:absolute;left:50%;transform:translate(-50%);top:var(--qb-connector-top, 1.5rem);bottom:var(--qb-connector-bottom, 1.5rem);width:0;border-left:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__group .__group-connector:before{bottom:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector:after{top:calc(50% + var(--qb-operator-gap))}.axp-where-builder .__group .__group-connector .__operator-selector{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:10;flex-shrink:0;margin:0;max-width:100%;box-sizing:border-box}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip{min-width:5rem;max-width:100%;position:relative;z-index:1}.axp-where-builder .__group .__group-connector .__operator-selector .__operator-chip ::ng-deep .select-box{border-color:rgba(var(--ax-sys-color-primary-surface));background-color:rgba(var(--ax-sys-color-primary-surface));color:var(--color-white, #fff);border-radius:.375rem;border-width:1px;background-color:rgba(var(--ax-sys-color-primary-500),1)!important;position:relative}.axp-where-builder .__group .__conditions-container{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);min-height:2rem;padding-left:.75rem;padding-right:0;padding-top:0;padding-bottom:0;position:relative;min-width:0}.axp-where-builder .__group .__conditions-container .__group-empty{display:flex;min-height:calc(var(--spacing, .25rem) * 12);flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:calc(var(--spacing, .25rem) * 3)}.axp-where-builder .__group .__group-actions{margin-top:calc(var(--spacing, .25rem) * 2);display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);border-top:1px solid rgba(var(--ax-sys-color-border-lighter-surface),1);grid-column:1/-1}.axp-where-builder .__condition-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);cursor:move;-webkit-user-select:none;user-select:none;min-height:3rem;border:1px solid rgba(var(--ax-sys-color-border-lightest-surface),1);position:relative}.axp-where-builder .__condition-item:hover{background-color:var(--color-lighter);color:var(--color-on-lighter);border-color:var(--color-border-lighter);border-color:rgba(var(--ax-sys-color-border-lighter-surface),1)}.axp-where-builder .__condition-item.__is-first:before,.axp-where-builder .__condition-item.__is-last:before{content:\"\";position:absolute;left:calc(-1 * (var(--qb-connector-col) * .5 + .75rem));top:50%;transform:translateY(-50%);width:calc(var(--qb-connector-col) * .5 + .75rem);height:0;border-top:2px solid rgba(var(--ax-sys-color-primary-500),.5);z-index:0}.axp-where-builder .__condition-item .__drag-handle{display:flex;height:calc(var(--spacing, .25rem) * 5);width:calc(var(--spacing, .25rem) * 5);align-items:center;justify-content:center;color:var(--color-neutral-400, oklch(70.8% 0 none));cursor:grab;transition:color .15s ease-in-out;flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__drag-handle:active{cursor:grabbing}.axp-where-builder .__condition-item .__drag-handle:hover{color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-where-builder .__condition-item .__item-content{flex:1;position:relative;z-index:1;min-width:0}.axp-where-builder .__condition-item .__item-controls{display:flex;width:calc(var(--spacing, .25rem) * 8);flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing, .25rem);flex-shrink:0;position:relative;z-index:1}.axp-where-builder .__condition-item .__icon-btn{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;flex-shrink:0}.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:before,.__group:not(.__connectors-enabled) .axp-where-builder .__group .__group-connector:after{content:none}.__condition-item.drag-preview{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3);border-radius:.25rem;border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2.5);--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);opacity:.9;border-width:1px;min-height:3rem}.__condition-item.drag-placeholder{position:relative;border-radius:.25rem;border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);border-color:rgba(var(--ax-sys-color-primary-300),.5);min-height:3rem;margin-bottom:.5rem;opacity:.5;border-width:1px}.__condition-item.drag-placeholder>*{opacity:0%}.__condition-item.drag-animating{transition:transform .25s cubic-bezier(.4,0,.2,1)}.__group:not(.__root-group).drag-preview{border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-width:1px}.__group:not(.__root-group).drag-placeholder{border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);opacity:50%;border-color:rgba(var(--ax-sys-color-primary-300),.5);margin-bottom:.5rem;min-height:4rem;border-width:1px}.__group:not(.__root-group).drag-dragging{opacity:70%}.__group:not(.__root-group):hover:not(.drag-dragging) .__drag-handle{color:rgba(var(--ax-sys-color-primary-surface))}.__conditions-container.drop-list-dragging{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder){margin-bottom:.375rem}.__conditions-container.drop-list-dragging .__condition-item:not(.drag-placeholder):last-child{margin-bottom:0}.__conditions-container.drop-list-dragging:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}.__conditions-container.drop-list-receiving{position:relative;min-height:calc(var(--spacing, .25rem) * 12);border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);--tw-border-style: dashed;border-style:dashed;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);padding:var(--spacing, .25rem);border-color:rgba(var(--ax-sys-color-primary-300),.5);border-width:1px}.__conditions-container.drop-list-receiving:has(.__group-empty):after{content:\"Drop conditions here\";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-primary-surface));z-index:-1;pointer-events:none;min-height:2rem}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1601
1614
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], filterDefinitions: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterDefinitions", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
1602
1615
 
1603
1616
  /**
@@ -1673,7 +1686,7 @@ class AXPColumnsBuilderComponent {
1673
1686
  this.valueChange.emit([]);
1674
1687
  }
1675
1688
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColumnsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1676
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPColumnsBuilderComponent, isStandalone: true, selector: "axp-columns-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-columns-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.columns.title' | translate | async) || 'Select Columns' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onColumnsChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.columns.placeholder' | translate | async) || 'Select columns to include in the query'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-columns-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-columns-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-columns-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1689
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPColumnsBuilderComponent, isStandalone: true, selector: "axp-columns-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-columns-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.columns.title' | translate | async) || 'Select Columns' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onColumnsChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.columns.placeholder' | translate | async) || 'Select columns to include in the query'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-columns-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-columns-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-columns-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1677
1690
  }
1678
1691
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPColumnsBuilderComponent, decorators: [{
1679
1692
  type: Component,
@@ -1681,12 +1694,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1681
1694
  CommonModule,
1682
1695
  FormsModule,
1683
1696
  AXButtonModule,
1684
- AXSelectBoxModule,
1685
- AXSearchBoxModule,
1697
+ AXLookupComponent,
1686
1698
  AXLabelModule,
1687
1699
  AXDecoratorModule,
1688
1700
  AXTranslationModule,
1689
- ], template: "<div class=\"axp-columns-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.columns.title' | translate | async) || 'Select Columns' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onColumnsChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.columns.placeholder' | translate | async) || 'Select columns to include in the query'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-columns-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-columns-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-columns-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1701
+ ], template: "<div class=\"axp-columns-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.columns.title' | translate | async) || 'Select Columns' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onColumnsChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.columns.placeholder' | translate | async) || 'Select columns to include in the query'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-columns-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-columns-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-columns-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-columns-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1690
1702
  }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
1691
1703
 
1692
1704
  /**
@@ -1801,7 +1813,7 @@ class AXPSortBuilderComponent {
1801
1813
  this.valueChange.emit(updatedRules);
1802
1814
  }
1803
1815
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPSortBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1804
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPSortBuilderComponent, isStandalone: true, selector: "axp-sort-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-sort-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.title' | translate | async) || 'Sort Rules' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-sort-rule.title' | translate | async) || 'Add Sort Rule'\"\n (onClick)=\"addSortRule()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.empty-state' | translate | async) || 'No sort rules defined. Click \\'Add Sort Rule\\' to add sorting.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__sort-rules\">\n @for (rule of value(); track $index; let i = $index) {\n <div class=\"__sort-rule\">\n <ax-select-box\n class=\"__sort-field\"\n [dataSource]=\"sortFieldDataSource()\"\n [ngModel]=\"rule.field\"\n (ngModelChange)=\"updateSortRuleField(i, $event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.sort.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-select-box\n class=\"__sort-direction\"\n [dataSource]=\"sortDirectionDataSource\"\n [ngModel]=\"rule.dir\"\n (ngModelChange)=\"updateSortRuleDirection(i, $event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeSortRule(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-sort-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-sort-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-sort-builder .__section-body,.axp-sort-builder .__sort-rules{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule .__sort-field{flex:1}.axp-sort-builder .__sort-rules .__sort-rule .__sort-direction{width:calc(var(--spacing, .25rem) * 32)}.axp-sort-builder .__sort-rules .__sort-rule .__icon-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;flex-shrink:0}.axp-sort-builder .__empty-state{display:flex;align-items:center;justify-content:center;padding-block:calc(var(--spacing, .25rem) * 8)}.axp-sort-builder .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1816
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPSortBuilderComponent, isStandalone: true, selector: "axp-sort-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-sort-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.title' | translate | async) || 'Sort Rules' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-sort-rule.title' | translate | async) || 'Add Sort Rule'\"\n (onClick)=\"addSortRule()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.empty-state' | translate | async) || 'No sort rules defined. Click \\'Add Sort Rule\\' to add sorting.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__sort-rules\">\n @for (rule of value(); track $index; let i = $index) {\n <div class=\"__sort-rule\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__sort-field\"\n [dataSource]=\"sortFieldDataSource()\"\n [ngModel]=\"rule.field\"\n (ngModelChange)=\"updateSortRuleField(i, $event)\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.sort.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__sort-direction\"\n [dataSource]=\"sortDirectionDataSource\"\n [ngModel]=\"rule.dir\"\n (ngModelChange)=\"updateSortRuleDirection(i, $event)\"\n [searchable]=\"false\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeSortRule(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-sort-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-sort-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-sort-builder .__section-body,.axp-sort-builder .__sort-rules{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule .__sort-field{flex:1}.axp-sort-builder .__sort-rules .__sort-rule .__sort-direction{width:calc(var(--spacing, .25rem) * 32)}.axp-sort-builder .__sort-rules .__sort-rule .__icon-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;flex-shrink:0}.axp-sort-builder .__empty-state{display:flex;align-items:center;justify-content:center;padding-block:calc(var(--spacing, .25rem) * 8)}.axp-sort-builder .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1805
1817
  }
1806
1818
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPSortBuilderComponent, decorators: [{
1807
1819
  type: Component,
@@ -1809,11 +1821,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1809
1821
  CommonModule,
1810
1822
  FormsModule,
1811
1823
  AXButtonModule,
1812
- AXSelectBoxModule,
1824
+ AXLookupComponent,
1813
1825
  AXLabelModule,
1814
1826
  AXDecoratorModule,
1815
1827
  AXTranslationModule,
1816
- ], template: "<div class=\"axp-sort-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.title' | translate | async) || 'Sort Rules' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-sort-rule.title' | translate | async) || 'Add Sort Rule'\"\n (onClick)=\"addSortRule()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.empty-state' | translate | async) || 'No sort rules defined. Click \\'Add Sort Rule\\' to add sorting.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__sort-rules\">\n @for (rule of value(); track $index; let i = $index) {\n <div class=\"__sort-rule\">\n <ax-select-box\n class=\"__sort-field\"\n [dataSource]=\"sortFieldDataSource()\"\n [ngModel]=\"rule.field\"\n (ngModelChange)=\"updateSortRuleField(i, $event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.sort.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-select-box\n class=\"__sort-direction\"\n [dataSource]=\"sortDirectionDataSource\"\n [ngModel]=\"rule.dir\"\n (ngModelChange)=\"updateSortRuleDirection(i, $event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeSortRule(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-sort-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-sort-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-sort-builder .__section-body,.axp-sort-builder .__sort-rules{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule .__sort-field{flex:1}.axp-sort-builder .__sort-rules .__sort-rule .__sort-direction{width:calc(var(--spacing, .25rem) * 32)}.axp-sort-builder .__sort-rules .__sort-rule .__icon-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;flex-shrink:0}.axp-sort-builder .__empty-state{display:flex;align-items:center;justify-content:center;padding-block:calc(var(--spacing, .25rem) * 8)}.axp-sort-builder .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1828
+ ], template: "<div class=\"axp-sort-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.title' | translate | async) || 'Sort Rules' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-sort-rule.title' | translate | async) || 'Add Sort Rule'\"\n (onClick)=\"addSortRule()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.sort.empty-state' | translate | async) || 'No sort rules defined. Click \\'Add Sort Rule\\' to add sorting.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__sort-rules\">\n @for (rule of value(); track $index; let i = $index) {\n <div class=\"__sort-rule\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__sort-field\"\n [dataSource]=\"sortFieldDataSource()\"\n [ngModel]=\"rule.field\"\n (ngModelChange)=\"updateSortRuleField(i, $event)\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.sort.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__sort-direction\"\n [dataSource]=\"sortDirectionDataSource\"\n [ngModel]=\"rule.dir\"\n (ngModelChange)=\"updateSortRuleDirection(i, $event)\"\n [searchable]=\"false\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeSortRule(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-sort-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-sort-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-sort-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-sort-builder .__section-body,.axp-sort-builder .__sort-rules{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.axp-sort-builder .__sort-rules .__sort-rule .__sort-field{flex:1}.axp-sort-builder .__sort-rules .__sort-rule .__sort-direction{width:calc(var(--spacing, .25rem) * 32)}.axp-sort-builder .__sort-rules .__sort-rule .__icon-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;flex-shrink:0}.axp-sort-builder .__empty-state{display:flex;align-items:center;justify-content:center;padding-block:calc(var(--spacing, .25rem) * 8)}.axp-sort-builder .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1817
1829
  }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
1818
1830
 
1819
1831
  /**
@@ -1889,7 +1901,7 @@ class AXPGroupByBuilderComponent {
1889
1901
  this.valueChange.emit([]);
1890
1902
  }
1891
1903
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGroupByBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1892
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPGroupByBuilderComponent, isStandalone: true, selector: "axp-group-by-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-group-by-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.group-by.title' | translate | async) || 'Group By' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"groupByDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onGroupByChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.group-by.placeholder' | translate | async) || 'Select columns to group by'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-group-by-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-group-by-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-group-by-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1904
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPGroupByBuilderComponent, isStandalone: true, selector: "axp-group-by-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-group-by-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.group-by.title' | translate | async) || 'Group By' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"groupByDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onGroupByChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.group-by.placeholder' | translate | async) || 'Select columns to group by'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-group-by-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-group-by-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-group-by-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1893
1905
  }
1894
1906
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPGroupByBuilderComponent, decorators: [{
1895
1907
  type: Component,
@@ -1897,12 +1909,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1897
1909
  CommonModule,
1898
1910
  FormsModule,
1899
1911
  AXButtonModule,
1900
- AXSelectBoxModule,
1901
- AXSearchBoxModule,
1912
+ AXLookupComponent,
1902
1913
  AXLabelModule,
1903
1914
  AXDecoratorModule,
1904
1915
  AXTranslationModule,
1905
- ], template: "<div class=\"axp-group-by-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.group-by.title' | translate | async) || 'Group By' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-select-box\n [dataSource]=\"groupByDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onGroupByChange($event)\"\n [multiple]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.group-by.placeholder' | translate | async) || 'Select columns to group by'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n <ax-search-box></ax-search-box>\n </ax-select-box>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-group-by-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-group-by-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-group-by-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1916
+ ], template: "<div class=\"axp-group-by-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.group-by.title' | translate | async) || 'Group By' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.select-all.title' | translate | async) || 'Select All'\"\n (onClick)=\"selectAll()\">\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear-all.title' | translate | async) || 'Clear All'\"\n (onClick)=\"clearAll()\">\n </ax-button>\n </div>\n </div>\n <div class=\"__section-body\">\n <ax-lookup\n mode=\"multi-select\"\n [dataSource]=\"groupByDataSource()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onGroupByChange($event)\"\n [searchable]=\"true\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.group-by.placeholder' | translate | async) || 'Select columns to group by'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-group-by-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-group-by-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-group-by-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-group-by-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
1906
1917
  }], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
1907
1918
 
1908
1919
  /**
@@ -2703,7 +2714,7 @@ class AXPAggregateBuilderComponent {
2703
2714
  });
2704
2715
  }
2705
2716
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAggregateBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2706
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAggregateBuilderComponent, isStandalone: true, selector: "axp-aggregate-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, databaseType: { classPropertyName: "databaseType", publicName: "databaseType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-select-box\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-select-box>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-aggregate-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-aggregate-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-aggregate-builder .__section-header .__section-actions,.axp-aggregate-builder .__filters{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__filters .__category-filter,.axp-aggregate-builder .__filters .__search-filter{flex:1;min-width:200px}.axp-aggregate-builder .__add-form{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__add-form .__form-row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__add-form .__form-row .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__empty-state{padding-block:calc(var(--spacing, .25rem) * 8);text-align:center}.axp-aggregate-builder .__section-body .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation{display:flex;align-items:center;justify-content:space-between;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__function-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-neutral-900, oklch(20.5% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__alias{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none));font-style:italic}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates{margin-top:calc(var(--spacing, .25rem) * 2);margin-left:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-left-style:var(--tw-border-style);border-left-width:2px;border-color:var(--color-neutral-300, oklch(87% 0 none));padding-left:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-100, oklch(97% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i4$1.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i3$1.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2717
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPAggregateBuilderComponent, isStandalone: true, selector: "axp-aggregate-builder", inputs: { columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, databaseType: { classPropertyName: "databaseType", publicName: "databaseType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-lookup>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-aggregate-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-aggregate-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-aggregate-builder .__section-header .__section-actions,.axp-aggregate-builder .__filters{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__filters .__category-filter,.axp-aggregate-builder .__filters .__search-filter{flex:1;min-width:200px}.axp-aggregate-builder .__add-form{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__add-form .__form-row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__add-form .__form-row .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__empty-state{padding-block:calc(var(--spacing, .25rem) * 8);text-align:center}.axp-aggregate-builder .__section-body .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation{display:flex;align-items:center;justify-content:space-between;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__function-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-neutral-900, oklch(20.5% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__alias{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none));font-style:italic}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates{margin-top:calc(var(--spacing, .25rem) * 2);margin-left:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-left-style:var(--tw-border-style);border-left-width:2px;border-color:var(--color-neutral-300, oklch(87% 0 none));padding-left:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-100, oklch(97% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i3$2.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i2.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXCheckBoxModule }, { kind: "component", type: i2$1.AXCheckBoxComponent, selector: "ax-check-box", inputs: ["disabled", "tabIndex", "readonly", "color", "value", "name", "id", "isLoading", "indeterminate"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
2707
2718
  }
2708
2719
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPAggregateBuilderComponent, decorators: [{
2709
2720
  type: Component,
@@ -2711,14 +2722,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
2711
2722
  CommonModule,
2712
2723
  FormsModule,
2713
2724
  AXButtonModule,
2714
- AXSelectBoxModule,
2725
+ AXLookupComponent,
2715
2726
  AXSearchBoxModule,
2716
2727
  AXTextBoxModule,
2717
2728
  AXLabelModule,
2718
2729
  AXDecoratorModule,
2719
2730
  AXCheckBoxModule,
2720
2731
  AXTranslationModule,
2721
- ], template: "<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-select-box\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-select-box>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-select-box\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-select-box>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-aggregate-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-aggregate-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-aggregate-builder .__section-header .__section-actions,.axp-aggregate-builder .__filters{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__filters .__category-filter,.axp-aggregate-builder .__filters .__search-filter{flex:1;min-width:200px}.axp-aggregate-builder .__add-form{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__add-form .__form-row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__add-form .__form-row .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__empty-state{padding-block:calc(var(--spacing, .25rem) * 8);text-align:center}.axp-aggregate-builder .__section-body .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation{display:flex;align-items:center;justify-content:space-between;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__function-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-neutral-900, oklch(20.5% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__alias{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none));font-style:italic}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates{margin-top:calc(var(--spacing, .25rem) * 2);margin-left:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-left-style:var(--tw-border-style);border-left-width:2px;border-color:var(--color-neutral-300, oklch(87% 0 none));padding-left:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-100, oklch(97% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
2732
+ ], template: "<div class=\"axp-aggregate-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.title' | translate | async) || 'Aggregate Functions' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"(showAddForm() ? ('@data-management:metadata-definitions.components.query-builder.actions.cancel.title' | translate | async) : ('@data-management:metadata-definitions.components.query-builder.actions.add-aggregate.title' | translate | async)) || (showAddForm() ? 'Cancel' : 'Add Aggregate')\"\n (onClick)=\"toggleAddForm()\">\n <ax-prefix>\n <ax-icon [icon]=\"showAddForm() ? 'fa-light fa-times' : 'fa-light fa-plus'\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Filters -->\n <div class=\"__filters\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__category-filter\"\n [dataSource]=\"categoriesDataSource()\"\n [ngModel]=\"selectedCategory()\"\n (ngModelChange)=\"selectedCategory.set($event)\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.category-placeholder' | translate | async) || 'Filter by category'\">\n </ax-lookup>\n <ax-search-box\n class=\"__search-filter\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.search-placeholder' | translate | async) || 'Search functions...'\"\n [value]=\"searchText()\"\n (valueChange)=\"searchText.set($event)\">\n </ax-search-box>\n </div>\n\n <!-- Add Form -->\n @if (showAddForm()) {\n <div class=\"__add-form\">\n <div class=\"__form-row\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"newAggregate().function\"\n (ngModelChange)=\"onFunctionChange($event)\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n @if (newAggregate().function && functionRequiresField(newAggregate().function!)) {\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"newAggregate().field\"\n (ngModelChange)=\"onFieldChange($event)\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n }\n <ax-text-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().alias\"\n (ngModelChange)=\"onAliasChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.alias-placeholder' | translate | async) || 'Alias (optional)'\"\n [type]=\"'text'\">\n </ax-text-box>\n @if (newAggregate().function && functionSupportsDistinct(newAggregate().function!)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"newAggregate().distinct\"\n (ngModelChange)=\"onDistinctChange($event)\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!)) {\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested'\"\n (onClick)=\"addNestedToNewAggregate()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-prefix>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm\"\n [look]=\"'solid'\"\n [color]=\"'primary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.add.title' | translate | async) || 'Add'\"\n (onClick)=\"addAggregate()\">\n </ax-button>\n </div>\n \n <!-- Nested Aggregates for New Aggregate -->\n @if (newAggregate().function && functionSupportsNested(newAggregate().function!) && newAggregate().nestedAggregates && newAggregate().nestedAggregates!.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of newAggregate().nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { function: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { field: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedInNewAggregate(ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedFromNewAggregate(ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Aggregate Operations List -->\n <div class=\"__section-body\">\n @if (value().length === 0) {\n <div class=\"__empty-state\">\n <ax-label class=\"__empty-state-text\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.empty-state' | translate | async) || 'No aggregate functions defined. Click \\'Add Aggregate\\' to add aggregation.' }}\n </ax-label>\n </div>\n } @else {\n <div class=\"__aggregate-operations\">\n @for (agg of value(); track $index; let i = $index) {\n <div class=\"__aggregate-operation\">\n <div class=\"__operation-info\">\n <ax-label class=\"__function-name\">\n {{ getFunctionDefinition(agg.function)?.title || agg.function }}(\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n {{ getFunctionDefinition(nested.function)?.title || nested.function }}({{ nested.distinct ? 'DISTINCT ' : '' }}{{ nested.field || '*' }})\n @if (ni < agg.nestedAggregates!.length - 1) {\n <span>, </span>\n }\n }\n } @else {\n {{ agg.distinct ? 'DISTINCT ' : '' }}{{ agg.field || '*' }}\n }\n )\n </ax-label>\n @if (agg.alias) {\n <ax-label class=\"__alias\">AS {{ agg.alias }}</ax-label>\n }\n </div>\n <div class=\"__operation-actions\">\n @if (functionSupportsNested(agg.function) && canAddNestedAggregate(i, getNestingDepth(agg))) {\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'primary'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.add-nested.title' | translate | async) || 'Add Nested Aggregate'\"\n (onClick)=\"addNestedAggregate(i)\">\n <ax-icon icon=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeAggregate(i)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n \n <!-- Nested Aggregates Editor -->\n @if (agg.nestedAggregates && agg.nestedAggregates.length > 0) {\n <div class=\"__nested-aggregates\">\n @for (nested of agg.nestedAggregates; track $index; let ni = $index) {\n <div class=\"__nested-aggregate\">\n <div class=\"__nested-form\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"functionsDataSource()\"\n [ngModel]=\"nested.function\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { function: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.function-placeholder' | translate | async) || 'Select function'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n @if (nested.function && functionRequiresField(nested.function)) {\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__form-field\"\n [dataSource]=\"columnsDataSource()\"\n [ngModel]=\"nested.field\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { field: $event })\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.aggregate.field-placeholder' | translate | async) || 'Select field'\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\">\n </ax-lookup>\n }\n @if (nested.function && functionSupportsDistinct(nested.function)) {\n <ax-check-box\n class=\"__form-field\"\n [ngModel]=\"nested.distinct\"\n (ngModelChange)=\"updateNestedAggregate(i, ni, { distinct: $event })\">\n <ax-label>\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.aggregate.distinct-label' | translate | async) || 'DISTINCT' }}\n </ax-label>\n </ax-check-box>\n }\n <ax-button\n class=\"ax-sm __icon-btn\"\n [look]=\"'blank'\"\n [color]=\"'danger'\"\n [title]=\"('@data-management:metadata-definitions.components.query-builder.actions.remove.title' | translate | async) || 'Remove'\"\n (onClick)=\"removeNestedAggregate(i, ni)\">\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-aggregate-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-aggregate-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-aggregate-builder .__section-header .__section-actions,.axp-aggregate-builder .__filters{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__filters .__category-filter,.axp-aggregate-builder .__filters .__search-filter{flex:1;min-width:200px}.axp-aggregate-builder .__add-form{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__add-form .__form-row{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__add-form .__form-row .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__empty-state{padding-block:calc(var(--spacing, .25rem) * 8);text-align:center}.axp-aggregate-builder .__section-body .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation{display:flex;align-items:center;justify-content:space-between;border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info{display:flex;flex:1;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__function-name{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-neutral-900, oklch(20.5% 0 none))}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-info .__alias{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none));font-style:italic}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}.axp-aggregate-builder .__section-body .__aggregate-operations .__aggregate-operation .__operation-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates{margin-top:calc(var(--spacing, .25rem) * 2);margin-left:calc(var(--spacing, .25rem) * 6);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-left-style:var(--tw-border-style);border-left-width:2px;border-color:var(--color-neutral-300, oklch(87% 0 none));padding-left:calc(var(--spacing, .25rem) * 4)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-100, oklch(97% 0 none));padding:calc(var(--spacing, .25rem) * 3)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__form-field{flex:1;min-width:150px}.axp-aggregate-builder .__section-body .__aggregate-operations .__nested-aggregates .__nested-aggregate .__nested-form .__icon-btn{flex-shrink:0;width:2rem;height:2rem;padding:0}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
2722
2733
  }], ctorParameters: () => [], propDecorators: { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], databaseType: [{ type: i0.Input, args: [{ isSignal: true, alias: "databaseType", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
2723
2734
 
2724
2735
  /**
@@ -3567,7 +3578,7 @@ class AXPRawQueryBuilderComponent {
3567
3578
  this.valueChange.emit('');
3568
3579
  }
3569
3580
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRawQueryBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3570
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRawQueryBuilderComponent, isStandalone: true, selector: "axp-raw-query-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, queryLanguage: { classPropertyName: "queryLanguage", publicName: "queryLanguage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", queryLanguageChange: "queryLanguageChange" }, ngImport: i0, template: "<div class=\"axp-raw-query-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.title' | translate | async) || 'Raw Query' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.format-query.title' | translate | async) || 'Format'\"\n (onClick)=\"formatQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-code\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'danger'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear.title' | translate | async) || 'Clear'\"\n (onClick)=\"clearQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Query Language Selector -->\n <div class=\"__language-selector\">\n <ax-select-box\n class=\"__language-filter\"\n [dataSource]=\"queryLanguageDataSource()\"\n [ngModel]=\"selectedLanguage()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.language-placeholder' | translate | async) || 'Select query language'\">\n </ax-select-box>\n </div>\n\n <!-- Query Editor -->\n <div class=\"__query-editor\">\n <ax-text-area\n class=\"__query-textarea\"\n [ngModel]=\"rawQuery()\"\n (ngModelChange)=\"onQueryChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.placeholder' | translate | async) || 'Enter your raw SQL query here...'\"\n [rows]=\"15\"\n [class.__error]=\"!isValid()\">\n </ax-text-area>\n \n @if (!isValid() && validationError()) {\n <div class=\"__validation-error\">\n <ax-label class=\"__error-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"text-danger-500\"></ax-icon>\n {{ validationError() }}\n </ax-label>\n </div>\n }\n </div>\n\n <!-- Help Text -->\n <div class=\"__help-text\">\n <ax-label class=\"__help-label\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.help-text' | translate | async) || 'Write your query in ' + selectedLanguage().toUpperCase() + ' syntax. Changes here will sync with the structured query builder.' }}\n </ax-label>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-raw-query-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-raw-query-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-raw-query-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-raw-query-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__language-selector{display:flex;align-items:center}.axp-raw-query-builder .__language-selector .__language-filter{width:calc(var(--spacing, .25rem) * 64)}.axp-raw-query-builder .__query-editor{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__query-textarea{width:100%;font-family:Courier New,monospace;font-size:.875rem}.axp-raw-query-builder .__query-editor .__query-textarea.__error{border-style:var(--tw-border-style);border-width:2px;border-color:rgba(var(--ax-sys-color-danger-500))}.axp-raw-query-builder .__query-editor .__validation-error{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-danger-200));background-color:rgba(var(--ax-sys-color-danger-50));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__validation-error .__error-text{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-danger-700))}.axp-raw-query-builder .__help-text{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__help-text .__help-label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i4$2.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3581
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPRawQueryBuilderComponent, isStandalone: true, selector: "axp-raw-query-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, queryLanguage: { classPropertyName: "queryLanguage", publicName: "queryLanguage", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", queryLanguageChange: "queryLanguageChange" }, ngImport: i0, template: "<div class=\"axp-raw-query-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.title' | translate | async) || 'Raw Query' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.format-query.title' | translate | async) || 'Format'\"\n (onClick)=\"formatQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-code\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'danger'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear.title' | translate | async) || 'Clear'\"\n (onClick)=\"clearQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Query Language Selector -->\n <div class=\"__language-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__language-filter\"\n [dataSource]=\"queryLanguageDataSource()\"\n [ngModel]=\"selectedLanguage()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.language-placeholder' | translate | async) || 'Select query language'\">\n </ax-lookup>\n </div>\n\n <!-- Query Editor -->\n <div class=\"__query-editor\">\n <ax-text-area\n class=\"__query-textarea\"\n [ngModel]=\"rawQuery()\"\n (ngModelChange)=\"onQueryChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.placeholder' | translate | async) || 'Enter your raw SQL query here...'\"\n [rows]=\"15\"\n [class.__error]=\"!isValid()\">\n </ax-text-area>\n \n @if (!isValid() && validationError()) {\n <div class=\"__validation-error\">\n <ax-label class=\"__error-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"text-danger-500\"></ax-icon>\n {{ validationError() }}\n </ax-label>\n </div>\n }\n </div>\n\n <!-- Help Text -->\n <div class=\"__help-text\">\n <ax-label class=\"__help-label\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.help-text' | translate | async) || 'Write your query in ' + selectedLanguage().toUpperCase() + ' syntax. Changes here will sync with the structured query builder.' }}\n </ax-label>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-raw-query-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-raw-query-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-raw-query-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-raw-query-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__language-selector{display:flex;align-items:center}.axp-raw-query-builder .__language-selector .__language-filter{width:calc(var(--spacing, .25rem) * 64)}.axp-raw-query-builder .__query-editor{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__query-textarea{width:100%;font-family:Courier New,monospace;font-size:.875rem}.axp-raw-query-builder .__query-editor .__query-textarea.__error{border-style:var(--tw-border-style);border-width:2px;border-color:rgba(var(--ax-sys-color-danger-500))}.axp-raw-query-builder .__query-editor .__validation-error{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-danger-200));background-color:rgba(var(--ax-sys-color-danger-50));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__validation-error .__error-text{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-danger-700))}.axp-raw-query-builder .__help-text{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__help-text .__help-label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTextAreaModule }, { kind: "component", type: i3$3.AXTextAreaComponent, selector: "ax-text-area", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "placeholder", "maxLength", "look", "rows", "allowResize", "showCounter", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3571
3582
  }
3572
3583
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRawQueryBuilderComponent, decorators: [{
3573
3584
  type: Component,
@@ -3575,12 +3586,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
3575
3586
  CommonModule,
3576
3587
  FormsModule,
3577
3588
  AXButtonModule,
3578
- AXSelectBoxModule,
3589
+ AXLookupComponent,
3579
3590
  AXTextAreaModule,
3580
3591
  AXLabelModule,
3581
3592
  AXDecoratorModule,
3582
3593
  AXTranslationModule,
3583
- ], template: "<div class=\"axp-raw-query-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.title' | translate | async) || 'Raw Query' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.format-query.title' | translate | async) || 'Format'\"\n (onClick)=\"formatQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-code\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'danger'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear.title' | translate | async) || 'Clear'\"\n (onClick)=\"clearQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Query Language Selector -->\n <div class=\"__language-selector\">\n <ax-select-box\n class=\"__language-filter\"\n [dataSource]=\"queryLanguageDataSource()\"\n [ngModel]=\"selectedLanguage()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n textField=\"text\"\n valueField=\"value\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.language-placeholder' | translate | async) || 'Select query language'\">\n </ax-select-box>\n </div>\n\n <!-- Query Editor -->\n <div class=\"__query-editor\">\n <ax-text-area\n class=\"__query-textarea\"\n [ngModel]=\"rawQuery()\"\n (ngModelChange)=\"onQueryChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.placeholder' | translate | async) || 'Enter your raw SQL query here...'\"\n [rows]=\"15\"\n [class.__error]=\"!isValid()\">\n </ax-text-area>\n \n @if (!isValid() && validationError()) {\n <div class=\"__validation-error\">\n <ax-label class=\"__error-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"text-danger-500\"></ax-icon>\n {{ validationError() }}\n </ax-label>\n </div>\n }\n </div>\n\n <!-- Help Text -->\n <div class=\"__help-text\">\n <ax-label class=\"__help-label\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.help-text' | translate | async) || 'Write your query in ' + selectedLanguage().toUpperCase() + ' syntax. Changes here will sync with the structured query builder.' }}\n </ax-label>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-raw-query-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-raw-query-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-raw-query-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-raw-query-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__language-selector{display:flex;align-items:center}.axp-raw-query-builder .__language-selector .__language-filter{width:calc(var(--spacing, .25rem) * 64)}.axp-raw-query-builder .__query-editor{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__query-textarea{width:100%;font-family:Courier New,monospace;font-size:.875rem}.axp-raw-query-builder .__query-editor .__query-textarea.__error{border-style:var(--tw-border-style);border-width:2px;border-color:rgba(var(--ax-sys-color-danger-500))}.axp-raw-query-builder .__query-editor .__validation-error{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-danger-200));background-color:rgba(var(--ax-sys-color-danger-50));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__validation-error .__error-text{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-danger-700))}.axp-raw-query-builder .__help-text{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__help-text .__help-label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
3594
+ ], template: "<div class=\"axp-raw-query-builder\">\n <div class=\"__section-header\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.title' | translate | async) || 'Raw Query' }}\n </ax-label>\n <div class=\"__section-actions\">\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'secondary'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.format-query.title' | translate | async) || 'Format'\"\n (onClick)=\"formatQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-code\"></ax-icon>\n </ax-prefix>\n </ax-button>\n <ax-button\n class=\"ax-sm\"\n [look]=\"'outline'\"\n [color]=\"'danger'\"\n [text]=\"('@data-management:metadata-definitions.components.query-builder.actions.clear.title' | translate | async) || 'Clear'\"\n (onClick)=\"clearQuery()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-trash-can\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n\n <!-- Query Language Selector -->\n <div class=\"__language-selector\">\n <ax-lookup\n mode=\"drop-down-list\"\n class=\"__language-filter\"\n [dataSource]=\"queryLanguageDataSource()\"\n [ngModel]=\"selectedLanguage()\"\n (ngModelChange)=\"onLanguageChange($event)\"\n textField=\"text\"\n valueField=\"value\"\n [searchable]=\"false\"\n [look]=\"'outline'\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.language-placeholder' | translate | async) || 'Select query language'\">\n </ax-lookup>\n </div>\n\n <!-- Query Editor -->\n <div class=\"__query-editor\">\n <ax-text-area\n class=\"__query-textarea\"\n [ngModel]=\"rawQuery()\"\n (ngModelChange)=\"onQueryChange($event)\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.raw-query.placeholder' | translate | async) || 'Enter your raw SQL query here...'\"\n [rows]=\"15\"\n [class.__error]=\"!isValid()\">\n </ax-text-area>\n \n @if (!isValid() && validationError()) {\n <div class=\"__validation-error\">\n <ax-label class=\"__error-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"text-danger-500\"></ax-icon>\n {{ validationError() }}\n </ax-label>\n </div>\n }\n </div>\n\n <!-- Help Text -->\n <div class=\"__help-text\">\n <ax-label class=\"__help-label\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.raw-query.help-text' | translate | async) || 'Write your query in ' + selectedLanguage().toUpperCase() + ' syntax. Changes here will sync with the structured query builder.' }}\n </ax-label>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-raw-query-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-raw-query-builder .__section-header{display:flex;align-items:center;justify-content:space-between}.axp-raw-query-builder .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-raw-query-builder .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__language-selector{display:flex;align-items:center}.axp-raw-query-builder .__language-selector .__language-filter{width:calc(var(--spacing, .25rem) * 64)}.axp-raw-query-builder .__query-editor{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__query-textarea{width:100%;font-family:Courier New,monospace;font-size:.875rem}.axp-raw-query-builder .__query-editor .__query-textarea.__error{border-style:var(--tw-border-style);border-width:2px;border-color:rgba(var(--ax-sys-color-danger-500))}.axp-raw-query-builder .__query-editor .__validation-error{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-danger-200));background-color:rgba(var(--ax-sys-color-danger-50));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__query-editor .__validation-error .__error-text{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-danger-700))}.axp-raw-query-builder .__help-text{border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-neutral-200, oklch(92.2% 0 none));background-color:var(--color-neutral-50, oklch(98.5% 0 none));padding:calc(var(--spacing, .25rem) * 2)}.axp-raw-query-builder .__help-text .__help-label{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
3584
3595
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], queryLanguage: [{ type: i0.Input, args: [{ isSignal: true, alias: "queryLanguage", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], queryLanguageChange: [{ type: i0.Output, args: ["queryLanguageChange"] }] } });
3585
3596
 
3586
3597
  //#region ---- Types ----
@@ -3617,23 +3628,23 @@ class AXPOutputBuilderComponent {
3617
3628
  //#endregion
3618
3629
  //#region ---- Data Sources ----
3619
3630
  /**
3620
- * Available output types
3631
+ * Available output types as combo-box items
3621
3632
  */
3622
- this.outputTypes = [
3633
+ this.outputTypeItems = [
3623
3634
  {
3635
+ id: 'value',
3624
3636
  value: 'value',
3625
3637
  text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.value.title',
3626
- description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.value.description',
3627
3638
  },
3628
3639
  {
3640
+ id: 'table',
3629
3641
  value: 'table',
3630
3642
  text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.table.title',
3631
- description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.table.description',
3632
3643
  },
3633
3644
  {
3645
+ id: 'object',
3634
3646
  value: 'object',
3635
3647
  text: '@data-management:metadata-definitions.components.query-builder.sections.output.types.object.title',
3636
- description: '@data-management:metadata-definitions.components.query-builder.sections.output.types.object.description',
3637
3648
  },
3638
3649
  ];
3639
3650
  // Sync input value to internal signal
@@ -3661,17 +3672,17 @@ class AXPOutputBuilderComponent {
3661
3672
  this.valueChange.emit(value);
3662
3673
  }
3663
3674
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPOutputBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3664
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPOutputBuilderComponent, isStandalone: true, selector: "axp-output-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-output-builder\">\n <div class=\"__section\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.title' | translate | async) || 'Output Type' }}\n </ax-label>\n <ax-label class=\"__section-description\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.description' | translate | async) || 'Select the expected structure of the query result' }}\n </ax-label>\n </div>\n\n <div class=\"__content\">\n <ax-select-box\n [ngModel]=\"internalValue()\"\n (ngModelChange)=\"onOutputTypeChange($event)\"\n [dataSource]=\"outputTypes\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.output.placeholder' | translate | async) || 'Select output type'\">\n </ax-select-box>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-output-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 4)}.axp-output-builder .__section{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-output-builder .__section .__section-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-output-builder .__section .__section-description{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-color-text-secondary)}.axp-output-builder .__content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3675
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.8", type: AXPOutputBuilderComponent, isStandalone: true, selector: "axp-output-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-output-builder\">\n <div class=\"__section\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.title' | translate | async) || 'Output Type' }}\n </ax-label>\n <ax-label class=\"__section-description\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.description' | translate | async) || 'Select the expected structure of the query result' }}\n </ax-label>\n </div>\n\n <div class=\"__content\">\n <ax-combo-box\n [ngModel]=\"internalValue()\"\n (ngModelChange)=\"onOutputTypeChange($event)\"\n [items]=\"outputTypeItems\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.output.placeholder' | translate | async) || 'Select output type'\">\n </ax-combo-box>\n </div>\n</div>\n", styles: ["@layer properties;.axp-output-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 4)}.axp-output-builder .__section{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-output-builder .__section .__section-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-output-builder .__section .__section-description{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-color-text-secondary)}.axp-output-builder .__content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: AXComboBoxComponent, selector: "ax-combo-box", inputs: ["name", "items", "searchable", "multiple", "adaptivityEnabled", "caption", "alternate", "placeholder", "searchPlaceholder", "highlightSearch", "emptyTemplate", "itemTemplate", "selectedTemplate", "disabled", "readonly", "look", "value"], outputs: ["lookChange", "valueChange", "onValueChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3665
3676
  }
3666
3677
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPOutputBuilderComponent, decorators: [{
3667
3678
  type: Component,
3668
3679
  args: [{ selector: 'axp-output-builder', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
3669
3680
  CommonModule,
3670
3681
  FormsModule,
3671
- AXSelectBoxModule,
3682
+ AXComboBoxComponent,
3672
3683
  AXLabelModule,
3673
3684
  AXTranslationModule,
3674
- ], template: "<div class=\"axp-output-builder\">\n <div class=\"__section\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.title' | translate | async) || 'Output Type' }}\n </ax-label>\n <ax-label class=\"__section-description\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.description' | translate | async) || 'Select the expected structure of the query result' }}\n </ax-label>\n </div>\n\n <div class=\"__content\">\n <ax-select-box\n [ngModel]=\"internalValue()\"\n (ngModelChange)=\"onOutputTypeChange($event)\"\n [dataSource]=\"outputTypes\"\n valueField=\"value\"\n textField=\"text\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.output.placeholder' | translate | async) || 'Select output type'\">\n </ax-select-box>\n </div>\n</div>\n\n", styles: ["@layer properties;.axp-output-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 4)}.axp-output-builder .__section{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-output-builder .__section .__section-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-output-builder .__section .__section-description{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-color-text-secondary)}.axp-output-builder .__content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
3685
+ ], template: "<div class=\"axp-output-builder\">\n <div class=\"__section\">\n <ax-label class=\"__section-title\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.title' | translate | async) || 'Output Type' }}\n </ax-label>\n <ax-label class=\"__section-description\">\n {{ ('@data-management:metadata-definitions.components.query-builder.sections.output.description' | translate | async) || 'Select the expected structure of the query result' }}\n </ax-label>\n </div>\n\n <div class=\"__content\">\n <ax-combo-box\n [ngModel]=\"internalValue()\"\n (ngModelChange)=\"onOutputTypeChange($event)\"\n [items]=\"outputTypeItems\"\n [searchable]=\"false\"\n [placeholder]=\"('@data-management:metadata-definitions.components.query-builder.sections.output.placeholder' | translate | async) || 'Select output type'\">\n </ax-combo-box>\n </div>\n</div>\n", styles: ["@layer properties;.axp-output-builder{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4);padding:calc(var(--spacing, .25rem) * 4)}.axp-output-builder .__section{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2)}.axp-output-builder .__section .__section-title{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-output-builder .__section .__section-description{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--ax-color-text-secondary)}.axp-output-builder .__content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
3675
3686
  }], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }] } });
3676
3687
 
3677
3688
  //#region ---- Types ----
@@ -3995,7 +4006,7 @@ class AXPQueryBuilderComponent {
3995
4006
  this.valueChange.emit(currentData);
3996
4007
  }
3997
4008
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPQueryBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3998
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPQueryBuilderComponent, isStandalone: true, selector: "axp-query-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, dataSourceDefinition: { classPropertyName: "dataSourceDefinition", publicName: "dataSourceDefinition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-query-builder\">\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"activeTab.set($event.index)\">\n <!-- Columns Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.columns.title' | translate | async) || 'Columns'\">\n </ax-tab-item>\n\n <!-- Where Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.where.title' | translate | async) || 'Where'\">\n </ax-tab-item>\n\n <!-- Sort Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.sort.title' | translate | async) || 'Sort'\">\n </ax-tab-item>\n\n <!-- Group By Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.group-by.title' | translate | async) || 'Group By'\">\n </ax-tab-item>\n\n <!-- Aggregate Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.aggregate.title' | translate | async) || 'Aggregate'\">\n </ax-tab-item>\n\n <!-- Output Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.output.title' | translate | async) || 'Output'\">\n </ax-tab-item>\n\n <!-- Raw Query Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.raw.title' | translate | async) || 'Raw Query'\">\n </ax-tab-item>\n </ax-tabs>\n\n <!-- Validation Warnings -->\n @if (validationWarnings().length > 0) {\n <div class=\"__validation-warnings\">\n @for (warning of validationWarnings(); track $index) {\n <div class=\"__warning-item\">\n <ax-label class=\"__warning-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"text-warning-500\"></ax-icon>\n {{ (warning | translate | async) || warning }}\n </ax-label>\n </div>\n }\n </div>\n }\n\n <div class=\"__content\">\n <!-- Columns Section -->\n @if (activeTab() === 0) {\n <axp-columns-builder\n [columns]=\"columns()\"\n [value]=\"queryData().columns\"\n (valueChange)=\"onColumnsChange($event)\">\n </axp-columns-builder>\n }\n\n <!-- Where Section -->\n @if (activeTab() === 1) {\n <axp-where-builder\n [value]=\"queryData().where\"\n [filterDefinitions]=\"filterDefinitions()\"\n (valueChange)=\"onWhereChange($event)\">\n </axp-where-builder>\n }\n\n <!-- Sort Section -->\n @if (activeTab() === 2) {\n <axp-sort-builder\n [columns]=\"columns()\"\n [value]=\"queryData().sort\"\n (valueChange)=\"onSortChange($event)\">\n </axp-sort-builder>\n }\n\n <!-- Group By Section -->\n @if (activeTab() === 3) {\n <axp-group-by-builder\n [columns]=\"columns()\"\n [value]=\"queryData().groupBy\"\n (valueChange)=\"onGroupByChange($event)\">\n </axp-group-by-builder>\n }\n\n <!-- Aggregate Section -->\n @if (activeTab() === 4) {\n <axp-aggregate-builder\n [columns]=\"columns()\"\n [value]=\"queryData().aggregates\"\n (valueChange)=\"onAggregatesChange($event)\">\n </axp-aggregate-builder>\n }\n\n <!-- Output Section -->\n @if (activeTab() === 5) {\n <axp-output-builder\n [value]=\"queryData().outputType\"\n (valueChange)=\"onOutputTypeChange($event)\">\n </axp-output-builder>\n }\n\n <!-- Raw Query Section -->\n @if (activeTab() === 6) {\n <axp-raw-query-builder\n [value]=\"queryData().rawQuery || ''\"\n [queryLanguage]=\"queryData().queryLanguage || 'mysql'\"\n (valueChange)=\"onRawQueryChange($event)\"\n (queryLanguageChange)=\"onQueryLanguageChange($event)\">\n </axp-raw-query-builder>\n }\n </div>\n</div>\n", styles: ["@layer properties;.axp-query-builder{display:flex;height:100%;width:100%;flex-direction:column}.axp-query-builder .__content{flex:1;overflow:auto;padding:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__section{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__section .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__section .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-query-builder .__section .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-query-builder .__section .__section-body,.axp-query-builder .__sort-rules{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axp-query-builder .__sort-rules .__sort-rule{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.axp-query-builder .__sort-rules .__sort-rule .__sort-field{flex:1}.axp-query-builder .__sort-rules .__sort-rule .__sort-direction{width:calc(var(--spacing, .25rem) * 32)}.axp-query-builder .__sort-rules .__sort-rule .__icon-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;flex-shrink:0}.axp-query-builder .__validation-warnings{margin:calc(var(--spacing, .25rem) * 4);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-warning-200));background-color:rgba(var(--ax-sys-color-warning-50));padding:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__validation-warnings .__warning-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-query-builder .__validation-warnings .__warning-item .__warning-text{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-warning-700))}.axp-query-builder .__empty-state{display:flex;align-items:center;justify-content:center;padding-block:calc(var(--spacing, .25rem) * 8)}.axp-query-builder .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1$1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i1$1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i5$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPWhereBuilderComponent, selector: "axp-where-builder", inputs: ["value", "filterDefinitions"], outputs: ["valueChange"] }, { kind: "component", type: AXPColumnsBuilderComponent, selector: "axp-columns-builder", inputs: ["columns", "value"], outputs: ["valueChange"] }, { kind: "component", type: AXPSortBuilderComponent, selector: "axp-sort-builder", inputs: ["columns", "value"], outputs: ["valueChange"] }, { kind: "component", type: AXPGroupByBuilderComponent, selector: "axp-group-by-builder", inputs: ["columns", "value"], outputs: ["valueChange"] }, { kind: "component", type: AXPAggregateBuilderComponent, selector: "axp-aggregate-builder", inputs: ["columns", "value", "databaseType"], outputs: ["valueChange"] }, { kind: "component", type: AXPRawQueryBuilderComponent, selector: "axp-raw-query-builder", inputs: ["value", "queryLanguage"], outputs: ["valueChange", "queryLanguageChange"] }, { kind: "component", type: AXPOutputBuilderComponent, selector: "axp-output-builder", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4009
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPQueryBuilderComponent, isStandalone: true, selector: "axp-query-builder", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, dataSourceDefinition: { classPropertyName: "dataSourceDefinition", publicName: "dataSourceDefinition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, ngImport: i0, template: "<div class=\"axp-query-builder\">\n <ax-tabs [look]=\"'with-line'\" (onActiveTabChanged)=\"activeTab.set($event.index)\">\n <!-- Columns Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.columns.title' | translate | async) || 'Columns'\">\n </ax-tab-item>\n\n <!-- Where Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.where.title' | translate | async) || 'Where'\">\n </ax-tab-item>\n\n <!-- Sort Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.sort.title' | translate | async) || 'Sort'\">\n </ax-tab-item>\n\n <!-- Group By Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.group-by.title' | translate | async) || 'Group By'\">\n </ax-tab-item>\n\n <!-- Aggregate Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.aggregate.title' | translate | async) || 'Aggregate'\">\n </ax-tab-item>\n\n <!-- Output Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.output.title' | translate | async) || 'Output'\">\n </ax-tab-item>\n\n <!-- Raw Query Tab -->\n <ax-tab-item [text]=\"('@data-management:metadata-definitions.components.query-builder.tabs.raw.title' | translate | async) || 'Raw Query'\">\n </ax-tab-item>\n </ax-tabs>\n\n <!-- Validation Warnings -->\n @if (validationWarnings().length > 0) {\n <div class=\"__validation-warnings\">\n @for (warning of validationWarnings(); track $index) {\n <div class=\"__warning-item\">\n <ax-label class=\"__warning-text\">\n <ax-icon icon=\"fa-light fa-circle-exclamation\" class=\"text-warning-500\"></ax-icon>\n {{ (warning | translate | async) || warning }}\n </ax-label>\n </div>\n }\n </div>\n }\n\n <div class=\"__content\">\n <!-- Columns Section -->\n @if (activeTab() === 0) {\n <axp-columns-builder\n [columns]=\"columns()\"\n [value]=\"queryData().columns\"\n (valueChange)=\"onColumnsChange($event)\">\n </axp-columns-builder>\n }\n\n <!-- Where Section -->\n @if (activeTab() === 1) {\n <axp-where-builder\n [value]=\"queryData().where\"\n [filterDefinitions]=\"filterDefinitions()\"\n (valueChange)=\"onWhereChange($event)\">\n </axp-where-builder>\n }\n\n <!-- Sort Section -->\n @if (activeTab() === 2) {\n <axp-sort-builder\n [columns]=\"columns()\"\n [value]=\"queryData().sort\"\n (valueChange)=\"onSortChange($event)\">\n </axp-sort-builder>\n }\n\n <!-- Group By Section -->\n @if (activeTab() === 3) {\n <axp-group-by-builder\n [columns]=\"columns()\"\n [value]=\"queryData().groupBy\"\n (valueChange)=\"onGroupByChange($event)\">\n </axp-group-by-builder>\n }\n\n <!-- Aggregate Section -->\n @if (activeTab() === 4) {\n <axp-aggregate-builder\n [columns]=\"columns()\"\n [value]=\"queryData().aggregates\"\n (valueChange)=\"onAggregatesChange($event)\">\n </axp-aggregate-builder>\n }\n\n <!-- Output Section -->\n @if (activeTab() === 5) {\n <axp-output-builder\n [value]=\"queryData().outputType\"\n (valueChange)=\"onOutputTypeChange($event)\">\n </axp-output-builder>\n }\n\n <!-- Raw Query Section -->\n @if (activeTab() === 6) {\n <axp-raw-query-builder\n [value]=\"queryData().rawQuery || ''\"\n [queryLanguage]=\"queryData().queryLanguage || 'mysql'\"\n (valueChange)=\"onRawQueryChange($event)\"\n (queryLanguageChange)=\"onQueryLanguageChange($event)\">\n </axp-raw-query-builder>\n }\n </div>\n</div>\n", styles: ["@layer properties;.axp-query-builder{display:flex;height:100%;width:100%;flex-direction:column}.axp-query-builder .__content{flex:1;overflow:auto;padding:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__section{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__section .__section-header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__section .__section-header .__section-title{margin:0;font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600)}.axp-query-builder .__section .__section-header .__section-actions{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-query-builder .__section .__section-body,.axp-query-builder .__sort-rules{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 3)}.axp-query-builder .__sort-rules .__sort-rule{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 3)}.axp-query-builder .__sort-rules .__sort-rule .__sort-field{flex:1}.axp-query-builder .__sort-rules .__sort-rule .__sort-direction{width:calc(var(--spacing, .25rem) * 32)}.axp-query-builder .__sort-rules .__sort-rule .__icon-btn{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;flex-shrink:0}.axp-query-builder .__validation-warnings{margin:calc(var(--spacing, .25rem) * 4);display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * 2);border-radius:var(--radius-lg, .5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-warning-200));background-color:rgba(var(--ax-sys-color-warning-50));padding:calc(var(--spacing, .25rem) * 4)}.axp-query-builder .__validation-warnings .__warning-item{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.axp-query-builder .__validation-warnings .__warning-item .__warning-text{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:rgba(var(--ax-sys-color-warning-700))}.axp-query-builder .__empty-state{display:flex;align-items:center;justify-content:center;padding-block:calc(var(--spacing, .25rem) * 8)}.axp-query-builder .__empty-state .__empty-state-text{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));color:var(--color-neutral-600, oklch(43.9% 0 none))}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1$1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i1$1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i3$1.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: AXPWhereBuilderComponent, selector: "axp-where-builder", inputs: ["value", "filterDefinitions"], outputs: ["valueChange"] }, { kind: "component", type: AXPColumnsBuilderComponent, selector: "axp-columns-builder", inputs: ["columns", "value"], outputs: ["valueChange"] }, { kind: "component", type: AXPSortBuilderComponent, selector: "axp-sort-builder", inputs: ["columns", "value"], outputs: ["valueChange"] }, { kind: "component", type: AXPGroupByBuilderComponent, selector: "axp-group-by-builder", inputs: ["columns", "value"], outputs: ["valueChange"] }, { kind: "component", type: AXPAggregateBuilderComponent, selector: "axp-aggregate-builder", inputs: ["columns", "value", "databaseType"], outputs: ["valueChange"] }, { kind: "component", type: AXPRawQueryBuilderComponent, selector: "axp-raw-query-builder", inputs: ["value", "queryLanguage"], outputs: ["valueChange", "queryLanguageChange"] }, { kind: "component", type: AXPOutputBuilderComponent, selector: "axp-output-builder", inputs: ["value"], outputs: ["valueChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3999
4010
  }
4000
4011
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPQueryBuilderComponent, decorators: [{
4001
4012
  type: Component,
@@ -4212,7 +4223,7 @@ class AXPQueryBuilderWidgetViewComponent extends AXPValueWidgetComponent {
4212
4223
  </div>
4213
4224
  </div>
4214
4225
  </ng-template>
4215
- `, isInline: true, styles: ["@layer properties;.__query-builder-view{width:100%;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--color-gray-50, oklch(98.5% .002 247.839))}.__query-builder-view .__query-display{padding:calc(var(--spacing, .25rem) * 3)}.__query-builder-view .__query-display .__root-group{border-radius:.25rem;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-blue-200, oklch(88.2% .059 254.128));background-color:var(--color-blue-50, oklch(97% .014 254.604));padding:calc(var(--spacing, .25rem) * 3)}.__query-builder-view .__query-display .__root-group .__group-header{margin-bottom:calc(var(--spacing, .25rem) * 3)}.__query-builder-view .__query-display .__root-group .__group-header .__group-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-blue-800, oklch(42.4% .199 265.638))}:where(.__query-builder-view .__query-display .__root-group .__group-content>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing, .25rem) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing, .25rem) * 2) * calc(1 - var(--tw-space-y-reverse)))}.__query-builder-view .__query-display .__query-item{position:relative}.__query-builder-view .__query-display .__query-item .__item-connector{display:flex;justify-content:center;padding-block:var(--spacing, .25rem)}.__query-builder-view .__query-display .__query-item .__item-connector .__operator-badge{border-radius:calc(infinity * 1px);background-color:var(--color-blue-100, oklch(93.2% .032 255.585));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-blue-700, oklch(48.8% .243 264.376))}.__query-builder-view .__query-display .__condition-display{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:.25rem;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--color-white, #fff);padding:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__query-display .__condition-display .__field{border-radius:.25rem;background-color:var(--color-green-100, oklch(96.2% .044 156.743));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-green-800, oklch(44.8% .119 151.328))}.__query-builder-view .__query-display .__condition-display .__operator{border-radius:.25rem;background-color:var(--color-orange-100, oklch(95.4% .038 75.164));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-orange-800, oklch(47% .157 37.304))}.__query-builder-view .__query-display .__condition-display .__value{border-radius:.25rem;background-color:var(--color-purple-100, oklch(94.6% .033 307.174));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-purple-800, oklch(43.8% .218 303.724))}.__query-builder-view .__query-display .__group-display{border-radius:.25rem;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300, oklch(87.2% .01 258.338));background-color:var(--color-gray-100, oklch(96.7% .003 264.542));padding:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__query-display .__group-display .__group-header{margin-bottom:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__query-display .__group-display .__group-header .__group-title{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-gray-700, oklch(37.3% .034 259.733))}:where(.__query-builder-view .__query-display .__group-display .__group-content>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(var(--spacing, .25rem) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing, .25rem) * calc(1 - var(--tw-space-y-reverse)))}.__query-builder-view .__query-display .__group-display .__group-display{border-color:var(--color-orange-300, oklch(83.7% .128 66.29));background-color:var(--color-orange-100, oklch(95.4% .038 75.164))}.__query-builder-view .__query-display .__group-display .__group-display .__group-display{border-color:var(--color-purple-300, oklch(82.7% .119 306.383));background-color:var(--color-purple-100, oklch(94.6% .033 307.174))}.__query-builder-view .__summary{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--color-gray-100, oklch(96.7% .003 264.542));padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__summary .__count{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-gray-600, oklch(44.6% .03 256.802))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-space-y-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-space-y-reverse: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4226
+ `, isInline: true, styles: ["@layer properties;.__query-builder-view{width:100%;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--color-gray-50, oklch(98.5% .002 247.839))}.__query-builder-view .__query-display{padding:calc(var(--spacing, .25rem) * 3)}.__query-builder-view .__query-display .__root-group{border-radius:.25rem;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-blue-200, oklch(88.2% .059 254.128));background-color:var(--color-blue-50, oklch(97% .014 254.604));padding:calc(var(--spacing, .25rem) * 3)}.__query-builder-view .__query-display .__root-group .__group-header{margin-bottom:calc(var(--spacing, .25rem) * 3)}.__query-builder-view .__query-display .__root-group .__group-header .__group-title{font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);color:var(--color-blue-800, oklch(42.4% .199 265.638))}:where(.__query-builder-view .__query-display .__root-group .__group-content>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing, .25rem) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing, .25rem) * 2) * calc(1 - var(--tw-space-y-reverse)))}.__query-builder-view .__query-display .__query-item{position:relative}.__query-builder-view .__query-display .__query-item .__item-connector{display:flex;justify-content:center;padding-block:var(--spacing, .25rem)}.__query-builder-view .__query-display .__query-item .__item-connector .__operator-badge{border-radius:calc(infinity * 1px);background-color:var(--color-blue-100, oklch(93.2% .032 255.585));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-blue-700, oklch(48.8% .243 264.376))}.__query-builder-view .__query-display .__condition-display{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--spacing, .25rem) * 2);border-radius:.25rem;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--color-white, #fff);padding:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__query-display .__condition-display .__field{border-radius:.25rem;background-color:var(--color-green-100, oklch(96.2% .044 156.743));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-green-800, oklch(44.8% .119 151.328))}.__query-builder-view .__query-display .__condition-display .__operator{border-radius:.25rem;background-color:var(--color-orange-100, oklch(95.4% .038 75.164));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-orange-800, oklch(47% .157 37.304))}.__query-builder-view .__query-display .__condition-display .__value{border-radius:.25rem;background-color:var(--color-purple-100, oklch(94.6% .033 307.174));padding-inline:calc(var(--spacing, .25rem) * 2);padding-block:var(--spacing, .25rem);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-purple-800, oklch(43.8% .218 303.724))}.__query-builder-view .__query-display .__group-display{border-radius:.25rem;border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300, oklch(87.2% .01 258.338));background-color:var(--color-gray-100, oklch(96.7% .003 264.542));padding:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__query-display .__group-display .__group-header{margin-bottom:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__query-display .__group-display .__group-header .__group-title{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);color:var(--color-gray-700, oklch(37.3% .034 259.733))}:where(.__query-builder-view .__query-display .__group-display .__group-content>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(var(--spacing, .25rem) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing, .25rem) * calc(1 - var(--tw-space-y-reverse)))}.__query-builder-view .__query-display .__group-display .__group-display{border-color:var(--color-orange-300, oklch(83.7% .128 66.29));background-color:var(--color-orange-100, oklch(95.4% .038 75.164))}.__query-builder-view .__query-display .__group-display .__group-display .__group-display{border-color:var(--color-purple-300, oklch(82.7% .119 306.383));background-color:var(--color-purple-100, oklch(94.6% .033 307.174))}.__query-builder-view .__summary{border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--color-gray-200, oklch(92.8% .006 264.531));background-color:var(--color-gray-100, oklch(96.7% .003 264.542));padding-inline:calc(var(--spacing, .25rem) * 3);padding-block:calc(var(--spacing, .25rem) * 2)}.__query-builder-view .__summary .__count{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));color:var(--color-gray-600, oklch(44.6% .03 256.802))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-space-y-reverse{syntax: \"*\"; inherits: false; initial-value: 0;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-font-weight: initial;--tw-space-y-reverse: 0}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
4216
4227
  }
4217
4228
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPQueryBuilderWidgetViewComponent, decorators: [{
4218
4229
  type: Component,
@@ -6603,7 +6614,7 @@ class AXPMetaDataBuilderGroupsComponent {
6603
6614
  }
6604
6615
  }
6605
6616
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPMetaDataBuilderGroupsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6606
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPMetaDataBuilderGroupsComponent, isStandalone: true, selector: "axp-meta-data-builder-groups", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, contextPath: { classPropertyName: "contextPath", publicName: "contextPath", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "standardRef", first: true, predicate: AXPStandardSectionItemsBuilderComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axp-meta-data-builder-groups\" *translate=\"let t\">\n @if (!readonly() && !hideHeaderActions()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button class=\"ax-sm\"\n [text]=\"'@data-management:metadata-definitions.actions.add-group.title' | translate | async\" [color]=\"'primary'\"\n (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n\n <ax-button class=\"ax-sm\" [color]=\"'success'\" [disabled]=\"isPreviewDisabled()\"\n [text]=\"'@data-management:metadata-definitions.actions.preview.title' | translate | async\"\n (onClick)=\"handlePreviewClick()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"block min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n", styles: ["@layer properties;.axp-meta-data-builder-groups{display:flex;height:100%;width:100%;flex-direction:column}.axp-meta-data-builder-groups .__header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3)}.axp-meta-data-builder-groups .__header .__header-left,.axp-meta-data-builder-groups .__header .__header-right{display:flex;gap:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i5.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i5.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i7.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPStandardSectionItemsBuilderComponent, selector: "axp-standard-section-items-builder", inputs: ["value", "config", "readonly"], outputs: ["valueChange"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6617
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPMetaDataBuilderGroupsComponent, isStandalone: true, selector: "axp-meta-data-builder-groups", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, contextPath: { classPropertyName: "contextPath", publicName: "contextPath", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange" }, viewQueries: [{ propertyName: "standardRef", first: true, predicate: AXPStandardSectionItemsBuilderComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"axp-meta-data-builder-groups\" *translate=\"let t\">\n @if (!readonly() && !hideHeaderActions()) {\n <div class=\"__header\">\n <div class=\"__header-left\"></div>\n <div class=\"__header-right\">\n <ax-button class=\"ax-sm\"\n [text]=\"'@data-management:metadata-definitions.actions.add-group.title' | translate | async\" [color]=\"'primary'\"\n (onClick)=\"addSection()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-layer-group\"></ax-icon>\n </ax-prefix>\n </ax-button>\n\n <ax-button class=\"ax-sm\" [color]=\"'success'\" [disabled]=\"isPreviewDisabled()\"\n [text]=\"'@data-management:metadata-definitions.actions.preview.title' | translate | async\"\n (onClick)=\"handlePreviewClick()\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-eye\"></ax-icon>\n </ax-prefix>\n </ax-button>\n </div>\n </div>\n }\n\n <axp-standard-section-items-builder\n class=\"block min-h-[200px]\"\n [value]=\"builderValue()\"\n [config]=\"standardConfig()\"\n [readonly]=\"readonly()\"\n (valueChange)=\"onBuilderValueChange($event)\"\n />\n</div>\n", styles: ["@layer properties;.axp-meta-data-builder-groups{display:flex;height:100%;width:100%;flex-direction:column}.axp-meta-data-builder-groups .__header{display:flex;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;padding:calc(var(--spacing, .25rem) * 3)}.axp-meta-data-builder-groups .__header .__header-left,.axp-meta-data-builder-groups .__header .__header-right{display:flex;gap:calc(var(--spacing, .25rem) * 2)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i5.AXTranslatorDirective, selector: "[translate]" }, { kind: "component", type: AXPStandardSectionItemsBuilderComponent, selector: "axp-standard-section-items-builder", inputs: ["value", "config", "readonly"], outputs: ["valueChange"] }, { kind: "pipe", type: i4$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6607
6618
  }
6608
6619
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPMetaDataBuilderGroupsComponent, decorators: [{
6609
6620
  type: Component,