@acorex-platform/module-data-management-client 0.0.54 → 0.0.57

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.
@@ -39,11 +39,12 @@ import { AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-c
39
39
  import { AXPQueryService, provideCommandSetups, provideQuerySetups } from '@acorex-platform/framework-client/runtime';
40
40
  import { runtimeQueryPayloadData, runtimeQueryCollectionData, AXPWidgetsCatalog, compareMultiLanguageStrings, AXP_PREVIEW_WIDGET_FIELD_COMMAND_KEY, AXPWidgetsList } from '@acorex-platform/framework-shared/core';
41
41
  import { get, cloneDeep, unset } from 'lodash';
42
- import { AXMDataManagementFeatureKeys, AXPInsightsReportingPermissionKeys, RootConfig, AXPDataManagementMenuKeys, convertValueToState } from '@acorex-platform/module-data-management-client/contracts';
42
+ import { AXMDataManagementFeatureKeys, AXPInsightsReportingPermissionKeys, RootConfig, AXPDataManagementMenuKeys, mergeMetaDataLists, filterMetaDataListByAppliesTo, resolveMetaDataFieldAppliesTo, convertValueToState } from '@acorex-platform/module-data-management-client/contracts';
43
43
  import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys } from '@acorex-platform/module-common-client/contracts';
44
44
  import { AXPLayoutBuilderService, AXPLayoutRendererComponent } from '@acorex-platform/framework-client/layout/builder';
45
45
  import { AXToastService } from '@acorex/components/toast';
46
46
  import { AXFormModule } from '@acorex/components/form';
47
+ import { isEqual } from 'lodash-es';
47
48
  import { AXDialogService } from '@acorex/components/dialog';
48
49
  import { AXPEntityCommandScope } from '@acorex-platform/framework-shared/entity';
49
50
  import { toSignal } from '@angular/core/rxjs-interop';
@@ -1574,7 +1575,7 @@ class AXPWhereBuilderComponent {
1574
1575
  }
1575
1576
  }
1576
1577
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWhereBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1577
- 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 }); }
1578
+ 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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-up.title' | translate | async\"\n (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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-down.title' | translate | async\"\n (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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-up.title' | translate | async\"\n (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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-down.title' | translate | async\"\n (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 }); }
1578
1579
  }
1579
1580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPWhereBuilderComponent, decorators: [{
1580
1581
  type: Component,
@@ -1590,7 +1591,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
1590
1591
  AXDropListDirective,
1591
1592
  AXPQueryBuilderConditionComponent,
1592
1593
  AXTranslationModule,
1593
- ], 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"] }]
1594
+ ], 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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-up.title' | translate | async\"\n (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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-down.title' | translate | async\"\n (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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-up.title' | translate | async\"\n (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]=\"'@data-management:metadata-definitions.components.query-builder.actions.move-down.title' | translate | async\"\n (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"] }]
1594
1595
  }], 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"] }] } });
1595
1596
 
1596
1597
  /**
@@ -5565,23 +5566,96 @@ const AXPMetaDataFormWidget = {
5565
5566
  },
5566
5567
  };
5567
5568
 
5569
+ //#region ----- Imports -----
5570
+ //#endregion
5571
+ //#region ----- Source resolve -----
5572
+ function asUnknownArray(value) {
5573
+ if (value == null) {
5574
+ return [];
5575
+ }
5576
+ return Array.isArray(value) ? value : [value];
5577
+ }
5578
+ function sourceRowKey(row) {
5579
+ for (const candidate of [row['pickerKey'], row['name'], row['id'], row['documentTypeId']]) {
5580
+ if (candidate != null && String(candidate).trim()) {
5581
+ return String(candidate);
5582
+ }
5583
+ }
5584
+ return '';
5585
+ }
5586
+ function findCatalogRow(entry, catalog) {
5587
+ if (entry != null && typeof entry === 'object') {
5588
+ const row = entry;
5589
+ const id = row['id'] ?? row['documentTypeId'];
5590
+ const key = sourceRowKey(row);
5591
+ return catalog.find((item) => (key !== '' && sourceRowKey(item) === key) ||
5592
+ (id != null && item['id'] != null && String(item['id']) === String(id)));
5593
+ }
5594
+ const key = String(entry ?? '');
5595
+ if (!key) {
5596
+ return undefined;
5597
+ }
5598
+ return catalog.find((item) => sourceRowKey(item) === key);
5599
+ }
5600
+ function resolveMetaDataFormSourceItems(selected, catalog) {
5601
+ const catalogRows = asUnknownArray(catalog).filter((item) => item != null && typeof item === 'object');
5602
+ const resolved = [];
5603
+ for (const entry of asUnknownArray(selected)) {
5604
+ if (entry != null && typeof entry === 'object') {
5605
+ const row = entry;
5606
+ if (row['metaDataList'] != null) {
5607
+ resolved.push(row);
5608
+ continue;
5609
+ }
5610
+ resolved.push(findCatalogRow(row, catalogRows) ?? row);
5611
+ continue;
5612
+ }
5613
+ const match = findCatalogRow(entry, catalogRows);
5614
+ if (match) {
5615
+ resolved.push(match);
5616
+ }
5617
+ }
5618
+ return resolved;
5619
+ }
5620
+ function collectAppliesToMetaDataList(selected, catalog, appliesTo) {
5621
+ return mergeMetaDataLists(resolveMetaDataFormSourceItems(selected, catalog).map((item) => filterMetaDataListByAppliesTo(item?.metaDataList, appliesTo)));
5622
+ }
5623
+ //#endregion
5624
+
5568
5625
  class AXPMetaDataFormWidgetEditComponent extends AXPValueWidgetComponent {
5569
5626
  constructor() {
5570
5627
  super(...arguments);
5571
5628
  //#region ---- Inputs ----
5572
5629
  /**
5573
- * Groups structure from meta-data-selector or evaluated expression
5630
+ * Groups structure from meta-data-selector, evaluated expression, or a sibling context path
5631
+ * of `{ metaDataList }` rows (for example folder dialog `documentTypes`).
5574
5632
  */
