keevo-components 2.0.245 → 2.0.246

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.
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Yta2FuYmFuLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWthbmJhbi9rdi1rYW5iYW4tbW9kZWxzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEthbmJhbkFjdGlvbiB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGFjdGlvbkNvZGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5DYXJkIHtcclxuICBpZD86IG51bWJlciB8IHN0cmluZztcclxuICB0aXR1bG86IHN0cmluZztcclxuICBzdGF0dXM/OiBzdHJpbmc7XHJcbiAgc3RhdHVzQ29sb3I/OiBzdHJpbmc7XHJcbiAgc3RhdHVzTGFiZWxDb2xvcj86IHN0cmluZztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgS2FuYmFuQ29sdW1uQ29uZmlnIHtcclxuICBpZDogbnVtYmVyO1xyXG4gIG5vbWU6IHN0cmluZztcclxuICBjb250YWRvcjogbnVtYmVyO1xyXG4gIGNvclRpdHVsbzogc3RyaW5nO1xyXG4gIHF1YW50aWRhZGVDYXJkc0luaWNpYWw/OiBudW1iZXI7XHJcbiAgcXVhbnRpZGFkZUNhcmRzUGFnaW5hY2FvPzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbkxpc3Qge1xyXG4gIGlkQ29sdW5hOiBudW1iZXI7XHJcbiAgbGlzdGFnZW06IEthbmJhbkNhcmRbXTtcclxuICBxdWFudGlkYWRlTWF4aW1hUmVnaXN0cm9zUGFnaW5hY2FvOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgS2FuYmFuQ29sdW1uIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIHRpdGxlOiBzdHJpbmc7XHJcbiAgaGVhZGVyQ29sb3I6IHN0cmluZztcclxuICB0b3RhbEl0ZW1zOiBudW1iZXI7XHJcbiAgdmlzaWJsZUxpbWl0PzogbnVtYmVyO1xyXG4gIGl0ZW1zOiBLYW5iYW5DYXJkW107XHJcbn0iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Yta2FuYmFuLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWthbmJhbi9rdi1rYW5iYW4tbW9kZWxzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEthbmJhbkFjdGlvbiB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIGFjdGlvbkNvZGU6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5DYXJkIHtcclxuICBpZD86IG51bWJlciB8IHN0cmluZztcclxuICB0aXR1bG86IHN0cmluZztcclxuICBzdGF0dXM/OiBDYXJkU3RhdHVzW107XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENhcmRTdGF0dXMge1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgc3RhdHVzQ29sb3I/OiBzdHJpbmc7XHJcbiAgc3RhdHVzTGFiZWxDb2xvcj86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbkNvbmZpZyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBub21lOiBzdHJpbmc7XHJcbiAgY29udGFkb3I6IG51bWJlcjtcclxuICBjb3JUaXR1bG86IHN0cmluZztcclxuICBxdWFudGlkYWRlQ2FyZHNJbmljaWFsPzogbnVtYmVyO1xyXG4gIHF1YW50aWRhZGVDYXJkc1BhZ2luYWNhbz86IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBLYW5iYW5Db2x1bW5MaXN0IHtcclxuICBpZENvbHVuYTogbnVtYmVyO1xyXG4gIGxpc3RhZ2VtOiBLYW5iYW5DYXJkW107XHJcbiAgcXVhbnRpZGFkZU1heGltYVJlZ2lzdHJvc1BhZ2luYWNhbzogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEthbmJhbkNvbHVtbiB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGhlYWRlckNvbG9yOiBzdHJpbmc7XHJcbiAgdG90YWxJdGVtczogbnVtYmVyO1xyXG4gIHZpc2libGVMaW1pdD86IG51bWJlcjtcclxuICBpdGVtczogS2FuYmFuQ2FyZFtdO1xyXG59Il19
@@ -2,6 +2,7 @@ import { Component, computed, input, output, viewChild } from '@angular/core';
2
2
  import { DragDropModule, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { MenuModule } from 'primeng/menu';
5
+ import { TooltipModule } from 'primeng/tooltip';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "@angular/common";
7
8
  import * as i2 from "@angular/cdk/drag-drop";
@@ -81,11 +82,16 @@ export class KvKanbanComponent {
81
82
  return '1 1 280px';
82
83
  return `1 1 calc((100% - ${(totalColumns - 1) * 16}px) / ${totalColumns})`;
83
84
  }
85
+ getStatusTooltip(status) {
86
+ if (!status || status.length === 0)
87
+ return '';
88
+ return status.map(s => s.label).join(', ');
89
+ }
84
90
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvKanbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvKanbanComponent, isStandalone: true, selector: "kv-kanban", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, columnConfigs: { classPropertyName: "columnConfigs", publicName: "columnConfigs", isSignal: true, isRequired: false, transformFunction: null }, columnLists: { classPropertyName: "columnLists", publicName: "columnLists", isSignal: true, isRequired: false, transformFunction: null }, cardTemplate: { classPropertyName: "cardTemplate", publicName: "cardTemplate", isSignal: true, isRequired: false, transformFunction: null }, showColumnsCounter: { classPropertyName: "showColumnsCounter", publicName: "showColumnsCounter", isSignal: true, isRequired: false, transformFunction: null }, enableDrag: { classPropertyName: "enableDrag", publicName: "enableDrag", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onCardMoved: "onCardMoved", onActionClicked: "onActionClicked", onLoadMoreCards: "onLoadMoreCards", onSelectedCard: "onSelectedCard" }, viewQueries: [{ propertyName: "sharedMenu", first: true, predicate: ["sharedMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status) {\r\n <div class=\"card-header mt-1\"> <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"item.statusColor\"\r\n [style.color]=\"item.statusLabelColor\">\r\n {{ item.status }}\r\n </span>\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i3.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvKanbanComponent, isStandalone: true, selector: "kv-kanban", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, columnConfigs: { classPropertyName: "columnConfigs", publicName: "columnConfigs", isSignal: true, isRequired: false, transformFunction: null }, columnLists: { classPropertyName: "columnLists", publicName: "columnLists", isSignal: true, isRequired: false, transformFunction: null }, cardTemplate: { classPropertyName: "cardTemplate", publicName: "cardTemplate", isSignal: true, isRequired: false, transformFunction: null }, showColumnsCounter: { classPropertyName: "showColumnsCounter", publicName: "showColumnsCounter", isSignal: true, isRequired: false, transformFunction: null }, enableDrag: { classPropertyName: "enableDrag", publicName: "enableDrag", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onCardMoved: "onCardMoved", onActionClicked: "onActionClicked", onLoadMoreCards: "onLoadMoreCards", onSelectedCard: "onSelectedCard" }, viewQueries: [{ propertyName: "sharedMenu", first: true, predicate: ["sharedMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status && item.status.length > 0) {\r\n <div class=\"card-header mt-1 gap-2 overflow-hidden\" \r\n [pTooltip]=\"getStatusTooltip(item.status)\" \r\n tooltipPosition=\"top\">\r\n @for(statusItem of item.status; track $index) {\r\n <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"statusItem.statusColor\"\r\n [style.color]=\"statusItem.statusLabelColor\">\r\n {{ statusItem.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px;flex-wrap:nowrap}.card-header .status-tag{white-space:nowrap;flex-shrink:0}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i3.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i4.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TooltipModule }] }); }
86
92
  }
87
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvKanbanComponent, decorators: [{
88
94
  type: Component,
89
- args: [{ standalone: true, selector: 'kv-kanban', imports: [CommonModule, DragDropModule, MenuModule], template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status) {\r\n <div class=\"card-header mt-1\"> <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"item.statusColor\"\r\n [style.color]=\"item.statusLabelColor\">\r\n {{ item.status }}\r\n </span>\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"] }]
95
+ args: [{ standalone: true, selector: 'kv-kanban', imports: [CommonModule, DragDropModule, MenuModule, TooltipModule], template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status && item.status.length > 0) {\r\n <div class=\"card-header mt-1 gap-2 overflow-hidden\" \r\n [pTooltip]=\"getStatusTooltip(item.status)\" \r\n tooltipPosition=\"top\">\r\n @for(statusItem of item.status; track $index) {\r\n <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"statusItem.statusColor\"\r\n [style.color]=\"statusItem.statusLabelColor\">\r\n {{ statusItem.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px;flex-wrap:nowrap}.card-header .status-tag{white-space:nowrap;flex-shrink:0}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"] }]
90
96
  }] });
