@acorex/platform 21.0.0-beta.0 → 21.0.0-beta.10
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-auth.mjs +4 -0
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-G9XcXXOG.mjs → acorex-platform-common-common-settings.provider-Bi1RYif5.mjs} +58 -22
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +275 -130
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +106 -5
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +104 -13
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +224 -6
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +37 -2
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +1107 -72
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +7 -5
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +72 -6
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widgets.mjs +181 -158
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +65 -2
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default.mjs +121 -15
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs → acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs} +23 -24
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DK6R87Lf.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +2 -2
- package/fesm2022/acorex-platform-workflow.mjs +85 -4
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/package.json +2 -4
- package/types/acorex-platform-common.d.ts +105 -52
- package/types/acorex-platform-core.d.ts +26 -3
- package/types/acorex-platform-layout-builder.d.ts +26 -3
- package/types/acorex-platform-layout-components.d.ts +52 -1
- package/types/acorex-platform-layout-entity.d.ts +262 -8
- package/types/acorex-platform-layout-widget-core.d.ts +15 -0
- package/types/acorex-platform-layout-widgets.d.ts +33 -23
- package/types/acorex-platform-runtime.d.ts +6 -0
- package/types/acorex-platform-themes-default.d.ts +8 -0
- package/types/acorex-platform-workflow.d.ts +68 -2
- package/fesm2022/acorex-platform-common-common-settings.provider-G9XcXXOG.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +0 -1
|
@@ -16,7 +16,7 @@ import { AXPLayoutRendererComponent, AXPLayoutBuilderService, AXP_PREVIEW_WIDGET
|
|
|
16
16
|
import * as i1 from '@angular/common';
|
|
17
17
|
import { CommonModule, NgTemplateOutlet, isPlatformBrowser, AsyncPipe } from '@angular/common';
|
|
18
18
|
import * as i0 from '@angular/core';
|
|
19
|
-
import { input, ChangeDetectionStrategy, ViewEncapsulation, Component, inject, signal, effect, InjectionToken, computed, Injectable, Directive, viewChild, contentChild, ElementRef, output, afterNextRender, model, untracked, DestroyRef, PLATFORM_ID, linkedSignal, HostListener, ViewChildren, Input, EventEmitter, Output } from '@angular/core';
|
|
19
|
+
import { input, ChangeDetectionStrategy, ViewEncapsulation, Component, inject, signal, effect, InjectionToken, computed, Injectable, Directive, viewChild, contentChild, ElementRef, output, afterNextRender, model, untracked, DestroyRef, PLATFORM_ID, linkedSignal, HostListener, ViewChildren, Input, contentChildren, EventEmitter, Output } from '@angular/core';
|
|
20
20
|
import { AXAccordionCdkModule } from '@acorex/cdk/accordion';
|
|
21
21
|
import { AXTagModule } from '@acorex/components/tag';
|
|
22
22
|
import { SIGNAL, signalSetFn } from '@angular/core/primitives/signals';
|
|
@@ -3408,7 +3408,7 @@ class AXPQueryFiltersComponent {
|
|
|
3408
3408
|
}
|
|
3409
3409
|
}
|
|
3410
3410
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQueryFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3411
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQueryFiltersComponent, isStandalone: true, selector: "axp-query-filters", inputs: { filtersDefinitions: { classPropertyName: "filtersDefinitions", publicName: "filtersDefinitions", isSignal: true, isRequired: false, transformFunction: null }, initialFilters: { classPropertyName: "initialFilters", publicName: "initialFilters", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFiltersChanged: "onFiltersChanged" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "tagBox", first: true, predicate: ["tagBox"], descendants: true, isSignal: true }, { propertyName: "widgetRenderer", first: true, predicate: ["widgetRenderer"], descendants: true, isSignal: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "listItems", predicate: ["caseItem"], descendants: true }], ngImport: i0, template: "<div class=\"flex items-center gap-2 p-2\">\n <ax-button (keydown)=\"handleButtonKeyDown($event)\" (onClick)=\"popover.open()\" #filterButton [look]=\"'blank'\">\n <ax-icon class=\"far fa-bars-filter cursor-pointer\"> </ax-icon>\n </ax-button>\n <ax-tag-box\n #tagBoxComponent\n [ngModel]=\"asyncTags()\"\n (onValueChanged)=\"handleSelectFilters($event)\"\n [textField]=\"'query'\"\n [valueField]=\"'id'\"\n [readonly]=\"filtersDefinitions().length === 0\"\n [look]=\"'none'\"\n [readonlyField]=\"'readOnly'\"\n [tagTemplate]=\"tagTemplate\"\n (onKeyDown)=\"handleKeyDown($event)\"\n [addOnEnter]=\"false\"\n [placeholder]=\"\n (filtersDefinitions().length === 0\n ? '@general:terms.interface.filter.no-filter-definitions'\n : '@general:terms.interface.filter.placeholder'\n )\n | translate\n | async\n \"\n #tagBox\n >\n <ax-suffix class=\"hidden md:block\"><span class=\"text-gray-500\">Ctrl+F</span></ax-suffix>\n </ax-tag-box>\n\n <ng-template #tagTemplate let-item let-index=\"index\">\n <div\n class=\"inline-flex items-center gap-1.5 hover:bg-darkest cursor-pointer rounded-md px-3 py-1 text-sm surface\"\n [class.!bg-primary]=\"item.field === 'all'\"\n [class.!text-white]=\"item.field === 'all'\"\n (click)=\"handleTagClick(item)\"\n >\n <span>{{ item.query }}</span>\n @if (!item.readOnly) {\n <button (click)=\"handleRemoveTag($event, index)\" type=\"button\">\n <ax-icon class=\"icon icon-close\"></ax-icon>\n </button>\n }\n </div>\n </ng-template>\n</div>\n\n<ax-popover\n [offsetY]=\"activeFilter() ? -30 : 0\"\n [target]=\"tagBoxInput\"\n [openOn]=\"'toggle'\"\n (onOpened)=\"onPopoverOpened($event)\"\n [closeOn]=\"'clickOut'\"\n (onClosed)=\"handlePopoverClosed($event)\"\n [adaptivityEnabled]=\"true\"\n #popover\n>\n <div class=\"md:min-w-72 w-full rounded-md md:max-h-96 max-w-80 md:overflow-auto\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (activeFilter()) {\n <div class=\"flex flex-col lightest-surface shadow-md\" (keydown.enter)=\"onEnterKeyPressed($event)\">\n <ax-header class=\"border-b border-light px-4 py-2\">{{\n activeFilter()?.title! | translate | async\n }}</ax-header>\n <ax-content class=\"p-4\">\n <div class=\"mb-2\">\n <ax-badge [text]=\"(getActiveOperator(activeFilter())! | translate | async) || ''\"></ax-badge>\n </div>\n <ng-container\n #widgetRenderer=\"widgetRenderer\"\n axp-widget-renderer\n [node]=\"{\n type: activeFilter()?.widget?.type || 'text-editor',\n path: activeFilter()?.field,\n options: activeFilter()?.widget?.options,\n }\"\n [mode]=\"'edit'\"\n >\n </ng-container>\n </ax-content>\n <ax-footer class=\"border-t flex justify-end border-light w-full px-4 py-2\">\n <ax-button\n class=\"ax-xs\"\n [text]=\"'@general:actions.apply.title' | translate | async\"\n (onClick)=\"handleApplyFilter()\"\n ></ax-button>\n </ax-footer>\n </div>\n } @else {\n <div axListNavigation #list=\"axListNavigation\" class=\"axp-list-items\">\n <!-- @if (tagBox.inputValue()) {\n @for (inlineFilter of inlineFilters(); track inlineFilter.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive()\"\n tabindex=\"0\"\n (click)=\"handleSelectInlineFilter(inlineFilter)\"\n (keydown)=\"handleInlineFilterKeyDown($event, inlineFilter)\"\n >\n {{ inlineFilter.title | translate | async }} {{ getActiveOperator(inlineFilter) }} '{{\n tagBox.inputValue()\n }}'\n </div>\n }\n <span class=\"w-full border-t border-light my-1\"></span>\n } -->\n @for (field of filterFields(); track field.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive() && !isFilterDisabled(field)\"\n [class.axp-query-filters__advance-item--disabled]=\"isFilterDisabled(field)\"\n [attr.aria-disabled]=\"isFilterDisabled(field) ? 'true' : null\"\n [attr.tabindex]=\"isFilterDisabled(field) ? -1 : 0\"\n (click)=\"handleSelectField(field)\"\n (keydown)=\"handleFieldKeyDown($event, field)\"\n >\n <div class=\"flex items-end gap-2\">\n <ax-icon class=\"w-5\" [class]=\"'fa-light ' + field.icon\"> </ax-icon>\n {{ field.title | translate | async }}\n </div>\n </div>\n }\n </div>\n }\n </axp-widgets-container>\n </div>\n</ax-popover>\n", styles: ["@layer properties;axp-query-filters{width:100%}.axp-list-items{display:flex;min-width:calc(var(--spacing, .25rem) * 40);flex-direction:column;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-block:calc(var(--spacing, .25rem) * 4);--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)}.axp-list-items>div{min-width:calc(var(--spacing, .25rem) * 28);cursor:pointer;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start}.axp-list-items>div:focus{outline:none}.axp-list-items>div.axp-state-focused,.axp-list-items>div:hover{background-color:var(--color-surface);color:var(--color-on-surface);border-color:var(--color-border-surface)}.axp-list-items>div.axp-query-filters__advance-item--disabled{cursor:not-allowed;opacity:50%}.axp-list-items>div.axp-query-filters__advance-item--disabled.axp-state-focused,.axp-list-items>div.axp-query-filters__advance-item--disabled:hover{background-color:transparent}@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;}@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}}}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "ngmodule", type: AXTagBoxModule }, { kind: "component", type: i5$2.AXTagBoxComponent, selector: "ax-tag-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "allowNull", "type", "look", "addOnComma", "addOnEnter", "valueField", "textField", "readonlyField", "allowDuplicateValues", "tagTemplate"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onTagClick", "onTagDblClick", "onTagContextMenu"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i3$2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i7.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i7.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3411
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQueryFiltersComponent, isStandalone: true, selector: "axp-query-filters", inputs: { filtersDefinitions: { classPropertyName: "filtersDefinitions", publicName: "filtersDefinitions", isSignal: true, isRequired: false, transformFunction: null }, initialFilters: { classPropertyName: "initialFilters", publicName: "initialFilters", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onFiltersChanged: "onFiltersChanged" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "tagBox", first: true, predicate: ["tagBox"], descendants: true, isSignal: true }, { propertyName: "widgetRenderer", first: true, predicate: ["widgetRenderer"], descendants: true, isSignal: true }, { propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "listItems", predicate: ["caseItem"], descendants: true }], ngImport: i0, template: "<div class=\"flex items-center gap-2 p-2\">\n <ax-button (keydown)=\"handleButtonKeyDown($event)\" (onClick)=\"popover.open()\" #filterButton [look]=\"'blank'\">\n <ax-icon class=\"far fa-bars-filter cursor-pointer\"> </ax-icon>\n </ax-button>\n <ax-tag-box\n #tagBoxComponent\n [ngModel]=\"asyncTags()\"\n (onValueChanged)=\"handleSelectFilters($event)\"\n [textField]=\"'query'\"\n [valueField]=\"'id'\"\n [readonly]=\"filtersDefinitions().length === 0\"\n [look]=\"'none'\"\n [readonlyField]=\"'readOnly'\"\n [tagTemplate]=\"tagTemplate\"\n (onKeyDown)=\"handleKeyDown($event)\"\n [addOnEnter]=\"false\"\n [placeholder]=\"\n (filtersDefinitions().length === 0\n ? '@general:terms.interface.filter.no-filter-definitions'\n : '@general:terms.interface.filter.placeholder'\n )\n | translate\n | async\n \"\n #tagBox\n >\n <ax-suffix class=\"hidden md:block\"><span class=\"text-gray-500\">Ctrl+F</span></ax-suffix>\n </ax-tag-box>\n\n <ng-template #tagTemplate let-item let-index=\"index\">\n <div\n class=\"inline-flex items-center gap-1.5 hover:bg-darkest cursor-pointer rounded-md px-3 py-1 text-sm surface\"\n [class.!bg-primary]=\"item.field === 'all'\"\n [class.!text-white]=\"item.field === 'all'\"\n (click)=\"handleTagClick(item)\"\n >\n <span>{{ item.query }}</span>\n @if (!item.readOnly) {\n <button (click)=\"handleRemoveTag($event, index)\" type=\"button\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n }\n </div>\n </ng-template>\n</div>\n\n<ax-popover\n [offsetY]=\"activeFilter() ? -30 : 0\"\n [target]=\"tagBoxInput\"\n [openOn]=\"'toggle'\"\n (onOpened)=\"onPopoverOpened($event)\"\n [closeOn]=\"'clickOut'\"\n (onClosed)=\"handlePopoverClosed($event)\"\n [adaptivityEnabled]=\"true\"\n #popover\n>\n <div class=\"md:min-w-72 w-full rounded-md md:max-h-96 max-w-80 md:overflow-auto\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (activeFilter()) {\n <div class=\"flex flex-col lightest-surface shadow-md\" (keydown.enter)=\"onEnterKeyPressed($event)\">\n <ax-header class=\"border-b border-light px-4 py-2\">{{\n activeFilter()?.title! | translate | async\n }}</ax-header>\n <ax-content class=\"p-4\">\n <div class=\"mb-2\">\n <ax-badge [text]=\"(getActiveOperator(activeFilter())! | translate | async) || ''\"></ax-badge>\n </div>\n <ng-container\n #widgetRenderer=\"widgetRenderer\"\n axp-widget-renderer\n [node]=\"{\n type: activeFilter()?.widget?.type || 'text-editor',\n path: activeFilter()?.field,\n options: activeFilter()?.widget?.options,\n }\"\n [mode]=\"'edit'\"\n >\n </ng-container>\n </ax-content>\n <ax-footer class=\"border-t flex justify-end border-light w-full px-4 py-2\">\n <ax-button\n class=\"ax-xs\"\n [text]=\"'@general:actions.apply.title' | translate | async\"\n (onClick)=\"handleApplyFilter()\"\n ></ax-button>\n </ax-footer>\n </div>\n } @else {\n <div axListNavigation #list=\"axListNavigation\" class=\"axp-list-items\">\n <!-- @if (tagBox.inputValue()) {\n @for (inlineFilter of inlineFilters(); track inlineFilter.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive()\"\n tabindex=\"0\"\n (click)=\"handleSelectInlineFilter(inlineFilter)\"\n (keydown)=\"handleInlineFilterKeyDown($event, inlineFilter)\"\n >\n {{ inlineFilter.title | translate | async }} {{ getActiveOperator(inlineFilter) }} '{{\n tagBox.inputValue()\n }}'\n </div>\n }\n <span class=\"w-full border-t border-light my-1\"></span>\n } -->\n @for (field of filterFields(); track field.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive() && !isFilterDisabled(field)\"\n [class.axp-query-filters__advance-item--disabled]=\"isFilterDisabled(field)\"\n [attr.aria-disabled]=\"isFilterDisabled(field) ? 'true' : null\"\n [attr.tabindex]=\"isFilterDisabled(field) ? -1 : 0\"\n (click)=\"handleSelectField(field)\"\n (keydown)=\"handleFieldKeyDown($event, field)\"\n >\n <div class=\"flex items-end gap-2\">\n <ax-icon class=\"w-5\" [class]=\"'fa-light ' + field.icon\"> </ax-icon>\n {{ field.title | translate | async }}\n </div>\n </div>\n }\n </div>\n }\n </axp-widgets-container>\n </div>\n</ax-popover>\n", styles: ["@layer properties;axp-query-filters{width:100%}.axp-list-items{display:flex;min-width:calc(var(--spacing, .25rem) * 40);flex-direction:column;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-block:calc(var(--spacing, .25rem) * 4);--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)}.axp-list-items>div{min-width:calc(var(--spacing, .25rem) * 28);cursor:pointer;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start}.axp-list-items>div:focus{outline:none}.axp-list-items>div.axp-state-focused,.axp-list-items>div:hover{background-color:var(--color-surface);color:var(--color-on-surface);border-color:var(--color-border-surface)}.axp-list-items>div.axp-query-filters__advance-item--disabled{cursor:not-allowed;opacity:50%}.axp-list-items>div.axp-query-filters__advance-item--disabled.axp-state-focused,.axp-list-items>div.axp-query-filters__advance-item--disabled:hover{background-color:transparent}@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;}@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}}}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i2$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "ngmodule", type: AXTagBoxModule }, { kind: "component", type: i5$2.AXTagBoxComponent, selector: "ax-tag-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "allowNull", "type", "look", "addOnComma", "addOnEnter", "valueField", "textField", "readonlyField", "allowDuplicateValues", "tagTemplate"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onTagClick", "onTagDblClick", "onTagContextMenu"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i3$2.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i3$2.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXListNavigationModule }, { kind: "directive", type: i7.AXListNavigationDirective, selector: "[axListNavigation]", inputs: ["orientation"], outputs: ["onNavigationChanged", "onKeypress"], exportAs: ["axListNavigation"] }, { kind: "directive", type: i7.AXListNavigationItemDirective, selector: "[axListNavigationItem]", outputs: ["onKeypress"], exportAs: ["axListNavigationItem"] }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "component", type: i1$2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3412
3412
|
}
|
|
3413
3413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQueryFiltersComponent, decorators: [{
|
|
3414
3414
|
type: Component,
|
|
@@ -3424,7 +3424,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
3424
3424
|
AXPWidgetCoreModule,
|
|
3425
3425
|
AXListNavigationModule,
|
|
3426
3426
|
AXBadgeModule,
|
|
3427
|
-
], template: "<div class=\"flex items-center gap-2 p-2\">\n <ax-button (keydown)=\"handleButtonKeyDown($event)\" (onClick)=\"popover.open()\" #filterButton [look]=\"'blank'\">\n <ax-icon class=\"far fa-bars-filter cursor-pointer\"> </ax-icon>\n </ax-button>\n <ax-tag-box\n #tagBoxComponent\n [ngModel]=\"asyncTags()\"\n (onValueChanged)=\"handleSelectFilters($event)\"\n [textField]=\"'query'\"\n [valueField]=\"'id'\"\n [readonly]=\"filtersDefinitions().length === 0\"\n [look]=\"'none'\"\n [readonlyField]=\"'readOnly'\"\n [tagTemplate]=\"tagTemplate\"\n (onKeyDown)=\"handleKeyDown($event)\"\n [addOnEnter]=\"false\"\n [placeholder]=\"\n (filtersDefinitions().length === 0\n ? '@general:terms.interface.filter.no-filter-definitions'\n : '@general:terms.interface.filter.placeholder'\n )\n | translate\n | async\n \"\n #tagBox\n >\n <ax-suffix class=\"hidden md:block\"><span class=\"text-gray-500\">Ctrl+F</span></ax-suffix>\n </ax-tag-box>\n\n <ng-template #tagTemplate let-item let-index=\"index\">\n <div\n class=\"inline-flex items-center gap-1.5 hover:bg-darkest cursor-pointer rounded-md px-3 py-1 text-sm surface\"\n [class.!bg-primary]=\"item.field === 'all'\"\n [class.!text-white]=\"item.field === 'all'\"\n (click)=\"handleTagClick(item)\"\n >\n <span>{{ item.query }}</span>\n @if (!item.readOnly) {\n <button (click)=\"handleRemoveTag($event, index)\" type=\"button\">\n <ax-icon class=\"icon icon-close\"></ax-icon>\n </button>\n }\n </div>\n </ng-template>\n</div>\n\n<ax-popover\n [offsetY]=\"activeFilter() ? -30 : 0\"\n [target]=\"tagBoxInput\"\n [openOn]=\"'toggle'\"\n (onOpened)=\"onPopoverOpened($event)\"\n [closeOn]=\"'clickOut'\"\n (onClosed)=\"handlePopoverClosed($event)\"\n [adaptivityEnabled]=\"true\"\n #popover\n>\n <div class=\"md:min-w-72 w-full rounded-md md:max-h-96 max-w-80 md:overflow-auto\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (activeFilter()) {\n <div class=\"flex flex-col lightest-surface shadow-md\" (keydown.enter)=\"onEnterKeyPressed($event)\">\n <ax-header class=\"border-b border-light px-4 py-2\">{{\n activeFilter()?.title! | translate | async\n }}</ax-header>\n <ax-content class=\"p-4\">\n <div class=\"mb-2\">\n <ax-badge [text]=\"(getActiveOperator(activeFilter())! | translate | async) || ''\"></ax-badge>\n </div>\n <ng-container\n #widgetRenderer=\"widgetRenderer\"\n axp-widget-renderer\n [node]=\"{\n type: activeFilter()?.widget?.type || 'text-editor',\n path: activeFilter()?.field,\n options: activeFilter()?.widget?.options,\n }\"\n [mode]=\"'edit'\"\n >\n </ng-container>\n </ax-content>\n <ax-footer class=\"border-t flex justify-end border-light w-full px-4 py-2\">\n <ax-button\n class=\"ax-xs\"\n [text]=\"'@general:actions.apply.title' | translate | async\"\n (onClick)=\"handleApplyFilter()\"\n ></ax-button>\n </ax-footer>\n </div>\n } @else {\n <div axListNavigation #list=\"axListNavigation\" class=\"axp-list-items\">\n <!-- @if (tagBox.inputValue()) {\n @for (inlineFilter of inlineFilters(); track inlineFilter.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive()\"\n tabindex=\"0\"\n (click)=\"handleSelectInlineFilter(inlineFilter)\"\n (keydown)=\"handleInlineFilterKeyDown($event, inlineFilter)\"\n >\n {{ inlineFilter.title | translate | async }} {{ getActiveOperator(inlineFilter) }} '{{\n tagBox.inputValue()\n }}'\n </div>\n }\n <span class=\"w-full border-t border-light my-1\"></span>\n } -->\n @for (field of filterFields(); track field.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive() && !isFilterDisabled(field)\"\n [class.axp-query-filters__advance-item--disabled]=\"isFilterDisabled(field)\"\n [attr.aria-disabled]=\"isFilterDisabled(field) ? 'true' : null\"\n [attr.tabindex]=\"isFilterDisabled(field) ? -1 : 0\"\n (click)=\"handleSelectField(field)\"\n (keydown)=\"handleFieldKeyDown($event, field)\"\n >\n <div class=\"flex items-end gap-2\">\n <ax-icon class=\"w-5\" [class]=\"'fa-light ' + field.icon\"> </ax-icon>\n {{ field.title | translate | async }}\n </div>\n </div>\n }\n </div>\n }\n </axp-widgets-container>\n </div>\n</ax-popover>\n", styles: ["@layer properties;axp-query-filters{width:100%}.axp-list-items{display:flex;min-width:calc(var(--spacing, .25rem) * 40);flex-direction:column;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-block:calc(var(--spacing, .25rem) * 4);--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)}.axp-list-items>div{min-width:calc(var(--spacing, .25rem) * 28);cursor:pointer;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start}.axp-list-items>div:focus{outline:none}.axp-list-items>div.axp-state-focused,.axp-list-items>div:hover{background-color:var(--color-surface);color:var(--color-on-surface);border-color:var(--color-border-surface)}.axp-list-items>div.axp-query-filters__advance-item--disabled{cursor:not-allowed;opacity:50%}.axp-list-items>div.axp-query-filters__advance-item--disabled.axp-state-focused,.axp-list-items>div.axp-query-filters__advance-item--disabled:hover{background-color:transparent}@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;}@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}}}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"] }]
|
|
3427
|
+
], template: "<div class=\"flex items-center gap-2 p-2\">\n <ax-button (keydown)=\"handleButtonKeyDown($event)\" (onClick)=\"popover.open()\" #filterButton [look]=\"'blank'\">\n <ax-icon class=\"far fa-bars-filter cursor-pointer\"> </ax-icon>\n </ax-button>\n <ax-tag-box\n #tagBoxComponent\n [ngModel]=\"asyncTags()\"\n (onValueChanged)=\"handleSelectFilters($event)\"\n [textField]=\"'query'\"\n [valueField]=\"'id'\"\n [readonly]=\"filtersDefinitions().length === 0\"\n [look]=\"'none'\"\n [readonlyField]=\"'readOnly'\"\n [tagTemplate]=\"tagTemplate\"\n (onKeyDown)=\"handleKeyDown($event)\"\n [addOnEnter]=\"false\"\n [placeholder]=\"\n (filtersDefinitions().length === 0\n ? '@general:terms.interface.filter.no-filter-definitions'\n : '@general:terms.interface.filter.placeholder'\n )\n | translate\n | async\n \"\n #tagBox\n >\n <ax-suffix class=\"hidden md:block\"><span class=\"text-gray-500\">Ctrl+F</span></ax-suffix>\n </ax-tag-box>\n\n <ng-template #tagTemplate let-item let-index=\"index\">\n <div\n class=\"inline-flex items-center gap-1.5 hover:bg-darkest cursor-pointer rounded-md px-3 py-1 text-sm surface\"\n [class.!bg-primary]=\"item.field === 'all'\"\n [class.!text-white]=\"item.field === 'all'\"\n (click)=\"handleTagClick(item)\"\n >\n <span>{{ item.query }}</span>\n @if (!item.readOnly) {\n <button (click)=\"handleRemoveTag($event, index)\" type=\"button\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n }\n </div>\n </ng-template>\n</div>\n\n<ax-popover\n [offsetY]=\"activeFilter() ? -30 : 0\"\n [target]=\"tagBoxInput\"\n [openOn]=\"'toggle'\"\n (onOpened)=\"onPopoverOpened($event)\"\n [closeOn]=\"'clickOut'\"\n (onClosed)=\"handlePopoverClosed($event)\"\n [adaptivityEnabled]=\"true\"\n #popover\n>\n <div class=\"md:min-w-72 w-full rounded-md md:max-h-96 max-w-80 md:overflow-auto\">\n <axp-widgets-container [context]=\"context()\" (onContextChanged)=\"onContextChanged($event)\">\n @if (activeFilter()) {\n <div class=\"flex flex-col lightest-surface shadow-md\" (keydown.enter)=\"onEnterKeyPressed($event)\">\n <ax-header class=\"border-b border-light px-4 py-2\">{{\n activeFilter()?.title! | translate | async\n }}</ax-header>\n <ax-content class=\"p-4\">\n <div class=\"mb-2\">\n <ax-badge [text]=\"(getActiveOperator(activeFilter())! | translate | async) || ''\"></ax-badge>\n </div>\n <ng-container\n #widgetRenderer=\"widgetRenderer\"\n axp-widget-renderer\n [node]=\"{\n type: activeFilter()?.widget?.type || 'text-editor',\n path: activeFilter()?.field,\n options: activeFilter()?.widget?.options,\n }\"\n [mode]=\"'edit'\"\n >\n </ng-container>\n </ax-content>\n <ax-footer class=\"border-t flex justify-end border-light w-full px-4 py-2\">\n <ax-button\n class=\"ax-xs\"\n [text]=\"'@general:actions.apply.title' | translate | async\"\n (onClick)=\"handleApplyFilter()\"\n ></ax-button>\n </ax-footer>\n </div>\n } @else {\n <div axListNavigation #list=\"axListNavigation\" class=\"axp-list-items\">\n <!-- @if (tagBox.inputValue()) {\n @for (inlineFilter of inlineFilters(); track inlineFilter.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive()\"\n tabindex=\"0\"\n (click)=\"handleSelectInlineFilter(inlineFilter)\"\n (keydown)=\"handleInlineFilterKeyDown($event, inlineFilter)\"\n >\n {{ inlineFilter.title | translate | async }} {{ getActiveOperator(inlineFilter) }} '{{\n tagBox.inputValue()\n }}'\n </div>\n }\n <span class=\"w-full border-t border-light my-1\"></span>\n } -->\n @for (field of filterFields(); track field.field) {\n <div\n axListNavigationItem\n #caseItem=\"axListNavigationItem\"\n [class.axp-state-focused]=\"caseItem.isActive() && !isFilterDisabled(field)\"\n [class.axp-query-filters__advance-item--disabled]=\"isFilterDisabled(field)\"\n [attr.aria-disabled]=\"isFilterDisabled(field) ? 'true' : null\"\n [attr.tabindex]=\"isFilterDisabled(field) ? -1 : 0\"\n (click)=\"handleSelectField(field)\"\n (keydown)=\"handleFieldKeyDown($event, field)\"\n >\n <div class=\"flex items-end gap-2\">\n <ax-icon class=\"w-5\" [class]=\"'fa-light ' + field.icon\"> </ax-icon>\n {{ field.title | translate | async }}\n </div>\n </div>\n }\n </div>\n }\n </axp-widgets-container>\n </div>\n</ax-popover>\n", styles: ["@layer properties;axp-query-filters{width:100%}.axp-list-items{display:flex;min-width:calc(var(--spacing, .25rem) * 40);flex-direction:column;border-radius:var(--radius-md, .375rem);border-style:var(--tw-border-style);border-width:1px;background-color:var(--color-lightest);color:var(--color-on-lightest);border-color:var(--color-border-lightest);padding-block:calc(var(--spacing, .25rem) * 4);--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)}.axp-list-items>div{min-width:calc(var(--spacing, .25rem) * 28);cursor:pointer;padding-inline:calc(var(--spacing, .25rem) * 4);padding-block:calc(var(--spacing, .25rem) * 2);text-align:start}.axp-list-items>div:focus{outline:none}.axp-list-items>div.axp-state-focused,.axp-list-items>div:hover{background-color:var(--color-surface);color:var(--color-on-surface);border-color:var(--color-border-surface)}.axp-list-items>div.axp-query-filters__advance-item--disabled{cursor:not-allowed;opacity:50%}.axp-list-items>div.axp-query-filters__advance-item--disabled.axp-state-focused,.axp-list-items>div.axp-query-filters__advance-item--disabled:hover{background-color:transparent}@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;}@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}}}\n/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */\n"] }]
|
|
3428
3428
|
}], propDecorators: { filtersDefinitions: [{ type: i0.Input, args: [{ isSignal: true, alias: "filtersDefinitions", required: false }] }], initialFilters: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialFilters", required: false }] }], onFiltersChanged: [{ type: i0.Output, args: ["onFiltersChanged"] }], tagBox: [{ type: i0.ViewChild, args: ['tagBox', { isSignal: true }] }], widgetRenderer: [{ type: i0.ViewChild, args: ['widgetRenderer', { isSignal: true }] }], listItems: [{
|
|
3429
3429
|
type: ViewChildren,
|
|
3430
3430
|
args: ['caseItem']
|
|
@@ -3734,6 +3734,224 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
3734
3734
|
type: Input
|
|
3735
3735
|
}] } });
|
|
3736
3736
|
|
|
3737
|
+
//#endregion
|
|
3738
|
+
//#region ---- Template Directives ----
|
|
3739
|
+
class AXPMarkdownTemplateDirective {
|
|
3740
|
+
constructor(template) {
|
|
3741
|
+
this.template = template;
|
|
3742
|
+
/** Indicates which segment type this template customizes. */
|
|
3743
|
+
this.type = input.required({ ...(ngDevMode ? { debugName: "type" } : /* istanbul ignore next */ {}), alias: 'axpMarkdownTemplate' });
|
|
3744
|
+
}
|
|
3745
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMarkdownTemplateDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3746
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.9", type: AXPMarkdownTemplateDirective, isStandalone: true, selector: "ng-template[axpMarkdownTemplate]", inputs: { type: { classPropertyName: "type", publicName: "axpMarkdownTemplate", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
|
|
3747
|
+
}
|
|
3748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMarkdownTemplateDirective, decorators: [{
|
|
3749
|
+
type: Directive,
|
|
3750
|
+
args: [{
|
|
3751
|
+
selector: 'ng-template[axpMarkdownTemplate]',
|
|
3752
|
+
}]
|
|
3753
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "axpMarkdownTemplate", required: true }] }] } });
|
|
3754
|
+
//#endregion
|
|
3755
|
+
//#region ---- Component ----
|
|
3756
|
+
class AXPMarkdownViewerComponent {
|
|
3757
|
+
//#endregion
|
|
3758
|
+
//#region ---- Parsing ----
|
|
3759
|
+
constructor() {
|
|
3760
|
+
//#region ---- Inputs ----
|
|
3761
|
+
/** Raw markdown content to render. */
|
|
3762
|
+
this.markdown = input('', ...(ngDevMode ? [{ debugName: "markdown" }] : /* istanbul ignore next */ []));
|
|
3763
|
+
//#endregion
|
|
3764
|
+
//#region ---- Template Slots ----
|
|
3765
|
+
/** Optional templates for overriding markdown and code segments. */
|
|
3766
|
+
this.templates = contentChildren(AXPMarkdownTemplateDirective, ...(ngDevMode ? [{ debugName: "templates" }] : /* istanbul ignore next */ []));
|
|
3767
|
+
this.markdownTemplate = computed(() => this.templates().find((item) => item.type() === 'markdown')?.template, ...(ngDevMode ? [{ debugName: "markdownTemplate" }] : /* istanbul ignore next */ []));
|
|
3768
|
+
this.codeTemplate = computed(() => this.templates().find((item) => item.type() === 'code')?.template, ...(ngDevMode ? [{ debugName: "codeTemplate" }] : /* istanbul ignore next */ []));
|
|
3769
|
+
//#endregion
|
|
3770
|
+
//#region ---- View Model ----
|
|
3771
|
+
this.segments = computed(() => this.parseMarkdown(this.markdown() ?? ''), ...(ngDevMode ? [{ debugName: "segments" }] : /* istanbul ignore next */ []));
|
|
3772
|
+
this.markdownCompiler = signal(null, ...(ngDevMode ? [{ debugName: "markdownCompiler" }] : /* istanbul ignore next */ []));
|
|
3773
|
+
effect(() => {
|
|
3774
|
+
const value = this.markdown();
|
|
3775
|
+
if (value.trim() && !this.markdownCompiler()) {
|
|
3776
|
+
void this.loadMicromarkCompiler();
|
|
3777
|
+
}
|
|
3778
|
+
});
|
|
3779
|
+
}
|
|
3780
|
+
/**
|
|
3781
|
+
* Splits markdown into text/code segments, compiles markdown text to HTML with micromark,
|
|
3782
|
+
* and keeps fenced code blocks available for custom Angular rendering.
|
|
3783
|
+
*/
|
|
3784
|
+
parseMarkdown(markdown) {
|
|
3785
|
+
if (!markdown.trim()) {
|
|
3786
|
+
return [];
|
|
3787
|
+
}
|
|
3788
|
+
const lines = markdown.replaceAll('\r\n', '\n').split('\n');
|
|
3789
|
+
const segments = [];
|
|
3790
|
+
const markdownBuffer = [];
|
|
3791
|
+
let fenceMarker = null;
|
|
3792
|
+
let fenceLength = 0;
|
|
3793
|
+
let fenceLanguage = '';
|
|
3794
|
+
let fenceBody = [];
|
|
3795
|
+
const flushMarkdownBuffer = () => {
|
|
3796
|
+
if (!markdownBuffer.length) {
|
|
3797
|
+
return;
|
|
3798
|
+
}
|
|
3799
|
+
this.addMarkdownSegment(segments, markdownBuffer.join('\n'));
|
|
3800
|
+
markdownBuffer.length = 0;
|
|
3801
|
+
};
|
|
3802
|
+
for (const line of lines) {
|
|
3803
|
+
if (!fenceMarker) {
|
|
3804
|
+
const fenceStart = line.match(/^([`~]{3,})(.*)$/);
|
|
3805
|
+
if (!fenceStart) {
|
|
3806
|
+
markdownBuffer.push(line);
|
|
3807
|
+
continue;
|
|
3808
|
+
}
|
|
3809
|
+
const marker = fenceStart[1][0];
|
|
3810
|
+
if (marker !== '`' && marker !== '~') {
|
|
3811
|
+
markdownBuffer.push(line);
|
|
3812
|
+
continue;
|
|
3813
|
+
}
|
|
3814
|
+
flushMarkdownBuffer();
|
|
3815
|
+
fenceMarker = marker;
|
|
3816
|
+
fenceLength = fenceStart[1].length;
|
|
3817
|
+
fenceLanguage = fenceStart[2].trim().split(/\s+/)[0] ?? '';
|
|
3818
|
+
fenceBody = [];
|
|
3819
|
+
continue;
|
|
3820
|
+
}
|
|
3821
|
+
const fenceEndPattern = new RegExp(`^${fenceMarker}{${fenceLength},}\\s*$`);
|
|
3822
|
+
if (fenceEndPattern.test(line)) {
|
|
3823
|
+
segments.push({
|
|
3824
|
+
type: 'code',
|
|
3825
|
+
language: fenceLanguage,
|
|
3826
|
+
code: fenceBody.join('\n'),
|
|
3827
|
+
});
|
|
3828
|
+
fenceMarker = null;
|
|
3829
|
+
fenceLength = 0;
|
|
3830
|
+
fenceLanguage = '';
|
|
3831
|
+
fenceBody = [];
|
|
3832
|
+
continue;
|
|
3833
|
+
}
|
|
3834
|
+
fenceBody.push(line);
|
|
3835
|
+
}
|
|
3836
|
+
if (fenceMarker) {
|
|
3837
|
+
// Unclosed fence is treated as markdown to avoid content loss.
|
|
3838
|
+
markdownBuffer.push(`${fenceMarker.repeat(fenceLength)}${fenceLanguage ? ` ${fenceLanguage}` : ''}`);
|
|
3839
|
+
markdownBuffer.push(...fenceBody);
|
|
3840
|
+
}
|
|
3841
|
+
flushMarkdownBuffer();
|
|
3842
|
+
return segments;
|
|
3843
|
+
}
|
|
3844
|
+
addMarkdownSegment(segments, value) {
|
|
3845
|
+
if (!value.trim()) {
|
|
3846
|
+
return;
|
|
3847
|
+
}
|
|
3848
|
+
const compiler = this.markdownCompiler();
|
|
3849
|
+
segments.push({
|
|
3850
|
+
type: 'markdown',
|
|
3851
|
+
html: compiler ? compiler(value) : this.escapeHtml(value),
|
|
3852
|
+
});
|
|
3853
|
+
}
|
|
3854
|
+
async loadMicromarkCompiler() {
|
|
3855
|
+
if (this.markdownCompiler()) {
|
|
3856
|
+
return;
|
|
3857
|
+
}
|
|
3858
|
+
const [micromarkModule, gfmModule] = await this.loadMicromarkModules();
|
|
3859
|
+
const compiler = (value) => micromarkModule.micromark(value, {
|
|
3860
|
+
extensions: [gfmModule.gfm()],
|
|
3861
|
+
htmlExtensions: [gfmModule.gfmHtml()],
|
|
3862
|
+
});
|
|
3863
|
+
this.markdownCompiler.set(compiler);
|
|
3864
|
+
}
|
|
3865
|
+
async loadMicromarkModules() {
|
|
3866
|
+
const localMicromarkPath = 'micromark';
|
|
3867
|
+
const localGfmPath = 'micromark-extension-gfm';
|
|
3868
|
+
try {
|
|
3869
|
+
const [micromarkModule, gfmModule] = await Promise.all([
|
|
3870
|
+
this.importModule(localMicromarkPath),
|
|
3871
|
+
this.importModule(localGfmPath),
|
|
3872
|
+
]);
|
|
3873
|
+
return [micromarkModule, gfmModule];
|
|
3874
|
+
}
|
|
3875
|
+
catch {
|
|
3876
|
+
const [micromarkModule, gfmModule] = await Promise.all([
|
|
3877
|
+
this.importModule('https://esm.sh/micromark@4'),
|
|
3878
|
+
this.importModule('https://esm.sh/micromark-extension-gfm@3'),
|
|
3879
|
+
]);
|
|
3880
|
+
return [micromarkModule, gfmModule];
|
|
3881
|
+
}
|
|
3882
|
+
}
|
|
3883
|
+
async importModule(path) {
|
|
3884
|
+
return (await import(/* @vite-ignore */ path));
|
|
3885
|
+
}
|
|
3886
|
+
escapeHtml(value) {
|
|
3887
|
+
return value
|
|
3888
|
+
.replaceAll('&', '&')
|
|
3889
|
+
.replaceAll('<', '<')
|
|
3890
|
+
.replaceAll('>', '>')
|
|
3891
|
+
.replaceAll('"', '"')
|
|
3892
|
+
.replaceAll("'", ''')
|
|
3893
|
+
.replaceAll('\n', '<br>');
|
|
3894
|
+
}
|
|
3895
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMarkdownViewerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3896
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPMarkdownViewerComponent, isStandalone: true, selector: "axp-markdown-viewer", inputs: { markdown: { classPropertyName: "markdown", publicName: "markdown", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "templates", predicate: AXPMarkdownTemplateDirective, isSignal: true }], ngImport: i0, template: `
|
|
3897
|
+
<section class="axp-markdown-viewer">
|
|
3898
|
+
@for (segment of segments(); track $index) {
|
|
3899
|
+
@if (segment.type === 'code') {
|
|
3900
|
+
@if (codeTemplate(); as template) {
|
|
3901
|
+
<ng-container
|
|
3902
|
+
[ngTemplateOutlet]="template"
|
|
3903
|
+
[ngTemplateOutletContext]="{ $implicit: segment, segment: segment }"
|
|
3904
|
+
>
|
|
3905
|
+
</ng-container>
|
|
3906
|
+
} @else {
|
|
3907
|
+
<pre class="axp-markdown-viewer__code"><code>{{ segment.code }}</code></pre>
|
|
3908
|
+
}
|
|
3909
|
+
} @else {
|
|
3910
|
+
@if (markdownTemplate(); as template) {
|
|
3911
|
+
<ng-container
|
|
3912
|
+
[ngTemplateOutlet]="template"
|
|
3913
|
+
[ngTemplateOutletContext]="{ $implicit: segment, segment: segment }"
|
|
3914
|
+
>
|
|
3915
|
+
</ng-container>
|
|
3916
|
+
} @else {
|
|
3917
|
+
<div class="axp-markdown-viewer__content" [innerHTML]="segment.html"></div>
|
|
3918
|
+
}
|
|
3919
|
+
}
|
|
3920
|
+
}
|
|
3921
|
+
</section>
|
|
3922
|
+
`, isInline: true, styles: [".axp-markdown-viewer{display:block}.axp-markdown-viewer__content{display:block;font-size:.95rem;line-height:1.75;color:var(--ax-color-text, inherit);word-break:break-word;white-space:nowrap;text-wrap:wrap}.axp-markdown-viewer__content h1,.axp-markdown-viewer__content h2,.axp-markdown-viewer__content h3,.axp-markdown-viewer__content h4,.axp-markdown-viewer__content h5,.axp-markdown-viewer__content h6{display:block;margin:0;line-height:1.35;font-weight:600;letter-spacing:.01em}.axp-markdown-viewer__content h1{font-size:1.7rem!important}.axp-markdown-viewer__content h2{font-size:1.45rem!important}.axp-markdown-viewer__content h3{font-size:1.25rem!important}.axp-markdown-viewer__content h4{font-size:1.1rem!important}.axp-markdown-viewer__content h5{font-size:1rem!important}.axp-markdown-viewer__content h6{font-size:.92rem!important;opacity:.9}.axp-markdown-viewer__content p{margin:0}.axp-markdown-viewer__content ul{margin:0;padding-inline-start:1.25rem}.axp-markdown-viewer__content ol{margin:0;padding-inline-start:1.35rem}.axp-markdown-viewer__content li{margin:0;line-height:1.75}.axp-markdown-viewer__content ul ul,.axp-markdown-viewer__content ul ol,.axp-markdown-viewer__content ol ul,.axp-markdown-viewer__content ol ol{margin:0}.axp-markdown-viewer__content blockquote{margin:0;padding:.45rem .65rem;border-inline-start:3px solid rgba(var(--ax-sys-color-primary),.35);background:rgba(var(--ax-sys-color-primary),.06);border-radius:.25rem}.axp-markdown-viewer__content hr{border:0;border-top:1px solid var(--ax-color-ghost, rgba(0, 0, 0, .16));margin:0}.axp-markdown-viewer__content code{font-family:var(--ax-font-mono, monospace);font-size:.9em;padding:.1rem .3rem;border-radius:.25rem;background:var(--ax-color-ghost, rgba(0, 0, 0, .06))}.axp-markdown-viewer__content pre{margin:0}.axp-markdown-viewer__content table{width:100%;border-collapse:collapse;margin:0}.axp-markdown-viewer__content th,.axp-markdown-viewer__content td{border:1px solid var(--ax-color-ghost, rgba(0, 0, 0, .12));padding:.35rem .5rem;text-align:start}.axp-markdown-viewer__content a{text-decoration:underline}.axp-markdown-viewer__content img{max-width:100%;height:auto;border-radius:.35rem}.axp-markdown-viewer__content details{margin:0;padding:.35rem .55rem;border:1px solid var(--ax-color-ghost, rgba(0, 0, 0, .12));border-radius:.35rem}.axp-markdown-viewer__content summary{cursor:pointer;font-weight:600}.axp-markdown-viewer__content sup{line-height:0;font-size:.75em}.axp-markdown-viewer__content .footnotes{margin:0;padding-top:.5rem;border-top:1px dashed var(--ax-color-ghost, rgba(0, 0, 0, .16))}.axp-markdown-viewer__content ul.contains-task-list{list-style:none;padding-inline-start:.2rem}.axp-markdown-viewer__content .task-list-item{list-style:none}.axp-markdown-viewer__content .task-list-item input[type=checkbox]{margin:0;transform:translateY(1px)}.axp-markdown-viewer__code{margin:0;padding:.75rem 1rem;border-radius:.5rem;background-color:var(--ax-surface-secondary, #111827);color:var(--ax-text-on-primary, #f9fafb);overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
3923
|
+
}
|
|
3924
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPMarkdownViewerComponent, decorators: [{
|
|
3925
|
+
type: Component,
|
|
3926
|
+
args: [{ selector: 'axp-markdown-viewer', standalone: true, imports: [CommonModule], template: `
|
|
3927
|
+
<section class="axp-markdown-viewer">
|
|
3928
|
+
@for (segment of segments(); track $index) {
|
|
3929
|
+
@if (segment.type === 'code') {
|
|
3930
|
+
@if (codeTemplate(); as template) {
|
|
3931
|
+
<ng-container
|
|
3932
|
+
[ngTemplateOutlet]="template"
|
|
3933
|
+
[ngTemplateOutletContext]="{ $implicit: segment, segment: segment }"
|
|
3934
|
+
>
|
|
3935
|
+
</ng-container>
|
|
3936
|
+
} @else {
|
|
3937
|
+
<pre class="axp-markdown-viewer__code"><code>{{ segment.code }}</code></pre>
|
|
3938
|
+
}
|
|
3939
|
+
} @else {
|
|
3940
|
+
@if (markdownTemplate(); as template) {
|
|
3941
|
+
<ng-container
|
|
3942
|
+
[ngTemplateOutlet]="template"
|
|
3943
|
+
[ngTemplateOutletContext]="{ $implicit: segment, segment: segment }"
|
|
3944
|
+
>
|
|
3945
|
+
</ng-container>
|
|
3946
|
+
} @else {
|
|
3947
|
+
<div class="axp-markdown-viewer__content" [innerHTML]="segment.html"></div>
|
|
3948
|
+
}
|
|
3949
|
+
}
|
|
3950
|
+
}
|
|
3951
|
+
</section>
|
|
3952
|
+
`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [".axp-markdown-viewer{display:block}.axp-markdown-viewer__content{display:block;font-size:.95rem;line-height:1.75;color:var(--ax-color-text, inherit);word-break:break-word;white-space:nowrap;text-wrap:wrap}.axp-markdown-viewer__content h1,.axp-markdown-viewer__content h2,.axp-markdown-viewer__content h3,.axp-markdown-viewer__content h4,.axp-markdown-viewer__content h5,.axp-markdown-viewer__content h6{display:block;margin:0;line-height:1.35;font-weight:600;letter-spacing:.01em}.axp-markdown-viewer__content h1{font-size:1.7rem!important}.axp-markdown-viewer__content h2{font-size:1.45rem!important}.axp-markdown-viewer__content h3{font-size:1.25rem!important}.axp-markdown-viewer__content h4{font-size:1.1rem!important}.axp-markdown-viewer__content h5{font-size:1rem!important}.axp-markdown-viewer__content h6{font-size:.92rem!important;opacity:.9}.axp-markdown-viewer__content p{margin:0}.axp-markdown-viewer__content ul{margin:0;padding-inline-start:1.25rem}.axp-markdown-viewer__content ol{margin:0;padding-inline-start:1.35rem}.axp-markdown-viewer__content li{margin:0;line-height:1.75}.axp-markdown-viewer__content ul ul,.axp-markdown-viewer__content ul ol,.axp-markdown-viewer__content ol ul,.axp-markdown-viewer__content ol ol{margin:0}.axp-markdown-viewer__content blockquote{margin:0;padding:.45rem .65rem;border-inline-start:3px solid rgba(var(--ax-sys-color-primary),.35);background:rgba(var(--ax-sys-color-primary),.06);border-radius:.25rem}.axp-markdown-viewer__content hr{border:0;border-top:1px solid var(--ax-color-ghost, rgba(0, 0, 0, .16));margin:0}.axp-markdown-viewer__content code{font-family:var(--ax-font-mono, monospace);font-size:.9em;padding:.1rem .3rem;border-radius:.25rem;background:var(--ax-color-ghost, rgba(0, 0, 0, .06))}.axp-markdown-viewer__content pre{margin:0}.axp-markdown-viewer__content table{width:100%;border-collapse:collapse;margin:0}.axp-markdown-viewer__content th,.axp-markdown-viewer__content td{border:1px solid var(--ax-color-ghost, rgba(0, 0, 0, .12));padding:.35rem .5rem;text-align:start}.axp-markdown-viewer__content a{text-decoration:underline}.axp-markdown-viewer__content img{max-width:100%;height:auto;border-radius:.35rem}.axp-markdown-viewer__content details{margin:0;padding:.35rem .55rem;border:1px solid var(--ax-color-ghost, rgba(0, 0, 0, .12));border-radius:.35rem}.axp-markdown-viewer__content summary{cursor:pointer;font-weight:600}.axp-markdown-viewer__content sup{line-height:0;font-size:.75em}.axp-markdown-viewer__content .footnotes{margin:0;padding-top:.5rem;border-top:1px dashed var(--ax-color-ghost, rgba(0, 0, 0, .16))}.axp-markdown-viewer__content ul.contains-task-list{list-style:none;padding-inline-start:.2rem}.axp-markdown-viewer__content .task-list-item{list-style:none}.axp-markdown-viewer__content .task-list-item input[type=checkbox]{margin:0;transform:translateY(1px)}.axp-markdown-viewer__code{margin:0;padding:.75rem 1rem;border-radius:.5rem;background-color:var(--ax-surface-secondary, #111827);color:var(--ax-text-on-primary, #f9fafb);overflow:auto}\n"] }]
|
|
3953
|
+
}], ctorParameters: () => [], propDecorators: { markdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "markdown", required: false }] }], templates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => AXPMarkdownTemplateDirective), { isSignal: true }] }] } });
|
|
3954
|
+
|
|
3737
3955
|
//#region ---- Imports ----
|
|
3738
3956
|
//#endregion
|
|
3739
3957
|
//#region ---- Service Interface ----
|
|
@@ -5139,7 +5357,7 @@ class AXPQuerySortsComponent {
|
|
|
5139
5357
|
});
|
|
5140
5358
|
}
|
|
5141
5359
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQuerySortsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5142
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQuerySortsComponent, isStandalone: true, selector: "axp-query-sorts", inputs: { sortDefinitions: { classPropertyName: "sortDefinitions", publicName: "sortDefinitions", isSignal: true, isRequired: false, transformFunction: null }, initialSortQueries: { classPropertyName: "initialSortQueries", publicName: "initialSortQueries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortDefinitions: "sortDefinitionsChange", sortQueriesChange: "sortQueriesChange" }, ngImport: i0, template: "<div class=\"flex flex-col justify-center gap-4 select-none\">\n <div class=\"flex flex-col gap-4 select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"flex flex-col gap-3 w-full sorted-list max-h-[calc(100vh-280px)] overflow-auto\">\n @for (item of sortDefinitions(); track item.name) {\n <div class=\"flex py-1 items-center justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"flex items-center gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical cursor-move\"></ax-icon>\n <p class=\"font-medium text-sm\">{{ item.title | translate | async }}</p>\n </div>\n <ax-button [
|
|
5360
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQuerySortsComponent, isStandalone: true, selector: "axp-query-sorts", inputs: { sortDefinitions: { classPropertyName: "sortDefinitions", publicName: "sortDefinitions", isSignal: true, isRequired: false, transformFunction: null }, initialSortQueries: { classPropertyName: "initialSortQueries", publicName: "initialSortQueries", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { sortDefinitions: "sortDefinitionsChange", sortQueriesChange: "sortQueriesChange" }, ngImport: i0, template: "<div class=\"flex flex-col justify-center gap-4 select-none\">\n <div class=\"flex flex-col gap-4 select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"flex flex-col gap-3 w-full sorted-list max-h-[calc(100vh-280px)] overflow-x-hidden overflow-y-auto\">\n @for (item of sortDefinitions(); track item.name) {\n <div class=\"flex py-1 items-center justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"flex items-center gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical cursor-move\"></ax-icon>\n <p class=\"font-medium text-sm\">{{ item.title | translate | async }}</p>\n </div>\n <ax-button [look]=\"'none'\" class=\"ax-sm\" (click)=\"changeItemSort(item)\">\n <ax-icon\n [class.text-primary]=\"getSortDirection(item) === 'asc'\"\n class=\"fa-solid fa-arrow-up-long text-neutral-400\"\n ></ax-icon>\n <ax-icon\n [class.text-primary]=\"getSortDirection(item) === 'desc'\"\n class=\"fa-solid fa-arrow-down-long text-neutral-400\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: AXTabsModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5143
5361
|
}
|
|
5144
5362
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQuerySortsComponent, decorators: [{
|
|
5145
5363
|
type: Component,
|
|
@@ -5152,7 +5370,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5152
5370
|
CommonModule,
|
|
5153
5371
|
AXDecoratorModule,
|
|
5154
5372
|
AXButtonModule,
|
|
5155
|
-
], template: "<div class=\"flex flex-col justify-center gap-4 select-none\">\n <div class=\"flex flex-col gap-4 select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"flex flex-col gap-3 w-full sorted-list max-h-[calc(100vh-280px)] overflow-auto\">\n @for (item of sortDefinitions(); track item.name) {\n <div class=\"flex py-1 items-center justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"flex items-center gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical cursor-move\"></ax-icon>\n <p class=\"font-medium text-sm\">{{ item.title | translate | async }}</p>\n </div>\n <ax-button [
|
|
5373
|
+
], template: "<div class=\"flex flex-col justify-center gap-4 select-none\">\n <div class=\"flex flex-col gap-4 select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"flex flex-col gap-3 w-full sorted-list max-h-[calc(100vh-280px)] overflow-x-hidden overflow-y-auto\">\n @for (item of sortDefinitions(); track item.name) {\n <div class=\"flex py-1 items-center justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"flex items-center gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical cursor-move\"></ax-icon>\n <p class=\"font-medium text-sm\">{{ item.title | translate | async }}</p>\n </div>\n <ax-button [look]=\"'none'\" class=\"ax-sm\" (click)=\"changeItemSort(item)\">\n <ax-icon\n [class.text-primary]=\"getSortDirection(item) === 'asc'\"\n class=\"fa-solid fa-arrow-up-long text-neutral-400\"\n ></ax-icon>\n <ax-icon\n [class.text-primary]=\"getSortDirection(item) === 'desc'\"\n class=\"fa-solid fa-arrow-down-long text-neutral-400\"\n ></ax-icon>\n </ax-button>\n </div>\n }\n </div>\n </div>\n</div>\n" }]
|
|
5156
5374
|
}], ctorParameters: () => [], propDecorators: { sortDefinitions: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortDefinitions", required: false }] }, { type: i0.Output, args: ["sortDefinitionsChange"] }], initialSortQueries: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialSortQueries", required: false }] }], sortQueriesChange: [{ type: i0.Output, args: ["sortQueriesChange"] }] } });
|
|
5157
5375
|
|
|
5158
5376
|
//#region ---- Component Definition ----
|
|
@@ -8639,5 +8857,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
8639
8857
|
* Generated bundle index. Do not edit.
|
|
8640
8858
|
*/
|
|
8641
8859
|
|
|
8642
|
-
export { AXPActivityLogComponent, AXPAvatarComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPConditionBuilderComponent, AXPConditionBuilderConditionComponent, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPExpressionFieldDefinitions, AXPImageEditorPopupComponent, AXPImageEditorService, AXPItemConfiguratorComponent, AXPLogoComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPPageComponentRegistryService, AXPPreloadFiltersComponent, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPRepeaterRowsLayoutComponent, AXPResourceAppointmentBoardProvider, AXPResourceAppointmentComponent, AXPResourceAppointmentService, AXPSectionItemsBuilderComponent, AXPSpreadsheetComponent, AXPStandardSectionItemsBuilderComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXPRESSION_LOGIC_DEFINITIONS, AXP_EXPRESSION_OPERATION_DEFINITIONS, AXP_MENU_CUSTOMIZER_SERVICE, AXP_PAGE_COMPONENT_PROVIDER, AXP_RESOURCE_APPOINTMENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, STANDARD_SECTION_ITEMS_SECTION_TABS, buildPropertyViewerInitialContextFromProperties, buildPropertyViewerTabsFromProperties, buildTableColumnsEditorLayout, getFieldDefinitions, getLogicDefinition, getOperationDefinition, isPropertyBindingExpressionFormValue, preparePropertyForViewer, preparePropertyViewerTabs, registerFieldDefinitions, withValidationsOnEditorNode };
|
|
8860
|
+
export { AXPActivityLogComponent, AXPAvatarComponent, AXPCategoryTreeComponent, AXPColorPalettePickerComponent, AXPColumnItemListComponent, AXPCompareViewComponent, AXPConditionBuilderComponent, AXPConditionBuilderConditionComponent, AXPDataSelectorComponent, AXPDataSelectorService, AXPDragDropListComponent, AXPExpressionFieldDefinitions, AXPImageEditorPopupComponent, AXPImageEditorService, AXPItemConfiguratorComponent, AXPLogoComponent, AXPMarkdownTemplateDirective, AXPMarkdownViewerComponent, AXPMenuBadgeHelper, AXPMenuCustomizerComponent, AXPMenuCustomizerService, AXPPageComponentRegistryService, AXPPreloadFiltersComponent, AXPPropertyViewerComponent, AXPPropertyViewerPopupComponent, AXPPropertyViewerService, AXPQueryColumnsComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryViewsComponent, AXPRepeaterRowsLayoutComponent, AXPResourceAppointmentBoardProvider, AXPResourceAppointmentComponent, AXPResourceAppointmentService, AXPSectionItemsBuilderComponent, AXPSpreadsheetComponent, AXPStandardSectionItemsBuilderComponent, AXPStateMessageComponent, AXPStopwatchComponent, AXPTableColumnsEditorComponent, AXPTableColumnsEditorPopupComponent, AXPTableColumnsEditorService, AXPTableDataEditorComponent, AXPTableDataEditorPopupComponent, AXPTableDataEditorService, AXPTaskBadgeDirective, AXPTaskBadgeProvider, AXPTaskBadgeService, AXPTemplateViewerComponent, AXPTemplateViewerService, AXPThemeLayoutActionsComponent, AXPThemeLayoutBlockComponent, AXPThemeLayoutContainerComponent, AXPThemeLayoutEndSideComponent, AXPThemeLayoutFooterComponent, AXPThemeLayoutHeaderComponent, AXPThemeLayoutListComponent, AXPThemeLayoutListItemComponent, AXPThemeLayoutListItemsGroupComponent, AXPThemeLayoutPageHeaderComponent, AXPThemeLayoutPagePrimaryActionsComponent, AXPThemeLayoutPageSecondaryActionsComponent, AXPThemeLayoutSectionComponent, AXPThemeLayoutStartSideComponent, AXPThemeLayoutToolbarComponent, AXPUserAvatarComponent, AXPUserAvatarService, AXPWidgetFieldConfiguratorComponent, AXPWidgetItemComponent, AXPWidgetPropertyViewerComponent, AXPWidgetPropertyViewerPopupComponent, AXPWidgetPropertyViewerService, AXP_EXPRESSION_LOGIC_DEFINITIONS, AXP_EXPRESSION_OPERATION_DEFINITIONS, AXP_MENU_CUSTOMIZER_SERVICE, AXP_PAGE_COMPONENT_PROVIDER, AXP_RESOURCE_APPOINTMENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS, AXP_USER_AVATAR_PROVIDER, STANDARD_SECTION_ITEMS_SECTION_TABS, buildPropertyViewerInitialContextFromProperties, buildPropertyViewerTabsFromProperties, buildTableColumnsEditorLayout, getFieldDefinitions, getLogicDefinition, getOperationDefinition, isPropertyBindingExpressionFormValue, preparePropertyForViewer, preparePropertyViewerTabs, registerFieldDefinitions, withValidationsOnEditorNode };
|
|
8643
8861
|
//# sourceMappingURL=acorex-platform-layout-components.mjs.map
|