5575
5633
  this.groups = computed(() => {
5576
5634
  const options = this.options();
5635
+ const sourcePath = options['sourcePath'];
5636
+ if (typeof sourcePath === 'string' && sourcePath.trim()) {
5637
+ const appliesTo = resolveMetaDataFieldAppliesTo({ appliesTo: options['appliesTo'] });
5638
+ const selected = this.contextService.getValue(sourcePath);
5639
+ return collectAppliesToMetaDataList(selected, options['sourceCatalog'], appliesTo).groups ?? [];
5640
+ }
5577
5641
  const groupsOption = options['groups'];
5578
5642
  // Handle evaluated expression result (array of groups) or direct groups array
5579
5643
  if (Array.isArray(groupsOption) && groupsOption.length > 0) {
5580
5644
  return groupsOption;
5581
5645
  }
5582
5646
  return [];
5647
+ }, { ...(ngDevMode ? { debugName: "groups" } : /* istanbul ignore next */ {}), equal: isEqual });
5648
+ this.hideEmpty = computed(() => {
5649
+ const options = this.options();
5650
+ if (options['hideEmpty'] === true) {
5651
+ return true;
5652
+ }
5653
+ if (options['hideEmpty'] === false) {
5654
+ return false;
5655
+ }
5656
+ return typeof options['sourcePath'] === 'string' && !!String(options['sourcePath']).trim();
5583
5657
  }, /* @ts-ignore */
5584
- ...(ngDevMode ? [{ debugName: "groups" }] : /* istanbul ignore next */ []));
5658
+ ...(ngDevMode ? [{ debugName: "hideEmpty" }] : /* istanbul ignore next */ []));
5585
5659
  this.#effect = effect(() => {
5586
5660
  this.groups();
5587
5661
  this.initializeFormDefinition();