91
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Yta2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWthbmJhbi9rdi1rYW5iYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Yta2FuYmFuL2t2LWthbmJhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEVBQWUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sY0FBYyxDQUFDOzs7Ozs7QUFVaEQsTUFBTSxPQUFPLGlCQUFpQjtJQVA5QjtRQVNFLGVBQVUsR0FBRyxTQUFTLENBQU8sWUFBWSxDQUFDLENBQUM7UUFFM0MsdUJBQWtCLEdBQWUsRUFBRSxDQUFDO1FBRXBDLFlBQU8sR0FBRyxLQUFLLENBQWEsRUFBRSxDQUFDLENBQUM7UUFDaEMsa0JBQWEsR0FBRyxLQUFLLENBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsS0FBSyxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1QyxpQkFBWSxHQUFHLEtBQUssQ0FBMEIsSUFBSSxDQUFDLENBQUM7UUFDcEQsdUJBQWtCLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxLQUFLLENBQVUsSUFBSSxDQUFDLENBQUM7UUFDbEMsZ0JBQVcsR0FBRyxNQUFN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UUFBUSxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBZ0I7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNuQyxHQUFHLE1BQU07WUFDVCxPQUFPLEVBQUUsQ0FBQyxLQUFXLEVBQUUsRUFBRTtnQkFDdkIsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7Z0JBRUQsSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDekMsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxhQUFhO1FBQ1gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqRCxJQUFJLFlBQVksS0FBSyxDQUFDO1lBQUUsT0FBTyxXQUFXLENBQUM7UUFFM0MsT0FBTyxvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLFlBQVksR0FBRyxDQUFDO0lBQzdFLENBQUM7OEdBOUZVLGlCQUFpQjtrR0FBakIsaUJBQWlCLHlxQ0NkOUIsa3VGQW9FeUYsaTVERHhEN0UsWUFBWSw2UEFBRSxjQUFjLHd0Q0FBRSxVQUFVOzsyRkFFdkMsaUJBQWlCO2tCQVA3QixTQUFTO2lDQUNJLElBQUksWUFDTixXQUFXLFdBR1osQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgVGVtcGxhdGVSZWYsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2FuYmFuQ29sdW1uLCBLYW5iYW5DYXJkLCBLYW5iYW5BY3Rpb24sIEthbmJhbkNvbHVtbkNvbmZpZywgS2FuYmFuQ29sdW1uTGlzdCB9IGZyb20gJy4va3Yta2FuYmFuLW1vZGVscy5tb2RlbCc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgRHJhZ0Ryb3BNb2R1bGUsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZW51TW9kdWxlLCBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdrdi1rYW5iYW4nLFxuICB0ZW1wbGF0ZVVybDogJy4va3Yta2FuYmFuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4va3Yta2FuYmFuLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdEcm9wTW9kdWxlLCBNZW51TW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBLdkthbmJhbkNvbXBvbmVudCB7XG5cbiAgc2hhcmVkTWVudSA9IHZpZXdDaGlsZDxNZW51Pignc2hhcmVkTWVudScpO1xuXG4gIGN1cnJlbnRNZW51T3B0aW9uczogTWVudUl0ZW1bXSA9IFtdO1xuXG4gIGFjdGlvbnMgPSBpbnB1dDxNZW51SXRlbVtdPihbXSk7XG4gIGNvbHVtbkNvbmZpZ3MgPSBpbnB1dDxLYW5iYW5Db2x1bW5Db25maWdbXT4oW10pO1xuICBjb2x1bW5MaXN0cyA9IGlucHV0PEthbmJhbkNvbHVtbkxpc3RbXT4oW10pO1xuICBjYXJkVGVtcGxhdGUgPSBpbnB1dDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4obnVsbCk7XG4gIHNob3dDb2x1bW5zQ291bnRlciA9IGlucHV0PGJvb2xlYW4+KHRydWUpO1xuICBlbmFibGVEcmFnID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIG9uQ2FyZE1vdmVkID0gb3V0cHV0PGFueT4oKTtcbiAgb25BY3Rpb25DbGlja2VkID0gb3V0cHV0PHsgYWN0aW9uOiBzdHJpbmcsIGNhcmQ6IEthbmJhbkNhcmQgfT4oKTtcbiAgb25Mb2FkTW9yZUNhcmRzID0gb3V0cHV0PHsgY29sdW1uSWQ6IG51bWJlciB9PigpO1xuICBvblNlbGVjdGVkQ2FyZCA9IG91dHB1dDxLYW5iYW5DYXJkPigpO1xuXG4gIGdldENvbHVtbkxpc3QgPSBjb21wdXRlZCgoKSA9PiAoY29sdW1uSWQ6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmNvbHVtbkxpc3RzKCkuZmluZChsID0+IGwuaWRDb2x1bmEgPT09IGNvbHVtbklkKTtcbiAgICByZXR1cm4gbGlzdD8ubGlzdGFnZW0gfHwgW10gYXMgS2FuYmFuQ2FyZFtdO1xuICB9KTtcblxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxLYW5iYW5DYXJkW10+KSB7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShldmVudC5jb250YWluZXIuZGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJhbnNmZXJBcnJheUl0ZW0oXG4gICAgICAgIGV2ZW50LnByZXZpb3VzQ29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LmNvbnRhaW5lci5kYXRhLFxuICAgICAgICBldmVudC5wcmV2aW91c0luZGV4LFxuICAgICAgICBldmVudC5jdXJyZW50SW5kZXgsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IG1vdmVkQ2FyZCA9IGV2ZW50LmNvbnRhaW5lci5kYXRhW2V2ZW50LmN1cnJlbnRJbmRleF07XG4gICAgXG4gICAgdGhpcy5vbkNhcmRNb3ZlZC5lbWl0KHtcbiAgICAgIGl0ZW06IG1vdmVkQ2FyZCxcbiAgICAgIGZyb21Db2x1bW5JZDogZXZlbnQucHJldmlvdXNDb250YWluZXIuaWQsXG4gICAgICB0b0NvbHVtbklkOiBldmVudC5jb250YWluZXIuaWRcbiAgICB9KTtcbiAgICBcbiAgICB0aGlzLm9uU2VsZWN0ZWRDYXJkLmVtaXQobW92ZWRDYXJkKTtcbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uQ29kZTogc3RyaW5nLCBjYXJkOiBLYW5iYW5DYXJkKSB7XG4gICAgdGhpcy5vbkFjdGlvbkNsaWNrZWQuZW1pdCh7IGFjdGlvbjogYWN0aW9uQ29kZSwgY2FyZCB9KTtcbiAgICBcbiAgICB0aGlzLm9uU2VsZWN0ZWRDYXJkLmVtaXQoY2FyZCk7XG4gIH1cblxuICBvcGVuQ2FyZE1lbnUoZXZlbnQ6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdGhpcy5jdXJyZW50TWVudU9wdGlvbnMgPSB0aGlzLmdldEFjdGlvbnNGb3JDYXJkKGl0ZW0pO1xuXG4gICAgdGhpcy5zaGFyZWRNZW51KCk/LnRvZ2dsZShldmVudCk7XG4gIH1cblxuICBvblNjcm9sbChldmVudDogRXZlbnQsIGNvbHVtbklkOiBudW1iZXIpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGNvbnN0IHRocmVzaG9sZCA9IDUwO1xuICAgIGNvbnN0IGF0Qm90dG9tID0gZWxlbWVudC5zY3JvbGxIZWlnaHQgLSBlbGVtZW50LnNjcm9sbFRvcCAtIGVsZW1lbnQuY2xpZW50SGVpZ2h0IDwgdGhyZXNob2xkO1xuICAgIFxuICAgIGlmIChhdEJvdHRvbSkge1xuICAgICAgdGhpcy5vbkxvYWRNb3JlQ2FyZHMuZW1pdCh7IGNvbHVtbklkIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbHVtblRvdGFsSXRlbXMoY29sdW1uSWQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb2x1bW5Db25maWdzKCkuZmluZChjID0+IGMuaWQgPT09IGNvbHVtbklkKTtcbiAgICByZXR1cm4gY29uZmlnPy5jb250YWRvciB8fCAwO1xuICB9XG5cbiAgZ2V0QWN0aW9uc0ZvckNhcmQoY2FyZDogS2FuYmFuQ2FyZCk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLmFjdGlvbnMoKS5tYXAoYWN0aW9uID0+ICh7XG4gICAgICAuLi5hY3Rpb24sXG4gICAgICBjb21tYW5kOiAoZXZlbnQ/OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKGFjdGlvbi5jb21tYW5kKSB7XG4gICAgICAgICAgYWN0aW9uLmNvbW1hbmQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgdGhpcy5vbkFjdGlvbkNsaWNrKGFjdGlvbi5sYWJlbCwgY2FyZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSk7XG4gIH1cblxuICBnZXRDb2x1bW5GbGV4KCk6IHN0cmluZyB7XG4gICAgY29uc3QgdG90YWxDb2x1bW5zID0gdGhpcy5jb2x1bW5Db25maWdzKCkubGVuZ3RoO1xuICAgIGlmICh0b3RhbENvbHVtbnMgPT09IDApIHJldHVybiAnMSAxIDI4MHB4JztcbiAgICBcbiAgICByZXR1cm4gYDEgMSBjYWxjKCgxMDAlIC0gJHsodG90YWxDb2x1bW5zIC0gMSkgKiAxNn1weCkgLyAke3RvdGFsQ29sdW1uc30pYDtcbiAgfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxleCB3LWZ1bGwgaC1mdWxsXCI+XHJcbiAgPGRpdiBjbGFzcz1cImJvYXJkLXdyYXBwZXIgZmxleC1jb2x1bW4gbGc6ZmxleC1yb3dcIiBjZGtEcm9wTGlzdEdyb3VwPlxyXG4gICAgXHJcbiAgICBAZm9yKGNvbmZpZyBvZiBjb2x1bW5Db25maWdzKCk7IHRyYWNrICRpbmRleCkge1xyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImJvYXJkLWNvbHVtblwiIFtzdHlsZS5mbGV4XT1cImdldENvbHVtbkZsZXgoKVwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4taGVhZGVyXCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJjb25maWcuY29yVGl0dWxvXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtYmFzZSBmb250LXNlbWlib2xkXCI+e3sgY29uZmlnLm5vbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICBAaWYodGhpcy5zaG93Q29sdW1uc0NvdW50ZXIoKSkge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvbHVtbi1jb3VudC1iYWRnZSBweC0yIHB5LTFcIiBbc3R5bGUuY29sb3JdPVwiY29uZmlnLmNvclRpdHVsb1wiPnt7IGNvbmZpZy5jb250YWRvciB8IG51bWJlcjonMi4wJyB9fTwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBcclxuICAgICAgICAgIGNsYXNzPVwiY29sdW1uLWNvbnRlbnRcIlxyXG4gICAgICAgICAgY2RrRHJvcExpc3RcclxuICAgICAgICAgIFtpZF09XCJjb25maWcuaWQudG9TdHJpbmcoKVwiXHJcbiAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImdldENvbHVtbkxpc3QoKShjb25maWcuaWQpXCJcclxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcclxuICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGwoJGV2ZW50LCBjb25maWcuaWQpXCI+XHJcblxyXG5cclxuICAgICAgICAgIEBmb3IoaXRlbSBvZiBnZXRDb2x1bW5MaXN0KCkoY29uZmlnLmlkKTsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwia2FuYmFuLWNhcmRcIiBjZGtEcmFnIFtjZGtEcmFnRGlzYWJsZWRdPVwiIWVuYWJsZURyYWcoKVwiPlxyXG5cclxuICAgICAgICAgICAgICBAaWYoYWN0aW9ucygpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBjYXJkLW1lbnUtYnRuIHRleHQteGwgdGV4dC1ibGFjay1hbHBoYS01MCBob3ZlcjpzdXJmYWNlLTIwMCBib3JkZXItcm91bmQtbGdcIiAoY2xpY2spPVwib3BlbkNhcmRNZW51KCRldmVudCwgaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgbW9yZV92ZXJ0XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIFxyXG5cclxuICAgICAgICAgICAgICBAaWYgKGl0ZW0uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgbXQtMVwiPiA8c3BhbiBjbGFzcz1cInN0YXR1cy10YWcgdGV4dC14cyBib3JkZXItcm91bmQtM3hsIHB5LTEgcHgtMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cIml0ZW0uc3RhdHVzQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiaXRlbS5zdGF0dXNMYWJlbENvbG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5zdGF0dXMgfX1cclxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG92ZXJmbG93LWhpZGRlbiBtbC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMCBtLTAgdGV4dC1zbSB0ZXh0LWJsYWNrLWFscGhhLTcwIGZvbnQtc2VtaWJvbGQgbWItMiBwci00XCIgcFRvb2x0aXA9XCJ7e2l0ZW0udGl0dWxvfX1cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXR1bG8gfX1cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXJkVGVtcGxhdGUoKVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKmNka0RyYWdQbGFjZWhvbGRlciBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZm9vdGVyIHRleHQteHMgdGV4dC1ibGFjay1hbHBoYS04MFwiPlxyXG4gICAgICAgICAgVmVyIHt7IGdldENvbHVtbkxpc3QoKShjb25maWcuaWQpLmxlbmd0aCB9fSBkZSB7eyBjb25maWcuY29udGFkb3IgfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIH1cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtbWVudSAjc2hhcmVkTWVudSBbbW9kZWxdPVwiY3VycmVudE1lbnVPcHRpb25zXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Yta2FuYmFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWthbmJhbi9rdi1rYW5iYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Yta2FuYmFuL2t2LWthbmJhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFlLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRyxPQUFPLEVBQWUsY0FBYyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFRLE1BQU0sY0FBYyxDQUFDO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBU2hELE1BQU0sT0FBTyxpQkFBaUI7SUFQOUI7UUFTRSxlQUFVLEdBQUcsU0FBUyxDQUFPLFlBQVksQ0FBQyxDQUFDO1FBRTNDLHVCQUFrQixHQUFlLEVBQUUsQ0FBQztRQUVwQyxZQUFPLEdBQUcsS0FBSyxDQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQUcsS0FBSyxDQUF1QixFQUFFLENBQUMsQ0FBQztRQUNoRCxnQkFBVyxHQUFHLEtBQUssQ0FBcUIsRUFBRSxDQUFDLENBQUM7UUFDNUMsaUJBQVksR0FBRyxLQUFLLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQ3BELHVCQUFrQixHQUFHLEtBQUssQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUMxQyxlQUFVLEdBQUcsS0FB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eUV5Riw0OURENUQ3RSxZQUFZLDZQQUFFLGNBQWMsd3RDQUFFLFVBQVUsaXFCQUFFLGFBQWE7OzJGQUV0RCxpQkFBaUI7a0JBUDdCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFdBQVcsV0FHWixDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0LCBPbkluaXQsIG91dHB1dCwgVGVtcGxhdGVSZWYsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgS2FuYmFuQ29sdW1uLCBLYW5iYW5DYXJkLCBLYW5iYW5BY3Rpb24sIEthbmJhbkNvbHVtbkNvbmZpZywgS2FuYmFuQ29sdW1uTGlzdCB9IGZyb20gJy4va3Yta2FuYmFuLW1vZGVscy5tb2RlbCc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgRHJhZ0Ryb3BNb2R1bGUsIG1vdmVJdGVtSW5BcnJheSwgdHJhbnNmZXJBcnJheUl0ZW0gfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZW51TW9kdWxlLCBNZW51IH0gZnJvbSAncHJpbWVuZy9tZW51JztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVG9vbHRpcE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvdG9vbHRpcCc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2t2LWthbmJhbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9rdi1rYW5iYW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9rdi1rYW5iYW4uY29tcG9uZW50LnNjc3MnXSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRHJhZ0Ryb3BNb2R1bGUsIE1lbnVNb2R1bGUsIFRvb2x0aXBNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIEt2S2FuYmFuQ29tcG9uZW50IHtcblxuICBzaGFyZWRNZW51ID0gdmlld0NoaWxkPE1lbnU+KCdzaGFyZWRNZW51Jyk7XG5cbiAgY3VycmVudE1lbnVPcHRpb25zOiBNZW51SXRlbVtdID0gW107XG5cbiAgYWN0aW9ucyA9IGlucHV0PE1lbnVJdGVtW10+KFtdKTtcbiAgY29sdW1uQ29uZmlncyA9IGlucHV0PEthbmJhbkNvbHVtbkNvbmZpZ1tdPihbXSk7XG4gIGNvbHVtbkxpc3RzID0gaW5wdXQ8S2FuYmFuQ29sdW1uTGlzdFtdPihbXSk7XG4gIGNhcmRUZW1wbGF0ZSA9IGlucHV0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcbiAgc2hvd0NvbHVtbnNDb3VudGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIGVuYWJsZURyYWcgPSBpbnB1dDxib29sZWFuPih0cnVlKTtcbiAgb25DYXJkTW92ZWQgPSBvdXRwdXQ8YW55PigpO1xuICBvbkFjdGlvbkNsaWNrZWQgPSBvdXRwdXQ8eyBhY3Rpb246IHN0cmluZywgY2FyZDogS2FuYmFuQ2FyZCB9PigpO1xuICBvbkxvYWRNb3JlQ2FyZHMgPSBvdXRwdXQ8eyBjb2x1bW5JZDogbnVtYmVyIH0+KCk7XG4gIG9uU2VsZWN0ZWRDYXJkID0gb3V0cHV0PEthbmJhbkNhcmQ+KCk7XG5cbiAgZ2V0Q29sdW1uTGlzdCA9IGNvbXB1dGVkKCgpID0+IChjb2x1bW5JZDogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgbGlzdCA9IHRoaXMuY29sdW1uTGlzdHMoKS5maW5kKGwgPT4gbC5pZENvbHVuYSA9PT0gY29sdW1uSWQpO1xuICAgIHJldHVybiBsaXN0Py5saXN0YWdlbSB8fCBbXSBhcyBLYW5iYW5DYXJkW107XG4gIH0pO1xuXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEthbmJhbkNhcmRbXT4pIHtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgPT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KGV2ZW50LmNvbnRhaW5lci5kYXRhLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2ZlckFycmF5SXRlbShcbiAgICAgICAgZXZlbnQucHJldmlvdXNDb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbW92ZWRDYXJkID0gZXZlbnQuY29udGFpbmVyLmRhdGFbZXZlbnQuY3VycmVudEluZGV4XTtcbiAgICBcbiAgICB0aGlzLm9uQ2FyZE1vdmVkLmVtaXQoe1xuICAgICAgaXRlbTogbW92ZWRDYXJkLFxuICAgICAgZnJvbUNvbHVtbklkOiBldmVudC5wcmV2aW91c0NvbnRhaW5lci5pZCxcbiAgICAgIHRvQ29sdW1uSWQ6IGV2ZW50LmNvbnRhaW5lci5pZFxuICAgIH0pO1xuICAgIFxuICAgIHRoaXMub25TZWxlY3RlZENhcmQuZW1pdChtb3ZlZENhcmQpO1xuICB9XG5cbiAgb25BY3Rpb25DbGljayhhY3Rpb25Db2RlOiBzdHJpbmcsIGNhcmQ6IEthbmJhbkNhcmQpIHtcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2tlZC5lbWl0KHsgYWN0aW9uOiBhY3Rpb25Db2RlLCBjYXJkIH0pO1xuICAgIFxuICAgIHRoaXMub25TZWxlY3RlZENhcmQuZW1pdChjYXJkKTtcbiAgfVxuXG4gIG9wZW5DYXJkTWVudShldmVudDogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLmN1cnJlbnRNZW51T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aW9uc0ZvckNhcmQoaXRlbSk7XG5cbiAgICB0aGlzLnNoYXJlZE1lbnUoKT8udG9nZ2xlKGV2ZW50KTtcbiAgfVxuXG4gIG9uU2Nyb2xsKGV2ZW50OiBFdmVudCwgY29sdW1uSWQ6IG51bWJlcikge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgdGhyZXNob2xkID0gNTA7XG4gICAgY29uc3QgYXRCb3R0b20gPSBlbGVtZW50LnNjcm9sbEhlaWdodCAtIGVsZW1lbnQuc2Nyb2xsVG9wIC0gZWxlbWVudC5jbGllbnRIZWlnaHQgPCB0aHJlc2hvbGQ7XG4gICAgXG4gICAgaWYgKGF0Qm90dG9tKSB7XG4gICAgICB0aGlzLm9uTG9hZE1vcmVDYXJkcy5lbWl0KHsgY29sdW1uSWQgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29sdW1uVG90YWxJdGVtcyhjb2x1bW5JZDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbHVtbkNvbmZpZ3MoKS5maW5kKGMgPT4gYy5pZCA9PT0gY29sdW1uSWQpO1xuICAgIHJldHVybiBjb25maWc/LmNvbnRhZG9yIHx8IDA7XG4gIH1cblxuICBnZXRBY3Rpb25zRm9yQ2FyZChjYXJkOiBLYW5iYW5DYXJkKTogTWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aW9ucygpLm1hcChhY3Rpb24gPT4gKHtcbiAgICAgIC4uLmFjdGlvbixcbiAgICAgIGNvbW1hbmQ6IChldmVudD86IGFueSkgPT4ge1xuICAgICAgICBpZiAoYWN0aW9uLmNvbW1hbmQpIHtcbiAgICAgICAgICBhY3Rpb24uY29tbWFuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIGlmIChhY3Rpb24ubGFiZWwpIHtcbiAgICAgICAgICB0aGlzLm9uQWN0aW9uQ2xpY2soYWN0aW9uLmxhYmVsLCBjYXJkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGdldENvbHVtbkZsZXgoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0b3RhbENvbHVtbnMgPSB0aGlzLmNvbHVtbkNvbmZpZ3MoKS5sZW5ndGg7XG4gICAgaWYgKHRvdGFsQ29sdW1ucyA9PT0gMCkgcmV0dXJuICcxIDEgMjgwcHgnO1xuICAgIFxuICAgIHJldHVybiBgMSAxIGNhbGMoKDEwMCUgLSAkeyh0b3RhbENvbHVtbnMgLSAxKSAqIDE2fXB4KSAvICR7dG90YWxDb2x1bW5zfSlgO1xuICB9XG5cbiAgZ2V0U3RhdHVzVG9vbHRpcChzdGF0dXM6IGFueVtdKTogc3RyaW5nIHtcbiAgICBpZiAoIXN0YXR1cyB8fCBzdGF0dXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIHN0YXR1cy5tYXAocyA9PiBzLmxhYmVsKS5qb2luKCcsICcpO1xuICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IHctZnVsbCBoLWZ1bGxcIj5cclxuICA8ZGl2IGNsYXNzPVwiYm9hcmQtd3JhcHBlciBmbGV4LWNvbHVtbiBsZzpmbGV4LXJvd1wiIGNka0Ryb3BMaXN0R3JvdXA+XHJcbiAgICBcclxuICAgIEBmb3IoY29uZmlnIG9mIGNvbHVtbkNvbmZpZ3MoKTsgdHJhY2sgJGluZGV4KSB7XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYm9hcmQtY29sdW1uXCIgW3N0eWxlLmZsZXhdPVwiZ2V0Q29sdW1uRmxleCgpXCI+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbi1oZWFkZXJcIiBbc3R5bGUuYmFja2dyb3VuZENvbG9yXT1cImNvbmZpZy5jb3JUaXR1bG9cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtc2VtaWJvbGRcIj57eyBjb25maWcubm9tZSB9fTwvc3Bhbj5cclxuICAgICAgICAgIEBpZih0aGlzLnNob3dDb2x1bW5zQ291bnRlcigpKSB7XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY29sdW1uLWNvdW50LWJhZGdlIHB4LTIgcHktMVwiIFtzdHlsZS5jb2xvcl09XCJjb25maWcuY29yVGl0dWxvXCI+e3sgY29uZmlnLmNvbnRhZG9yIHwgbnVtYmVyOicyLjAnIH19PC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IFxyXG4gICAgICAgICAgY2xhc3M9XCJjb2x1bW4tY29udGVudFwiXHJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxyXG4gICAgICAgICAgW2lkXT1cImNvbmZpZy5pZC50b1N0cmluZygpXCJcclxuICAgICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZ2V0Q29sdW1uTGlzdCgpKGNvbmZpZy5pZClcIlxyXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudClcIlxyXG4gICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQsIGNvbmZpZy5pZClcIj5cclxuXHJcblxyXG4gICAgICAgICAgQGZvcihpdGVtIG9mIGdldENvbHVtbkxpc3QoKShjb25maWcuaWQpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJrYW5iYW4tY2FyZFwiIGNka0RyYWcgW2Nka0RyYWdEaXNhYmxlZF09XCIhZW5hYmxlRHJhZygpXCI+XHJcblxyXG4gICAgICAgICAgICAgIEBpZihhY3Rpb25zKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGNhcmQtbWVudS1idG4gdGV4dC14bCB0ZXh0LWJsYWNrLWFscGhhLTUwIGhvdmVyOnN1cmZhY2UtMjAwIGJvcmRlci1yb3VuZC1sZ1wiIChjbGljayk9XCJvcGVuQ2FyZE1lbnUoJGV2ZW50LCBpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICBtb3JlX3ZlcnRcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAgIEBpZiAoaXRlbS5zdGF0dXMgJiYgaXRlbS5zdGF0dXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIG10LTEgZ2FwLTIgb3ZlcmZsb3ctaGlkZGVuXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRTdGF0dXNUb29sdGlwKGl0ZW0uc3RhdHVzKVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAgQGZvcihzdGF0dXNJdGVtIG9mIGl0ZW0uc3RhdHVzOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXR1cy10YWcgdGV4dC14cyBib3JkZXItcm91bmQtM3hsIHB5LTEgcHgtMlwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kQ29sb3JdPVwic3RhdHVzSXRlbS5zdGF0dXNDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0YXR1c0l0ZW0uc3RhdHVzTGFiZWxDb2xvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgc3RhdHVzSXRlbS5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IG92ZXJmbG93LWhpZGRlbiBtbC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInAtMCBtLTAgdGV4dC1zbSB0ZXh0LWJsYWNrLWFscGhhLTcwIGZvbnQtc2VtaWJvbGQgbWItMiBwci00XCIgcFRvb2x0aXA9XCJ7e2l0ZW0udGl0dWxvfX1cIiB0b29sdGlwUG9zaXRpb249XCJ0b3BcIj5cclxuICAgICAgICAgICAgICAgICAge3sgaXRlbS50aXR1bG8gfX1cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjYXJkVGVtcGxhdGUoKVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgKmNka0RyYWdQbGFjZWhvbGRlciBjbGFzcz1cImN1c3RvbS1wbGFjZWhvbGRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW4tZm9vdGVyIHRleHQteHMgdGV4dC1ibGFjay1hbHBoYS04MFwiPlxyXG4gICAgICAgICAgVmVyIHt7IGdldENvbHVtbkxpc3QoKShjb25maWcuaWQpLmxlbmd0aCB9fSBkZSB7eyBjb25maWcuY29udGFkb3IgfX1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIH1cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPHAtbWVudSAjc2hhcmVkTWVudSBbbW9kZWxdPVwiY3VycmVudE1lbnVPcHRpb25zXCIgW3BvcHVwXT1cInRydWVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3AtbWVudT4iXX0=
@@ -14482,12 +14482,17 @@ class KvKanbanComponent {
14482
14482
  return '1 1 280px';
14483
14483
  return `1 1 calc((100% - ${(totalColumns - 1) * 16}px) / ${totalColumns})`;
14484
14484
  }
