@acorex-platform/module-data-management-client 0.0.53 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-module-data-management-client-contracts.mjs +43 -3
- package/fesm2022/acorex-platform-module-data-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-data-management-client-index-CMxKYDas.mjs → acorex-platform-module-data-management-client-index-C0e7q0jf.mjs} +9 -2
- package/fesm2022/acorex-platform-module-data-management-client-index-C0e7q0jf.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-data-management-client.mjs +157 -14
- package/fesm2022/acorex-platform-module-data-management-client.mjs.map +1 -1
- package/i18n/en-AU/data-management.json +689 -0
- package/i18n/en-US/data-management.json +689 -0
- package/i18n/fa-IR/data-management.json +693 -0
- package/package.json +1 -1
- package/types/acorex-platform-module-data-management-client-contracts.d.ts +21 -2
- package/types/acorex-platform-module-data-management-client.d.ts +17 -1
- package/fesm2022/acorex-platform-module-data-management-client-index-CMxKYDas.mjs.map +0 -1
|
@@ -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
|
|
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: "
|
|
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
|
-
|
|
5671
|
-
|
|
5672
|
-
this.formDefinition.set(
|
|
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
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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
|
}] });
|