@@ -5667,9 +5741,9 @@ class AXPMetaDataFormWidgetEditComponent extends AXPValueWidgetComponent {
5667
5741
  */
5668
5742
  initializeFormDefinition() {
5669
5743
  const groups = this.groups();
5670
- if (groups.length > 0) {
5671
- const newFormDefinition = this.convertGroupsToFormDefinition(groups);
5672
- this.formDefinition.set(newFormDefinition);
5744
+ const nextDefinition = groups.length > 0 ? this.convertGroupsToFormDefinition(groups) : { groups: [] };
5745
+ if (!isEqual(this.formDefinition(), nextDefinition)) {
5746
+ this.formDefinition.set(nextDefinition);
5673
5747
  }
5674
5748
  }
5675
5749
  /**
@@ -5856,7 +5930,7 @@ class AXPMetaDataFormWidgetEditComponent extends AXPValueWidgetComponent {
5856
5930
  (validityChange)="onValidityChange($event)"
5857
5931
  >
5858
5932
  </axp-layout-renderer>
5859
- } @else {
5933
+ } @else if (!hideEmpty()) {
5860
5934
  <axp-state-message
5861
5935
  icon="fa-light fa-clipboard-list"
5862
5936
  [title]="'@data-management:metadata-definitions.components.meta-data-selector.empty-states.no-metadata-definitions.title'"
@@ -5879,7 +5953,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
5879
5953
  (validityChange)="onValidityChange($event)"
5880
5954
  >
5881
5955
  </axp-layout-renderer>
5882
- } @else {
5956
+ } @else if (!hideEmpty()) {
5883
5957
  <axp-state-message
5884
5958
  icon="fa-light fa-clipboard-list"
5885
5959
  [title]="'@data-management:metadata-definitions.components.meta-data-selector.empty-states.no-metadata-definitions.title'"
@@ -6126,6 +6200,7 @@ function fieldStateToItem(f, index) {
6126
6200
  description: f.description,
6127
6201
  interface: f.interface,
6128
6202
  configuration: f.configuration,
6203
+ appliesTo: f.appliesTo,
6129
6204
  status: f.status,
6130
6205
  isNewlyAdded: f.isNewlyAdded,
6131
6206
  };
@@ -6162,6 +6237,7 @@ function itemToFieldValue(it, idx) {
6162
6237
  ...(description !== undefined ? { description } : {}),
6163
6238
  interface: interfaceStr,
6164
6239
  configuration: it['configuration'],
6240
+ appliesTo: resolveMetaDataFieldAppliesTo(it),
6165
6241
  order: it.order ?? idx,
6166
6242
  };
6167
6243
  }
@@ -6221,6 +6297,8 @@ class AXPMetaDataBuilderGroupsComponent {
6221
6297
  ...(ngDevMode ? [{ debugName: "hideHeaderActions" }] : /* istanbul ignore next */ []));