14485
+ getStatusTooltip(status) {
14486
+ if (!status || status.length === 0)
14487
+ return '';
14488
+ return status.map(s => s.label).join(', ');
14489
+ }
14485
14490
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvKanbanComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14486
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvKanbanComponent, isStandalone: true, selector: "kv-kanban", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, columnConfigs: { classPropertyName: "columnConfigs", publicName: "columnConfigs", isSignal: true, isRequired: false, transformFunction: null }, columnLists: { classPropertyName: "columnLists", publicName: "columnLists", isSignal: true, isRequired: false, transformFunction: null }, cardTemplate: { classPropertyName: "cardTemplate", publicName: "cardTemplate", isSignal: true, isRequired: false, transformFunction: null }, showColumnsCounter: { classPropertyName: "showColumnsCounter", publicName: "showColumnsCounter", isSignal: true, isRequired: false, transformFunction: null }, enableDrag: { classPropertyName: "enableDrag", publicName: "enableDrag", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onCardMoved: "onCardMoved", onActionClicked: "onActionClicked", onLoadMoreCards: "onLoadMoreCards", onSelectedCard: "onSelectedCard" }, viewQueries: [{ propertyName: "sharedMenu", first: true, predicate: ["sharedMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status) {\r\n <div class=\"card-header mt-1\"> <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"item.statusColor\"\r\n [style.color]=\"item.statusLabelColor\">\r\n {{ item.status }}\r\n </span>\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i2.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
14491
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvKanbanComponent, isStandalone: true, selector: "kv-kanban", inputs: { actions: { classPropertyName: "actions", publicName: "actions", isSignal: true, isRequired: false, transformFunction: null }, columnConfigs: { classPropertyName: "columnConfigs", publicName: "columnConfigs", isSignal: true, isRequired: false, transformFunction: null }, columnLists: { classPropertyName: "columnLists", publicName: "columnLists", isSignal: true, isRequired: false, transformFunction: null }, cardTemplate: { classPropertyName: "cardTemplate", publicName: "cardTemplate", isSignal: true, isRequired: false, transformFunction: null }, showColumnsCounter: { classPropertyName: "showColumnsCounter", publicName: "showColumnsCounter", isSignal: true, isRequired: false, transformFunction: null }, enableDrag: { classPropertyName: "enableDrag", publicName: "enableDrag", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onCardMoved: "onCardMoved", onActionClicked: "onActionClicked", onLoadMoreCards: "onLoadMoreCards", onSelectedCard: "onSelectedCard" }, viewQueries: [{ propertyName: "sharedMenu", first: true, predicate: ["sharedMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status && item.status.length > 0) {\r\n <div class=\"card-header mt-1 gap-2 overflow-hidden\" \r\n [pTooltip]=\"getStatusTooltip(item.status)\" \r\n tooltipPosition=\"top\">\r\n @for(statusItem of item.status; track $index) {\r\n <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"statusItem.statusColor\"\r\n [style.color]=\"statusItem.statusLabelColor\">\r\n {{ statusItem.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px;flex-wrap:nowrap}.card-header .status-tag{white-space:nowrap;flex-shrink:0}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.DecimalPipe, name: "number" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$3.CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "directive", type: i2$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i2$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "ngmodule", type: MenuModule }, { kind: "component", type: i2.Menu, selector: "p-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "ariaLabel", "ariaLabelledBy", "id", "tabindex"], outputs: ["onShow", "onHide", "onBlur", "onFocus"] }, { kind: "directive", type: i6.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "ngmodule", type: TooltipModule }] }); }
14487
14492
  }
