@acorex/components 21.0.3-next.20 → 21.0.3-next.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-components-action-sheet.mjs +2 -2
- package/fesm2022/acorex-components-action-sheet.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 +2 -2
- package/fesm2022/acorex-components-check-box.mjs.map +1 -1
- package/fesm2022/acorex-components-command.mjs +2 -2
- package/fesm2022/acorex-components-command.mjs.map +1 -1
- package/fesm2022/acorex-components-data-table.mjs +2 -2
- package/fesm2022/acorex-components-data-table.mjs.map +1 -1
- package/fesm2022/acorex-components-decorators.mjs +2 -2
- package/fesm2022/acorex-components-decorators.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +2 -2
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-json-viewer.mjs +2 -2
- package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
- package/fesm2022/acorex-components-kanban.mjs +2 -2
- package/fesm2022/acorex-components-kanban.mjs.map +1 -1
- package/fesm2022/acorex-components-loading.mjs +2 -2
- package/fesm2022/acorex-components-loading.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +2 -2
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-paint.mjs +2 -2
- package/fesm2022/acorex-components-paint.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +2 -2
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-progress-bar.mjs +2 -2
- package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
- package/fesm2022/acorex-components-rail-navigation.mjs +2 -2
- package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list-2.mjs +2 -2
- package/fesm2022/acorex-components-selection-list-2.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +2 -2
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-skeleton.mjs +2 -2
- package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
- package/fesm2022/acorex-components-switch.mjs +2 -2
- package/fesm2022/acorex-components-switch.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +2 -2
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-time-line.mjs +2 -2
- package/fesm2022/acorex-components-time-line.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +2 -2
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-tooltip.mjs +2 -2
- package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +2 -2
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/package.json +3 -3
|
@@ -307,7 +307,7 @@ class AXKanbanComponent extends NXComponent {
|
|
|
307
307
|
this.onItemRightClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });
|
|
308
308
|
}
|
|
309
309
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXKanbanComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
310
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXKanbanComponent, isStandalone: true, selector: "ax-kanban", inputs: { hasActions: { classPropertyName: "hasActions", publicName: "hasActions", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: "dragStartDelay", publicName: "dragStartDelay", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: "statuses", publicName: "statuses", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: "keyField", publicName: "keyField", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: "indexField", publicName: "indexField", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: "titleField", publicName: "titleField", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: "cssClassField", publicName: "cssClassField", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: "priorityField", publicName: "priorityField", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: "statusKeyField", publicName: "statusKeyField", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: "descriptionField", publicName: "descriptionField", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: "contentFooterTemplate", publicName: "contentFooterTemplate", isSignal: true, isRequired: false, transformFunction: null }, tooltipTemplate: { classPropertyName: "tooltipTemplate", publicName: "tooltipTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBeforeDrop: "onBeforeDrop", onSortChanged: "onSortChanged", onItemClick: "onItemClick", onActionClick: "onActionClick", onItemDblClick: "onItemDblClick", onItemRightClick: "onItemRightClick" }, usesInheritance: true, ngImport: i0, template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <!-- <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"handleActionClick($event, item)\"\n >\n </ax-icon> -->\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-content:\"\"}}}@layer base{:root{--ax-comp-kanban-status-min-width:20rem;--ax-comp-kanban-status-min-height:30rem;--ax-comp-kanban-item-indicator-size:.125rem}}@layer components{ax-kanban{grid-auto-columns:var(--ax-comp-kanban-status-min-width);gap:calc(var(--spacing,.25rem) * 2);grid-auto-flow:column;display:grid;overflow-x:auto}ax-kanban .ax-kanban-status{height:var(--ax-comp-kanban-status-min-height);gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-sys-color-lighter-surface));color:rgba(var(--ax-sys-color-on-lighter-surface));clip-path:inset(0 round var(--ax-sys-border-radius));flex-direction:column;display:flex;overflow-y:auto}ax-kanban .ax-kanban-status>ax-header{z-index:2;background-color:inherit;position:sticky;top:0}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;padding-top:calc(var(--spacing,.25rem) * 2);text-align:center;font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);display:block}ax-kanban .ax-kanban-status ax-content{gap:calc(var(--spacing,.25rem) * 2);padding-inline:calc(var(--spacing,.25rem) * 2);flex-direction:column;flex:1;display:flex}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{border-radius:calc(var(--ax-sys-border-radius) / 2);background-color:rgba(var(--ax-sys-color-lightest-surface));width:100%;padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:var(--spacing,.25rem);color:rgba(var(--ax-sys-color-on-lightest-surface));--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);position:relative}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:where(.ax-dark,.ax-dark *){background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-darkest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{height:calc(100% - (var(--spacing,.25rem) * 2));width:var(--ax-comp-kanban-item-indicator-size);--tw-content:\"\";content:var(--tw-content);border-radius:3.40282e38px;position:absolute;inset-inline-start:calc(var(--spacing,.25rem) * .5)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-sys-color-danger-dark-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-sys-color-danger-600))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-sys-color-warning-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-sys-color-success-light-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);justify-content:space-between;align-items:center;display:flex}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{z-index:2;background-color:inherit;position:sticky;bottom:0}}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\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: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["axDropList", "sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped"], exportAs: ["axDropList"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorHeadingComponent, selector: "ax-heading", inputs: ["darkMode", "color", "weight"] }, { kind: "directive", type:
|
|
310
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXKanbanComponent, isStandalone: true, selector: "ax-kanban", inputs: { hasActions: { classPropertyName: "hasActions", publicName: "hasActions", isSignal: true, isRequired: false, transformFunction: null }, dragStartDelay: { classPropertyName: "dragStartDelay", publicName: "dragStartDelay", isSignal: true, isRequired: false, transformFunction: null }, statuses: { classPropertyName: "statuses", publicName: "statuses", isSignal: true, isRequired: false, transformFunction: null }, itemTemplate: { classPropertyName: "itemTemplate", publicName: "itemTemplate", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: false, transformFunction: null }, keyField: { classPropertyName: "keyField", publicName: "keyField", isSignal: true, isRequired: false, transformFunction: null }, indexField: { classPropertyName: "indexField", publicName: "indexField", isSignal: true, isRequired: false, transformFunction: null }, titleField: { classPropertyName: "titleField", publicName: "titleField", isSignal: true, isRequired: false, transformFunction: null }, cssClassField: { classPropertyName: "cssClassField", publicName: "cssClassField", isSignal: true, isRequired: false, transformFunction: null }, priorityField: { classPropertyName: "priorityField", publicName: "priorityField", isSignal: true, isRequired: false, transformFunction: null }, statusKeyField: { classPropertyName: "statusKeyField", publicName: "statusKeyField", isSignal: true, isRequired: false, transformFunction: null }, descriptionField: { classPropertyName: "descriptionField", publicName: "descriptionField", isSignal: true, isRequired: false, transformFunction: null }, emptyTemplate: { classPropertyName: "emptyTemplate", publicName: "emptyTemplate", isSignal: true, isRequired: false, transformFunction: null }, headerTemplate: { classPropertyName: "headerTemplate", publicName: "headerTemplate", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, contentFooterTemplate: { classPropertyName: "contentFooterTemplate", publicName: "contentFooterTemplate", isSignal: true, isRequired: false, transformFunction: null }, tooltipTemplate: { classPropertyName: "tooltipTemplate", publicName: "tooltipTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onBeforeDrop: "onBeforeDrop", onSortChanged: "onSortChanged", onItemClick: "onItemClick", onActionClick: "onActionClick", onItemDblClick: "onItemDblClick", onItemRightClick: "onItemRightClick" }, usesInheritance: true, ngImport: i0, template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <!-- <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"handleActionClick($event, item)\"\n >\n </ax-icon> -->\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-content:\"\"}}}@layer base{:root{--ax-comp-kanban-status-min-width:20rem;--ax-comp-kanban-status-min-height:30rem;--ax-comp-kanban-item-indicator-size:.125rem}}@layer components{ax-kanban{grid-auto-columns:var(--ax-comp-kanban-status-min-width);gap:calc(var(--spacing,.25rem) * 2);grid-auto-flow:column;display:grid;overflow-x:auto}ax-kanban .ax-kanban-status{height:var(--ax-comp-kanban-status-min-height);gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-sys-color-lighter-surface));color:rgba(var(--ax-sys-color-on-lighter-surface));clip-path:inset(0 round var(--ax-sys-border-radius));flex-direction:column;display:flex;overflow-y:auto}ax-kanban .ax-kanban-status>ax-header{z-index:2;background-color:inherit;position:sticky;top:0}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;padding-top:calc(var(--spacing,.25rem) * 2);text-align:center;font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);display:block}ax-kanban .ax-kanban-status ax-content{gap:calc(var(--spacing,.25rem) * 2);padding-inline:calc(var(--spacing,.25rem) * 2);flex-direction:column;flex:1;display:flex}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{border-radius:calc(var(--ax-sys-border-radius) / 2);background-color:rgba(var(--ax-sys-color-lightest-surface));width:100%;padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:var(--spacing,.25rem);color:rgba(var(--ax-sys-color-on-lightest-surface));--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);position:relative}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-darkest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{height:calc(100% - (var(--spacing,.25rem) * 2));width:var(--ax-comp-kanban-item-indicator-size);--tw-content:\"\";content:var(--tw-content);border-radius:3.40282e38px;position:absolute;inset-inline-start:calc(var(--spacing,.25rem) * .5)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-sys-color-danger-dark-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-sys-color-danger-600))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-sys-color-warning-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-sys-color-success-light-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);justify-content:space-between;align-items:center;display:flex}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{z-index:2;background-color:inherit;position:sticky;bottom:0}}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\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: ["axDrag", "dragData", "dragDisabled", "dragTransition", "dragElementClone", "dropZoneGroup", "dragStartDelay", "dragResetOnDblClick", "dragLockAxis", "dragClonedTemplate", "dragCursor", "dragBoundary", "dragTransitionDuration"], outputs: ["dragPositionChanged"] }, { kind: "directive", type: AXDropListDirective, selector: "[axDropList]", inputs: ["axDropList", "sortingDisabled", "dropListGroup", "dropListOrientation"], outputs: ["dropListDropped"], exportAs: ["axDropList"] }, { kind: "component", type: AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: AXDecoratorHeadingComponent, selector: "ax-heading", inputs: ["darkMode", "color", "weight"] }, { kind: "directive", type:
|
|
311
311
|
// AXDecoratorIconComponent,
|
|
312
312
|
AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
313
313
|
}
|
|
@@ -322,7 +322,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
322
322
|
AXDecoratorHeadingComponent,
|
|
323
323
|
// AXDecoratorIconComponent,
|
|
324
324
|
AXTooltipDirective,
|
|
325
|
-
], template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <!-- <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"handleActionClick($event, item)\"\n >\n </ax-icon> -->\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-content:\"\"}}}@layer base{:root{--ax-comp-kanban-status-min-width:20rem;--ax-comp-kanban-status-min-height:30rem;--ax-comp-kanban-item-indicator-size:.125rem}}@layer components{ax-kanban{grid-auto-columns:var(--ax-comp-kanban-status-min-width);gap:calc(var(--spacing,.25rem) * 2);grid-auto-flow:column;display:grid;overflow-x:auto}ax-kanban .ax-kanban-status{height:var(--ax-comp-kanban-status-min-height);gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-sys-color-lighter-surface));color:rgba(var(--ax-sys-color-on-lighter-surface));clip-path:inset(0 round var(--ax-sys-border-radius));flex-direction:column;display:flex;overflow-y:auto}ax-kanban .ax-kanban-status>ax-header{z-index:2;background-color:inherit;position:sticky;top:0}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;padding-top:calc(var(--spacing,.25rem) * 2);text-align:center;font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);display:block}ax-kanban .ax-kanban-status ax-content{gap:calc(var(--spacing,.25rem) * 2);padding-inline:calc(var(--spacing,.25rem) * 2);flex-direction:column;flex:1;display:flex}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{border-radius:calc(var(--ax-sys-border-radius) / 2);background-color:rgba(var(--ax-sys-color-lightest-surface));width:100%;padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:var(--spacing,.25rem);color:rgba(var(--ax-sys-color-on-lightest-surface));--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);position:relative}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:where(.ax-dark,.ax-dark *){background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-darkest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{height:calc(100% - (var(--spacing,.25rem) * 2));width:var(--ax-comp-kanban-item-indicator-size);--tw-content:\"\";content:var(--tw-content);border-radius:3.40282e38px;position:absolute;inset-inline-start:calc(var(--spacing,.25rem) * .5)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-sys-color-danger-dark-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-sys-color-danger-600))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-sys-color-warning-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-sys-color-success-light-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);justify-content:space-between;align-items:center;display:flex}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{z-index:2;background-color:inherit;position:sticky;bottom:0}}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
325
|
+
], template: "@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <!-- <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"handleActionClick($event, item)\"\n >\n </ax-icon> -->\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-content:\"\"}}}@layer base{:root{--ax-comp-kanban-status-min-width:20rem;--ax-comp-kanban-status-min-height:30rem;--ax-comp-kanban-item-indicator-size:.125rem}}@layer components{ax-kanban{grid-auto-columns:var(--ax-comp-kanban-status-min-width);gap:calc(var(--spacing,.25rem) * 2);grid-auto-flow:column;display:grid;overflow-x:auto}ax-kanban .ax-kanban-status{height:var(--ax-comp-kanban-status-min-height);gap:calc(var(--spacing,.25rem) * 2);border-radius:var(--ax-sys-border-radius);background-color:rgba(var(--ax-sys-color-lighter-surface));color:rgba(var(--ax-sys-color-on-lighter-surface));clip-path:inset(0 round var(--ax-sys-border-radius));flex-direction:column;display:flex;overflow-y:auto}ax-kanban .ax-kanban-status>ax-header{z-index:2;background-color:inherit;position:sticky;top:0}ax-kanban .ax-kanban-status>ax-header>ax-title{width:100%;padding-top:calc(var(--spacing,.25rem) * 2);text-align:center;font-size:var(--text-xl,1.25rem);line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)));--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600);display:block}ax-kanban .ax-kanban-status ax-content{gap:calc(var(--spacing,.25rem) * 2);padding-inline:calc(var(--spacing,.25rem) * 2);flex-direction:column;flex:1;display:flex}ax-kanban .ax-kanban-status ax-content ax-popover{display:none}ax-kanban .ax-kanban-status ax-content .ax-kanban-item{border-radius:calc(var(--ax-sys-border-radius) / 2);background-color:rgba(var(--ax-sys-color-lightest-surface));width:100%;padding-inline:calc(var(--spacing,.25rem) * 2);padding-block:var(--spacing,.25rem);color:rgba(var(--ax-sys-color-on-lightest-surface));--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);position:relative}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-surface));color:rgba(var(--ax-sys-color-on-darkest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item:before{height:calc(100% - (var(--spacing,.25rem) * 2));width:var(--ax-comp-kanban-item-indicator-size);--tw-content:\"\";content:var(--tw-content);border-radius:3.40282e38px;position:absolute;inset-inline-start:calc(var(--spacing,.25rem) * .5)}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-primary-periority:before{background-color:rgba(var(--ax-sys-color-primary-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-highest-periority:before{background-color:rgba(var(--ax-sys-color-danger-dark-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-high-periority:before{background-color:rgba(var(--ax-sys-color-danger-600))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-medium-periority:before{background-color:rgba(var(--ax-sys-color-warning-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-low-periority:before{background-color:rgba(var(--ax-sys-color-success-light-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item.ax-kanban-lowest-periority:before{background-color:rgba(var(--ax-sys-color-success-lightest-surface))}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title{font-size:var(--text-base,1rem);line-height:var(--tw-leading,var(--text-base--line-height, 1.5 ));--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500);justify-content:space-between;align-items:center;display:flex}ax-kanban .ax-kanban-status ax-content .ax-kanban-item>ax-heading>ax-title .ax-kanban-action-icon{cursor:pointer}ax-kanban .ax-kanban-status>ax-footer{z-index:2;background-color:inherit;position:sticky;bottom:0}}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-content{syntax:\"*\";inherits:false;initial-value:\"\"}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
326
326
|
}], propDecorators: { hasActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasActions", required: false }] }], dragStartDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "dragStartDelay", required: false }] }], statuses: [{ type: i0.Input, args: [{ isSignal: true, alias: "statuses", required: false }] }], itemTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemTemplate", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: false }] }], keyField: [{ type: i0.Input, args: [{ isSignal: true, alias: "keyField", required: false }] }], indexField: [{ type: i0.Input, args: [{ isSignal: true, alias: "indexField", required: false }] }], titleField: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleField", required: false }] }], cssClassField: [{ type: i0.Input, args: [{ isSignal: true, alias: "cssClassField", required: false }] }], priorityField: [{ type: i0.Input, args: [{ isSignal: true, alias: "priorityField", required: false }] }], statusKeyField: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusKeyField", required: false }] }], descriptionField: [{ type: i0.Input, args: [{ isSignal: true, alias: "descriptionField", required: false }] }], emptyTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyTemplate", required: false }] }], headerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerTemplate", required: false }] }], footerTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "footerTemplate", required: false }] }], contentFooterTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentFooterTemplate", required: false }] }], tooltipTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipTemplate", required: false }] }], onBeforeDrop: [{ type: i0.Output, args: ["onBeforeDrop"] }], onSortChanged: [{ type: i0.Output, args: ["onSortChanged"] }], onItemClick: [{ type: i0.Output, args: ["onItemClick"] }], onActionClick: [{ type: i0.Output, args: ["onActionClick"] }], onItemDblClick: [{ type: i0.Output, args: ["onItemDblClick"] }], onItemRightClick: [{ type: i0.Output, args: ["onItemRightClick"] }] } });
|
|
327
327
|
|
|
328
328
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-kanban.mjs","sources":["../../../../packages/components/kanban/src/lib/kanban.component.ts","../../../../packages/components/kanban/src/lib/kanban.component.html","../../../../packages/components/kanban/src/acorex-components-kanban.ts"],"sourcesContent":["import { NXComponent } from '@acorex/cdk/common';\nimport { AXDragDirective, AXDropListDirective, AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';\nimport { AXDecoratorGenericComponent, AXDecoratorHeadingComponent } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, input, output, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport {\n AXKanbanBeforeDropEvent,\n AXKanbanItem,\n AXKanbanMouseEvent,\n AXKanbanSortEvent,\n AXKanbanStatus,\n} from './kanban.class';\n\n@Component({\n selector: 'ax-kanban',\n templateUrl: './kanban.component.html',\n styleUrls: ['./kanban.component.compiled.css'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgClass,\n NgTemplateOutlet,\n AXDragDirective,\n AXDropListDirective,\n AXDecoratorGenericComponent,\n AXDecoratorHeadingComponent,\n // AXDecoratorIconComponent,\n AXTooltipDirective,\n ],\n})\nexport class AXKanbanComponent extends NXComponent {\n hasActions = input(false);\n dragStartDelay = input(0);\n statuses = input<AXKanbanStatus[]>([]);\n itemTemplate = input<TemplateRef<unknown>>();\n dataSource = input<AXKanbanItem[] | any[]>();\n\n keyField = input<string>('id');\n indexField = input<string>('index');\n titleField = input<string>('title');\n cssClassField = input<string>('cssClass');\n priorityField = input<string>('priority');\n statusKeyField = input<string>('statusKey');\n descriptionField = input<string>('description');\n emptyTemplate = input<TemplateRef<unknown>>();\n headerTemplate = input<TemplateRef<unknown>>();\n footerTemplate = input<TemplateRef<unknown>>();\n contentFooterTemplate = input<TemplateRef<unknown>>();\n tooltipTemplate = input<string | TemplateRef<unknown>>();\n\n onBeforeDrop = output<AXKanbanBeforeDropEvent>();\n onSortChanged = output<AXKanbanSortEvent>();\n onItemClick = output<AXKanbanMouseEvent>();\n onActionClick = output<AXKanbanMouseEvent>();\n onItemDblClick = output<AXKanbanMouseEvent>();\n onItemRightClick = output<AXKanbanMouseEvent>();\n\n protected items = computed<AXKanbanItem[]>(() => {\n // ... your excellent gap-filling index logic remains the same ...\n const dataSource = this.dataSource() || [];\n const mappedItems = dataSource.map<AXKanbanItem>((item: any) => ({\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\n const itemsByStatus = new Map<any, AXKanbanItem[]>();\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\n const finalProcessedItems: AXKanbanItem[] = [];\n for (const group of itemsByStatus.values()) {\n const correctlyIndexedItems: AXKanbanItem[] = [];\n const itemsToBeIndexed: AXKanbanItem[] = [];\n const takenIndices = new Set<number>();\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 } 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\n protected filteredStatuses = computed(() => this.statuses().sort((a, b) => a.index - b.index));\n\n /**\n * Handles a drop operation to reorder items or move them between statuses.\n * It uses the component's current rendered state (`this.items`) as the source\n * of truth, performs precise re-indexing, and emits a comprehensive event with\n * the updated data source.\n *\n * @param event AXDropListDroppedEvent - The drag-and-drop event including indices and container information.\n * @returns Promise<void>\n */\n async drop(event: AXDropListDroppedEvent): Promise<void> {\n const { item: droppedItemDirective, currentIndex, previousIndex, container, previousContainer } = event;\n\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() as AXKanbanItem;\n\n if (!movedItemOriginalData) {\n console.warn('AXKanban: Dragged item has no [dragData]. Sort event cannot be emitted.');\n return;\n }\n\n // --- 2. Get the original item from dataSource ---\n const originalItemFromDataSource = this.dataSource().find(\n (item) => item[this.keyField()] === movedItemOriginalData.id,\n );\n\n if (!originalItemFromDataSource) {\n console.warn('AXKanban: Item not found in dataSource.');\n return;\n }\n\n // --- 3. Perform the move operation ---\n await this.performMove(\n originalItemFromDataSource,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n event.nativeEvent,\n );\n }\n\n /**\n * Programmatically move an item to a different status or reorder within the same status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItem(itemId: any, targetStatusKey: any, targetIndex?: number): Promise<boolean> {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const previousStatusKey = originalItem[statusKeyField];\n\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n\n // If target index is not provided, append to the end\n let currentIndex = targetIndex;\n if (currentIndex === undefined) {\n const targetStatusItems = this.items().filter((i) => i.statusKey === targetStatusKey);\n currentIndex = targetStatusItems.length;\n }\n\n // Perform the move\n return await this.performMove(originalItem, previousStatusKey, targetStatusKey, previousIndex, currentIndex, null);\n }\n\n /**\n * Programmatically reorder an item within the same status.\n * @param itemId The ID of the item to reorder (using keyField)\n * @param newIndex The new index position within the same status\n * @returns Promise<boolean> - true if the reorder was successful, false otherwise\n */\n async reorderItem(itemId: any, newIndex: number): Promise<boolean> {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const statusKey = originalItem[statusKeyField];\n\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n\n // Perform the move (same status, different index)\n return await this.performMove(originalItem, statusKey, statusKey, previousIndex, newIndex, null);\n }\n\n /**\n * Programmatically move an item to a different status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItemToStatus(itemId: any, targetStatusKey: any, targetIndex?: number): Promise<boolean> {\n return await this.moveItem(itemId, targetStatusKey, targetIndex);\n }\n\n /**\n * Core method that performs the move operation, handles re-indexing, and emits events.\n * This is used by both drag-and-drop operations and programmatic moves.\n *\n * @param originalItem The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n private async performMove(\n originalItem: any,\n previousStatusKey: any,\n currentStatusKey: any,\n previousIndex: number,\n currentIndex: number,\n nativeEvent: MouseEvent | null,\n ): Promise<boolean> {\n // --- 1. Emit beforeDrop event and check if drop should be canceled ---\n const shouldProceed = await this.emitBeforeDropEvent(\n originalItem,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n nativeEvent,\n );\n if (!shouldProceed) {\n return false;\n }\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\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\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\n // Re-index only this modified list\n list.forEach((item, idx) => (item.index = idx));\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\n // Remove from source list\n const [movedItem] = sourceList.splice(previousIndex, 1);\n\n // Update its status and add to destination list\n movedItem.statusKey = currentStatusKey;\n destList.splice(currentIndex, 0, movedItem);\n\n // Re-index both affected lists\n sourceList.forEach((item, idx) => (item.index = idx));\n destList.forEach((item, idx) => (item.index = idx));\n }\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\n const updatedItemsMap = new Map(currentItemsState.map((i) => [i.id, i]));\n const finalDataSource = structuredClone(this.dataSource());\n\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\n const movedItemId = originalItem[keyField];\n const finalOriginalItemFromDataSource = finalDataSource.find((item) => item[keyField] === movedItemId);\n\n // --- 5. Emit the final, comprehensive event ---\n this.onSortChanged.emit({\n sender: this,\n nativeEvent: nativeEvent,\n // The original data object that was moved\n item: finalOriginalItemFromDataSource,\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 return true;\n }\n\n /**\n * Emit beforeDrop event and return whether to continue with the drop operation.\n * Supports both synchronous and asynchronous event handlers via the `wait()` method.\n * @param item The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the drop should proceed, false if it should be canceled\n */\n private async emitBeforeDropEvent(\n item: any,\n previousStatusKey: any,\n currentStatusKey: any,\n previousIndex: number,\n currentIndex: number,\n nativeEvent: MouseEvent | null,\n ): Promise<boolean> {\n const pendingPromises: Promise<any>[] = [];\n\n const beforeDropEvent: AXKanbanBeforeDropEvent = {\n sender: this,\n nativeEvent,\n item,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n canceled: false,\n wait: (promise: Promise<any>) => {\n pendingPromises.push(promise);\n },\n };\n\n // Emit the event - handlers can call event.wait() to register async operations\n this.onBeforeDrop.emit(beforeDropEvent);\n\n // Wait for all registered async operations to complete\n if (pendingPromises.length > 0) {\n await Promise.all(pendingPromises);\n }\n\n // After all async operations complete, check if the drop was canceled\n return !beforeDropEvent.canceled;\n }\n\n protected getItemsById(key: any): AXKanbanItem[] {\n return this.items().filter((e) => e.statusKey === key);\n }\n\n protected getOriginalItemsById(key: any): any[] {\n return this.dataSource().filter((e) => e[this.statusKeyField()] === key);\n }\n\n protected stringify(value: any): string {\n return JSON.stringify(value);\n }\n\n protected handleActionClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onActionClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n\n protected handleClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onItemClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n\n protected handleDblClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onItemDblClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n\n protected handleRightClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onItemRightClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n}\n","@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <!-- <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"handleActionClick($event, item)\"\n >\n </ax-icon> -->\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-kanban.mjs","sources":["../../../../packages/components/kanban/src/lib/kanban.component.ts","../../../../packages/components/kanban/src/lib/kanban.component.html","../../../../packages/components/kanban/src/acorex-components-kanban.ts"],"sourcesContent":["import { NXComponent } from '@acorex/cdk/common';\nimport { AXDragDirective, AXDropListDirective, AXDropListDroppedEvent } from '@acorex/cdk/drag-drop';\nimport { AXDecoratorGenericComponent, AXDecoratorHeadingComponent } from '@acorex/components/decorators';\nimport { AXTooltipDirective } from '@acorex/components/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, input, output, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport {\n AXKanbanBeforeDropEvent,\n AXKanbanItem,\n AXKanbanMouseEvent,\n AXKanbanSortEvent,\n AXKanbanStatus,\n} from './kanban.class';\n\n@Component({\n selector: 'ax-kanban',\n templateUrl: './kanban.component.html',\n styleUrls: ['./kanban.component.compiled.css'],\n encapsulation: ViewEncapsulation.None,\n imports: [\n NgClass,\n NgTemplateOutlet,\n AXDragDirective,\n AXDropListDirective,\n AXDecoratorGenericComponent,\n AXDecoratorHeadingComponent,\n // AXDecoratorIconComponent,\n AXTooltipDirective,\n ],\n})\nexport class AXKanbanComponent extends NXComponent {\n hasActions = input(false);\n dragStartDelay = input(0);\n statuses = input<AXKanbanStatus[]>([]);\n itemTemplate = input<TemplateRef<unknown>>();\n dataSource = input<AXKanbanItem[] | any[]>();\n\n keyField = input<string>('id');\n indexField = input<string>('index');\n titleField = input<string>('title');\n cssClassField = input<string>('cssClass');\n priorityField = input<string>('priority');\n statusKeyField = input<string>('statusKey');\n descriptionField = input<string>('description');\n emptyTemplate = input<TemplateRef<unknown>>();\n headerTemplate = input<TemplateRef<unknown>>();\n footerTemplate = input<TemplateRef<unknown>>();\n contentFooterTemplate = input<TemplateRef<unknown>>();\n tooltipTemplate = input<string | TemplateRef<unknown>>();\n\n onBeforeDrop = output<AXKanbanBeforeDropEvent>();\n onSortChanged = output<AXKanbanSortEvent>();\n onItemClick = output<AXKanbanMouseEvent>();\n onActionClick = output<AXKanbanMouseEvent>();\n onItemDblClick = output<AXKanbanMouseEvent>();\n onItemRightClick = output<AXKanbanMouseEvent>();\n\n protected items = computed<AXKanbanItem[]>(() => {\n // ... your excellent gap-filling index logic remains the same ...\n const dataSource = this.dataSource() || [];\n const mappedItems = dataSource.map<AXKanbanItem>((item: any) => ({\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\n const itemsByStatus = new Map<any, AXKanbanItem[]>();\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\n const finalProcessedItems: AXKanbanItem[] = [];\n for (const group of itemsByStatus.values()) {\n const correctlyIndexedItems: AXKanbanItem[] = [];\n const itemsToBeIndexed: AXKanbanItem[] = [];\n const takenIndices = new Set<number>();\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 } 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\n protected filteredStatuses = computed(() => this.statuses().sort((a, b) => a.index - b.index));\n\n /**\n * Handles a drop operation to reorder items or move them between statuses.\n * It uses the component's current rendered state (`this.items`) as the source\n * of truth, performs precise re-indexing, and emits a comprehensive event with\n * the updated data source.\n *\n * @param event AXDropListDroppedEvent - The drag-and-drop event including indices and container information.\n * @returns Promise<void>\n */\n async drop(event: AXDropListDroppedEvent): Promise<void> {\n const { item: droppedItemDirective, currentIndex, previousIndex, container, previousContainer } = event;\n\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() as AXKanbanItem;\n\n if (!movedItemOriginalData) {\n console.warn('AXKanban: Dragged item has no [dragData]. Sort event cannot be emitted.');\n return;\n }\n\n // --- 2. Get the original item from dataSource ---\n const originalItemFromDataSource = this.dataSource().find(\n (item) => item[this.keyField()] === movedItemOriginalData.id,\n );\n\n if (!originalItemFromDataSource) {\n console.warn('AXKanban: Item not found in dataSource.');\n return;\n }\n\n // --- 3. Perform the move operation ---\n await this.performMove(\n originalItemFromDataSource,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n event.nativeEvent,\n );\n }\n\n /**\n * Programmatically move an item to a different status or reorder within the same status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItem(itemId: any, targetStatusKey: any, targetIndex?: number): Promise<boolean> {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const previousStatusKey = originalItem[statusKeyField];\n\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n\n // If target index is not provided, append to the end\n let currentIndex = targetIndex;\n if (currentIndex === undefined) {\n const targetStatusItems = this.items().filter((i) => i.statusKey === targetStatusKey);\n currentIndex = targetStatusItems.length;\n }\n\n // Perform the move\n return await this.performMove(originalItem, previousStatusKey, targetStatusKey, previousIndex, currentIndex, null);\n }\n\n /**\n * Programmatically reorder an item within the same status.\n * @param itemId The ID of the item to reorder (using keyField)\n * @param newIndex The new index position within the same status\n * @returns Promise<boolean> - true if the reorder was successful, false otherwise\n */\n async reorderItem(itemId: any, newIndex: number): Promise<boolean> {\n const keyField = this.keyField();\n const originalItem = this.dataSource().find((item) => item[keyField] === itemId);\n\n if (!originalItem) {\n console.warn(`AXKanban: Item with id \"${itemId}\" not found in dataSource.`);\n return false;\n }\n\n // Get current status from dataSource\n const statusKeyField = this.statusKeyField();\n const statusKey = originalItem[statusKeyField];\n\n // Get current index from the computed items state (more accurate than dataSource field)\n const currentItem = this.items().find((i) => i.id === itemId);\n const previousIndex = currentItem?.index ?? 0;\n\n // Perform the move (same status, different index)\n return await this.performMove(originalItem, statusKey, statusKey, previousIndex, newIndex, null);\n }\n\n /**\n * Programmatically move an item to a different status.\n * @param itemId The ID of the item to move (using keyField)\n * @param targetStatusKey The target status key to move the item to\n * @param targetIndex Optional target index within the target status. If not provided, item will be appended to the end.\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n async moveItemToStatus(itemId: any, targetStatusKey: any, targetIndex?: number): Promise<boolean> {\n return await this.moveItem(itemId, targetStatusKey, targetIndex);\n }\n\n /**\n * Core method that performs the move operation, handles re-indexing, and emits events.\n * This is used by both drag-and-drop operations and programmatic moves.\n *\n * @param originalItem The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the move was successful, false otherwise\n */\n private async performMove(\n originalItem: any,\n previousStatusKey: any,\n currentStatusKey: any,\n previousIndex: number,\n currentIndex: number,\n nativeEvent: MouseEvent | null,\n ): Promise<boolean> {\n // --- 1. Emit beforeDrop event and check if drop should be canceled ---\n const shouldProceed = await this.emitBeforeDropEvent(\n originalItem,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n nativeEvent,\n );\n if (!shouldProceed) {\n return false;\n }\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\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\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\n // Re-index only this modified list\n list.forEach((item, idx) => (item.index = idx));\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\n // Remove from source list\n const [movedItem] = sourceList.splice(previousIndex, 1);\n\n // Update its status and add to destination list\n movedItem.statusKey = currentStatusKey;\n destList.splice(currentIndex, 0, movedItem);\n\n // Re-index both affected lists\n sourceList.forEach((item, idx) => (item.index = idx));\n destList.forEach((item, idx) => (item.index = idx));\n }\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\n const updatedItemsMap = new Map(currentItemsState.map((i) => [i.id, i]));\n const finalDataSource = structuredClone(this.dataSource());\n\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\n const movedItemId = originalItem[keyField];\n const finalOriginalItemFromDataSource = finalDataSource.find((item) => item[keyField] === movedItemId);\n\n // --- 5. Emit the final, comprehensive event ---\n this.onSortChanged.emit({\n sender: this,\n nativeEvent: nativeEvent,\n // The original data object that was moved\n item: finalOriginalItemFromDataSource,\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 return true;\n }\n\n /**\n * Emit beforeDrop event and return whether to continue with the drop operation.\n * Supports both synchronous and asynchronous event handlers via the `wait()` method.\n * @param item The original item from dataSource that is being moved\n * @param previousStatusKey The status key the item is moving from\n * @param currentStatusKey The status key the item is moving to\n * @param previousIndex The index the item is moving from\n * @param currentIndex The index the item is moving to\n * @param nativeEvent The native mouse event (null for programmatic moves)\n * @returns Promise<boolean> - true if the drop should proceed, false if it should be canceled\n */\n private async emitBeforeDropEvent(\n item: any,\n previousStatusKey: any,\n currentStatusKey: any,\n previousIndex: number,\n currentIndex: number,\n nativeEvent: MouseEvent | null,\n ): Promise<boolean> {\n const pendingPromises: Promise<any>[] = [];\n\n const beforeDropEvent: AXKanbanBeforeDropEvent = {\n sender: this,\n nativeEvent,\n item,\n previousStatusKey,\n currentStatusKey,\n previousIndex,\n currentIndex,\n canceled: false,\n wait: (promise: Promise<any>) => {\n pendingPromises.push(promise);\n },\n };\n\n // Emit the event - handlers can call event.wait() to register async operations\n this.onBeforeDrop.emit(beforeDropEvent);\n\n // Wait for all registered async operations to complete\n if (pendingPromises.length > 0) {\n await Promise.all(pendingPromises);\n }\n\n // After all async operations complete, check if the drop was canceled\n return !beforeDropEvent.canceled;\n }\n\n protected getItemsById(key: any): AXKanbanItem[] {\n return this.items().filter((e) => e.statusKey === key);\n }\n\n protected getOriginalItemsById(key: any): any[] {\n return this.dataSource().filter((e) => e[this.statusKeyField()] === key);\n }\n\n protected stringify(value: any): string {\n return JSON.stringify(value);\n }\n\n protected handleActionClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onActionClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n\n protected handleClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onItemClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n\n protected handleDblClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onItemDblClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n\n protected handleRightClick(event: MouseEvent, item: AXKanbanItem) {\n const originalItemFromDataSource = this.dataSource().find(\n (originalItem) => originalItem[this.keyField()] === item.id,\n );\n this.onItemRightClick.emit({ item: originalItemFromDataSource, nativeEvent: event, sender: this });\n }\n}\n","@for (status of filteredStatuses(); track status.key) {\n <div class=\"ax-kanban-status {{ status.cssClass }}\">\n <ax-header>\n @if (headerTemplate()) {\n <ng-container\n [ngTemplateOutlet]=\"headerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n } @else {\n <ax-title>{{ status.title }}</ax-title>\n }\n </ax-header>\n <ax-content axDropList dropListGroup=\"kanban\" [id]=\"stringify(status.key)\" (dropListDropped)=\"drop($event)\">\n @if (emptyTemplate() && getOriginalItemsById(status.key).length === 0) {\n <ng-container\n [ngTemplateOutlet]=\"emptyTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n }\n @if (itemTemplate()) {\n @for (item of getOriginalItemsById(status.key); track item[keyField()]) {\n <div\n axDrag\n [dragData]=\"item\"\n class=\"{{ item.cssClass }}\"\n [dragStartDelay]=\"dragStartDelay()\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ng-container\n [ngTemplateOutlet]=\"itemTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n }\n } @else {\n @for (item of getItemsById(status.key); track item.id) {\n <div\n axDrag\n [dragData]=\"item\"\n [dragCursor]=\"'grab'\"\n [dragStartDelay]=\"dragStartDelay()\"\n class=\"ax-kanban-item {{ item.cssClass }}\"\n [ngClass]=\"`ax-kanban-${item.priority ?? 'primary'}-periority`\"\n [axTooltipDisabled]=\"tooltipTemplate() ? false : true\"\n [axTooltip]=\"tooltipTemplate()\"\n [axTooltipContext]=\"item\"\n (click)=\"handleClick($event, item)\"\n (dblclick)=\"handleDblClick($event, item)\"\n (contextmenu)=\"handleRightClick($event, item)\"\n >\n <ax-heading>\n <ax-title>\n <span class=\"ax-kanban-truncate\">{{ item.title }}</span>\n @if (hasActions()) {\n <!-- <ax-icon\n class=\"ax-icon ax-icon-more-horizontal ax-kanban-action-icon\"\n (click)=\"handleActionClick($event, item)\"\n >\n </ax-icon> -->\n }\n </ax-title>\n <ax-subtitle>{{ item.description }}</ax-subtitle>\n </ax-heading>\n </div>\n }\n }\n @if (contentFooterTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"contentFooterTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </ax-content>\n @if (footerTemplate()) {\n <ax-footer>\n <ng-container\n [ngTemplateOutlet]=\"footerTemplate()\"\n [ngTemplateOutletContext]=\"{ $implicit: status }\"\n ></ng-container>\n </ax-footer>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -47,7 +47,7 @@ class AXLoadingSpinnerComponent {
|
|
|
47
47
|
@if (text) {
|
|
48
48
|
<span> {{ text }} </span>
|
|
49
49
|
}
|
|
50
|
-
`, isInline: true, styles: ["@layer components{ax-loading-spinner .ax-loader{box-sizing:border-box;animation:var(--animate-spin,spin 1s linear infinite);border-color:var(--ax-comp-bg);border-radius:3.40282e38px;margin:auto;display:inline-block;border-bottom-color:#0000!important}ax-loading-spinner.ax-white .ax-loader{border-color:var(--color-white,#fff)}ax-loading-spinner.ax-default .ax-loader{border-color:var(--color-black,#000)}ax-loading-spinner.ax-default .ax-loader:where(.ax-dark,.ax-dark *){border-color:var(--color-white,#fff)}ax-loading-spinner.ax-black .ax-loader{border-color:var(--color-black,#000)}}@keyframes spin{to{transform:rotate(360deg)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
50
|
+
`, isInline: true, styles: ["@layer components{ax-loading-spinner .ax-loader{box-sizing:border-box;animation:var(--animate-spin,spin 1s linear infinite);border-color:var(--ax-comp-bg);border-radius:3.40282e38px;margin:auto;display:inline-block;border-bottom-color:#0000!important}ax-loading-spinner.ax-white .ax-loader{border-color:var(--color-white,#fff)}ax-loading-spinner.ax-default .ax-loader{border-color:var(--color-black,#000)}ax-loading-spinner.ax-default .ax-loader:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){border-color:var(--color-white,#fff)}ax-loading-spinner.ax-black .ax-loader{border-color:var(--color-black,#000)}}@keyframes spin{to{transform:rotate(360deg)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], encapsulation: i0.ViewEncapsulation.None }); }
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXLoadingSpinnerComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
@@ -62,7 +62,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
62
62
|
@if (text) {
|
|
63
63
|
<span> {{ text }} </span>
|
|
64
64
|
}
|
|
65
|
-
`, encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXLoadingSpinnerComponent }], styles: ["@layer components{ax-loading-spinner .ax-loader{box-sizing:border-box;animation:var(--animate-spin,spin 1s linear infinite);border-color:var(--ax-comp-bg);border-radius:3.40282e38px;margin:auto;display:inline-block;border-bottom-color:#0000!important}ax-loading-spinner.ax-white .ax-loader{border-color:var(--color-white,#fff)}ax-loading-spinner.ax-default .ax-loader{border-color:var(--color-black,#000)}ax-loading-spinner.ax-default .ax-loader:where(.ax-dark,.ax-dark *){border-color:var(--color-white,#fff)}ax-loading-spinner.ax-black .ax-loader{border-color:var(--color-black,#000)}}@keyframes spin{to{transform:rotate(360deg)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
65
|
+
`, encapsulation: ViewEncapsulation.None, providers: [{ provide: AXComponent, useExisting: AXLoadingSpinnerComponent }], styles: ["@layer components{ax-loading-spinner .ax-loader{box-sizing:border-box;animation:var(--animate-spin,spin 1s linear infinite);border-color:var(--ax-comp-bg);border-radius:3.40282e38px;margin:auto;display:inline-block;border-bottom-color:#0000!important}ax-loading-spinner.ax-white .ax-loader{border-color:var(--color-white,#fff)}ax-loading-spinner.ax-default .ax-loader{border-color:var(--color-black,#000)}ax-loading-spinner.ax-default .ax-loader:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){border-color:var(--color-white,#fff)}ax-loading-spinner.ax-black .ax-loader{border-color:var(--color-black,#000)}}@keyframes spin{to{transform:rotate(360deg)}}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
66
66
|
}], propDecorators: { text: [{
|
|
67
67
|
type: Input
|
|
68
68
|
}], color: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-components-loading.mjs","sources":["../../../../packages/components/loading/src/lib/loading-spinner.component.ts","../../../../packages/components/loading/src/lib/loading.config.ts","../../../../packages/components/loading/src/lib/loading.component.ts","../../../../packages/components/loading/src/lib/loading.service.ts","../../../../packages/components/loading/src/lib/loading.directive.ts","../../../../packages/components/loading/src/lib/loading.module.ts","../../../../packages/components/loading/src/acorex-components-loading.ts"],"sourcesContent":["import { AXComponent, AXStyleColorType } from '@acorex/cdk/common';\nimport { Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A loading spinner component that displays a rotating spinner icon.\n * @category Components\n */\n@Component({\n selector: 'ax-loading-spinner',\n template: `\n <span\n class=\"ax-loader\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [style.border-width.px]=\"stroke\"\n [style.border-color]=\"color\"\n ></span>\n @if (text) {\n <span> {{ text }} </span>\n }\n `,\n styleUrls: ['./loading-spinner.component.compiled.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXLoadingSpinnerComponent }],\n})\nexport class AXLoadingSpinnerComponent {\n /**\n * The text to display alongside the spinner.\n */\n @Input()\n text: string;\n\n /**\n * Color of the spinner. Can be a predefined style color or a custom color.\n * @defaultValue 'default'\n */\n @Input()\n color: AXStyleColorType | 'white' | 'black' = 'default';\n\n /**\n * Size of the spinner, in pixels. This determines both the width and height of the spinner.\n * @defaultValue 16\n */\n @Input() size = 16;\n\n /**\n * Thickness of the spinner's border, in pixels. This affects the visual weight of the spinner's outline.\n * @defaultValue 3\n */\n @Input() stroke = 3;\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string {\n return `ax-${this.color}`;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { AXLoadingSpinnerComponent } from './loading-spinner.component';\n\nexport interface AXLoadingConfig {\n spinner: unknown;\n}\n\nexport const AX_LOADING_CONFIG = new InjectionToken<AXLoadingConfig>('AX_LOADING_CONFIG', {\n providedIn: 'root',\n factory: () => AXLoadingDefaultConfig,\n});\n\nexport const AXLoadingDefaultConfig: AXLoadingConfig = {\n spinner: AXLoadingSpinnerComponent,\n};\n\nexport type PartialLoadingConfig = Partial<AXLoadingConfig>;\n\nexport function loadingConfig(config: PartialLoadingConfig = {}): AXLoadingConfig {\n const result = {\n ...AXLoadingDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport {\n CdkPortalOutlet,\n CdkPortalOutletAttachedRef,\n ComponentPortal,\n ComponentType,\n Portal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { AXLoadingConfig, AX_LOADING_CONFIG } from './loading.config';\n\n/**\n * A component that displays a loading indicator.\n * @category Components\n */\n@Component({\n selector: 'ax-loading',\n template: ` <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"_handleAttached($event)\"></ng-template> `,\n styleUrls: ['./loading.component.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkPortalOutlet],\n providers: [{ provide: AXComponent, useExisting: AXLoadingComponent }],\n})\nexport class AXLoadingComponent extends MXBaseComponent implements OnInit {\n private config: AXLoadingConfig = inject(AX_LOADING_CONFIG);\n\n /**\n * @ignore\n */\n protected _selectedPortal: Portal<unknown>;\n\n /**\n * Emits an event when the visibility state of the component changes.\n * @event\n */\n @Output()\n visibleChange: EventEmitter<boolean> = new EventEmitter();\n\n /**\n * @ignore\n */\n private _visible: boolean;\n\n /**\n * Determines whether the component is visible or not.\n */\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n /**\n * Sets the visibility of the component and emits a visibility change event.\n *\n * @param v - A boolean value indicating whether the component should be visible.\n */\n public set visible(v: boolean) {\n if (v != this._visible) {\n this._visible = v;\n v ? this.getHostElement().classList.remove('hidden') : this.getHostElement().classList.add('hidden');\n this.visibleChange.emit(v);\n }\n }\n\n /**\n * Specifies the type of loading indicator to display.\n * @defaultValue 'spinner'\n */\n @Input()\n type = 'spinner';\n\n /**\n * Provides additional context or data that may be used by the component.\n */\n @Input()\n context?: unknown;\n\n /**\n * @ignore\n */\n override ngOnInit() {\n super.ngOnInit();\n this._selectedPortal = new ComponentPortal(this.config.spinner as ComponentType<unknown>);\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n protected _handleAttached(ref: CdkPortalOutletAttachedRef) {\n ref = ref as ComponentRef<unknown>;\n if (ref.instance && this.context) {\n Object.assign(ref.instance, this.context);\n }\n }\n}\n","import { AXOverlayService } from '@acorex/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, asyncScheduler } from 'rxjs';\nimport { finalize, observeOn } from 'rxjs/operators';\nimport { AXLoadingComponent } from './loading.component';\n\ntype LoadingContext = object;\ntype LoaderId = string | number; // expected enum values\nconst DEFAULT_LOADER_ID: LoaderId = '_DEFAULT';\n\ninterface LoadingOverlayEntry {\n dispose: () => void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXLoadingService {\n // WeakMap will remove components from itself upon\n // their garbage collection by JS runtime.\n protected loadingStates = new WeakMap<LoadingContext, Map<LoaderId, boolean>>();\n // Both loading state maps are kept in-sync such that\n // they can be used by both sync and async methods.\n protected loadingStates$ = new WeakMap<LoadingContext, Map<LoaderId, BehaviorSubject<boolean>>>();\n\n private overlayService = inject(AXOverlayService);\n private document = inject(DOCUMENT);\n private activeOverlays = new Map<number, LoadingOverlayEntry>();\n\n /**\n * Shows a modal loading overlay.\n *\n * If a host element is provided via `config.location`, the overlay is attached to that\n * element; otherwise it is attached to `document.body`.\n *\n * @param config Optional configuration: host `location`, `type`, and `context` passed to the spinner instance.\n * @returns number Unique loading reference id to be used with {@link hide}.\n */\n show(config?: { location?: Element; type?: string; context?: unknown }): number {\n const ce = (config?.location ?? this.document.body) as HTMLElement;\n const id = new Date().getTime();\n const isElementLevel = ce !== this.document.body;\n\n const inputs: Record<string, unknown> = {};\n if (config?.type) inputs['type'] = config.type;\n if (config?.context) inputs['context'] = config.context;\n\n const entry: LoadingOverlayEntry = {\n dispose: () => {\n /* noop until overlay is created */\n },\n };\n this.activeOverlays.set(id, entry);\n\n this.overlayService\n .create<AXLoadingComponent>(AXLoadingComponent, {\n inputs,\n backdrop: isElementLevel\n ? { enabled: false }\n : {\n enabled: true,\n background: true,\n closeOnClick: false,\n backdropClass: 'ax-loading-overlay-backdrop',\n },\n panelClass: ['ax-loading-pane', 'animate-fadeIn'],\n })\n .then((overlayRef) => {\n if (overlayRef.instance instanceof ComponentRef) {\n const instance = overlayRef.instance.instance;\n instance.visible = true;\n instance.id = id.toString();\n }\n\n if (isElementLevel) {\n const backdrop = this.document.createElement('div');\n backdrop.classList.add('ax-loading-overlay-backdrop', 'animate-fadeIn');\n backdrop.style.position = 'absolute';\n backdrop.style.top = '0';\n backdrop.style.left = '0';\n backdrop.style.width = '100%';\n backdrop.style.height = '100%';\n\n ce.style.position = 'relative';\n\n const ov = overlayRef.overlayElement;\n if (ov) {\n ov.style.position = 'absolute';\n ce.appendChild(backdrop);\n ce.appendChild(ov);\n setTimeout(() => {\n ov.style.position = 'absolute';\n });\n }\n\n entry.dispose = () => {\n backdrop.remove();\n overlayRef.dispose();\n };\n } else {\n entry.dispose = () => overlayRef.dispose();\n }\n\n if (!this.activeOverlays.has(id)) {\n entry.dispose();\n }\n });\n\n return id;\n }\n\n /**\n * Hides a previously shown modal loading overlay.\n *\n * @param id Loading reference id returned by {@link show}.\n */\n hide(id: number): void {\n const entry = this.activeOverlays.get(id);\n if (entry) {\n entry.dispose();\n this.activeOverlays.delete(id);\n }\n }\n\n /**\n * Wraps an Observable and toggles loading for its duration.\n *\n * Starts loading before subscription settles and ends loading on finalize.\n *\n * @param source$ Source observable.\n * @param context Loading context key.\n * @param loaderId Optional id to scope multiple loaders per context.\n * @returns Observable<V> The original stream with loading side effects.\n */\n doLoading<V>(source$: Observable<V>, context: LoadingContext, loaderId?: LoaderId): Observable<V> {\n this.startLoading(context, loaderId);\n return source$.pipe(\n observeOn(asyncScheduler),\n finalize(() => this.endLoading(context, loaderId)),\n );\n }\n\n /**\n * Returns current loading state for the given context and optional loader id.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns boolean True if any matching loader is active.\n */\n isLoading(context: LoadingContext, loaderId?: LoaderId): boolean {\n const loaderStates = this.loadingStates.get(context);\n\n if (!loaderStates) {\n return false;\n } else {\n if (loaderId !== undefined) {\n return loaderStates.get(this.getLoaderId(loaderId)) ?? false;\n } else {\n return [...loaderStates.values()].filter((state) => state).length > 0;\n }\n }\n }\n\n /**\n * Observable loading state for the given context and optional loader id.\n * Initializes the state if it does not exist yet.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns Observable<boolean>\n */\n isLoading$(context: LoadingContext, loaderId?: LoaderId | any): Observable<boolean> {\n const coalescedLoaderId = this.getLoaderId(loaderId);\n\n if (!this.hasLoadingStates(context, coalescedLoaderId)) {\n this.setLoadingState(context, false, loaderId);\n }\n\n return this.loadingStates$.get(context).get(coalescedLoaderId);\n }\n\n /**\n * Sets loading state to true for the given context/loader id.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns void\n */\n startLoading(context: LoadingContext, loaderId?: LoaderId): void {\n this.setLoadingState(context, true, this.getLoaderId(loaderId));\n }\n\n /**\n * Sets loading state to false for the given context/loader id.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns void\n */\n endLoading(context: LoadingContext, loaderId?: LoaderId): void {\n this.setLoadingState(context, false, this.getLoaderId(loaderId));\n }\n\n /**\n * Clears all tracked loading states across all contexts.\n *\n * @returns void\n */\n clearLoadings(): void {\n this.loadingStates = new WeakMap<LoadingContext, Map<LoaderId, boolean>>();\n this.loadingStates$ = new WeakMap<LoadingContext, Map<LoaderId, BehaviorSubject<boolean>>>();\n }\n\n protected setLoadingState(context: LoadingContext, state: boolean, loaderId: LoaderId): void {\n if (!this.hasLoadingStates(context, loaderId)) {\n if (this.hasContextLoadingState(context)) {\n this.loadingStates.get(context).set(loaderId, state);\n this.loadingStates$.get(context).set(loaderId, new BehaviorSubject<boolean>(state));\n } else {\n this.loadingStates.set(context, new Map<LoaderId, boolean>([[loaderId, state]]));\n this.loadingStates$.set(\n context,\n new Map<LoaderId, BehaviorSubject<boolean>>([[loaderId, new BehaviorSubject<boolean>(state)]]),\n );\n }\n } else {\n this.loadingStates.get(context).set(loaderId, state);\n this.loadingStates$.get(context).get(loaderId).next(state);\n }\n }\n\n protected hasLoadingStates(context: LoadingContext, loaderId: LoaderId) {\n return this.hasContextLoadingState(context) && this.hasLoaderLoadingState(context, loaderId);\n }\n\n protected hasContextLoadingState(context: LoadingContext) {\n return this.loadingStates.has(context) && this.loadingStates$.has(context);\n }\n\n protected hasLoaderLoadingState(context: LoadingContext, loaderId: LoaderId) {\n return this.loadingStates.get(context).has(loaderId) && this.loadingStates$.get(context).has(loaderId);\n }\n\n protected getLoaderId(loaderId?: LoaderId): LoaderId {\n return loaderId ?? DEFAULT_LOADER_ID;\n }\n}\n","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { AXLoadingService } from './loading.service';\n\n// This directive places an overlay with a loading spinner over its host element\n// if isLoading equals to true and hides the overlay when isLoading becomes false.\n@Directive({ selector: '[axIsLoading]' })\nexport class AXLoadingDirective {\n protected readonly elementRef = inject(ElementRef);\n protected readonly loadingService = inject(AXLoadingService);\n\n private _hostElement!: HTMLDivElement;\n private _loadingRef!: number;\n\n private _isLoading: boolean;\n\n @Input('axIsLoading')\n public get isLoading(): boolean {\n return this._isLoading;\n }\n public set isLoading(v: boolean) {\n this._isLoading = v;\n if (v) {\n this._loadingRef = this.loadingService.show({\n location: this._hostElement,\n });\n } else {\n this.loadingService.hide(this._loadingRef);\n }\n }\n\n constructor() {\n this._hostElement = this.elementRef.nativeElement;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXLoadingSpinnerComponent } from './loading-spinner.component';\nimport { AXLoadingComponent } from './loading.component';\nimport { AXLoadingDirective } from './loading.directive';\n\n@NgModule({\n imports: [AXLoadingComponent, AXLoadingDirective, AXLoadingSpinnerComponent],\n exports: [AXLoadingComponent, AXLoadingDirective, AXLoadingSpinnerComponent],\n})\nexport class AXLoadingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-components-loading.mjs","sources":["../../../../packages/components/loading/src/lib/loading-spinner.component.ts","../../../../packages/components/loading/src/lib/loading.config.ts","../../../../packages/components/loading/src/lib/loading.component.ts","../../../../packages/components/loading/src/lib/loading.service.ts","../../../../packages/components/loading/src/lib/loading.directive.ts","../../../../packages/components/loading/src/lib/loading.module.ts","../../../../packages/components/loading/src/acorex-components-loading.ts"],"sourcesContent":["import { AXComponent, AXStyleColorType } from '@acorex/cdk/common';\nimport { Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n/**\n * A loading spinner component that displays a rotating spinner icon.\n * @category Components\n */\n@Component({\n selector: 'ax-loading-spinner',\n template: `\n <span\n class=\"ax-loader\"\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [style.border-width.px]=\"stroke\"\n [style.border-color]=\"color\"\n ></span>\n @if (text) {\n <span> {{ text }} </span>\n }\n `,\n styleUrls: ['./loading-spinner.component.compiled.css'],\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: AXComponent, useExisting: AXLoadingSpinnerComponent }],\n})\nexport class AXLoadingSpinnerComponent {\n /**\n * The text to display alongside the spinner.\n */\n @Input()\n text: string;\n\n /**\n * Color of the spinner. Can be a predefined style color or a custom color.\n * @defaultValue 'default'\n */\n @Input()\n color: AXStyleColorType | 'white' | 'black' = 'default';\n\n /**\n * Size of the spinner, in pixels. This determines both the width and height of the spinner.\n * @defaultValue 16\n */\n @Input() size = 16;\n\n /**\n * Thickness of the spinner's border, in pixels. This affects the visual weight of the spinner's outline.\n * @defaultValue 3\n */\n @Input() stroke = 3;\n\n /**\n * @ignore\n */\n @HostBinding('class')\n private get __hostClass(): string {\n return `ax-${this.color}`;\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { AXLoadingSpinnerComponent } from './loading-spinner.component';\n\nexport interface AXLoadingConfig {\n spinner: unknown;\n}\n\nexport const AX_LOADING_CONFIG = new InjectionToken<AXLoadingConfig>('AX_LOADING_CONFIG', {\n providedIn: 'root',\n factory: () => AXLoadingDefaultConfig,\n});\n\nexport const AXLoadingDefaultConfig: AXLoadingConfig = {\n spinner: AXLoadingSpinnerComponent,\n};\n\nexport type PartialLoadingConfig = Partial<AXLoadingConfig>;\n\nexport function loadingConfig(config: PartialLoadingConfig = {}): AXLoadingConfig {\n const result = {\n ...AXLoadingDefaultConfig,\n ...config,\n };\n return result;\n}\n","import { AXComponent, MXBaseComponent } from '@acorex/cdk/common';\nimport {\n CdkPortalOutlet,\n CdkPortalOutletAttachedRef,\n ComponentPortal,\n ComponentType,\n Portal,\n} from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport { AXLoadingConfig, AX_LOADING_CONFIG } from './loading.config';\n\n/**\n * A component that displays a loading indicator.\n * @category Components\n */\n@Component({\n selector: 'ax-loading',\n template: ` <ng-template [cdkPortalOutlet]=\"_selectedPortal\" (attached)=\"_handleAttached($event)\"></ng-template> `,\n styleUrls: ['./loading.component.compiled.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkPortalOutlet],\n providers: [{ provide: AXComponent, useExisting: AXLoadingComponent }],\n})\nexport class AXLoadingComponent extends MXBaseComponent implements OnInit {\n private config: AXLoadingConfig = inject(AX_LOADING_CONFIG);\n\n /**\n * @ignore\n */\n protected _selectedPortal: Portal<unknown>;\n\n /**\n * Emits an event when the visibility state of the component changes.\n * @event\n */\n @Output()\n visibleChange: EventEmitter<boolean> = new EventEmitter();\n\n /**\n * @ignore\n */\n private _visible: boolean;\n\n /**\n * Determines whether the component is visible or not.\n */\n @Input()\n public get visible(): boolean {\n return this._visible;\n }\n\n /**\n * Sets the visibility of the component and emits a visibility change event.\n *\n * @param v - A boolean value indicating whether the component should be visible.\n */\n public set visible(v: boolean) {\n if (v != this._visible) {\n this._visible = v;\n v ? this.getHostElement().classList.remove('hidden') : this.getHostElement().classList.add('hidden');\n this.visibleChange.emit(v);\n }\n }\n\n /**\n * Specifies the type of loading indicator to display.\n * @defaultValue 'spinner'\n */\n @Input()\n type = 'spinner';\n\n /**\n * Provides additional context or data that may be used by the component.\n */\n @Input()\n context?: unknown;\n\n /**\n * @ignore\n */\n override ngOnInit() {\n super.ngOnInit();\n this._selectedPortal = new ComponentPortal(this.config.spinner as ComponentType<unknown>);\n this.cdr.markForCheck();\n }\n\n /**\n * @ignore\n */\n protected _handleAttached(ref: CdkPortalOutletAttachedRef) {\n ref = ref as ComponentRef<unknown>;\n if (ref.instance && this.context) {\n Object.assign(ref.instance, this.context);\n }\n }\n}\n","import { AXOverlayService } from '@acorex/cdk/overlay';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, Injectable, inject } from '@angular/core';\nimport { BehaviorSubject, Observable, asyncScheduler } from 'rxjs';\nimport { finalize, observeOn } from 'rxjs/operators';\nimport { AXLoadingComponent } from './loading.component';\n\ntype LoadingContext = object;\ntype LoaderId = string | number; // expected enum values\nconst DEFAULT_LOADER_ID: LoaderId = '_DEFAULT';\n\ninterface LoadingOverlayEntry {\n dispose: () => void;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXLoadingService {\n // WeakMap will remove components from itself upon\n // their garbage collection by JS runtime.\n protected loadingStates = new WeakMap<LoadingContext, Map<LoaderId, boolean>>();\n // Both loading state maps are kept in-sync such that\n // they can be used by both sync and async methods.\n protected loadingStates$ = new WeakMap<LoadingContext, Map<LoaderId, BehaviorSubject<boolean>>>();\n\n private overlayService = inject(AXOverlayService);\n private document = inject(DOCUMENT);\n private activeOverlays = new Map<number, LoadingOverlayEntry>();\n\n /**\n * Shows a modal loading overlay.\n *\n * If a host element is provided via `config.location`, the overlay is attached to that\n * element; otherwise it is attached to `document.body`.\n *\n * @param config Optional configuration: host `location`, `type`, and `context` passed to the spinner instance.\n * @returns number Unique loading reference id to be used with {@link hide}.\n */\n show(config?: { location?: Element; type?: string; context?: unknown }): number {\n const ce = (config?.location ?? this.document.body) as HTMLElement;\n const id = new Date().getTime();\n const isElementLevel = ce !== this.document.body;\n\n const inputs: Record<string, unknown> = {};\n if (config?.type) inputs['type'] = config.type;\n if (config?.context) inputs['context'] = config.context;\n\n const entry: LoadingOverlayEntry = {\n dispose: () => {\n /* noop until overlay is created */\n },\n };\n this.activeOverlays.set(id, entry);\n\n this.overlayService\n .create<AXLoadingComponent>(AXLoadingComponent, {\n inputs,\n backdrop: isElementLevel\n ? { enabled: false }\n : {\n enabled: true,\n background: true,\n closeOnClick: false,\n backdropClass: 'ax-loading-overlay-backdrop',\n },\n panelClass: ['ax-loading-pane', 'animate-fadeIn'],\n })\n .then((overlayRef) => {\n if (overlayRef.instance instanceof ComponentRef) {\n const instance = overlayRef.instance.instance;\n instance.visible = true;\n instance.id = id.toString();\n }\n\n if (isElementLevel) {\n const backdrop = this.document.createElement('div');\n backdrop.classList.add('ax-loading-overlay-backdrop', 'animate-fadeIn');\n backdrop.style.position = 'absolute';\n backdrop.style.top = '0';\n backdrop.style.left = '0';\n backdrop.style.width = '100%';\n backdrop.style.height = '100%';\n\n ce.style.position = 'relative';\n\n const ov = overlayRef.overlayElement;\n if (ov) {\n ov.style.position = 'absolute';\n ce.appendChild(backdrop);\n ce.appendChild(ov);\n setTimeout(() => {\n ov.style.position = 'absolute';\n });\n }\n\n entry.dispose = () => {\n backdrop.remove();\n overlayRef.dispose();\n };\n } else {\n entry.dispose = () => overlayRef.dispose();\n }\n\n if (!this.activeOverlays.has(id)) {\n entry.dispose();\n }\n });\n\n return id;\n }\n\n /**\n * Hides a previously shown modal loading overlay.\n *\n * @param id Loading reference id returned by {@link show}.\n */\n hide(id: number): void {\n const entry = this.activeOverlays.get(id);\n if (entry) {\n entry.dispose();\n this.activeOverlays.delete(id);\n }\n }\n\n /**\n * Wraps an Observable and toggles loading for its duration.\n *\n * Starts loading before subscription settles and ends loading on finalize.\n *\n * @param source$ Source observable.\n * @param context Loading context key.\n * @param loaderId Optional id to scope multiple loaders per context.\n * @returns Observable<V> The original stream with loading side effects.\n */\n doLoading<V>(source$: Observable<V>, context: LoadingContext, loaderId?: LoaderId): Observable<V> {\n this.startLoading(context, loaderId);\n return source$.pipe(\n observeOn(asyncScheduler),\n finalize(() => this.endLoading(context, loaderId)),\n );\n }\n\n /**\n * Returns current loading state for the given context and optional loader id.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns boolean True if any matching loader is active.\n */\n isLoading(context: LoadingContext, loaderId?: LoaderId): boolean {\n const loaderStates = this.loadingStates.get(context);\n\n if (!loaderStates) {\n return false;\n } else {\n if (loaderId !== undefined) {\n return loaderStates.get(this.getLoaderId(loaderId)) ?? false;\n } else {\n return [...loaderStates.values()].filter((state) => state).length > 0;\n }\n }\n }\n\n /**\n * Observable loading state for the given context and optional loader id.\n * Initializes the state if it does not exist yet.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns Observable<boolean>\n */\n isLoading$(context: LoadingContext, loaderId?: LoaderId | any): Observable<boolean> {\n const coalescedLoaderId = this.getLoaderId(loaderId);\n\n if (!this.hasLoadingStates(context, coalescedLoaderId)) {\n this.setLoadingState(context, false, loaderId);\n }\n\n return this.loadingStates$.get(context).get(coalescedLoaderId);\n }\n\n /**\n * Sets loading state to true for the given context/loader id.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns void\n */\n startLoading(context: LoadingContext, loaderId?: LoaderId): void {\n this.setLoadingState(context, true, this.getLoaderId(loaderId));\n }\n\n /**\n * Sets loading state to false for the given context/loader id.\n *\n * @param context Loading context key.\n * @param loaderId Optional loader id.\n * @returns void\n */\n endLoading(context: LoadingContext, loaderId?: LoaderId): void {\n this.setLoadingState(context, false, this.getLoaderId(loaderId));\n }\n\n /**\n * Clears all tracked loading states across all contexts.\n *\n * @returns void\n */\n clearLoadings(): void {\n this.loadingStates = new WeakMap<LoadingContext, Map<LoaderId, boolean>>();\n this.loadingStates$ = new WeakMap<LoadingContext, Map<LoaderId, BehaviorSubject<boolean>>>();\n }\n\n protected setLoadingState(context: LoadingContext, state: boolean, loaderId: LoaderId): void {\n if (!this.hasLoadingStates(context, loaderId)) {\n if (this.hasContextLoadingState(context)) {\n this.loadingStates.get(context).set(loaderId, state);\n this.loadingStates$.get(context).set(loaderId, new BehaviorSubject<boolean>(state));\n } else {\n this.loadingStates.set(context, new Map<LoaderId, boolean>([[loaderId, state]]));\n this.loadingStates$.set(\n context,\n new Map<LoaderId, BehaviorSubject<boolean>>([[loaderId, new BehaviorSubject<boolean>(state)]]),\n );\n }\n } else {\n this.loadingStates.get(context).set(loaderId, state);\n this.loadingStates$.get(context).get(loaderId).next(state);\n }\n }\n\n protected hasLoadingStates(context: LoadingContext, loaderId: LoaderId) {\n return this.hasContextLoadingState(context) && this.hasLoaderLoadingState(context, loaderId);\n }\n\n protected hasContextLoadingState(context: LoadingContext) {\n return this.loadingStates.has(context) && this.loadingStates$.has(context);\n }\n\n protected hasLoaderLoadingState(context: LoadingContext, loaderId: LoaderId) {\n return this.loadingStates.get(context).has(loaderId) && this.loadingStates$.get(context).has(loaderId);\n }\n\n protected getLoaderId(loaderId?: LoaderId): LoaderId {\n return loaderId ?? DEFAULT_LOADER_ID;\n }\n}\n","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { AXLoadingService } from './loading.service';\n\n// This directive places an overlay with a loading spinner over its host element\n// if isLoading equals to true and hides the overlay when isLoading becomes false.\n@Directive({ selector: '[axIsLoading]' })\nexport class AXLoadingDirective {\n protected readonly elementRef = inject(ElementRef);\n protected readonly loadingService = inject(AXLoadingService);\n\n private _hostElement!: HTMLDivElement;\n private _loadingRef!: number;\n\n private _isLoading: boolean;\n\n @Input('axIsLoading')\n public get isLoading(): boolean {\n return this._isLoading;\n }\n public set isLoading(v: boolean) {\n this._isLoading = v;\n if (v) {\n this._loadingRef = this.loadingService.show({\n location: this._hostElement,\n });\n } else {\n this.loadingService.hide(this._loadingRef);\n }\n }\n\n constructor() {\n this._hostElement = this.elementRef.nativeElement;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { AXLoadingSpinnerComponent } from './loading-spinner.component';\nimport { AXLoadingComponent } from './loading.component';\nimport { AXLoadingDirective } from './loading.directive';\n\n@NgModule({\n imports: [AXLoadingComponent, AXLoadingDirective, AXLoadingSpinnerComponent],\n exports: [AXLoadingComponent, AXLoadingDirective, AXLoadingSpinnerComponent],\n})\nexport class AXLoadingModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -451,7 +451,7 @@ class AXNotificationComponent extends MXBaseComponent {
|
|
|
451
451
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXNotificationComponent, isStandalone: true, selector: "ax-notification", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, onClose: { classPropertyName: "onClose", publicName: "onClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "\"ax-\" + config().color" } }, providers: [
|
|
452
452
|
{ provide: AXClosableComponent, useExisting: AXNotificationComponent },
|
|
453
453
|
{ provide: AXComponent, useExisting: AXNotificationComponent },
|
|
454
|
-
], usesInheritance: true, ngImport: i0, template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ this.config().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\">{{ config().title | translate | async }}</div>\n @if (templateContent()) {\n <ng-container *ngTemplateOutlet=\"templateContent()\"></ng-container>\n } @else if (componentContent()) {\n <ng-container *ngComponentOutlet=\"componentContent()\"></ng-container>\n } @else {\n <div>{{ stringContent() | translate | async }}</div>\n }\n\n @if (config().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of config().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"'ax-' + button.color\"\n [look]=\"'ax-' + button.look\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut && remainingTime()) {\n <div\n [class]=\"'ax-notification-progress ax-' + this.config().color\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-leading:initial;--tw-duration:initial;--tw-ease:initial}}}@layer components{ax-notification{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-lightest-surface));width:98vw;padding:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative;overflow:hidden}ax-notification:where(.ax-dark,.ax-dark *){background-color:rgba(var(--ax-sys-color-darkest-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing,.25rem) * 96)}}ax-notification .ax-notification-icon{color:var(--ax-comp-bg);padding-inline-end:calc(var(--spacing,.25rem) * 3)}ax-notification .ax-notification-content{--tw-font-weight:var(--font-weight-normal,400);font-weight:var(--font-weight-normal,400);color:rgba(var(--ax-sys-color-on-surface));flex-direction:column;flex:1;justify-content:center;display:flex}ax-notification .ax-notification-content .ax-notification-title{--tw-leading:calc(var(--spacing,.25rem) * 5);line-height:calc(var(--spacing,.25rem) * 5);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing,.25rem) * 3);gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-notification .ax-notification-progress{height:var(--spacing,.25rem);background-color:var(--ax-comp-bg);width:100%;transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;--tw-ease:linear;inset-inline-start:calc(var(--spacing,.25rem) * 0);inset-inline-end:calc(var(--spacing,.25rem) * 0);transition-duration:.3s;transition-timing-function:linear;position:absolute;bottom:0}ax-notification .ax-notification-icon,ax-notification .ax-icon-close{max-width:fit-content;font-size:var(--text-xl,1.25rem)!important;line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)))!important;align-items:flex-start!important}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
454
|
+
], usesInheritance: true, ngImport: i0, template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ this.config().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\">{{ config().title | translate | async }}</div>\n @if (templateContent()) {\n <ng-container *ngTemplateOutlet=\"templateContent()\"></ng-container>\n } @else if (componentContent()) {\n <ng-container *ngComponentOutlet=\"componentContent()\"></ng-container>\n } @else {\n <div>{{ stringContent() | translate | async }}</div>\n }\n\n @if (config().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of config().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"'ax-' + button.color\"\n [look]=\"'ax-' + button.look\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut && remainingTime()) {\n <div\n [class]=\"'ax-notification-progress ax-' + this.config().color\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-leading:initial;--tw-duration:initial;--tw-ease:initial}}}@layer components{ax-notification{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-lightest-surface));width:98vw;padding:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative;overflow:hidden}ax-notification:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-darkest-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing,.25rem) * 96)}}ax-notification .ax-notification-icon{color:var(--ax-comp-bg);padding-inline-end:calc(var(--spacing,.25rem) * 3)}ax-notification .ax-notification-content{--tw-font-weight:var(--font-weight-normal,400);font-weight:var(--font-weight-normal,400);color:rgba(var(--ax-sys-color-on-surface));flex-direction:column;flex:1;justify-content:center;display:flex}ax-notification .ax-notification-content .ax-notification-title{--tw-leading:calc(var(--spacing,.25rem) * 5);line-height:calc(var(--spacing,.25rem) * 5);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing,.25rem) * 3);gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-notification .ax-notification-progress{height:var(--spacing,.25rem);background-color:var(--ax-comp-bg);width:100%;transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;--tw-ease:linear;inset-inline-start:calc(var(--spacing,.25rem) * 0);inset-inline-end:calc(var(--spacing,.25rem) * 0);transition-duration:.3s;transition-timing-function:linear;position:absolute;bottom:0}ax-notification .ax-notification-icon,ax-notification .ax-icon-close{max-width:fit-content;font-size:var(--text-xl,1.25rem)!important;line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)))!important;align-items:flex-start!important}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "component", type: AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { kind: "component", type: AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["closeAll", "icon"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
455
455
|
}
|
|
456
456
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXNotificationComponent, decorators: [{
|
|
457
457
|
type: Component,
|
|
@@ -468,7 +468,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
468
468
|
AXDecoratorCloseButtonComponent,
|
|
469
469
|
AsyncPipe,
|
|
470
470
|
AXTranslatorPipe,
|
|
471
|
-
], template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ this.config().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\">{{ config().title | translate | async }}</div>\n @if (templateContent()) {\n <ng-container *ngTemplateOutlet=\"templateContent()\"></ng-container>\n } @else if (componentContent()) {\n <ng-container *ngComponentOutlet=\"componentContent()\"></ng-container>\n } @else {\n <div>{{ stringContent() | translate | async }}</div>\n }\n\n @if (config().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of config().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"'ax-' + button.color\"\n [look]=\"'ax-' + button.look\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut && remainingTime()) {\n <div\n [class]=\"'ax-notification-progress ax-' + this.config().color\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-leading:initial;--tw-duration:initial;--tw-ease:initial}}}@layer components{ax-notification{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-lightest-surface));width:98vw;padding:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative;overflow:hidden}ax-notification:where(.ax-dark,.ax-dark *){background-color:rgba(var(--ax-sys-color-darkest-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing,.25rem) * 96)}}ax-notification .ax-notification-icon{color:var(--ax-comp-bg);padding-inline-end:calc(var(--spacing,.25rem) * 3)}ax-notification .ax-notification-content{--tw-font-weight:var(--font-weight-normal,400);font-weight:var(--font-weight-normal,400);color:rgba(var(--ax-sys-color-on-surface));flex-direction:column;flex:1;justify-content:center;display:flex}ax-notification .ax-notification-content .ax-notification-title{--tw-leading:calc(var(--spacing,.25rem) * 5);line-height:calc(var(--spacing,.25rem) * 5);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing,.25rem) * 3);gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-notification .ax-notification-progress{height:var(--spacing,.25rem);background-color:var(--ax-comp-bg);width:100%;transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;--tw-ease:linear;inset-inline-start:calc(var(--spacing,.25rem) * 0);inset-inline-end:calc(var(--spacing,.25rem) * 0);transition-duration:.3s;transition-timing-function:linear;position:absolute;bottom:0}ax-notification .ax-notification-icon,ax-notification .ax-icon-close{max-width:fit-content;font-size:var(--text-xl,1.25rem)!important;line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)))!important;align-items:flex-start!important}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
471
|
+
], template: "<span class=\"ax-notification-icon ax-icon-solid {{ _icon }} ax-{{ this.config().color }}\"></span>\n<div class=\"ax-notification-content\">\n <div class=\"ax-notification-title\">{{ config().title | translate | async }}</div>\n @if (templateContent()) {\n <ng-container *ngTemplateOutlet=\"templateContent()\"></ng-container>\n } @else if (componentContent()) {\n <ng-container *ngComponentOutlet=\"componentContent()\"></ng-container>\n } @else {\n <div>{{ stringContent() | translate | async }}</div>\n }\n\n @if (config().buttons?.length) {\n <div class=\"ax-notification-buttons\">\n @for (button of config().buttons; track $index) {\n <ax-button\n class=\"ax-xs\"\n [text]=\"button.text | translate | async\"\n [color]=\"'ax-' + button.color\"\n [look]=\"'ax-' + button.look\"\n [disabled]=\"button.disabled\"\n (onClick)=\"_handleButtonClick(button)\"\n >\n @if (button.loading) {\n <ax-loading></ax-loading>\n }\n </ax-button>\n }\n </div>\n }\n</div>\n@if (config().closeButton) {\n <ax-close-button></ax-close-button>\n}\n@if (config().timeOutProgress && config().timeOut && remainingTime()) {\n <div\n [class]=\"'ax-notification-progress ax-' + this.config().color\"\n [style.transition-duration]=\"transitionDuration()\"\n [style.width]=\"(remainingTime() * 100) / config().timeOut + '%'\"\n ></div>\n}\n", styles: ["@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-font-weight:initial;--tw-leading:initial;--tw-duration:initial;--tw-ease:initial}}}@layer components{ax-notification{border-radius:var(--radius-lg,.5rem);border-style:var(--tw-border-style);border-width:1px;border-color:rgba(var(--ax-sys-color-border-lightest-surface));background-color:rgba(var(--ax-sys-color-lightest-surface));width:98vw;padding:calc(var(--spacing,.25rem) * 4);font-size:var(--text-sm,.875rem);line-height:var(--tw-leading,var(--text-sm--line-height,calc(1.25 / .875)));--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);display:flex;position:relative;overflow:hidden}ax-notification:where(.ax-dark,.ax-dark *):not(:where(.ax-light,.ax-light *)){background-color:rgba(var(--ax-sys-color-darkest-surface))}@media(min-width:768px){ax-notification{width:calc(var(--spacing,.25rem) * 96)}}ax-notification .ax-notification-icon{color:var(--ax-comp-bg);padding-inline-end:calc(var(--spacing,.25rem) * 3)}ax-notification .ax-notification-content{--tw-font-weight:var(--font-weight-normal,400);font-weight:var(--font-weight-normal,400);color:rgba(var(--ax-sys-color-on-surface));flex-direction:column;flex:1;justify-content:center;display:flex}ax-notification .ax-notification-content .ax-notification-title{--tw-leading:calc(var(--spacing,.25rem) * 5);line-height:calc(var(--spacing,.25rem) * 5);--tw-font-weight:var(--font-weight-medium,500);font-weight:var(--font-weight-medium,500)}ax-notification .ax-notification-content .ax-notification-buttons{margin-top:calc(var(--spacing,.25rem) * 3);gap:calc(var(--spacing,.25rem) * 3);display:flex}ax-notification .ax-notification-progress{height:var(--spacing,.25rem);background-color:var(--ax-comp-bg);width:100%;transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function,cubic-bezier(.4, 0, .2, 1)));transition-duration:var(--tw-duration,var(--default-transition-duration,.15s));--tw-duration:.3s;--tw-ease:linear;inset-inline-start:calc(var(--spacing,.25rem) * 0);inset-inline-end:calc(var(--spacing,.25rem) * 0);transition-duration:.3s;transition-timing-function:linear;position:absolute;bottom:0}ax-notification .ax-notification-icon,ax-notification .ax-icon-close{max-width:fit-content;font-size:var(--text-xl,1.25rem)!important;line-height:var(--tw-leading,var(--text-xl--line-height,calc(1.75 / 1.25)))!important;align-items:flex-start!important}}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}\n/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
472
472
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: true }] }], onClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "onClose", required: false }] }] } });
|
|
473
473
|
|
|
474
474
|
class AXNotificationModule {
|