6222
6298
  this.readonly = computed(() => this.options()['readonly'] === true, /* @ts-ignore */
6223
6299
  ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
6300
+ this.fieldAppliesToEnabled = computed(() => this.options()['fieldAppliesTo'] === true, /* @ts-ignore */
6301
+ ...(ngDevMode ? [{ debugName: "fieldAppliesToEnabled" }] : /* istanbul ignore next */ []));
6224
6302
  this.previewGroups = computed(() => {
6225
6303
  const meta = builderValueToMetaDataValue(this.builderValue());
6226
6304
  return meta.groups.map((group) => ({
@@ -6289,12 +6367,24 @@ class AXPMetaDataBuilderGroupsComponent {
6289
6367
  }
6290
6368
  mapItemToView(item) {
6291
6369
  const iface = String(item['interface'] ?? '');
6370
+ const badges = [
6371
+ { text: this.getWidgetTitle(iface), variant: 'neutral' },
6372
+ ];
6373
+ if (this.fieldAppliesToEnabled()) {
6374
+ const appliesTo = resolveMetaDataFieldAppliesTo(item);
6375
+ badges.push({
6376
+ text: appliesTo === 'folder'
6377
+ ? '@data-management:metadata-definitions.components.meta-data-selector.applies-to.badge-folder'
6378
+ : '@data-management:metadata-definitions.components.meta-data-selector.applies-to.badge-document',
6379
+ variant: appliesTo === 'folder' ? 'accent' : 'success',
6380
+ });
6381
+ }
6292
6382
  return {
6293
6383
  icon: 'fa-light fa-input-text',
6294
6384
  /** Fallback only; {@link AXPSectionItemsBuilderComponent} resolves raw ML on the item in the template. */
6295
6385
  title: '',
6296
6386
  name: String(item['name'] ?? ''),
6297
- badges: [{ text: this.getWidgetTitle(iface), variant: 'neutral' }],
6387
+ badges,
6298
6388
  };
6299
6389
  }
6300
6390
  parseInterfaceConfig(interfaceValue) {
@@ -6493,6 +6583,7 @@ class AXPMetaDataBuilderGroupsComponent {
6493
6583
  const seededWidget = {
6494
6584
  ...cloneDeep(currentWidget),
6495
6585
  name: String(item['name'] ?? ''),
6586
+ appliesTo: resolveMetaDataFieldAppliesTo(item),
6496
6587
  options: {
6497
6588
  ...(cloneDeep(currentWidget.options) ?? {}),
6498
6589
  label: labelSeed,
@@ -6532,11 +6623,15 @@ class AXPMetaDataBuilderGroupsComponent {
6532
6623
  const overriddenTitle = labelAfter !== undefined && labelAfter !== null && !isEffectivelyEmptyLocalizedValue(labelAfter)
6533
6624
  ? labelAfter
6534
6625
  : (item['title'] ?? '');
6626
+ const appliesTo = this.fieldAppliesToEnabled()
6627
+ ? resolveMetaDataFieldAppliesTo({ appliesTo: result.values?.appliesTo })
6628
+ : resolveMetaDataFieldAppliesTo(item);
6535
6629
  return {
6536
6630
  ...item,
6537
6631
  name: overriddenName,
6538
6632
  title: overriddenTitle,
6539
6633
  ...(descKeyPresent ? { description: descriptionAfter } : {}),
6634
+ ...(this.fieldAppliesToEnabled() ? { appliesTo } : {}),
6540
6635
  interface: JSON.stringify(updatedWidget),
6541
6636
  };
6542
6637
  }
@@ -6603,11 +6698,46 @@ class AXPMetaDataBuilderGroupsComponent {
6603
6698
  },
6604
6699
  visible: true,
6605
6700
  };
6606
- return [
6701
+ const overrides = [
6607
6702
  { property: nameProperty, tab: { name: 'general' }, group: basicGroup },
6608
6703
  { property: titleProperty, tab: { name: 'general' }, group: basicGroup },
6609
6704
  { property: descriptionProperty, tab: { name: 'general' }, group: basicGroup },
6610
6705
  ];
6706
+ if (!this.fieldAppliesToEnabled()) {
6707
+ return overrides;
6708
+ }
6709
+ const appliesToProperty = {
6710
+ name: 'fieldAppliesTo',
6711
+ title: '@data-management:metadata-definitions.components.meta-data-selector.applies-to.title',
6712
+ group: basicGroup,
6713
+ order: 3,
6714
+ schema: {
6715
+ dataType: 'string',
6716
+ defaultValue: 'document',
6717
+ interface: {
6718
+ name: 'appliesTo',
6719
+ path: 'appliesTo',
6720
+ type: AXPWidgetsCatalog.select,
6721
+ options: {
6722
+ valueField: 'id',
6723
+ textField: 'title',
6724
+ dataSource: [
6725
+ {
6726
+ id: 'document',
6727
+ title: '@data-management:metadata-definitions.components.meta-data-selector.applies-to.document',
6728
+ },
6729
+ {
6730
+ id: 'folder',
6731
+ title: '@data-management:metadata-definitions.components.meta-data-selector.applies-to.folder',
6732
+ },
6733
+ ],
6734
+ },
6735
+ },
6736
+ },
6737
+ visible: true,
6738
+ };
6739
+ overrides.push({ property: appliesToProperty, tab: { name: 'general' }, group: basicGroup });
6740
+ return overrides;
6611
6741
  }
6612
6742
  collectItemNames(value, excludeItemId) {
6613
6743
  const names = new Set();
@@ -6818,10 +6948,23 @@ const metaDataBuilderPlugin = {
6818
6948
  dataType: 'object',
6819
6949
  interface: {
6820
6950
  type: 'meta-data-builder-editor',
6951
+ options: {
6952
+ fieldAppliesTo: opts.fieldAppliesTo === true,
6953
+ },
6821
6954
  },
6822
6955
  },
6823
6956
  });
6824
6957
  }
6958
+ else if (opts.fieldAppliesTo === true) {
6959
+ const existing = props.find((p) => p.name === field);
6960
+ if (existing?.schema) {
6961
+ existing.schema.interface ??= { type: 'meta-data-builder-editor' };
6962
+ existing.schema.interface.options = {
6963
+ ...(existing.schema.interface.options ?? {}),
6964
+ fieldAppliesTo: true,
6965
+ };
6966
+ }
6967
+ }
6825
6968
  // Add builder to single/create/modify views only when section display is enabled
6826
6969
  const selectorColSpan = 12;
6827
6970
  if (showSection) {
@@ -8298,7 +8441,7 @@ class AXMDataManagementModule {
8298
8441
  useClass: AXMDataManagementWidgetsProvider,
8299
8442
  multi: true,
8300
8443
  },
8301
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-data-management-client-index-CMxKYDas.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
8444
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-data-management-client-index-C0e7q0jf.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
8302
8445
  ], imports: [AXPWidgetCoreModule,
8303
8446
  //
8304
8447
  AXMMetaDataFeatureModule,
@@ -8426,7 +8569,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
8426
8569
  useClass: AXMDataManagementWidgetsProvider,
8427
8570
  multi: true,
8428
8571
  },
8429
- provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-data-management-client-index-CMxKYDas.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
8572
+ provideLazyProvider(AXP_PAGE_COMPONENT_PROVIDER, () => import('./acorex-platform-module-data-management-client-index-C0e7q0jf.mjs').then((m) => m.AXMMetaDataBuilderPageComponentProvider)),
8430
8573
  ]
8431
8574
  }]
8432
8575
  }] });