@acorex/components 20.1.4 → 20.1.6
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/action-sheet/index.d.ts +2 -1
- package/badge/index.d.ts +3 -4
- package/check-box/index.d.ts +2 -1
- package/color-box/index.d.ts +1 -0
- package/color-palette/index.d.ts +2 -0
- package/conversation/index.d.ts +23 -27
- package/fesm2022/acorex-components-action-sheet.mjs +22 -11
- package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
- package/fesm2022/acorex-components-audio-wave.mjs +2 -2
- package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
- package/fesm2022/acorex-components-autocomplete.mjs +2 -2
- package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
- package/fesm2022/acorex-components-badge.mjs +5 -6
- package/fesm2022/acorex-components-badge.mjs.map +1 -1
- package/fesm2022/acorex-components-calendar.mjs +2 -2
- package/fesm2022/acorex-components-calendar.mjs.map +1 -1
- package/fesm2022/acorex-components-check-box.mjs +8 -6
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-box.mjs +11 -2
- package/fesm2022/acorex-components-color-box.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +23 -7
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-comment.mjs +2 -2
- package/fesm2022/acorex-components-comment.mjs.map +1 -1
- package/fesm2022/acorex-components-conversation.mjs +41 -30
- package/fesm2022/acorex-components-conversation.mjs.map +1 -1
- package/fesm2022/acorex-components-cron-job.mjs +14 -14
- package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
- package/fesm2022/acorex-components-data-pager.mjs +1 -1
- package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +3 -3
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +2 -2
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +5 -4
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-image-editor.mjs +27 -20
- package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +10 -4
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-list.mjs +2 -2
- package/fesm2022/acorex-components-list.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +1 -1
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-number-box-2.mjs +1 -3
- package/fesm2022/acorex-components-number-box-2.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +46 -16
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-password-box.mjs +2 -2
- package/fesm2022/acorex-components-password-box.mjs.map +1 -1
- package/fesm2022/acorex-components-scheduler.mjs +28 -29
- package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +2 -2
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +2 -2
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +2 -2
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-time-duration.mjs +8 -8
- package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +1 -1
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +20 -22
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-tree-view.mjs +40 -10
- package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
- package/fesm2022/acorex-components-uploader.mjs +9 -9
- package/fesm2022/acorex-components-uploader.mjs.map +1 -1
- package/image-editor/index.d.ts +1 -2
- package/kanban/index.d.ts +7 -2
- package/package.json +5 -5
- package/paint/index.d.ts +17 -7
- package/tooltip/index.d.ts +4 -4
- package/tree-view/index.d.ts +3 -0
@@ -18,6 +18,10 @@ class AXKanbanComponent extends NXComponent {
|
|
18
18
|
this.priorityField = input('priority');
|
19
19
|
this.statusKeyField = input('statusKey');
|
20
20
|
this.descriptionField = input('description');
|
21
|
+
this.emptyTemplate = input();
|
22
|
+
this.headerTemplate = input();
|
23
|
+
this.footerTemplate = input();
|
24
|
+
this.contentFooterTemplate = input();
|
21
25
|
this.onSortChanged = output();
|
22
26
|
this.items = computed(() => {
|
23
27
|
// ... your excellent gap-filling index logic remains the same ...
|
@@ -140,15 +144,17 @@ class AXKanbanComponent extends NXComponent {
|
|
140
144
|
previousStatusKey,
|
141
145
|
});
|
142
146
|
}
|
143
|
-
|
144
|
-
// This function remains the same and continues to work perfectly
|
147
|
+
getItemsById(key) {
|
145
148
|
return this.items().filter((e) => e.statusKey === key);
|
146
149
|
}
|
150
|
+
getOriginalItemsById(key) {
|
151
|
+
return this.dataSource().filter((e) => e[this.statusKeyField()] === key);
|
152
|
+
}
|
147
153
|
stringify(value) {
|
148
154
|
return JSON.stringify(value);
|
149
155
|
}
|
150
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
151
|
-
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 } }, outputs: { onSortChanged: "onSortChanged" }, usesInheritance: true, ngImport: i0, template: "@for (status of filteredStatuses(); track status.key) {\n <div\n
|
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 }); }
|
152
158
|
}
|
153
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXKanbanComponent, decorators: [{
|
154
160
|
type: Component,
|
@@ -159,7 +165,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
|
|
159
165
|
AXDropListDirective,
|
160
166
|
AXDecoratorGenericComponent,
|
161
167
|
AXDecoratorHeadingComponent,
|
162
|
-
], template: "@for (status of filteredStatuses(); track status.key) {\n <div\n
|
168
|
+
], 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"] }]
|
163
169
|
}] });
|
164
170
|
|
165
171
|
/**
|
@@ -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.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 getListById(key) {\n // This function remains the same and continues to work perfectly\n return this.items().filter((e) => e.statusKey === 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 } }, outputs: { onSortChanged: \"onSortChanged\" }, usesInheritance: true, ngImport: i0, template: \"@for (status of filteredStatuses(); track status.key) {\\n <div\\n axDropList\\n dropListGroup=\\\"kanban\\\"\\n [id]=\\\"stringify(status.key)\\\"\\n (dropListDropped)=\\\"drop($event)\\\"\\n class=\\\"ax-kanban-status {{ status.cssClass }}\\\"\\n >\\n <ax-title>{{ status.title }}</ax-title>\\n @if (itemTemplate()) {\\n @for (item of dataSource(); track item) {\\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 getListById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\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 </div>\\n}\\n\", styles: [\":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-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-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);min-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));padding-block:var(--ax-comp-kanban-status-padding-block);padding-inline:var(--ax-comp-kanban-status-padding-inline);background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center}ax-kanban .ax-kanban-status .ax-kanban-item{width:100%;position:relative;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-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-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item>ax-heading>ax-title{font-size:1rem;font-weight:500}\\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\\n axDropList\\n dropListGroup=\\\"kanban\\\"\\n [id]=\\\"stringify(status.key)\\\"\\n (dropListDropped)=\\\"drop($event)\\\"\\n class=\\\"ax-kanban-status {{ status.cssClass }}\\\"\\n >\\n <ax-title>{{ status.title }}</ax-title>\\n @if (itemTemplate()) {\\n @for (item of dataSource(); track item) {\\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 getListById(status.key); track item.id) {\\n <div\\n axDrag\\n [dragData]=\\\"item\\\"\\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 </div>\\n}\\n\", styles: [\":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-surface);--ax-comp-kanban-item-text-color: var(--ax-sys-color-on-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);min-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));padding-block:var(--ax-comp-kanban-status-padding-block);padding-inline:var(--ax-comp-kanban-status-padding-inline);background-color:rgba(var(--ax-comp-kanban-status-bg-color))}ax-kanban .ax-kanban-status>ax-title{width:100%;display:block;font-weight:600;font-size:1.25rem;text-align:center}ax-kanban .ax-kanban-status .ax-kanban-item{width:100%;position:relative;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-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-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-comp-kanban-primary-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-comp-kanban-highest-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-comp-kanban-high-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-comp-kanban-medium-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-comp-kanban-low-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-comp-kanban-lowest-periority-color))}ax-kanban .ax-kanban-status .ax-kanban-item>ax-heading>ax-title{font-size:1rem;font-weight:500}\\n\"] }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMva2FuYmFuL3NyYy9saWIva2FuYmFuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUEwQixNQUFNLHVCQUF1QixDQUFDO0FBQ3JHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWlCbkcsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFdBQVc7SUFkbEQ7O1FBZUUsYUFBUSxHQUFHLEtBQUssQ0FBbUIsRUFBRSxDQUFDLENBQUM7UUFDdkMsaUJBQVksR0FBRyxLQUFLLEVBQXdCLENBQUM7UUFDN0MsZUFBVSxHQUFHLEtBQUssRUFBMEIsQ0FBQztRQUU3QyxhQUFRLEdBQUcsS0FBSyxDQUFTLElBQUksQ0FBQyxDQUFDO1FBQy9CLGVBQVUsR0FBRyxLQUFLLENBQVMsT0FBTyxDQUFDLENBQUM7UUFDcEMsZUFBVSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUNwQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxVQUFVLENBQUMsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLEtBQUssQ0FBUyxVQUFVLENBQUMsQ0FBQztRQUMxQyxt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bUI7d0JBQ25CLDJCQUEyQjt3QkFDM0IsMkJBQTJCO3FCQUM1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5YQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jZGsvY29tbW9uJztcbmltcG9ydCB7IEFYRHJhZ0RpcmVjdGl2ZSwgQVhEcm9wTGlzdERpcmVjdGl2ZSwgQVhEcm9wTGlzdERyb3BwZWRFdmVudCB9IGZyb20gJ0BhY29yZXgvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBBWERlY29yYXRvckdlbmVyaWNDb21wb25lbnQsIEFYRGVjb3JhdG9ySGVhZGluZ0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEthbmJhbkl0ZW0sIEFYS2FuYmFuU29ydEV2ZW50LCBBWEthbmJhblN0YXR1cyB9IGZyb20gJy4va2FuYmFuLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgta2FuYmFuJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2thbmJhbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2thbmJhbi5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBpbXBvcnRzOiBbXG4gICAgTmdDbGFzcyxcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgIEFYRHJhZ0RpcmVjdGl2ZSxcbiAgICBBWERyb3BMaXN0RGlyZWN0aXZlLFxuICAgIEFYRGVjb3JhdG9yR2VuZXJpY0NvbXBvbmVudCxcbiAgICBBWERlY29yYXRvckhlYWRpbmdDb21wb25lbnQsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYS2FuYmFuQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBzdGF0dXNlcyA9IGlucHV0PEFYS2FuYmFuU3RhdHVzW10+KFtdKTtcbiAgaXRlbVRlbXBsYXRlID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4+KCk7XG4gIGRhdGFTb3VyY2UgPSBpbnB1dDxBWEthbmJhbkl0ZW1bXSB8IGFueVtdPigpO1xuXG4gIGtleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignaWQnKTtcbiAgaW5kZXhGaWVsZCA9IGlucHV0PHN0cmluZz4oJ2luZGV4Jyk7XG4gIHRpdGxlRmllbGQgPSBpbnB1dDxzdHJpbmc+KCd0aXRsZScpO1xuICBjc3NDbGFzc0ZpZWxkID0gaW5wdXQ8c3RyaW5nPignY3NzQ2xhc3MnKTtcbiAgcHJpb3JpdHlGaWVsZCA9IGlucHV0PHN0cmluZz4oJ3ByaW9yaXR5Jyk7XG4gIHN0YXR1c0tleUZpZWxkID0gaW5wdXQ8c3RyaW5nPignc3RhdHVzS2V5Jyk7XG4gIGRlc2NyaXB0aW9uRmllbGQgPSBpbnB1dDxzdHJpbmc+KCdkZXNjcmlwdGlvbicpO1xuXG4gIG9uU29ydENoYW5nZWQgPSBvdXRwdXQ8QVhLYW5iYW5Tb3J0RXZlbnQ+KCk7XG5cbiAgcHJvdGVjdGVkIGl0ZW1zID0gY29tcHV0ZWQ8QVhLYW5iYW5JdGVtW10+KCgpID0+IHtcbiAgICAvLyAuLi4geW91ciBleGNlbGxlbnQgZ2FwLWZpbGxpbmcgaW5kZXggbG9naWMgcmVtYWlucyB0aGUgc2FtZSAuLi5cbiAgICBjb25zdCBkYXRhU291cmNlID0gdGhpcy5kYXRhU291cmNlKCkgfHwgW107XG4gICAgY29uc3QgbWFwcGVkSXRlbXMgPSBkYXRhU291cmNlLm1hcDxBWEthbmJhbkl0ZW0+KChpdGVtOiBhbnkpID0+ICh7XG4gICAgICBpZDogaXRlbVt0aGlzLmtleUZpZWxkKCldLFxuICAgICAgaW5kZXg6IGl0ZW1bdGhpcy5pbmRleEZpZWxkKCldLFxuICAgICAgdGl0bGU6IGl0ZW1bdGhpcy50aXRsZUZpZWxkKCldLFxuICAgICAgY3NzQ2xhc3M6IGl0ZW1bdGhpcy5jc3NDbGFzc0ZpZWxkKCldLFxuICAgICAgcHJpb3JpdHk6IGl0ZW1bdGhpcy5wcmlvcml0eUZpZWxkKCldLFxuICAgICAgc3RhdHVzS2V5OiBpdGVtW3RoaXMuc3RhdHVzS2V5RmllbGQoKV0sXG4gICAgICBkZXNjcmlwdGlvbjogaXRlbVt0aGlzLmRlc2NyaXB0aW9uRmllbGQoKV0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgaXRlbXNCeVN0YXR1cyA9IG5ldyBNYXA8YW55LCBBWEthbmJhbkl0ZW1bXT4oKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbWFwcGVkSXRlbXMpIHtcbiAgICAgIGlmICghaXRlbXNCeVN0YXR1cy5oYXMoaXRlbS5zdGF0dXNLZXkpKSB7XG4gICAgICAgIGl0ZW1zQnlTdGF0dXMuc2V0KGl0ZW0uc3RhdHVzS2V5LCBbXSk7XG4gICAgICB9XG4gICAgICBpdGVtc0J5U3RhdHVzLmdldChpdGVtLnN0YXR1c0tleSkucHVzaChpdGVtKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5hbFByb2Nlc3NlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgaXRlbXNCeVN0YXR1cy52YWx1ZXMoKSkge1xuICAgICAgY29uc3QgY29ycmVjdGx5SW5kZXhlZEl0ZW1zOiBBWEthbmJhbkl0ZW1bXSA9IFtdO1xuICAgICAgY29uc3QgaXRlbXNUb0JlSW5kZXhlZDogQVhLYW5iYW5JdGVtW10gPSBbXTtcbiAgICAgIGNvbnN0IHRha2VuSW5kaWNlcyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGdyb3VwKSB7XG4gICAgICAgIGNvbnN0IGhhc1ZhbGlkSW5kZXggPSBpdGVtLmluZGV4ICE9IG51bGwgJiYgdHlwZW9mIGl0ZW0uaW5kZXggPT09ICdudW1iZXInICYmICF0YWtlbkluZGljZXMuaGFzKGl0ZW0uaW5kZXgpO1xuICAgICAgICBpZiAoaGFzVmFsaWRJbmRleCkge1xuICAgICAgICAgIHRha2VuSW5kaWNlcy5hZGQoaXRlbS5pbmRleCk7XG4gICAgICAgICAgY29ycmVjdGx5SW5kZXhlZEl0ZW1zLnB1c2goaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbXNUb0JlSW5kZXhlZC5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY3VycmVudEluZGV4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtc1RvQmVJbmRleGVkKSB7XG4gICAgICAgIHdoaWxlICh0YWtlbkluZGljZXMuaGFzKGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBpdGVtLmluZGV4ID0gY3VycmVudEluZGV4O1xuICAgICAgICBjdXJyZW50SW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb2Nlc3NlZEdyb3VwID0gWy4uLmNvcnJlY3RseUluZGV4ZWRJdGVtcywgLi4uaXRlbXNUb0JlSW5kZXhlZF07XG4gICAgICBwcm9jZXNzZWRHcm91cC5zb3J0KChhLCBiKSA9PiBhLmluZGV4IC0gYi5pbmRleCk7XG4gICAgICBmaW5hbFByb2Nlc3NlZEl0ZW1zLnB1c2goLi4ucHJvY2Vzc2VkR3JvdXApO1xuICAgIH1cbiAgICByZXR1cm4gZmluYWxQcm9jZXNzZWRJdGVtcztcbiAgfSk7XG5cbiAgcHJvdGVjdGVkIGZpbHRlcmVkU3RhdHVzZXMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN0YXR1c2VzKCkuc29ydCgoYSwgYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpKTtcblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgZHJvcCBldmVudC4gSXQgdXNlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudCByZW5kZXJlZCBzdGF0ZSAoYHRoaXMuaXRlbXNgKVxuICAgKiBhcyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgb3BlcmF0aW9uLCBjYWxjdWxhdGVzIHRoZSBuZXcgc3RhdGUgd2l0aCBwcmVjaXNlXG4gICAqIHJlLWluZGV4aW5nLCBhbmQgZW1pdHMgYSBjb21wcmVoZW5zaXZlIGV2ZW50IHdpdGggdGhlIHVwZGF0ZWQgZGF0YSBzb3VyY2UuXG4gICAqL1xuICBkcm9wKGV2ZW50OiBBWERyb3BMaXN0RHJvcHBlZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgeyBpdGVtOiBkcm9wcGVkSXRlbURpcmVjdGl2ZSwgY3VycmVudEluZGV4LCBwcmV2aW91c0luZGV4LCBjb250YWluZXIsIHByZXZpb3VzQ29udGFpbmVyIH0gPSBldmVudDtcblxuICAgIC8vIC0tLSAxLiBHZXQgaWRlbnRpZmllcnMgYW5kIHRoZSBpdGVtJ3Mgb3JpZ2luYWwgZGF0YSAtLS1cbiAgICBjb25zdCBjdXJyZW50U3RhdHVzS2V5ID0gSlNPTi5wYXJzZShjb250YWluZXIuZWxlbWVudC5pZCk7XG4gICAgY29uc3QgcHJldmlvdXNTdGF0dXNLZXkgPSBKU09OLnBhcnNlKHByZXZpb3VzQ29udGFpbmVyLmVsZW1lbnQuaWQpO1xuICAgIGNvbnN0IG1vdmVkSXRlbU9yaWdpbmFsRGF0YSA9IGRyb3BwZWRJdGVtRGlyZWN0aXZlLmRyYWdEYXRhKCkgYXMgQVhLYW5iYW5JdGVtO1xuXG4gICAgaWYgKCFtb3ZlZEl0ZW1PcmlnaW5hbERhdGEpIHtcbiAgICAgIGNvbnNvbGUud2FybignQVhLYW5iYW46IERyYWdnZWQgaXRlbSBoYXMgbm8gW2RyYWdEYXRhXS4gU29ydCBldmVudCBjYW5ub3QgYmUgZW1pdHRlZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAtLS0gMi4gVXNlIHRoZSBgaXRlbXNgIGNvbXB1dGVkIHByb3BlcnR5IGFzIHRoZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBvcGVyYXRpb24gLS0tXG4gICAgLy8gVGhpcyBpcyB0aGUgQ1JVQ0lBTCBGSVguIFdlIG9wZXJhdGUgb24gdGhlIGRhdGEgYXMgaXQgd2FzIHJlbmRlcmVkLlxuICAgIGNvbnN0IGN1cnJlbnRJdGVtc1N0YXRlID0gc3RydWN0dXJlZENsb25lKHRoaXMuaXRlbXMoKSk7XG5cbiAgICAvLyAtLS0gMy4gUGVyZm9ybSB0aGUgbW92ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlIHNjZW5hcmlvIC0tLVxuICAgIGlmIChwcmV2aW91c1N0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSkge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEE6IFJlb3JkZXJpbmcgd2l0aGluIHRoZSBzYW1lIGxpc3QgLS0tXG4gICAgICBjb25zdCBsaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHRoZSBvbGQgcG9zaXRpb24gYW5kIGluc2VydCBpbnRvIHRoZSBuZXcgcG9zaXRpb25cbiAgICAgIGNvbnN0IFttb3ZlZEl0ZW1dID0gbGlzdC5zcGxpY2UocHJldmlvdXNJbmRleCwgMSk7XG4gICAgICBsaXN0LnNwbGljZShjdXJyZW50SW5kZXgsIDAsIG1vdmVkSXRlbSk7XG5cbiAgICAgIC8vIFJlLWluZGV4IG9ubHkgdGhpcyBtb2RpZmllZCBsaXN0XG4gICAgICBsaXN0LmZvckVhY2goKGl0ZW0sIGlkeCkgPT4gKGl0ZW0uaW5kZXggPSBpZHgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gLS0tIFNjZW5hcmlvIEI6IE1vdmluZyB0byBhIGRpZmZlcmVudCBsaXN0IC0tLVxuICAgICAgY29uc3Qgc291cmNlTGlzdCA9IGN1cnJlbnRJdGVtc1N0YXRlLmZpbHRlcigoaSkgPT4gaS5zdGF0dXNLZXkgPT09IHByZXZpb3VzU3RhdHVzS2V5KTtcbiAgICAgIGNvbnN0IGRlc3RMaXN0ID0gY3VycmVudEl0ZW1zU3RhdGUuZmlsdGVyKChpKSA9PiBpLnN0YXR1c0tleSA9PT0gY3VycmVudFN0YXR1c0tleSk7XG5cbiAgICAgIC8vIFJlbW92ZSBmcm9tIHNvdXJjZSBsaXN0XG4gICAgICBjb25zdCBbbW92ZWRJdGVtXSA9IHNvdXJjZUxpc3Quc3BsaWNlKHByZXZpb3VzSW5kZXgsIDEpO1xuXG4gICAgICAvLyBVcGRhdGUgaXRzIHN0YXR1cyBhbmQgYWRkIHRvIGRlc3RpbmF0aW9uIGxpc3RcbiAgICAgIG1vdmVkSXRlbS5zdGF0dXNLZXkgPSBjdXJyZW50U3RhdHVzS2V5O1xuICAgICAgZGVzdExpc3Quc3BsaWNlKGN1cnJlbnRJbmRleCwgMCwgbW92ZWRJdGVtKTtcblxuICAgICAgLy8gUmUtaW5kZXggYm90aCBhZmZlY3RlZCBsaXN0c1xuICAgICAgc291cmNlTGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgICBkZXN0TGlzdC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLmluZGV4ID0gaWR4KSk7XG4gICAgfVxuXG4gICAgLy8gLS0tIDQuIE1hcCB0aGUgY2hhbmdlcyBiYWNrIHRvIGEgbmV3IHZlcnNpb24gb2YgdGhlIG9yaWdpbmFsIGRhdGFTb3VyY2UgLS0tXG4gICAgLy8gVGhpcyBwcmVzZXJ2ZXMgYW55IGV4dHJhIHByb3BlcnRpZXMgdGhlIHVzZXIgbWlnaHQgaGF2ZSBvbiB0aGVpciBkYXRhIG9iamVjdHMuXG4gICAgY29uc3Qga2V5RmllbGQgPSB0aGlzLmtleUZpZWxkKCk7XG4gICAgY29uc3Qgc3RhdHVzS2V5RmllbGQgPSB0aGlzLnN0YXR1c0tleUZpZWxkKCk7XG4gICAgY29uc3QgaW5kZXhGaWVsZCA9IHRoaXMuaW5kZXhGaWVsZCgpO1xuXG4gICAgY29uc3QgdXBkYXRlZEl0ZW1zTWFwID0gbmV3IE1hcChjdXJyZW50SXRlbXNTdGF0ZS5tYXAoKGkpID0+IFtpLmlkLCBpXSkpO1xuICAgIGNvbnN0IGZpbmFsRGF0YVNvdXJjZSA9IHN0cnVjdHVyZWRDbG9uZSh0aGlzLmRhdGFTb3VyY2UoKSk7XG5cbiAgICBmaW5hbERhdGFTb3VyY2UuZm9yRWFjaCgob3JpZ2luYWxJdGVtKSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkSXRlbSA9IHVwZGF0ZWRJdGVtc01hcC5nZXQob3JpZ2luYWxJdGVtW2tleUZpZWxkXSk7XG4gICAgICBpZiAodXBkYXRlZEl0ZW0pIHtcbiAgICAgICAgb3JpZ2luYWxJdGVtW2luZGV4RmllbGRdID0gdXBkYXRlZEl0ZW0uaW5kZXg7XG4gICAgICAgIG9yaWdpbmFsSXRlbVtzdGF0dXNLZXlGaWVsZF0gPSB1cGRhdGVkSXRlbS5zdGF0dXNLZXk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBtb3ZlZEl0ZW1JZCA9IG1vdmVkSXRlbU9yaWdpbmFsRGF0YS5pZDtcbiAgICBjb25zdCBvcmlnaW5hbEl0ZW1Gcm9tRGF0YVNvdXJjZSA9IGZpbmFsRGF0YVNvdXJjZS5maW5kKChpdGVtKSA9PiBpdGVtW2tleUZpZWxkXSA9PT0gbW92ZWRJdGVtSWQpO1xuXG4gICAgLy8gLS0tIDUuIEVtaXQgdGhlIGZpbmFsLCBjb21wcmVoZW5zaXZlIGV2ZW50IC0tLVxuICAgIHRoaXMub25Tb3J0Q2hhbmdlZC5lbWl0KHtcbiAgICAgIHNlbmRlcjogdGhpcyxcbiAgICAgIG5hdGl2ZUV2ZW50OiBldmVudC5uYXRpdmVFdmVudCxcbiAgICAgIC8vIFRoZSBvcmlnaW5hbCBkYXRhIG9iamVjdCB0aGF0IHdhcyBtb3ZlZFxuICAgICAgaXRlbTogb3JpZ2luYWxJdGVtRnJvbURhdGFTb3VyY2UsXG4gICAgICAvLyBUaGUgY29tcGxldGUsIHByZWNpc2VseSByZS1pbmRleGVkIGRhdGEgc291cmNlLCByZWFkeSBmb3Igc3RhdGUgdXBkYXRlXG4gICAgICBhbGxJdGVtczogZmluYWxEYXRhU291cmNlLFxuICAgICAgY3VycmVudEluZGV4LFxuICAgICAgcHJldmlvdXNJbmRleCxcbiAgICAgIGN1cnJlbnRTdGF0dXNLZXksXG4gICAgICBwcmV2aW91c1N0YXR1c0tleSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRMaXN0QnlJZChrZXk6IGFueSk6IEFYS2FuYmFuSXRlbVtdIHtcbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJlbWFpbnMgdGhlIHNhbWUgYW5kIGNvbnRpbnVlcyB0byB3b3JrIHBlcmZlY3RseVxuICAgIHJldHVybiB0aGlzLml0ZW1zKCkuZmlsdGVyKChlKSA9PiBlLnN0YXR1c0tleSA9PT0ga2V5KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzdHJpbmdpZnkodmFsdWU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgfVxufVxuIiwiQGZvciAoc3RhdHVzIG9mIGZpbHRlcmVkU3RhdHVzZXMoKTsgdHJhY2sgc3RhdHVzLmtleSkge1xuICA8ZGl2XG4gICAgYXhEcm9wTGlzdFxuICAgIGRyb3BMaXN0R3JvdXA9XCJrYW5iYW5cIlxuICAgIFtpZF09XCJzdHJpbmdpZnkoc3RhdHVzLmtleSlcIlxuICAgIChkcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcbiAgICBjbGFzcz1cImF4LWthbmJhbi1zdGF0dXMge3sgc3RhdHVzLmNzc0NsYXNzIH19XCJcbiAgPlxuICAgIDxheC10aXRsZT57eyBzdGF0dXMudGl0bGUgfX08L2F4LXRpdGxlPlxuICAgIEBpZiAoaXRlbVRlbXBsYXRlKCkpIHtcbiAgICAgIEBmb3IgKGl0ZW0gb2YgZGF0YVNvdXJjZSgpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgIDxkaXYgYXhEcmFnIFtkcmFnRGF0YV09XCJpdGVtXCIgY2xhc3M9XCJ7eyBpdGVtLmNzc0NsYXNzIH19XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVRlbXBsYXRlKClcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpdGVtIH1cIlxuICAgICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZm9yIChpdGVtIG9mIGdldExpc3RCeUlkKHN0YXR1cy5rZXkpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBheERyYWdcbiAgICAgICAgICBbZHJhZ0RhdGFdPVwiaXRlbVwiXG4gICAgICAgICAgY2xhc3M9XCJheC1rYW5iYW4taXRlbSAge3sgaXRlbS5jc3NDbGFzcyB9fVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiYGF4LWthbmJhbi0ke2l0ZW0ucHJpb3JpdHk/PydwcmltYXJ5J30tcGVyaW9yaXR5YFwiXG4gICAgICAgID5cbiAgICAgICAgICA8YXgtaGVhZGluZz5cbiAgICAgICAgICAgIDxheC10aXRsZT57eyBpdGVtLnRpdGxlIH19PC9heC10aXRsZT5cbiAgICAgICAgICAgIDxheC1zdWJ0aXRsZT57eyBpdGVtLmRlc2NyaXB0aW9uIH19PC9heC1zdWJ0aXRsZT5cbiAgICAgICAgICA8L2F4LWhlYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIH1cbiAgPC9kaXY+XG59XG4iXX0=","/**\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 } 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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"}
|
@@ -227,7 +227,7 @@ class AXListComponent extends MXSelectionValueComponent {
|
|
227
227
|
},
|
228
228
|
deps: [[new Optional(), new SkipSelf(), AX_SELECTION_DATA_TOKEN]],
|
229
229
|
},
|
230
|
-
], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"list-container\" cdkVirtualScrollingElement [class.ax-height-auto]=\"showEmptyTemplate()\">\n <ng-content select=\"ax-header\"></ng-content>\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeightSignal()\"\n [style.--item-height]=\"itemHeightSignal() + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <ul>\n <!-- Item Template -->\n <ng-container *cdkVirtualFor=\"let item of listDataSource; let i = index; trackBy: trackByIdx\">\n @if (item !== null && item !== undefined) {\n <li\n [class.ax-state-selected]=\"isItemSelected(item)\"\n class=\"list-item\"\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\n [attr.tabindex]=\"i\"\n (click)=\"_handleOnItemClick($event, item)\"\n [attr.data-id]=\"getValue(item)\"\n >\n <!-- Custom Item Template -->\n @if (itemTemplate) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\">\n </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultItemTpl\"></ng-container>\n }\n <!-- Default Item Template -->\n <ng-template #defaultItemTpl>\n @if (item !== null && item !== undefined) {\n <div class=\"ax-label-container\">\n @if (multiple && checkbox) {\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n [checked]=\"isItemSelected(item)\"\n [disabled]=\"isItemDisabled(item)\"\n tabindex=\"0\"\n />\n }\n <span [class.ax-checkbox-label]=\"multiple && checkbox\">{{ getDisplayText(item) }}</span>\n </div>\n <!-- @if (isItemSelected(item)) {\n <i class=\"ax-icon ax-icon-check ax-selected-icon\"></i>\n } -->\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-template>\n </li>\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-container>\n </ul>\n </cdk-virtual-scroll-viewport>\n <ng-content select=\"ax-footer\"></ng-content>\n</div>\n\n<!-- Loading Template -->\n<ng-template #loadingTpl>\n <!-- Custom Loading Template -->\n @if (loadingTemplate) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate\"> </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultLoadingTpl\"> </ng-container>\n }\n <!-- Default Loading Template -->\n <ng-template #defaultLoadingTpl>\n <li>{{ 'loading' | translate | async }}</li>\n </ng-template>\n</ng-template>\n<!-- Empty Template -->\n@if (showEmptyTemplate()) {\n <div class=\"empty-container\">\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\n </div>\n}\n", styles: ["ax-list{--ax-comp-list-item-height: var(--ax-sys-size-base);--ax-comp-list-empty-container-height: var(--ax-sys-size-base)}ax-list{--ax-comp-list-item-selected-bg-color: var(--ax-sys-color-primary-surface), .2;--ax-comp-list-item-header: var(--ax-sys-color-lighter-surface);--ax-comp-list-item-footer: var(--ax-sys-color-lighter-surface)}ax-list{display:block;height:100%;width:100%;font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .list-container{display:flex;height:100%;flex-direction:column}ax-list .list-container.ax-height-auto{height:auto}ax-list ax-header{background-color:rgba(var(--ax-comp-list-item-header))}ax-list ax-footer{background-color:rgba(var(--ax-comp-list-item-footer))}ax-list .empty-container{display:flex;height:var(--ax-comp-list-empty-container-height);width:100%;align-items:center;justify-content:center;padding-left:var(--ax-comp-list-empty-container-padding-x, .75rem);padding-right:var(--ax-comp-list-empty-container-padding-x, .75rem)}ax-list .cdk-virtual-scroll-viewport ul li{position:relative;display:flex;min-height:var(--ax-comp-list-item-height);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;justify-content:space-between;padding-inline-end:var(--ax-comp-list-item-padding-e, 1rem);padding-inline-start:var(--ax-comp-list-item-padding-s, .75rem);font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .cdk-virtual-scroll-viewport ul li:hover{background:rgba(var(--ax-comp-list-item-hover-bg-color, var(--ax-sys-color-surface)))}ax-list .cdk-virtual-scroll-viewport ul li:focus,ax-list .cdk-virtual-scroll-viewport ul li:focus-within,ax-list .cdk-virtual-scroll-viewport ul li:focus-visible{outline-width:var(--ax-comp-list-item-focus-outline-width, 2px);outline-offset:var(--ax-comp-list-item-focus-outline-offset, -4px);outline-color:rgba(var(--ax-comp-list-item-focus-outline-color, var(--ax-sys-color-primary-surface)))}ax-list .cdk-virtual-scroll-viewport ul li .ax-label-container{display:flex;align-items:center}ax-list .cdk-virtual-scroll-viewport ul li .ax-checkbox-label{margin-inline-start:var(--ax-comp-list-checkbox-label-margin-s, .5rem)}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-selected{background-color:rgba(var(--ax-comp-list-item-selected-bg-color))}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-list-item-disabled-opacity, .5)}\n"], dependencies: [{ kind: "directive", type: CdkVirtualScrollableElement, selector: "[cdkVirtualScrollingElement]" }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
230
|
+
], viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"list-container\" cdkVirtualScrollingElement [class.ax-height-auto]=\"showEmptyTemplate()\">\n <ng-content select=\"ax-header\"></ng-content>\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeightSignal()\"\n [style.--item-height]=\"itemHeightSignal() + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <ul>\n <!-- Item Template -->\n <ng-container *cdkVirtualFor=\"let item of listDataSource; let i = index; trackBy: trackByIdx\">\n @if (item !== null && item !== undefined) {\n <li\n [class.ax-state-selected]=\"isItemSelected(item)\"\n class=\"list-item\"\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\n [attr.tabindex]=\"i\"\n (click)=\"_handleOnItemClick($event, item)\"\n [attr.data-id]=\"getValue(item)\"\n >\n <!-- Custom Item Template -->\n @if (itemTemplate) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\">\n </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultItemTpl\"></ng-container>\n }\n <!-- Default Item Template -->\n <ng-template #defaultItemTpl>\n @if (item !== null && item !== undefined) {\n <div class=\"ax-label-container\">\n @if (multiple && checkbox) {\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n [checked]=\"isItemSelected(item)\"\n [disabled]=\"isItemDisabled(item)\"\n tabindex=\"0\"\n />\n }\n <span [class.ax-checkbox-label]=\"multiple && checkbox\">{{ getDisplayText(item) }}</span>\n </div>\n <!-- @if (isItemSelected(item)) {\n <i class=\"ax-icon ax-icon-check ax-selected-icon\"></i>\n } -->\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-template>\n </li>\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-container>\n </ul>\n </cdk-virtual-scroll-viewport>\n <ng-content select=\"ax-footer\"></ng-content>\n</div>\n\n<!-- Loading Template -->\n<ng-template #loadingTpl>\n <!-- Custom Loading Template -->\n @if (loadingTemplate) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate\"> </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultLoadingTpl\"> </ng-container>\n }\n <!-- Default Loading Template -->\n <ng-template #defaultLoadingTpl>\n <li>{{ '@acorex:common.status.loading' | translate | async }}</li>\n </ng-template>\n</ng-template>\n<!-- Empty Template -->\n@if (showEmptyTemplate()) {\n <div class=\"empty-container\">\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\n </div>\n}\n", styles: ["ax-list{--ax-comp-list-item-height: var(--ax-sys-size-base);--ax-comp-list-empty-container-height: var(--ax-sys-size-base)}ax-list{--ax-comp-list-item-selected-bg-color: var(--ax-sys-color-primary-surface), .2;--ax-comp-list-item-header: var(--ax-sys-color-lighter-surface);--ax-comp-list-item-footer: var(--ax-sys-color-lighter-surface)}ax-list{display:block;height:100%;width:100%;font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .list-container{display:flex;height:100%;flex-direction:column}ax-list .list-container.ax-height-auto{height:auto}ax-list ax-header{background-color:rgba(var(--ax-comp-list-item-header))}ax-list ax-footer{background-color:rgba(var(--ax-comp-list-item-footer))}ax-list .empty-container{display:flex;height:var(--ax-comp-list-empty-container-height);width:100%;align-items:center;justify-content:center;padding-left:var(--ax-comp-list-empty-container-padding-x, .75rem);padding-right:var(--ax-comp-list-empty-container-padding-x, .75rem)}ax-list .cdk-virtual-scroll-viewport ul li{position:relative;display:flex;min-height:var(--ax-comp-list-item-height);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;justify-content:space-between;padding-inline-end:var(--ax-comp-list-item-padding-e, 1rem);padding-inline-start:var(--ax-comp-list-item-padding-s, .75rem);font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .cdk-virtual-scroll-viewport ul li:hover{background:rgba(var(--ax-comp-list-item-hover-bg-color, var(--ax-sys-color-surface)))}ax-list .cdk-virtual-scroll-viewport ul li:focus,ax-list .cdk-virtual-scroll-viewport ul li:focus-within,ax-list .cdk-virtual-scroll-viewport ul li:focus-visible{outline-width:var(--ax-comp-list-item-focus-outline-width, 2px);outline-offset:var(--ax-comp-list-item-focus-outline-offset, -4px);outline-color:rgba(var(--ax-comp-list-item-focus-outline-color, var(--ax-sys-color-primary-surface)))}ax-list .cdk-virtual-scroll-viewport ul li .ax-label-container{display:flex;align-items:center}ax-list .cdk-virtual-scroll-viewport ul li .ax-checkbox-label{margin-inline-start:var(--ax-comp-list-checkbox-label-margin-s, .5rem)}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-selected{background-color:rgba(var(--ax-comp-list-item-selected-bg-color))}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-list-item-disabled-opacity, .5)}\n"], dependencies: [{ kind: "directive", type: CdkVirtualScrollableElement, selector: "[cdkVirtualScrollingElement]" }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
231
231
|
}
|
232
232
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AXListComponent, decorators: [{
|
233
233
|
type: Component,
|
@@ -266,7 +266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImpor
|
|
266
266
|
NgTemplateOutlet,
|
267
267
|
AsyncPipe,
|
268
268
|
AXTranslatorPipe,
|
269
|
-
], template: "<div class=\"list-container\" cdkVirtualScrollingElement [class.ax-height-auto]=\"showEmptyTemplate()\">\n <ng-content select=\"ax-header\"></ng-content>\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeightSignal()\"\n [style.--item-height]=\"itemHeightSignal() + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <ul>\n <!-- Item Template -->\n <ng-container *cdkVirtualFor=\"let item of listDataSource; let i = index; trackBy: trackByIdx\">\n @if (item !== null && item !== undefined) {\n <li\n [class.ax-state-selected]=\"isItemSelected(item)\"\n class=\"list-item\"\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\n [attr.tabindex]=\"i\"\n (click)=\"_handleOnItemClick($event, item)\"\n [attr.data-id]=\"getValue(item)\"\n >\n <!-- Custom Item Template -->\n @if (itemTemplate) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\">\n </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultItemTpl\"></ng-container>\n }\n <!-- Default Item Template -->\n <ng-template #defaultItemTpl>\n @if (item !== null && item !== undefined) {\n <div class=\"ax-label-container\">\n @if (multiple && checkbox) {\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n [checked]=\"isItemSelected(item)\"\n [disabled]=\"isItemDisabled(item)\"\n tabindex=\"0\"\n />\n }\n <span [class.ax-checkbox-label]=\"multiple && checkbox\">{{ getDisplayText(item) }}</span>\n </div>\n <!-- @if (isItemSelected(item)) {\n <i class=\"ax-icon ax-icon-check ax-selected-icon\"></i>\n } -->\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-template>\n </li>\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-container>\n </ul>\n </cdk-virtual-scroll-viewport>\n <ng-content select=\"ax-footer\"></ng-content>\n</div>\n\n<!-- Loading Template -->\n<ng-template #loadingTpl>\n <!-- Custom Loading Template -->\n @if (loadingTemplate) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate\"> </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultLoadingTpl\"> </ng-container>\n }\n <!-- Default Loading Template -->\n <ng-template #defaultLoadingTpl>\n <li>{{ 'loading' | translate | async }}</li>\n </ng-template>\n</ng-template>\n<!-- Empty Template -->\n@if (showEmptyTemplate()) {\n <div class=\"empty-container\">\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\n </div>\n}\n", styles: ["ax-list{--ax-comp-list-item-height: var(--ax-sys-size-base);--ax-comp-list-empty-container-height: var(--ax-sys-size-base)}ax-list{--ax-comp-list-item-selected-bg-color: var(--ax-sys-color-primary-surface), .2;--ax-comp-list-item-header: var(--ax-sys-color-lighter-surface);--ax-comp-list-item-footer: var(--ax-sys-color-lighter-surface)}ax-list{display:block;height:100%;width:100%;font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .list-container{display:flex;height:100%;flex-direction:column}ax-list .list-container.ax-height-auto{height:auto}ax-list ax-header{background-color:rgba(var(--ax-comp-list-item-header))}ax-list ax-footer{background-color:rgba(var(--ax-comp-list-item-footer))}ax-list .empty-container{display:flex;height:var(--ax-comp-list-empty-container-height);width:100%;align-items:center;justify-content:center;padding-left:var(--ax-comp-list-empty-container-padding-x, .75rem);padding-right:var(--ax-comp-list-empty-container-padding-x, .75rem)}ax-list .cdk-virtual-scroll-viewport ul li{position:relative;display:flex;min-height:var(--ax-comp-list-item-height);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;justify-content:space-between;padding-inline-end:var(--ax-comp-list-item-padding-e, 1rem);padding-inline-start:var(--ax-comp-list-item-padding-s, .75rem);font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .cdk-virtual-scroll-viewport ul li:hover{background:rgba(var(--ax-comp-list-item-hover-bg-color, var(--ax-sys-color-surface)))}ax-list .cdk-virtual-scroll-viewport ul li:focus,ax-list .cdk-virtual-scroll-viewport ul li:focus-within,ax-list .cdk-virtual-scroll-viewport ul li:focus-visible{outline-width:var(--ax-comp-list-item-focus-outline-width, 2px);outline-offset:var(--ax-comp-list-item-focus-outline-offset, -4px);outline-color:rgba(var(--ax-comp-list-item-focus-outline-color, var(--ax-sys-color-primary-surface)))}ax-list .cdk-virtual-scroll-viewport ul li .ax-label-container{display:flex;align-items:center}ax-list .cdk-virtual-scroll-viewport ul li .ax-checkbox-label{margin-inline-start:var(--ax-comp-list-checkbox-label-margin-s, .5rem)}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-selected{background-color:rgba(var(--ax-comp-list-item-selected-bg-color))}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-list-item-disabled-opacity, .5)}\n"] }]
|
269
|
+
], template: "<div class=\"list-container\" cdkVirtualScrollingElement [class.ax-height-auto]=\"showEmptyTemplate()\">\n <ng-content select=\"ax-header\"></ng-content>\n <cdk-virtual-scroll-viewport\n [itemSize]=\"itemHeightSignal()\"\n [style.--item-height]=\"itemHeightSignal() + 'px'\"\n (scrolledIndexChange)=\"_handleOnscrolledIndexChange($event)\"\n >\n <ul>\n <!-- Item Template -->\n <ng-container *cdkVirtualFor=\"let item of listDataSource; let i = index; trackBy: trackByIdx\">\n @if (item !== null && item !== undefined) {\n <li\n [class.ax-state-selected]=\"isItemSelected(item)\"\n class=\"list-item\"\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\n [attr.tabindex]=\"i\"\n (click)=\"_handleOnItemClick($event, item)\"\n [attr.data-id]=\"getValue(item)\"\n >\n <!-- Custom Item Template -->\n @if (itemTemplate) {\n <ng-container [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ $implicit: { data: item } }\">\n </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultItemTpl\"></ng-container>\n }\n <!-- Default Item Template -->\n <ng-template #defaultItemTpl>\n @if (item !== null && item !== undefined) {\n <div class=\"ax-label-container\">\n @if (multiple && checkbox) {\n <input\n class=\"ax-checkbox\"\n type=\"checkbox\"\n [checked]=\"isItemSelected(item)\"\n [disabled]=\"isItemDisabled(item)\"\n tabindex=\"0\"\n />\n }\n <span [class.ax-checkbox-label]=\"multiple && checkbox\">{{ getDisplayText(item) }}</span>\n </div>\n <!-- @if (isItemSelected(item)) {\n <i class=\"ax-icon ax-icon-check ax-selected-icon\"></i>\n } -->\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-template>\n </li>\n } @else {\n <ng-container [ngTemplateOutlet]=\"loadingTpl\"> </ng-container>\n }\n </ng-container>\n </ul>\n </cdk-virtual-scroll-viewport>\n <ng-content select=\"ax-footer\"></ng-content>\n</div>\n\n<!-- Loading Template -->\n<ng-template #loadingTpl>\n <!-- Custom Loading Template -->\n @if (loadingTemplate) {\n <ng-container [ngTemplateOutlet]=\"loadingTemplate\"> </ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"defaultLoadingTpl\"> </ng-container>\n }\n <!-- Default Loading Template -->\n <ng-template #defaultLoadingTpl>\n <li>{{ '@acorex:common.status.loading' | translate | async }}</li>\n </ng-template>\n</ng-template>\n<!-- Empty Template -->\n@if (showEmptyTemplate()) {\n <div class=\"empty-container\">\n <ng-container [ngTemplateOutlet]=\"emptyTemplate\"></ng-container>\n </div>\n}\n", styles: ["ax-list{--ax-comp-list-item-height: var(--ax-sys-size-base);--ax-comp-list-empty-container-height: var(--ax-sys-size-base)}ax-list{--ax-comp-list-item-selected-bg-color: var(--ax-sys-color-primary-surface), .2;--ax-comp-list-item-header: var(--ax-sys-color-lighter-surface);--ax-comp-list-item-footer: var(--ax-sys-color-lighter-surface)}ax-list{display:block;height:100%;width:100%;font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .list-container{display:flex;height:100%;flex-direction:column}ax-list .list-container.ax-height-auto{height:auto}ax-list ax-header{background-color:rgba(var(--ax-comp-list-item-header))}ax-list ax-footer{background-color:rgba(var(--ax-comp-list-item-footer))}ax-list .empty-container{display:flex;height:var(--ax-comp-list-empty-container-height);width:100%;align-items:center;justify-content:center;padding-left:var(--ax-comp-list-empty-container-padding-x, .75rem);padding-right:var(--ax-comp-list-empty-container-padding-x, .75rem)}ax-list .cdk-virtual-scroll-viewport ul li{position:relative;display:flex;min-height:var(--ax-comp-list-item-height);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;justify-content:space-between;padding-inline-end:var(--ax-comp-list-item-padding-e, 1rem);padding-inline-start:var(--ax-comp-list-item-padding-s, .75rem);font-size:var(--ax-comp-list-font-size, .875rem);line-height:var(--ax-comp-list-line-height, 1.25rem)}ax-list .cdk-virtual-scroll-viewport ul li:hover{background:rgba(var(--ax-comp-list-item-hover-bg-color, var(--ax-sys-color-surface)))}ax-list .cdk-virtual-scroll-viewport ul li:focus,ax-list .cdk-virtual-scroll-viewport ul li:focus-within,ax-list .cdk-virtual-scroll-viewport ul li:focus-visible{outline-width:var(--ax-comp-list-item-focus-outline-width, 2px);outline-offset:var(--ax-comp-list-item-focus-outline-offset, -4px);outline-color:rgba(var(--ax-comp-list-item-focus-outline-color, var(--ax-sys-color-primary-surface)))}ax-list .cdk-virtual-scroll-viewport ul li .ax-label-container{display:flex;align-items:center}ax-list .cdk-virtual-scroll-viewport ul li .ax-checkbox-label{margin-inline-start:var(--ax-comp-list-checkbox-label-margin-s, .5rem)}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-selected{background-color:rgba(var(--ax-comp-list-item-selected-bg-color))}ax-list .cdk-virtual-scroll-viewport ul li.ax-state-disabled{cursor:not-allowed;opacity:var(--ax-comp-list-item-disabled-opacity, .5)}\n"] }]
|
270
270
|
}], propDecorators: { onItemClick: [{
|
271
271
|
type: Output
|
272
272
|
}], dataSource: [{
|