14488
14493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvKanbanComponent, decorators: [{
14489
14494
  type: Component,
14490
- args: [{ standalone: true, selector: 'kv-kanban', imports: [CommonModule, DragDropModule, MenuModule], template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status) {\r\n <div class=\"card-header mt-1\"> <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"item.statusColor\"\r\n [style.color]=\"item.statusLabelColor\">\r\n {{ item.status }}\r\n </span>\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"] }]
14495
+ args: [{ standalone: true, selector: 'kv-kanban', imports: [CommonModule, DragDropModule, MenuModule, TooltipModule], template: "<div class=\"flex w-full h-full\">\r\n <div class=\"board-wrapper flex-column lg:flex-row\" cdkDropListGroup>\r\n \r\n @for(config of columnConfigs(); track $index) {\r\n\r\n <div class=\"board-column\" [style.flex]=\"getColumnFlex()\">\r\n \r\n <div class=\"column-header\" [style.backgroundColor]=\"config.corTitulo\">\r\n <span class=\"text-base font-semibold\">{{ config.nome }}</span>\r\n @if(this.showColumnsCounter()) {\r\n <span class=\"column-count-badge px-2 py-1\" [style.color]=\"config.corTitulo\">{{ config.contador | number:'2.0' }}</span>\r\n }\r\n </div>\r\n\r\n <div \r\n class=\"column-content\"\r\n cdkDropList\r\n [id]=\"config.id.toString()\"\r\n [cdkDropListData]=\"getColumnList()(config.id)\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (scroll)=\"onScroll($event, config.id)\">\r\n\r\n\r\n @for(item of getColumnList()(config.id); track $index) {\r\n \r\n <div class=\"kanban-card\" cdkDrag [cdkDragDisabled]=\"!enableDrag()\">\r\n\r\n @if(actions().length > 0) {\r\n <span class=\"material-symbols-outlined card-menu-btn text-xl text-black-alpha-50 hover:surface-200 border-round-lg\" (click)=\"openCardMenu($event, item)\">\r\n more_vert\r\n </span>\r\n }\r\n \r\n\r\n @if (item.status && item.status.length > 0) {\r\n <div class=\"card-header mt-1 gap-2 overflow-hidden\" \r\n [pTooltip]=\"getStatusTooltip(item.status)\" \r\n tooltipPosition=\"top\">\r\n @for(statusItem of item.status; track $index) {\r\n <span class=\"status-tag text-xs border-round-3xl py-1 px-2\" \r\n [style.backgroundColor]=\"statusItem.statusColor\"\r\n [style.color]=\"statusItem.statusLabelColor\">\r\n {{ statusItem.label }}\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"card-body overflow-hidden ml-1\">\r\n <p class=\"p-0 m-0 text-sm text-black-alpha-70 font-semibold mb-2 pr-4\" pTooltip=\"{{item.titulo}}\" tooltipPosition=\"top\">\r\n {{ item.titulo }}\r\n </p>\r\n \r\n <ng-container [ngTemplateOutlet]=\"cardTemplate()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\r\n </div>\r\n\r\n <div *cdkDragPlaceholder class=\"custom-placeholder\"></div>\r\n </div>\r\n }\r\n\r\n </div>\r\n\r\n <div class=\"column-footer text-xs text-black-alpha-80\">\r\n Ver {{ getColumnList()(config.id).length }} de {{ config.contador }}\r\n </div>\r\n\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n</div>\r\n\r\n<p-menu #sharedMenu [model]=\"currentMenuOptions\" [popup]=\"true\" appendTo=\"body\"></p-menu>", styles: [".board-wrapper{display:flex;flex:1 1 0%;gap:16px;overflow-x:auto;padding:20px;height:100%;min-height:0}.board-column{display:flex;flex-direction:column;background-color:#f0f2f5;border-radius:18px;min-width:280px;overflow:visible;min-height:400px;max-height:600px}@media (min-width: 1024px){.board-column{height:100%;max-height:100%;min-height:0}}.column-header{padding:10px 20px;margin:7px;border-radius:18px;color:#fff;display:flex;justify-content:space-between;align-items:center;font-weight:600;gap:8px}.column-header span:first-child{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.column-header .column-count-badge{background-color:#ffffffe6;border-radius:12px;font-size:.85rem;font-weight:700;flex-shrink:0}.column-content{flex:1 1 0;overflow-y:auto;overflow-x:visible;padding:12px;min-height:0}.column-content::-webkit-scrollbar{width:6px}.column-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.kanban-card{background:#fff;border-radius:16px;padding:12px;margin-bottom:8px;box-shadow:0 4px 6px #0000001a;cursor:grab;transition:box-shadow .2s;position:relative}.kanban-card:active{cursor:grabbing}.kanban-card:hover{box-shadow:0 4px 8px #0000001a}.kanban-card.cdk-drag-disabled,.kanban-card.cdk-drag-disabled:active{cursor:default}.card-header{display:flex;margin-bottom:8px;flex-wrap:nowrap}.card-header .status-tag{white-space:nowrap;flex-shrink:0}.card-menu-btn{position:absolute;top:12px;right:8px;cursor:pointer;z-index:10;-webkit-user-select:none;user-select:none}.column-footer{padding:10px;text-align:center}.cdk-drag-preview{box-sizing:border-box;border-radius:8px;box-shadow:0 5px 15px #0003;background:#fff}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.column-content.cdk-drop-list-dragging .kanban-card:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .p-menu{scale:.8;z-index:1000!important}\n"] }]
14491
14496
  }] });
14492
14497
 
14493
14498
  /*