@acorex/components 20.1.8 → 20.1.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/conversation/index.d.ts +15 -4
- package/fesm2022/acorex-components-conversation.mjs +39 -11
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown-button.mjs +2 -2
- package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs +2 -2
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +5 -5
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +10 -3
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +1 -1
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-popover.mjs +21 -3
- package/fesm2022/acorex-components-popover.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +356 -331
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-toolbar.mjs +2 -2
- package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +18 -6
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +1 -1
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +3 -3
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/kanban/index.d.ts +9 -2
- package/package.json +17 -17
- package/popover/index.d.ts +9 -1
- package/scheduler/index.d.ts +150 -49
- package/tooltip/index.d.ts +4 -2
@@ -1,6 +1,7 @@
|
|
1
1
|
import { NXComponent } from '@acorex/cdk/common';
|
2
2
|
import { AXDragDirective, AXDropListDirective } from '@acorex/cdk/drag-drop';
|
3
|
-
import { AXDecoratorGenericComponent, AXDecoratorHeadingComponent } from '@acorex/components/decorators';
|
3
|
+
import { AXDecoratorGenericComponent, AXDecoratorHeadingComponent, AXDecoratorIconComponent } from '@acorex/components/decorators';
|
4
|
+
import { AXTooltipDirective } from '@acorex/components/tooltip';
|
4
5
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
5
6
|
import * as i0 from '@angular/core';
|
6
7
|
import { input, output, computed, ViewEncapsulation, Component } from '@angular/core';
|
@@ -8,6 +9,8 @@ import { input, output, computed, ViewEncapsulation, Component } from '@angular/
|
|
8
9
|
class AXKanbanComponent extends NXComponent {
|
9
10
|
constructor() {
|
10
11
|
super(...arguments);
|
12
|
+
this.hasActions = input(false);
|
13
|
+
this.dragStartDelay = input(0);
|
11
14
|
this.statuses = input([]);
|
12
15
|
this.itemTemplate = input();
|
13
16
|
this.dataSource = input();
|
@@ -22,7 +25,9 @@ class AXKanbanComponent extends NXComponent {
|
|
22
25
|
this.headerTemplate = input();
|
23
26
|
this.footerTemplate = input();
|
24
27
|
this.contentFooterTemplate = input();
|
28
|
+
this.tooltipTemplate = input();
|
25
29
|
this.onSortChanged = output();
|
30
|
+
this.onActionClick = output();
|
26
31
|
this.items = computed(() => {
|
27
32
|
// ... your excellent gap-filling index logic remains the same ...
|
28
33
|
const dataSource = this.dataSource() || [];
|
@@ -154,7 +159,7 @@ class AXKanbanComponent extends NXComponent {
|
|
154
159
|
return JSON.stringify(value);
|
155
160
|
}
|
156
161
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
157
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXKanbanComponent, isStandalone: true, selector: "ax-kanban", inputs: { statuses: { classPropertyName: "statuses", publicName: "statuses", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: "keyField", publicName: "keyField", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: "indexField", publicName: "indexField", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: "titleField", publicName: "titleField", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: "cssClassField", publicName: "cssClassField", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: "priorityField", publicName: "priorityField", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: "statusKeyField", publicName: "statusKeyField", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: "descriptionField", publicName: "descriptionField", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: "contentFooterTemplate", publicName: "contentFooterTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSortChanged: "onSortChanged" }, usesInheritance: true, ngImport: i0, template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div axDrag [dragData]=\"item\" class=\"{{ item.cssClass }}\">\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n >\n <ax-heading>\n <ax-title>{{ item.title }}</ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: [".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\"\";left:.125rem;position:absolute;border-radius:9999px;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:1rem;font-weight:500}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped"], exportAs: ["axDropList"] }, { kind: "component", type: 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: "component", type: AXDecoratorHeadingComponent, selector: "ax-heading", inputs: ["darkMode", "color", "weight"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
162
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.4", type: AXKanbanComponent, isStandalone: true, selector: "ax-kanban", inputs: { hasActions: { classPropertyName: "hasActions", publicName: "hasActions", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: "dragStartDelay", publicName: "dragStartDelay", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: "statuses", publicName: "statuses", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: "keyField", publicName: "keyField", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: "indexField", publicName: "indexField", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: "titleField", publicName: "titleField", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: "cssClassField", publicName: "cssClassField", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: "priorityField", publicName: "priorityField", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: "statusKeyField", publicName: "statusKeyField", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: "descriptionField", publicName: "descriptionField", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: "contentFooterTemplate", publicName: "contentFooterTemplate", isSignal: true, isRequired: false, transformFunction: null }, tooltipTemplate: { classPropertyName: "tooltipTemplate", publicName: "tooltipTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSortChanged: "onSortChanged", onActionClick: "onActionClick" }, usesInheritance: true, ngImport: i0, template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [tooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [tooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"onActionClick.emit({ item, nativeEvent: $event, sender: this })\"\n >\n </ax-icon>\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: [".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\"\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AXDragDirective, selector: "[axDrag]", inputs: ["dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped"], exportAs: ["axDropList"] }, { kind: "component", type: 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: "component", type: AXDecoratorHeadingComponent, selector: "ax-heading", inputs: ["darkMode", "color", "weight"] }, { kind: "component", type: AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: AXTooltipDirective, selector: "[axTooltip]", inputs: ["tooltipDisabled", "axTooltip", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
158
163
|
}
|
159
164
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXKanbanComponent, decorators: [{
|
160
165
|
type: Component,
|
@@ -165,7 +170,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
|
|
165
170
|
AXDropListDirective,
|
166
171
|
AXDecoratorGenericComponent,
|
167
172
|
AXDecoratorHeadingComponent,
|
168
|
-
|
173
|
+
AXDecoratorIconComponent,
|
174
|
+
AXTooltipDirective,
|
175
|
+
], template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [tooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [tooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"onActionClick.emit({ item, nativeEvent: $event, sender: this })\"\n >\n </ax-icon>\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: [".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\"\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\n"] }]
|
169
176
|
}] });
|
170
177
|
|
171
178
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"acorex-components-kanban.mjs","sources":["../tmp-esm2022/kanban/lib/kanban.component.js","../tmp-esm2022/kanban/acorex-components-kanban.js"],"sourcesContent":["import { NXComponent } from '@acorex/cdk/common';\nimport { AXDragDirective, AXDropListDirective } from '@acorex/cdk/drag-drop';\nimport { AXDecoratorGenericComponent, AXDecoratorHeadingComponent } from '@acorex/components/decorators';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXKanbanComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.statuses = input([]);\n this.itemTemplate = input();\n this.dataSource = input();\n this.keyField = input('id');\n this.indexField = input('index');\n this.titleField = input('title');\n this.cssClassField = input('cssClass');\n this.priorityField = input('priority');\n this.statusKeyField = input('statusKey');\n this.descriptionField = input('description');\n this.emptyTemplate = input();\n this.headerTemplate = input();\n this.footerTemplate = input();\n this.contentFooterTemplate = input();\n this.onSortChanged = output();\n this.items = computed(() => {\n // ... your excellent gap-filling index logic remains the same ...\n const dataSource = this.dataSource() || [];\n const mappedItems = dataSource.map((item) => ({\n id: item[this.keyField()],\n index: item[this.indexField()],\n title: item[this.titleField()],\n cssClass: item[this.cssClassField()],\n priority: item[this.priorityField()],\n statusKey: item[this.statusKeyField()],\n description: item[this.descriptionField()],\n }));\n const itemsByStatus = new Map();\n for (const item of mappedItems) {\n if (!itemsByStatus.has(item.statusKey)) {\n itemsByStatus.set(item.statusKey, []);\n }\n itemsByStatus.get(item.statusKey).push(item);\n }\n const finalProcessedItems = [];\n for (const group of itemsByStatus.values()) {\n const correctlyIndexedItems = [];\n const itemsToBeIndexed = [];\n const takenIndices = new Set();\n for (const item of group) {\n const hasValidIndex = item.index != null && typeof item.index === 'number' && !takenIndices.has(item.index);\n if (hasValidIndex) {\n takenIndices.add(item.index);\n correctlyIndexedItems.push(item);\n }\n else {\n itemsToBeIndexed.push(item);\n }\n }\n let currentIndex = 0;\n for (const item of itemsToBeIndexed) {\n while (takenIndices.has(currentIndex)) {\n currentIndex++;\n }\n item.index = currentIndex;\n currentIndex++;\n }\n const processedGroup = [...correctlyIndexedItems, ...itemsToBeIndexed];\n processedGroup.sort((a, b) => a.index - b.index);\n finalProcessedItems.push(...processedGroup);\n }\n return finalProcessedItems;\n });\n this.filteredStatuses = computed(() => this.statuses().sort((a, b) => a.index - b.index));\n }\n /**\n * Handles the drop event. It uses the component's current rendered state (`this.items`)\n * as the source of truth for the operation, calculates the new state with precise\n * re-indexing, and emits a comprehensive event with the updated data source.\n */\n drop(event) {\n const { item: droppedItemDirective, currentIndex, previousIndex, container, previousContainer } = event;\n // --- 1. Get identifiers and the item's original data ---\n const currentStatusKey = JSON.parse(container.element.id);\n const previousStatusKey = JSON.parse(previousContainer.element.id);\n const movedItemOriginalData = droppedItemDirective.dragData();\n if (!movedItemOriginalData) {\n console.warn('AXKanban: Dragged item has no [dragData]. Sort event cannot be emitted.');\n return;\n }\n // --- 2. Use the `items` computed property as the source of truth for the operation ---\n // This is the CRUCIAL FIX. We operate on the data as it was rendered.\n const currentItemsState = structuredClone(this.items());\n // --- 3. Perform the move operation based on the scenario ---\n if (previousStatusKey === currentStatusKey) {\n // --- Scenario A: Reordering within the same list ---\n const list = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from the old position and insert into the new position\n const [movedItem] = list.splice(previousIndex, 1);\n list.splice(currentIndex, 0, movedItem);\n // Re-index only this modified list\n list.forEach((item, idx) => (item.index = idx));\n }\n else {\n // --- Scenario B: Moving to a different list ---\n const sourceList = currentItemsState.filter((i) => i.statusKey === previousStatusKey);\n const destList = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from source list\n const [movedItem] = sourceList.splice(previousIndex, 1);\n // Update its status and add to destination list\n movedItem.statusKey = currentStatusKey;\n destList.splice(currentIndex, 0, movedItem);\n // Re-index both affected lists\n sourceList.forEach((item, idx) => (item.index = idx));\n destList.forEach((item, idx) => (item.index = idx));\n }\n // --- 4. Map the changes back to a new version of the original dataSource ---\n // This preserves any extra properties the user might have on their data objects.\n const keyField = this.keyField();\n const statusKeyField = this.statusKeyField();\n const indexField = this.indexField();\n const updatedItemsMap = new Map(currentItemsState.map((i) => [i.id, i]));\n const finalDataSource = structuredClone(this.dataSource());\n finalDataSource.forEach((originalItem) => {\n const updatedItem = updatedItemsMap.get(originalItem[keyField]);\n if (updatedItem) {\n originalItem[indexField] = updatedItem.index;\n originalItem[statusKeyField] = updatedItem.statusKey;\n }\n });\n const movedItemId = movedItemOriginalData.id;\n const originalItemFromDataSource = finalDataSource.find((item) => item[keyField] === movedItemId);\n // --- 5. Emit the final, comprehensive event ---\n this.onSortChanged.emit({\n sender: this,\n nativeEvent: event.nativeEvent,\n // The original data object that was moved\n item: originalItemFromDataSource,\n // The complete, precisely re-indexed data source, ready for state update\n allItems: finalDataSource,\n currentIndex,\n previousIndex,\n currentStatusKey,\n previousStatusKey,\n });\n }\n getItemsById(key) {\n return this.items().filter((e) => e.statusKey === key);\n }\n getOriginalItemsById(key) {\n return this.dataSource().filter((e) => e[this.statusKeyField()] === key);\n }\n stringify(value) {\n return JSON.stringify(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXKanbanComponent, isStandalone: true, selector: \"ax-kanban\", inputs: { statuses: { classPropertyName: \"statuses\", publicName: \"statuses\", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: \"keyField\", publicName: \"keyField\", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: \"indexField\", publicName: \"indexField\", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: \"titleField\", publicName: \"titleField\", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: \"cssClassField\", publicName: \"cssClassField\", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: \"priorityField\", publicName: \"priorityField\", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: \"statusKeyField\", publicName: \"statusKeyField\", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: \"descriptionField\", publicName: \"descriptionField\", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: \"headerTemplate\", publicName: \"headerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: \"footerTemplate\", publicName: \"footerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: \"contentFooterTemplate\", publicName: \"contentFooterTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSortChanged: \"onSortChanged\" }, usesInheritance: true, ngImport: i0, template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div axDrag [dragData]=\\\"item\\\" class=\\\"{{ item.cssClass }}\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n >\\n <ax-heading>\\n <ax-title>{{ item.title }}</ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";left:.125rem;position:absolute;border-radius:9999px;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:1rem;font-weight:500}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXDragDirective, selector: \"[axDrag]\", inputs: [\"dragData\", \"dragDisabled\", \"dragTransition\", \"dragElementClone\", \"dropZoneGroup\", \"dragStartDelay\", \"dragResetOnDblClick\", \"dragLockAxis\", \"dragClonedTemplate\", \"dragCursor\", \"dragBoundary\", \"dragTransitionDuration\"], outputs: [\"dragPositionChanged\"] }, { kind: \"directive\", type: AXDropListDirective, selector: \"[axDropList]\", inputs: [\"sortingDisabled\", \"dropListGroup\", \"dropListOrientation\"], outputs: [\"dropListDropped\"], exportAs: [\"axDropList\"] }, { kind: \"component\", type: 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: \"component\", type: AXDecoratorHeadingComponent, selector: \"ax-heading\", inputs: [\"darkMode\", \"color\", \"weight\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXKanbanComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-kanban', encapsulation: ViewEncapsulation.None, imports: [\n NgClass,\n NgTemplateOutlet,\n AXDragDirective,\n AXDropListDirective,\n AXDecoratorGenericComponent,\n AXDecoratorHeadingComponent,\n ], template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div axDrag [dragData]=\\\"item\\\" class=\\\"{{ item.cssClass }}\\\">\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n >\\n <ax-heading>\\n <ax-title>{{ item.title }}</ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";left:.125rem;position:absolute;border-radius:9999px;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:1rem;font-weight:500}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWlCbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUFkbEQ7O1FBZUUsYUFBUSxHQUFHLEtBQUssQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxLQUFLLEVBQXdCLENBQUM7UUFDN0MsZUFBVSxHQUFHLEtBQUssRUFBMEIsQ0FBQztRQUU3QyxhQUFRLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFDcEMsZUFBVSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxVQUFVLENBQUMsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxVQUFVLENBQUMsQ0FBQztRQUMxQyxt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LENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7OEdBdEtVLGlCQUFpQjtrR0FBakIsaUJBQWlCLG1tRUNyQjlCLGl1RUErREEsdy9IRGxESSxPQUFPLG9GQUNQLGdCQUFnQixvSkFDaEIsZUFBZSwyVEFDZixtQkFBbUIsc0xBQ25CLDJCQUEyQix5TEFDM0IsMkJBQTJCOzsyRkFHbEIsaUJBQWlCO2tCQWQ3QixTQUFTOytCQUNFLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxXQUM1Qjt3QkFDUCxPQUFPO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3FCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5YQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRHJhZ0RpcmVjdGl2ZSwgQVhEcm9wTGlzdERpcmVjdGl2ZSwgQVhEcm9wTGlzdERyb3BwZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsIEFYRGVjb3JhdG9ySGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEthbmJhbkl0ZW0sIEFYS2FuYmFuU29ydEV2ZW50LCBBWEthbmJhblN0YXR1cyB9IGZyb20gJy4va2FuYmFuLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgta2FuYmFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2thbmJhbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYRHJhZ0RpcmVjdGl2ZSxcbiAgICBBWERyb3BMaXN0RGlyZWN0aXZlLFxuICAgIEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCxcbiAgICBBWERlY29yYXRvckhlYWRpbmdDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYS2FuYmFuQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBzdGF0dXNlcyA9IGlucHV0PEFYS2FuYmFuU3RhdHVzW10+KFtdKTtcbiAgaXRlbVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dDxBWEthbmJhbkl0ZW1bXSB8IGFueVtdPigpO1xuXG4gIGtleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignaWQnKTtcbiAgaW5kZXhGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2luZGV4Jyk7XG4gIHRpdGxlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCd0aXRsZScpO1xuICBjc3NDbGFzc0ZpZWxkID0gaW5wdXQ8c3RyaW5nPignY3NzQ2xhc3MnKTtcbiAgcHJpb3JpdHlGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3ByaW9yaXR5Jyk7XG4gIHN0YXR1c0tleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignc3RhdHVzS2V5Jyk7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdkZXNjcmlwdGlvbicpO1xuICBlbXB0eVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGhlYWRlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGZvb3RlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGNvbnRlbnRGb290ZXJUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xuXG4gIG9uU29ydENoYW5nZWQgPSBvdXRwdXQ8QVhLYW5iYW5Tb3J0RXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGl0ZW1zID0gY29tcHV0ZWQ8QVhLYW5iYW5JdGVtW10+KCgpID0+IHtcbiAgICAvLyAuLi4geW91ciBleGNlbGxlbnQgZ2FwLWZpbGxpbmcgaW5kZXggbG9naWMgcmVtYWlucyB0aGUgc2FtZSAuLi5cbiAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkgfHwgW107XG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBkYXRhU291cmNlLm1hcDxBWEthbmJhbkl0ZW0+KChpdGVtOiBhbnkpID0+ICh7XG4gICAgICBpZDogaXRlbVt0aGlzLmtleUZpZWxkKCldLFxuICAgICAgaW5kZXg6IGl0ZW1bdGhpcy5pbmRleEZpZWxkKCldLFxuICAgICAgdGl0bGU6IGl0ZW1bdGhpcy50aXRsZUZpZWxkKCldLFxuICAgICAgY3NzQ2xhc3M6IGl0ZW1bdGhpcy5jc3NDbGFzc0ZpZWxkKCldLFxuICAgICAgcHJpb3JpdHk6IGl0ZW1bdGhpcy5wcmlvcml0eUZpZWxkKCldLFxuICAgICAgc3RhdHVzS2V5OiBpdGVtW3RoaXMuc3RhdHVzS2V5RmllbGQoKV0sXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbVt0aGlzLmRlc2NyaXB0aW9uRmllbGQoKV0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgaXRlbXNCeVN0YXR1cyA9IG5ldyBNYXA8YW55LCBBWEthbmJhbkl0ZW1bXT4oKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbWFwcGVkSXRlbXMpIHtcbiAgICAgIGlmICghaXRlbXNCeVN0YXR1cy5oYXMoaXRlbS5zdGF0dXNLZXkpKSB7XG4gICAgICAgIGl0ZW1zQnlTdGF0dXMuc2V0KGl0ZW0uc3RhdHVzS2V5LCBbXSk7XG4gICAgICB9XG4gICAgICBpdGVtc0J5U3RhdHVzLmdldChpdGVtLnN0YXR1c0tleSkucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbFByb2Nlc3NlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgaXRlbXNCeVN0YXR1cy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgY29ycmVjdGx5SW5kZXhlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgaXRlbXNUb0JlSW5kZXhlZDogQVhLYW5iYW5JdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHRha2VuSW5kaWNlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwKSB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbGlkSW5kZXggPSBpdGVtLmluZGV4ICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0uaW5kZXggPT09ICdudW1iZXInICYmICF0YWtlbkluZGljZXMuaGFzKGl0ZW0uaW5kZXgpO1xuICAgICAgICBpZiAoaGFzVmFsaWRJbmRleCkge1xuICAgICAgICAgIHRha2VuSW5kaWNlcy5hZGQoaXRlbS5pbmRleCk7XG4gICAgICAgICAgY29ycmVjdGx5SW5kZXhlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXNUb0JlSW5kZXhlZC5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVJbmRleGVkKSB7XG4gICAgICAgIHdoaWxlICh0YWtlbkluZGljZXMuaGFzKGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmluZGV4ID0gY3VycmVudEluZGV4O1xuICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb2Nlc3NlZEdyb3VwID0gWy4uLmNvcnJlY3RseUluZGV4ZWRJdGVtcywgLi4uaXRlbXNUb0JlSW5kZXhlZF07XG4gICAgICBwcm9jZXNzZWRHcm91cC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICBmaW5hbFByb2Nlc3NlZEl0ZW1zLnB1c2goLi4ucHJvY2Vzc2VkR3JvdXApO1xuICAgIH1cbiAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRJdGVtcztcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGZpbHRlcmVkU3RhdHVzZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1c2VzKCkuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpKTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgZHJvcCBldmVudC4gSXQgdXNlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudCByZW5kZXJlZCBzdGF0ZSAoYHRoaXMuaXRlbXNgKVxuICAgKiBhcyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgb3BlcmF0aW9uLCBjYWxjdWxhdGVzIHRoZSBuZXcgc3RhdGUgd2l0aCBwcmVjaXNlXG4gICAqIHJlLWluZGV4aW5nLCBhbmQgZW1pdHMgYSBjb21wcmVoZW5zaXZlIGV2ZW50IHdpdGggdGhlIHVwZGF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBkcm9wKGV2ZW50OiBBWERyb3BMaXN0RHJvcHBlZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgeyBpdGVtOiBkcm9wcGVkSXRlbURpcmVjdGl2ZSwgY3VycmVudEluZGV4LCBwcmV2aW91c0luZGV4LCBjb250YWluZXIsIHByZXZpb3VzQ29udGFpbmVyIH0gPSBldmVudDtcblxuICAgIC8vIC0tLSAxLiBHZXQgaWRlbnRpZmllcnMgYW5kIHRoZSBpdGVtJ3Mgb3JpZ2luYWwgZGF0YSAtLS1cbiAgICBjb25zdCBjdXJyZW50U3RhdHVzS2V5ID0gSlNPTi5wYXJzZShjb250YWluZXIuZWxlbWVudC5pZCk7XG4gICAgY29uc3QgcHJldmlvdXNTdGF0dXNLZXkgPSBKU09OLnBhcnNlKHByZXZpb3VzQ29udGFpbmVyLmVsZW1lbnQuaWQpO1xuICAgIGNvbnN0IG1vdmVkSXRlbU9yaWdpbmFsRGF0YSA9IGRyb3BwZWRJdGVtRGlyZWN0aXZlLmRyYWdEYXRhKCkgYXMgQVhLYW5iYW5JdGVtO1xuXG4gICAgaWYgKCFtb3ZlZEl0ZW1PcmlnaW5hbERhdGEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQVhLYW5iYW46IERyYWdnZWQgaXRlbSBoYXMgbm8gW2RyYWdEYXRhXS4gU29ydCBldmVudCBjYW5ub3QgYmUgZW1pdHRlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAtLS0gMi4gVXNlIHRoZSBgaXRlbXNgIGNvbXB1dGVkIHByb3BlcnR5IGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBvcGVyYXRpb24gLS0tXG4gICAgLy8gVGhpcyBpcyB0aGUgQ1JVQ0lBTCBGSVguIFdlIG9wZXJhdGUgb24gdGhlIGRhdGEgYXMgaXQgd2FzIHJlbmRlcmVkLlxuICAgIGNvbnN0IGN1cnJlbnRJdGVtc1N0YXRlID0gc3RydWN0dXJlZENsb25lKHRoaXMuaXRlbXMoKSk7XG5cbiAgICAvLyAtLS0gMy4gUGVyZm9ybSB0aGUgbW92ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHNjZW5hcmlvIC0tLVxuICAgIGlmIChwcmV2aW91c1N0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSkge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEE6IFJlb3JkZXJpbmcgd2l0aGluIHRoZSBzYW1lIGxpc3QgLS0tXG4gICAgICBjb25zdCBsaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBvbGQgcG9zaXRpb24gYW5kIGluc2VydCBpbnRvIHRoZSBuZXcgcG9zaXRpb25cbiAgICAgIGNvbnN0IFttb3ZlZEl0ZW1dID0gbGlzdC5zcGxpY2UocHJldmlvdXNJbmRleCwgMSk7XG4gICAgICBsaXN0LnNwbGljZShjdXJyZW50SW5kZXgsIDAsIG1vdmVkSXRlbSk7XG5cbiAgICAgIC8vIFJlLWluZGV4IG9ubHkgdGhpcyBtb2RpZmllZCBsaXN0XG4gICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGlkeCkgPT4gKGl0ZW0uaW5kZXggPSBpZHgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEI6IE1vdmluZyB0byBhIGRpZmZlcmVudCBsaXN0IC0tLVxuICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGN1cnJlbnRJdGVtc1N0YXRlLmZpbHRlcigoaSkgPT4gaS5zdGF0dXNLZXkgPT09IHByZXZpb3VzU3RhdHVzS2V5KTtcbiAgICAgIGNvbnN0IGRlc3RMaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHNvdXJjZSBsaXN0XG4gICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IHNvdXJjZUxpc3Quc3BsaWNlKHByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAvLyBVcGRhdGUgaXRzIHN0YXR1cyBhbmQgYWRkIHRvIGRlc3RpbmF0aW9uIGxpc3RcbiAgICAgIG1vdmVkSXRlbS5zdGF0dXNLZXkgPSBjdXJyZW50U3RhdHVzS2V5O1xuICAgICAgZGVzdExpc3Quc3BsaWNlKGN1cnJlbnRJbmRleCwgMCwgbW92ZWRJdGVtKTtcblxuICAgICAgLy8gUmUtaW5kZXggYm90aCBhZmZlY3RlZCBsaXN0c1xuICAgICAgc291cmNlTGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgICBkZXN0TGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgfVxuXG4gICAgLy8gLS0tIDQuIE1hcCB0aGUgY2hhbmdlcyBiYWNrIHRvIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9yaWdpbmFsIGRhdGFTb3VyY2UgLS0tXG4gICAgLy8gVGhpcyBwcmVzZXJ2ZXMgYW55IGV4dHJhIHByb3BlcnRpZXMgdGhlIHVzZXIgbWlnaHQgaGF2ZSBvbiB0aGVpciBkYXRhIG9iamVjdHMuXG4gICAgY29uc3Qga2V5RmllbGQgPSB0aGlzLmtleUZpZWxkKCk7XG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3QgaW5kZXhGaWVsZCA9IHRoaXMuaW5kZXhGaWVsZCgpO1xuXG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zTWFwID0gbmV3IE1hcChjdXJyZW50SXRlbXNTdGF0ZS5tYXAoKGkpID0+IFtpLmlkLCBpXSkpO1xuICAgIGNvbnN0IGZpbmFsRGF0YVNvdXJjZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTb3VyY2UoKSk7XG5cbiAgICBmaW5hbERhdGFTb3VyY2UuZm9yRWFjaCgob3JpZ2luYWxJdGVtKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkSXRlbSA9IHVwZGF0ZWRJdGVtc01hcC5nZXQob3JpZ2luYWxJdGVtW2tleUZpZWxkXSk7XG4gICAgICBpZiAodXBkYXRlZEl0ZW0pIHtcbiAgICAgICAgb3JpZ2luYWxJdGVtW2luZGV4RmllbGRdID0gdXBkYXRlZEl0ZW0uaW5kZXg7XG4gICAgICAgIG9yaWdpbmFsSXRlbVtzdGF0dXNLZXlGaWVsZF0gPSB1cGRhdGVkSXRlbS5zdGF0dXNLZXk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBtb3ZlZEl0ZW1JZCA9IG1vdmVkSXRlbU9yaWdpbmFsRGF0YS5pZDtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSA9IGZpbmFsRGF0YVNvdXJjZS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gbW92ZWRJdGVtSWQpO1xuXG4gICAgLy8gLS0tIDUuIEVtaXQgdGhlIGZpbmFsLCBjb21wcmVoZW5zaXZlIGV2ZW50IC0tLVxuICAgIHRoaXMub25Tb3J0Q2hhbmdlZC5lbWl0KHtcbiAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgIG5hdGl2ZUV2ZW50OiBldmVudC5uYXRpdmVFdmVudCxcbiAgICAgIC8vIFRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCB0aGF0IHdhcyBtb3ZlZFxuICAgICAgaXRlbTogb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UsXG4gICAgICAvLyBUaGUgY29tcGxldGUsIHByZWNpc2VseSByZS1pbmRleGVkIGRhdGEgc291cmNlLCByZWFkeSBmb3Igc3RhdGUgdXBkYXRlXG4gICAgICBhbGxJdGVtczogZmluYWxEYXRhU291cmNlLFxuICAgICAgY3VycmVudEluZGV4LFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIGN1cnJlbnRTdGF0dXNLZXksXG4gICAgICBwcmV2aW91c1N0YXR1c0tleSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRJdGVtc0J5SWQoa2V5OiBhbnkpOiBBWEthbmJhbkl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaXRlbXMoKS5maWx0ZXIoKGUpID0+IGUuc3RhdHVzS2V5ID09PSBrZXkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE9yaWdpbmFsSXRlbXNCeUlkKGtleTogYW55KTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmRhdGFTb3VyY2UoKS5maWx0ZXIoKGUpID0+IGVbdGhpcy5zdGF0dXNLZXlGaWVsZCgpXSA9PT0ga2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdHJpbmdpZnkodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxufVxuIiwiQGZvciAoc3RhdHVzIG9mIGZpbHRlcmVkU3RhdHVzZXMoKTsgdHJhY2sgc3RhdHVzLmtleSkge1xuICA8ZGl2IGNsYXNzPVwiYXgta2FuYmFuLXN0YXR1cyB7eyBzdGF0dXMuY3NzQ2xhc3MgfX1cIj5cbiAgICA8YXgtaGVhZGVyPlxuICAgICAgQGlmIChoZWFkZXJUZW1wbGF0ZSgpKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJoZWFkZXJUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxheC10aXRsZT57eyBzdGF0dXMudGl0bGUgfX08L2F4LXRpdGxlPlxuICAgICAgfVxuICAgIDwvYXgtaGVhZGVyPlxuICAgIDxheC1jb250ZW50IGF4RHJvcExpc3QgZHJvcExpc3RHcm91cD1cImthbmJhblwiIFtpZF09XCJzdHJpbmdpZnkoc3RhdHVzLmtleSlcIiAoZHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICAgICAgQGlmIChlbXB0eVRlbXBsYXRlKCkgJiYgZ2V0T3JpZ2luYWxJdGVtc0J5SWQoc3RhdHVzLmtleSkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJlbXB0eVRlbXBsYXRlKClcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogc3RhdHVzIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICB9XG4gICAgICBAaWYgKGl0ZW1UZW1wbGF0ZSgpKSB7XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0T3JpZ2luYWxJdGVtc0J5SWQoc3RhdHVzLmtleSk7IHRyYWNrIGl0ZW1ba2V5RmllbGQoKV0pIHtcbiAgICAgICAgICA8ZGl2IGF4RHJhZyBbZHJhZ0RhdGFdPVwiaXRlbVwiIGNsYXNzPVwie3sgaXRlbS5jc3NDbGFzcyB9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgZ2V0SXRlbXNCeUlkKHN0YXR1cy5rZXkpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgYXhEcmFnXG4gICAgICAgICAgICBbZHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICBbZHJhZ0N1cnNvcl09XCInZ3JhYidcIlxuICAgICAgICAgICAgY2xhc3M9XCJheC1rYW5iYW4taXRlbSAge3sgaXRlbS5jc3NDbGFzcyB9fVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJgYXgta2FuYmFuLSR7aXRlbS5wcmlvcml0eSA/PyAncHJpbWFyeSd9LXBlcmlvcml0eWBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1oZWFkaW5nPlxuICAgICAgICAgICAgICA8YXgtdGl0bGU+e3sgaXRlbS50aXRsZSB9fTwvYXgtdGl0bGU+XG4gICAgICAgICAgICAgIDxheC1zdWJ0aXRsZT57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9heC1zdWJ0aXRsZT5cbiAgICAgICAgICAgIDwvYXgtaGVhZGluZz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGlmIChjb250ZW50Rm9vdGVyVGVtcGxhdGUoKSkge1xuICAgICAgICA8YXgtZm9vdGVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRGb290ZXJUZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogc3RhdHVzIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9heC1mb290ZXI+XG4gICAgICB9XG4gICAgPC9heC1jb250ZW50PlxuICAgIEBpZiAoZm9vdGVyVGVtcGxhdGUoKSkge1xuICAgICAgPGF4LWZvb3Rlcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZvb3RlclRlbXBsYXRlKClcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogc3RhdHVzIH1cIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2F4LWZvb3Rlcj5cbiAgICB9XG4gIDwvZGl2PlxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMta2FuYmFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9rYW5iYW4vc3JjL2Fjb3JleC1jb21wb25lbnRzLWthbmJhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"acorex-components-kanban.mjs","sources":["../tmp-esm2022/kanban/lib/kanban.component.js","../tmp-esm2022/kanban/acorex-components-kanban.js"],"sourcesContent":["import { NXComponent } from '@acorex/cdk/common';\nimport { AXDragDirective, AXDropListDirective } from '@acorex/cdk/drag-drop';\nimport { AXDecoratorGenericComponent, AXDecoratorHeadingComponent, AXDecoratorIconComponent, } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXKanbanComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.hasActions = input(false);\n this.dragStartDelay = input(0);\n this.statuses = input([]);\n this.itemTemplate = input();\n this.dataSource = input();\n this.keyField = input('id');\n this.indexField = input('index');\n this.titleField = input('title');\n this.cssClassField = input('cssClass');\n this.priorityField = input('priority');\n this.statusKeyField = input('statusKey');\n this.descriptionField = input('description');\n this.emptyTemplate = input();\n this.headerTemplate = input();\n this.footerTemplate = input();\n this.contentFooterTemplate = input();\n this.tooltipTemplate = input();\n this.onSortChanged = output();\n this.onActionClick = output();\n this.items = computed(() => {\n // ... your excellent gap-filling index logic remains the same ...\n const dataSource = this.dataSource() || [];\n const mappedItems = dataSource.map((item) => ({\n id: item[this.keyField()],\n index: item[this.indexField()],\n title: item[this.titleField()],\n cssClass: item[this.cssClassField()],\n priority: item[this.priorityField()],\n statusKey: item[this.statusKeyField()],\n description: item[this.descriptionField()],\n }));\n const itemsByStatus = new Map();\n for (const item of mappedItems) {\n if (!itemsByStatus.has(item.statusKey)) {\n itemsByStatus.set(item.statusKey, []);\n }\n itemsByStatus.get(item.statusKey).push(item);\n }\n const finalProcessedItems = [];\n for (const group of itemsByStatus.values()) {\n const correctlyIndexedItems = [];\n const itemsToBeIndexed = [];\n const takenIndices = new Set();\n for (const item of group) {\n const hasValidIndex = item.index != null && typeof item.index === 'number' && !takenIndices.has(item.index);\n if (hasValidIndex) {\n takenIndices.add(item.index);\n correctlyIndexedItems.push(item);\n }\n else {\n itemsToBeIndexed.push(item);\n }\n }\n let currentIndex = 0;\n for (const item of itemsToBeIndexed) {\n while (takenIndices.has(currentIndex)) {\n currentIndex++;\n }\n item.index = currentIndex;\n currentIndex++;\n }\n const processedGroup = [...correctlyIndexedItems, ...itemsToBeIndexed];\n processedGroup.sort((a, b) => a.index - b.index);\n finalProcessedItems.push(...processedGroup);\n }\n return finalProcessedItems;\n });\n this.filteredStatuses = computed(() => this.statuses().sort((a, b) => a.index - b.index));\n }\n /**\n * Handles the drop event. It uses the component's current rendered state (`this.items`)\n * as the source of truth for the operation, calculates the new state with precise\n * re-indexing, and emits a comprehensive event with the updated data source.\n */\n drop(event) {\n const { item: droppedItemDirective, currentIndex, previousIndex, container, previousContainer } = event;\n // --- 1. Get identifiers and the item's original data ---\n const currentStatusKey = JSON.parse(container.element.id);\n const previousStatusKey = JSON.parse(previousContainer.element.id);\n const movedItemOriginalData = droppedItemDirective.dragData();\n if (!movedItemOriginalData) {\n console.warn('AXKanban: Dragged item has no [dragData]. Sort event cannot be emitted.');\n return;\n }\n // --- 2. Use the `items` computed property as the source of truth for the operation ---\n // This is the CRUCIAL FIX. We operate on the data as it was rendered.\n const currentItemsState = structuredClone(this.items());\n // --- 3. Perform the move operation based on the scenario ---\n if (previousStatusKey === currentStatusKey) {\n // --- Scenario A: Reordering within the same list ---\n const list = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from the old position and insert into the new position\n const [movedItem] = list.splice(previousIndex, 1);\n list.splice(currentIndex, 0, movedItem);\n // Re-index only this modified list\n list.forEach((item, idx) => (item.index = idx));\n }\n else {\n // --- Scenario B: Moving to a different list ---\n const sourceList = currentItemsState.filter((i) => i.statusKey === previousStatusKey);\n const destList = currentItemsState.filter((i) => i.statusKey === currentStatusKey);\n // Remove from source list\n const [movedItem] = sourceList.splice(previousIndex, 1);\n // Update its status and add to destination list\n movedItem.statusKey = currentStatusKey;\n destList.splice(currentIndex, 0, movedItem);\n // Re-index both affected lists\n sourceList.forEach((item, idx) => (item.index = idx));\n destList.forEach((item, idx) => (item.index = idx));\n }\n // --- 4. Map the changes back to a new version of the original dataSource ---\n // This preserves any extra properties the user might have on their data objects.\n const keyField = this.keyField();\n const statusKeyField = this.statusKeyField();\n const indexField = this.indexField();\n const updatedItemsMap = new Map(currentItemsState.map((i) => [i.id, i]));\n const finalDataSource = structuredClone(this.dataSource());\n finalDataSource.forEach((originalItem) => {\n const updatedItem = updatedItemsMap.get(originalItem[keyField]);\n if (updatedItem) {\n originalItem[indexField] = updatedItem.index;\n originalItem[statusKeyField] = updatedItem.statusKey;\n }\n });\n const movedItemId = movedItemOriginalData.id;\n const originalItemFromDataSource = finalDataSource.find((item) => item[keyField] === movedItemId);\n // --- 5. Emit the final, comprehensive event ---\n this.onSortChanged.emit({\n sender: this,\n nativeEvent: event.nativeEvent,\n // The original data object that was moved\n item: originalItemFromDataSource,\n // The complete, precisely re-indexed data source, ready for state update\n allItems: finalDataSource,\n currentIndex,\n previousIndex,\n currentStatusKey,\n previousStatusKey,\n });\n }\n getItemsById(key) {\n return this.items().filter((e) => e.statusKey === key);\n }\n getOriginalItemsById(key) {\n return this.dataSource().filter((e) => e[this.statusKeyField()] === key);\n }\n stringify(value) {\n return JSON.stringify(value);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.0.4\", type: AXKanbanComponent, isStandalone: true, selector: \"ax-kanban\", inputs: { hasActions: { classPropertyName: \"hasActions\", publicName: \"hasActions\", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: \"dragStartDelay\", publicName: \"dragStartDelay\", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: \"statuses\", publicName: \"statuses\", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: \"itemTemplate\", publicName: \"itemTemplate\", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: \"dataSource\", publicName: \"dataSource\", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: \"keyField\", publicName: \"keyField\", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: \"indexField\", publicName: \"indexField\", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: \"titleField\", publicName: \"titleField\", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: \"cssClassField\", publicName: \"cssClassField\", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: \"priorityField\", publicName: \"priorityField\", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: \"statusKeyField\", publicName: \"statusKeyField\", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: \"descriptionField\", publicName: \"descriptionField\", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: \"emptyTemplate\", publicName: \"emptyTemplate\", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: \"headerTemplate\", publicName: \"headerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: \"footerTemplate\", publicName: \"footerTemplate\", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: \"contentFooterTemplate\", publicName: \"contentFooterTemplate\", isSignal: true, isRequired: false, transformFunction: null }, tooltipTemplate: { classPropertyName: \"tooltipTemplate\", publicName: \"tooltipTemplate\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onSortChanged: \"onSortChanged\", onActionClick: \"onActionClick\" }, usesInheritance: true, ngImport: i0, template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n class=\\\"{{ item.cssClass }}\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n [tooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n >\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n [tooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n >\\n <ax-heading>\\n <ax-title>\\n <span class=\\\"ax-kanban-truncate\\\">{{ item.title }}</span>\\n @if (hasActions()) {\\n <ax-icon\\n class=\\\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\\\"\\n (click)=\\\"onActionClick.emit({ item, nativeEvent: $event, sender: this })\\\"\\n >\\n </ax-icon>\\n }\\n </ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"], dependencies: [{ kind: \"directive\", type: NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: AXDragDirective, selector: \"[axDrag]\", inputs: [\"dragData\", \"dragDisabled\", \"dragTransition\", \"dragElementClone\", \"dropZoneGroup\", \"dragStartDelay\", \"dragResetOnDblClick\", \"dragLockAxis\", \"dragClonedTemplate\", \"dragCursor\", \"dragBoundary\", \"dragTransitionDuration\"], outputs: [\"dragPositionChanged\"] }, { kind: \"directive\", type: AXDropListDirective, selector: \"[axDropList]\", inputs: [\"sortingDisabled\", \"dropListGroup\", \"dropListOrientation\"], outputs: [\"dropListDropped\"], exportAs: [\"axDropList\"] }, { kind: \"component\", type: 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: \"component\", type: AXDecoratorHeadingComponent, selector: \"ax-heading\", inputs: [\"darkMode\", \"color\", \"weight\"] }, { kind: \"component\", type: AXDecoratorIconComponent, selector: \"ax-icon\", inputs: [\"icon\"] }, { kind: \"directive\", type: AXTooltipDirective, selector: \"[axTooltip]\", inputs: [\"tooltipDisabled\", \"axTooltip\", \"axTooltipPlacement\", \"axTooltipOffsetX\", \"axTooltipOffsetY\", \"axTooltipOpenAfter\", \"axTooltipCloseAfter\"] }], encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.4\", ngImport: i0, type: AXKanbanComponent, decorators: [{\n type: Component,\n args: [{ selector: 'ax-kanban', encapsulation: ViewEncapsulation.None, imports: [\n NgClass,\n NgTemplateOutlet,\n AXDragDirective,\n AXDropListDirective,\n AXDecoratorGenericComponent,\n AXDecoratorHeadingComponent,\n AXDecoratorIconComponent,\n AXTooltipDirective,\n ], template: \"@for (status of filteredStatuses(); track status.key) {\\n <div class=\\\"ax-kanban-status {{ status.cssClass }}\\\">\\n <ax-header>\\n @if (headerTemplate()) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"headerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n } @else {\\n <ax-title>{{ status.title }}</ax-title>\\n }\\n </ax-header>\\n <ax-content axDropList dropListGroup=\\\"kanban\\\" [id]=\\\"stringify(status.key)\\\" (dropListDropped)=\\\"drop($event)\\\">\\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\\n <ng-container\\n [ngTemplateOutlet]=\\\"emptyTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n }\\n @if (itemTemplate()) {\\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n class=\\\"{{ item.cssClass }}\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n [tooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n >\\n <ng-container\\n [ngTemplateOutlet]=\\\"itemTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: item }\\\"\\n ></ng-container>\\n </div>\\n }\\n } @else {\\n @for (item of getItemsById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\n [dragCursor]=\\\"'grab'\\\"\\n [dragStartDelay]=\\\"dragStartDelay()\\\"\\n class=\\\"ax-kanban-item {{ item.cssClass }}\\\"\\n [ngClass]=\\\"`ax-kanban-${item.priority ?? 'primary'}-periority`\\\"\\n [tooltipDisabled]=\\\"tooltipTemplate() ? false : true\\\"\\n [axTooltip]=\\\"tooltipTemplate()\\\"\\n >\\n <ax-heading>\\n <ax-title>\\n <span class=\\\"ax-kanban-truncate\\\">{{ item.title }}</span>\\n @if (hasActions()) {\\n <ax-icon\\n class=\\\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\\\"\\n (click)=\\\"onActionClick.emit({ item, nativeEvent: $event, sender: this })\\\"\\n >\\n </ax-icon>\\n }\\n </ax-title>\\n <ax-subtitle>{{ item.description }}</ax-subtitle>\\n </ax-heading>\\n </div>\\n }\\n }\\n @if (contentFooterTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"contentFooterTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </ax-content>\\n @if (footerTemplate()) {\\n <ax-footer>\\n <ng-container\\n [ngTemplateOutlet]=\\\"footerTemplate()\\\"\\n [ngTemplateOutletContext]=\\\"{ $implicit: status }\\\"\\n ></ng-container>\\n </ax-footer>\\n }\\n </div>\\n}\\n\", styles: [\".ax-dark ax-kanban{--ax-comp-kanban-item-bg-color: var(--ax-sys-color-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-surface)}:root{--ax-comp-kanban-gap: 1rem;--ax-comp-kanban-status-gap: .5rem;--ax-comp-kanban-status-min-width: 20rem;--ax-comp-kanban-status-min-height: 30rem;--ax-comp-kanban-status-padding-block: .5rem;--ax-comp-kanban-status-padding-inline: .5rem;--ax-comp-kanban-item-padding-block: .25rem;--ax-comp-kanban-item-padding-inline: .5rem;--ax-comp-kanban-item-indicator-size: .125rem;--ax-comp-kanban-status-bg-color: var(--ax-sys-color-lighter-surface);--ax-comp-kanban-status-text-color: var(--ax-sys-color-on-lighter-surface);--ax-comp-kanban-item-bg-color: var(--ax-sys-color-lightest-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-lightest-surface);--ax-comp-kanban-primary-periority-color: var(--ax-sys-color-primary-surface);--ax-comp-kanban-highest-periority-color: var(--ax-sys-color-danger-dark-surface);--ax-comp-kanban-high-periority-color: var(--ax-sys-color-danger-surface);--ax-comp-kanban-medium-periority-color: var(--ax-sys-color-warning-surface);--ax-comp-kanban-low-periority-color: var(--ax-sys-color-success-light-surface);--ax-comp-kanban-lowest-periority-color: var(--ax-sys-color-success-lightest-surface)}ax-kanban{display:grid;overflow-x:auto;grid-auto-flow:column;gap:var(--ax-comp-kanban-gap);grid-auto-columns:var(--ax-comp-kanban-status-min-width)}ax-kanban .ax-kanban-status{display:flex;overflow-y:auto;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);border-radius:var(--ax-sys-border-radius);height:var(--ax-comp-kanban-status-min-height);color:rgba(var(--ax-comp-kanban-status-text-color));clip-path:inset(0 round var(--ax-sys-border-radius));background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-header{top:0;z-index:2;position:sticky;background-color:inherit}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center;padding-block-start:var(--ax-comp-kanban-status-padding-block)}ax-kanban .ax-kanban-status ax-content{flex:1;display:flex;flex-direction:column;gap:var(--ax-comp-kanban-status-gap);padding-inline:var(--ax-comp-kanban-status-padding-inline)}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{width:100%;position:relative;box-shadow:0 1px 2px #0000000d;color:rgba(var(--ax-comp-kanban-item-text-color));border-radius:calc(var(--ax-sys-border-radius) / 2);padding-block:var(--ax-comp-kanban-item-padding-block);padding-inline:var(--ax-comp-kanban-item-padding-inline);background-color:rgba(var(--ax-comp-kanban-item-bg-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{content:\\\"\\\";position:absolute;border-radius:9999px;inset-inline-start:.125rem;width:var(--ax-comp-kanban-item-indicator-size);height:calc(100% - var(--ax-comp-kanban-item-padding-inline))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{display:flex;font-size:1rem;font-weight:500;align-items:center;justify-content:space-between}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{bottom:0;z-index:2;position:sticky;background-color:inherit}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFDTCwyQkFBMkIsRUFDM0IsMkJBQTJCLEVBQzNCLHdCQUF3QixHQUN6QixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQW1CbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUFoQmxEOztRQWlCRSxlQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLG1CQUFjLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLGFBQVEsR0FBRyxLQUFLLENBQW1CLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxFQUF3QixDQUFDO1FBQzdDLGVBQVUsR0FBRyxLQUFLLEVBQTBCLENBQUM7UUFFN0MsYUFBUSxHQUFHLEtBQUssQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMvQixlQUFVLEdBQUcsS0FBSyxDQUFTLE9B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LENBQUM7SUFDekQsQ0FBQztJQUVTLG9CQUFvQixDQUFDLEdBQVE7UUFDckMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVTLFNBQVMsQ0FBQyxLQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDOzhHQTFLVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixtakZDNUI5QiwwK0ZBa0ZBLG92SURoRUksT0FBTyxvRkFDUCxnQkFBZ0Isb0pBQ2hCLGVBQWUsMlRBQ2YsbUJBQW1CLHNMQUNuQiwyQkFBMkIseUxBQzNCLDJCQUEyQixnR0FDM0Isd0JBQXdCLHNFQUN4QixrQkFBa0I7OzJGQUdULGlCQUFpQjtrQkFoQjdCLFNBQVM7K0JBQ0UsV0FBVyxpQkFHTixpQkFBaUIsQ0FBQyxJQUFJLFdBQzVCO3dCQUNQLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsMkJBQTJCO3dCQUMzQiwyQkFBMkI7d0JBQzNCLHdCQUF3Qjt3QkFDeEIsa0JBQWtCO3FCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5YQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRHJhZ0RpcmVjdGl2ZSwgQVhEcm9wTGlzdERpcmVjdGl2ZSwgQVhEcm9wTGlzdERyb3BwZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsXG4gIEFYRGVjb3JhdG9ySGVhZGluZ0NvbXBvbmVudCxcbiAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBBWFRvb2x0aXBEaXJlY3RpdmUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBvdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhLYW5iYW5BY3Rpb25DbGlja0V2ZW50LCBBWEthbmJhbkl0ZW0sIEFYS2FuYmFuU29ydEV2ZW50LCBBWEthbmJhblN0YXR1cyB9IGZyb20gJy4va2FuYmFuLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgta2FuYmFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2thbmJhbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYRHJhZ0RpcmVjdGl2ZSxcbiAgICBBWERyb3BMaXN0RGlyZWN0aXZlLFxuICAgIEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCxcbiAgICBBWERlY29yYXRvckhlYWRpbmdDb21wb25lbnQsXG4gICAgQVhEZWNvcmF0b3JJY29uQ29tcG9uZW50LFxuICAgIEFYVG9vbHRpcERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhLYW5iYW5Db21wb25lbnQgZXh0ZW5kcyBOWENvbXBvbmVudCB7XG4gIGhhc0FjdGlvbnMgPSBpbnB1dChmYWxzZSk7XG4gIGRyYWdTdGFydERlbGF5ID0gaW5wdXQoMCk7XG4gIHN0YXR1c2VzID0gaW5wdXQ8QVhLYW5iYW5TdGF0dXNbXT4oW10pO1xuICBpdGVtVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcbiAgZGF0YVNvdXJjZSA9IGlucHV0PEFYS2FuYmFuSXRlbVtdIHwgYW55W10+KCk7XG5cbiAga2V5RmllbGQgPSBpbnB1dDxzdHJpbmc+KCdpZCcpO1xuICBpbmRleEZpZWxkID0gaW5wdXQ8c3RyaW5nPignaW5kZXgnKTtcbiAgdGl0bGVGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3RpdGxlJyk7XG4gIGNzc0NsYXNzRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdjc3NDbGFzcycpO1xuICBwcmlvcml0eUZpZWxkID0gaW5wdXQ8c3RyaW5nPigncHJpb3JpdHknKTtcbiAgc3RhdHVzS2V5RmllbGQgPSBpbnB1dDxzdHJpbmc+KCdzdGF0dXNLZXknKTtcbiAgZGVzY3JpcHRpb25GaWVsZCA9IGlucHV0PHN0cmluZz4oJ2Rlc2NyaXB0aW9uJyk7XG4gIGVtcHR5VGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcbiAgaGVhZGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcbiAgZm9vdGVyVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjx1bmtub3duPj4oKTtcbiAgY29udGVudEZvb3RlclRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIHRvb2x0aXBUZW1wbGF0ZSA9IGlucHV0PHN0cmluZyB8IFRlbXBsYXRlUmVmPHVua25vd24+PigpO1xuXG4gIG9uU29ydENoYW5nZWQgPSBvdXRwdXQ8QVhLYW5iYW5Tb3J0RXZlbnQ+KCk7XG4gIG9uQWN0aW9uQ2xpY2sgPSBvdXRwdXQ8QVhLYW5iYW5BY3Rpb25DbGlja0V2ZW50PigpO1xuXG4gIHByb3RlY3RlZCBpdGVtcyA9IGNvbXB1dGVkPEFYS2FuYmFuSXRlbVtdPigoKSA9PiB7XG4gICAgLy8gLi4uIHlvdXIgZXhjZWxsZW50IGdhcC1maWxsaW5nIGluZGV4IGxvZ2ljIHJlbWFpbnMgdGhlIHNhbWUgLi4uXG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IHRoaXMuZGF0YVNvdXJjZSgpIHx8IFtdO1xuICAgIGNvbnN0IG1hcHBlZEl0ZW1zID0gZGF0YVNvdXJjZS5tYXA8QVhLYW5iYW5JdGVtPigoaXRlbTogYW55KSA9PiAoe1xuICAgICAgaWQ6IGl0ZW1bdGhpcy5rZXlGaWVsZCgpXSxcbiAgICAgIGluZGV4OiBpdGVtW3RoaXMuaW5kZXhGaWVsZCgpXSxcbiAgICAgIHRpdGxlOiBpdGVtW3RoaXMudGl0bGVGaWVsZCgpXSxcbiAgICAgIGNzc0NsYXNzOiBpdGVtW3RoaXMuY3NzQ2xhc3NGaWVsZCgpXSxcbiAgICAgIHByaW9yaXR5OiBpdGVtW3RoaXMucHJpb3JpdHlGaWVsZCgpXSxcbiAgICAgIHN0YXR1c0tleTogaXRlbVt0aGlzLnN0YXR1c0tleUZpZWxkKCldLFxuICAgICAgZGVzY3JpcHRpb246IGl0ZW1bdGhpcy5kZXNjcmlwdGlvbkZpZWxkKCldLFxuICAgIH0pKTtcblxuICAgIGNvbnN0IGl0ZW1zQnlTdGF0dXMgPSBuZXcgTWFwPGFueSwgQVhLYW5iYW5JdGVtW10+KCk7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIG1hcHBlZEl0ZW1zKSB7XG4gICAgICBpZiAoIWl0ZW1zQnlTdGF0dXMuaGFzKGl0ZW0uc3RhdHVzS2V5KSkge1xuICAgICAgICBpdGVtc0J5U3RhdHVzLnNldChpdGVtLnN0YXR1c0tleSwgW10pO1xuICAgICAgfVxuICAgICAgaXRlbXNCeVN0YXR1cy5nZXQoaXRlbS5zdGF0dXNLZXkpLnB1c2goaXRlbSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmluYWxQcm9jZXNzZWRJdGVtczogQVhLYW5iYW5JdGVtW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGl0ZW1zQnlTdGF0dXMudmFsdWVzKCkpIHtcbiAgICAgIGNvbnN0IGNvcnJlY3RseUluZGV4ZWRJdGVtczogQVhLYW5iYW5JdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IGl0ZW1zVG9CZUluZGV4ZWQ6IEFYS2FuYmFuSXRlbVtdID0gW107XG4gICAgICBjb25zdCB0YWtlbkluZGljZXMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBncm91cCkge1xuICAgICAgICBjb25zdCBoYXNWYWxpZEluZGV4ID0gaXRlbS5pbmRleCAhPSBudWxsICYmIHR5cGVvZiBpdGVtLmluZGV4ID09PSAnbnVtYmVyJyAmJiAhdGFrZW5JbmRpY2VzLmhhcyhpdGVtLmluZGV4KTtcbiAgICAgICAgaWYgKGhhc1ZhbGlkSW5kZXgpIHtcbiAgICAgICAgICB0YWtlbkluZGljZXMuYWRkKGl0ZW0uaW5kZXgpO1xuICAgICAgICAgIGNvcnJlY3RseUluZGV4ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1zVG9CZUluZGV4ZWQucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbGV0IGN1cnJlbnRJbmRleCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgaXRlbXNUb0JlSW5kZXhlZCkge1xuICAgICAgICB3aGlsZSAodGFrZW5JbmRpY2VzLmhhcyhjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbS5pbmRleCA9IGN1cnJlbnRJbmRleDtcbiAgICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm9jZXNzZWRHcm91cCA9IFsuLi5jb3JyZWN0bHlJbmRleGVkSXRlbXMsIC4uLml0ZW1zVG9CZUluZGV4ZWRdO1xuICAgICAgcHJvY2Vzc2VkR3JvdXAuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgZmluYWxQcm9jZXNzZWRJdGVtcy5wdXNoKC4uLnByb2Nlc3NlZEdyb3VwKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbmFsUHJvY2Vzc2VkSXRlbXM7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBmaWx0ZXJlZFN0YXR1c2VzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdGF0dXNlcygpLnNvcnQoKGEsIGIpID0+IGEuaW5kZXggLSBiLmluZGV4KSk7XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgdGhlIGRyb3AgZXZlbnQuIEl0IHVzZXMgdGhlIGNvbXBvbmVudCdzIGN1cnJlbnQgcmVuZGVyZWQgc3RhdGUgKGB0aGlzLml0ZW1zYClcbiAgICogYXMgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIG9wZXJhdGlvbiwgY2FsY3VsYXRlcyB0aGUgbmV3IHN0YXRlIHdpdGggcHJlY2lzZVxuICAgKiByZS1pbmRleGluZywgYW5kIGVtaXRzIGEgY29tcHJlaGVuc2l2ZSBldmVudCB3aXRoIHRoZSB1cGRhdGVkIGRhdGEgc291cmNlLlxuICAgKi9cbiAgZHJvcChldmVudDogQVhEcm9wTGlzdERyb3BwZWRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHsgaXRlbTogZHJvcHBlZEl0ZW1EaXJlY3RpdmUsIGN1cnJlbnRJbmRleCwgcHJldmlvdXNJbmRleCwgY29udGFpbmVyLCBwcmV2aW91c0NvbnRhaW5lciB9ID0gZXZlbnQ7XG5cbiAgICAvLyAtLS0gMS4gR2V0IGlkZW50aWZpZXJzIGFuZCB0aGUgaXRlbSdzIG9yaWdpbmFsIGRhdGEgLS0tXG4gICAgY29uc3QgY3VycmVudFN0YXR1c0tleSA9IEpTT04ucGFyc2UoY29udGFpbmVyLmVsZW1lbnQuaWQpO1xuICAgIGNvbnN0IHByZXZpb3VzU3RhdHVzS2V5ID0gSlNPTi5wYXJzZShwcmV2aW91c0NvbnRhaW5lci5lbGVtZW50LmlkKTtcbiAgICBjb25zdCBtb3ZlZEl0ZW1PcmlnaW5hbERhdGEgPSBkcm9wcGVkSXRlbURpcmVjdGl2ZS5kcmFnRGF0YSgpIGFzIEFYS2FuYmFuSXRlbTtcblxuICAgIGlmICghbW92ZWRJdGVtT3JpZ2luYWxEYXRhKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0FYS2FuYmFuOiBEcmFnZ2VkIGl0ZW0gaGFzIG5vIFtkcmFnRGF0YV0uIFNvcnQgZXZlbnQgY2Fubm90IGJlIGVtaXR0ZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gLS0tIDIuIFVzZSB0aGUgYGl0ZW1zYCBjb21wdXRlZCBwcm9wZXJ0eSBhcyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgb3BlcmF0aW9uIC0tLVxuICAgIC8vIFRoaXMgaXMgdGhlIENSVUNJQUwgRklYLiBXZSBvcGVyYXRlIG9uIHRoZSBkYXRhIGFzIGl0IHdhcyByZW5kZXJlZC5cbiAgICBjb25zdCBjdXJyZW50SXRlbXNTdGF0ZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLml0ZW1zKCkpO1xuXG4gICAgLy8gLS0tIDMuIFBlcmZvcm0gdGhlIG1vdmUgb3BlcmF0aW9uIGJhc2VkIG9uIHRoZSBzY2VuYXJpbyAtLS1cbiAgICBpZiAocHJldmlvdXNTdGF0dXNLZXkgPT09IGN1cnJlbnRTdGF0dXNLZXkpIHtcbiAgICAgIC8vIC0tLSBTY2VuYXJpbyBBOiBSZW9yZGVyaW5nIHdpdGhpbiB0aGUgc2FtZSBsaXN0IC0tLVxuICAgICAgY29uc3QgbGlzdCA9IGN1cnJlbnRJdGVtc1N0YXRlLmZpbHRlcigoaSkgPT4gaS5zdGF0dXNLZXkgPT09IGN1cnJlbnRTdGF0dXNLZXkpO1xuXG4gICAgICAvLyBSZW1vdmUgZnJvbSB0aGUgb2xkIHBvc2l0aW9uIGFuZCBpbnNlcnQgaW50byB0aGUgbmV3IHBvc2l0aW9uXG4gICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IGxpc3Quc3BsaWNlKHByZXZpb3VzSW5kZXgsIDEpO1xuICAgICAgbGlzdC5zcGxpY2UoY3VycmVudEluZGV4LCAwLCBtb3ZlZEl0ZW0pO1xuXG4gICAgICAvLyBSZS1pbmRleCBvbmx5IHRoaXMgbW9kaWZpZWQgbGlzdFxuICAgICAgbGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIC0tLSBTY2VuYXJpbyBCOiBNb3ZpbmcgdG8gYSBkaWZmZXJlbnQgbGlzdCAtLS1cbiAgICAgIGNvbnN0IHNvdXJjZUxpc3QgPSBjdXJyZW50SXRlbXNTdGF0ZS5maWx0ZXIoKGkpID0+IGkuc3RhdHVzS2V5ID09PSBwcmV2aW91c1N0YXR1c0tleSk7XG4gICAgICBjb25zdCBkZXN0TGlzdCA9IGN1cnJlbnRJdGVtc1N0YXRlLmZpbHRlcigoaSkgPT4gaS5zdGF0dXNLZXkgPT09IGN1cnJlbnRTdGF0dXNLZXkpO1xuXG4gICAgICAvLyBSZW1vdmUgZnJvbSBzb3VyY2UgbGlzdFxuICAgICAgY29uc3QgW21vdmVkSXRlbV0gPSBzb3VyY2VMaXN0LnNwbGljZShwcmV2aW91c0luZGV4LCAxKTtcblxuICAgICAgLy8gVXBkYXRlIGl0cyBzdGF0dXMgYW5kIGFkZCB0byBkZXN0aW5hdGlvbiBsaXN0XG4gICAgICBtb3ZlZEl0ZW0uc3RhdHVzS2V5ID0gY3VycmVudFN0YXR1c0tleTtcbiAgICAgIGRlc3RMaXN0LnNwbGljZShjdXJyZW50SW5kZXgsIDAsIG1vdmVkSXRlbSk7XG5cbiAgICAgIC8vIFJlLWluZGV4IGJvdGggYWZmZWN0ZWQgbGlzdHNcbiAgICAgIHNvdXJjZUxpc3QuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiAoaXRlbS5pbmRleCA9IGlkeCkpO1xuICAgICAgZGVzdExpc3QuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiAoaXRlbS5pbmRleCA9IGlkeCkpO1xuICAgIH1cblxuICAgIC8vIC0tLSA0LiBNYXAgdGhlIGNoYW5nZXMgYmFjayB0byBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBvcmlnaW5hbCBkYXRhU291cmNlIC0tLVxuICAgIC8vIFRoaXMgcHJlc2VydmVzIGFueSBleHRyYSBwcm9wZXJ0aWVzIHRoZSB1c2VyIG1pZ2h0IGhhdmUgb24gdGhlaXIgZGF0YSBvYmplY3RzLlxuICAgIGNvbnN0IGtleUZpZWxkID0gdGhpcy5rZXlGaWVsZCgpO1xuICAgIGNvbnN0IHN0YXR1c0tleUZpZWxkID0gdGhpcy5zdGF0dXNLZXlGaWVsZCgpO1xuICAgIGNvbnN0IGluZGV4RmllbGQgPSB0aGlzLmluZGV4RmllbGQoKTtcblxuICAgIGNvbnN0IHVwZGF0ZWRJdGVtc01hcCA9IG5ldyBNYXAoY3VycmVudEl0ZW1zU3RhdGUubWFwKChpKSA9PiBbaS5pZCwgaV0pKTtcbiAgICBjb25zdCBmaW5hbERhdGFTb3VyY2UgPSBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5kYXRhU291cmNlKCkpO1xuXG4gICAgZmluYWxEYXRhU291cmNlLmZvckVhY2goKG9yaWdpbmFsSXRlbSkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZEl0ZW0gPSB1cGRhdGVkSXRlbXNNYXAuZ2V0KG9yaWdpbmFsSXRlbVtrZXlGaWVsZF0pO1xuICAgICAgaWYgKHVwZGF0ZWRJdGVtKSB7XG4gICAgICAgIG9yaWdpbmFsSXRlbVtpbmRleEZpZWxkXSA9IHVwZGF0ZWRJdGVtLmluZGV4O1xuICAgICAgICBvcmlnaW5hbEl0ZW1bc3RhdHVzS2V5RmllbGRdID0gdXBkYXRlZEl0ZW0uc3RhdHVzS2V5O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgbW92ZWRJdGVtSWQgPSBtb3ZlZEl0ZW1PcmlnaW5hbERhdGEuaWQ7XG4gICAgY29uc3Qgb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UgPSBmaW5hbERhdGFTb3VyY2UuZmluZCgoaXRlbSkgPT4gaXRlbVtrZXlGaWVsZF0gPT09IG1vdmVkSXRlbUlkKTtcblxuICAgIC8vIC0tLSA1LiBFbWl0IHRoZSBmaW5hbCwgY29tcHJlaGVuc2l2ZSBldmVudCAtLS1cbiAgICB0aGlzLm9uU29ydENoYW5nZWQuZW1pdCh7XG4gICAgICBzZW5kZXI6IHRoaXMsXG4gICAgICBuYXRpdmVFdmVudDogZXZlbnQubmF0aXZlRXZlbnQsXG4gICAgICAvLyBUaGUgb3JpZ2luYWwgZGF0YSBvYmplY3QgdGhhdCB3YXMgbW92ZWRcbiAgICAgIGl0ZW06IG9yaWdpbmFsSXRlbUZyb21EYXRhU291cmNlLFxuICAgICAgLy8gVGhlIGNvbXBsZXRlLCBwcmVjaXNlbHkgcmUtaW5kZXhlZCBkYXRhIHNvdXJjZSwgcmVhZHkgZm9yIHN0YXRlIHVwZGF0ZVxuICAgICAgYWxsSXRlbXM6IGZpbmFsRGF0YVNvdXJjZSxcbiAgICAgIGN1cnJlbnRJbmRleCxcbiAgICAgIHByZXZpb3VzSW5kZXgsXG4gICAgICBjdXJyZW50U3RhdHVzS2V5LFxuICAgICAgcHJldmlvdXNTdGF0dXNLZXksXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0SXRlbXNCeUlkKGtleTogYW55KTogQVhLYW5iYW5JdGVtW10ge1xuICAgIHJldHVybiB0aGlzLml0ZW1zKCkuZmlsdGVyKChlKSA9PiBlLnN0YXR1c0tleSA9PT0ga2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRPcmlnaW5hbEl0ZW1zQnlJZChrZXk6IGFueSk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU291cmNlKCkuZmlsdGVyKChlKSA9PiBlW3RoaXMuc3RhdHVzS2V5RmllbGQoKV0gPT09IGtleSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc3RyaW5naWZ5KHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cbn1cbiIsIkBmb3IgKHN0YXR1cyBvZiBmaWx0ZXJlZFN0YXR1c2VzKCk7IHRyYWNrIHN0YXR1cy5rZXkpIHtcbiAgPGRpdiBjbGFzcz1cImF4LWthbmJhbi1zdGF0dXMge3sgc3RhdHVzLmNzc0NsYXNzIH19XCI+XG4gICAgPGF4LWhlYWRlcj5cbiAgICAgIEBpZiAoaGVhZGVyVGVtcGxhdGUoKSkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVhZGVyVGVtcGxhdGUoKVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBzdGF0dXMgfVwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8YXgtdGl0bGU+e3sgc3RhdHVzLnRpdGxlIH19PC9heC10aXRsZT5cbiAgICAgIH1cbiAgICA8L2F4LWhlYWRlcj5cbiAgICA8YXgtY29udGVudCBheERyb3BMaXN0IGRyb3BMaXN0R3JvdXA9XCJrYW5iYW5cIiBbaWRdPVwic3RyaW5naWZ5KHN0YXR1cy5rZXkpXCIgKGRyb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIj5cbiAgICAgIEBpZiAoZW1wdHlUZW1wbGF0ZSgpICYmIGdldE9yaWdpbmFsSXRlbXNCeUlkKHN0YXR1cy5rZXkpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZW1wdHlUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgfVxuICAgICAgQGlmIChpdGVtVGVtcGxhdGUoKSkge1xuICAgICAgICBAZm9yIChpdGVtIG9mIGdldE9yaWdpbmFsSXRlbXNCeUlkKHN0YXR1cy5rZXkpOyB0cmFjayBpdGVtW2tleUZpZWxkKCldKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgYXhEcmFnXG4gICAgICAgICAgICBbZHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgICBjbGFzcz1cInt7IGl0ZW0uY3NzQ2xhc3MgfX1cIlxuICAgICAgICAgICAgW2RyYWdTdGFydERlbGF5XT1cImRyYWdTdGFydERlbGF5KClcIlxuICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCJ0b29sdGlwVGVtcGxhdGUoKSA/IGZhbHNlIDogdHJ1ZVwiXG4gICAgICAgICAgICBbYXhUb29sdGlwXT1cInRvb2x0aXBUZW1wbGF0ZSgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIml0ZW1UZW1wbGF0ZSgpXCJcbiAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGZvciAoaXRlbSBvZiBnZXRJdGVtc0J5SWQoc3RhdHVzLmtleSk7IHRyYWNrIGl0ZW0uaWQpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBheERyYWdcbiAgICAgICAgICAgIFtkcmFnRGF0YV09XCJpdGVtXCJcbiAgICAgICAgICAgIFtkcmFnQ3Vyc29yXT1cIidncmFiJ1wiXG4gICAgICAgICAgICBbZHJhZ1N0YXJ0RGVsYXldPVwiZHJhZ1N0YXJ0RGVsYXkoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImF4LWthbmJhbi1pdGVtICB7eyBpdGVtLmNzc0NsYXNzIH19XCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cImBheC1rYW5iYW4tJHtpdGVtLnByaW9yaXR5ID8/ICdwcmltYXJ5J30tcGVyaW9yaXR5YFwiXG4gICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cInRvb2x0aXBUZW1wbGF0ZSgpID8gZmFsc2UgOiB0cnVlXCJcbiAgICAgICAgICAgIFtheFRvb2x0aXBdPVwidG9vbHRpcFRlbXBsYXRlKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxheC1oZWFkaW5nPlxuICAgICAgICAgICAgICA8YXgtdGl0bGU+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1rYW5iYW4tdHJ1bmNhdGVcIj57eyBpdGVtLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoaGFzQWN0aW9ucygpKSB7XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1tb3JlLWhvcml6b250YWwgYXgta2FuYmFuLWFjdGlvbi1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2suZW1pdCh7IGl0ZW0sIG5hdGl2ZUV2ZW50OiAkZXZlbnQsIHNlbmRlcjogdGhpcyB9KVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8L2F4LWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L2F4LXRpdGxlPlxuICAgICAgICAgICAgICA8YXgtc3VidGl0bGU+e3sgaXRlbS5kZXNjcmlwdGlvbiB9fTwvYXgtc3VidGl0bGU+XG4gICAgICAgICAgICA8L2F4LWhlYWRpbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIEBpZiAoY29udGVudEZvb3RlclRlbXBsYXRlKCkpIHtcbiAgICAgICAgPGF4LWZvb3Rlcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50Rm9vdGVyVGVtcGxhdGUoKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYXgtZm9vdGVyPlxuICAgICAgfVxuICAgIDwvYXgtY29udGVudD5cbiAgICBAaWYgKGZvb3RlclRlbXBsYXRlKCkpIHtcbiAgICAgIDxheC1mb290ZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZSgpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHN0YXR1cyB9XCJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9heC1mb290ZXI+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvbXBvbmVudHMta2FuYmFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tcG9uZW50cy9rYW5iYW4vc3JjL2Fjb3JleC1jb21wb25lbnRzLWthbmJhbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
@@ -52,7 +52,7 @@ class AXPaintToolsSelectorComponent {
|
|
52
52
|
this.service.toggleClear.update((prev) => !prev);
|
53
53
|
}
|
54
54
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPaintToolsSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: AXPaintToolsSelectorComponent, isStandalone: true, selector: "ax-paint-tools-selector", providers: [{ provide: AXComponent, useExisting: AXPaintToolsSelectorComponent }], ngImport: i0, template: "<ax-button\n [axTooltip]=\"'@acorex:paint.tools.pen' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'pen' ? true : false\"\n [color]=\"this.service.activeToolState() === 'pen' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n</ax-button>\n\n<ax-button\n [axTooltip]=\"'@acorex:paint.tools.highlight' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'highlight' ? true : false\"\n [color]=\"this.service.activeToolState() === 'highlight' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n</ax-button>\n\n<ax-button\n [axTooltip]=\"'@acorex:paint.tools.eraser' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('eraser')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'eraser' ? true : false\"\n [color]=\"this.service.activeToolState() === 'eraser' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-eraser\"></ax-icon>\n</ax-button>\n\n<ax-button\n [axTooltip]=\"'@acorex:paint.actions.reset' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"clear()\"\n look=\"blank\"\n>\n <i class=\"fa-solid fa-rotate\"></i>\n</ax-button>\n", styles: [""], dependencies: [{ kind: "component", type: 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: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltip", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
55
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.0.4", type: AXPaintToolsSelectorComponent, isStandalone: true, selector: "ax-paint-tools-selector", providers: [{ provide: AXComponent, useExisting: AXPaintToolsSelectorComponent }], ngImport: i0, template: "<ax-button\n [axTooltip]=\"'@acorex:paint.tools.pen' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('pen')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'pen' ? true : false\"\n [color]=\"this.service.activeToolState() === 'pen' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-pen\"></ax-icon>\n</ax-button>\n\n<ax-button\n [axTooltip]=\"'@acorex:paint.tools.highlight' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('highlight')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'highlight' ? true : false\"\n [color]=\"this.service.activeToolState() === 'highlight' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-highlight\"></ax-icon>\n</ax-button>\n\n<ax-button\n [axTooltip]=\"'@acorex:paint.tools.eraser' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"changeToolHandler('eraser')\"\n look=\"blank\"\n [selected]=\"this.service.activeToolState() === 'eraser' ? true : false\"\n [color]=\"this.service.activeToolState() === 'eraser' ? 'primary' : 'default'\"\n>\n <ax-icon class=\"ax-icon ax-icon-eraser\"></ax-icon>\n</ax-button>\n\n<ax-button\n [axTooltip]=\"'@acorex:paint.actions.reset' | translate | async\"\n axTooltipPlacement=\"top\"\n (onClick)=\"clear()\"\n look=\"blank\"\n>\n <i class=\"fa-solid fa-rotate\"></i>\n</ax-button>\n", styles: [""], dependencies: [{ kind: "component", type: 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: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "directive", type: AXTooltipDirective, selector: "[axTooltip]", inputs: ["tooltipDisabled", "axTooltip", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
56
56
|
}
|
57
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXPaintToolsSelectorComponent, decorators: [{
|
58
58
|
type: Component,
|