{"version":3,"file":"seniorsistemas-angular-components-kanban.mjs","sources":["../../projects/angular-components/kanban/src/lib/kanban/kanban-event.service.ts","../../projects/angular-components/kanban/src/lib/kanban/components/kanban-column/kanban-column.component.ts","../../projects/angular-components/kanban/src/lib/kanban/components/kanban-column/kanban-column.component.html","../../projects/angular-components/kanban/src/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.ts","../../projects/angular-components/kanban/src/lib/kanban/components/kanban-item-dragging/kanban-item-dragging.component.html","../../projects/angular-components/kanban/src/lib/kanban/components/kanban-item/kanban-item.component.ts","../../projects/angular-components/kanban/src/lib/kanban/components/kanban-item/kanban-item.component.html","../../projects/angular-components/kanban/src/lib/kanban/kanban.component.ts","../../projects/angular-components/kanban/src/lib/kanban/kanban.component.html","../../projects/angular-components/kanban/src/lib/kanban/kanban.module.ts","../../projects/angular-components/kanban/src/seniorsistemas-angular-components-kanban.ts"],"sourcesContent":["import { EventEmitter, Injectable } from '@angular/core';\n\nimport { KanbanColumn, KanbanItem } from './types';\n\n@Injectable()\nexport class KanbanEventService {\n    public selectAllColumnItemsEvent = new EventEmitter<KanbanColumn>();\n    public unselectAllColumnItemsEvent = new EventEmitter<KanbanColumn>();\n    public selectItemEvent = new EventEmitter<KanbanItem>();\n    public unselectItemEvent = new EventEmitter<KanbanItem>();\n\n    public emitSelectAllColumnItemsEvent(column: KanbanColumn): void {\n        this.selectAllColumnItemsEvent.emit(column);\n    }\n\n    public emitUnselectAllColumnItemsEvent(column: KanbanColumn): void {\n        this.unselectAllColumnItemsEvent.emit(column);\n    }\n\n    public emitSelectItemEvent(item: KanbanItem): void {\n        this.selectItemEvent.emit(item);\n    }\n\n    public emitUnselectItemEvent(item: KanbanItem): void {\n        this.unselectItemEvent.emit(item);\n    }\n}\n","import { Component, Input, OnDestroy, OnInit, TemplateRef, inject } from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { KanbanColumn, KanbanItem } from '../../types';\r\nimport { KanbanEventService } from '../../kanban-event.service';\r\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { KanbanColumnOption } from '../../types/kanban-data';\r\nimport { TieredMenuItemData } from '@seniorsistemas/angular-components/tiered-menu';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\n\r\n@Component({\r\n    selector: 's-kanban-column',\r\n    templateUrl: './kanban-column.component.html',\r\n    styleUrls: ['./kanban-column.component.scss'],\r\n    standalone: true,\r\n    imports: [FormsModule, ReactiveFormsModule, NgTemplateOutlet, ButtonComponent],\r\n})\r\nexport class KanbanColumnComponent implements OnInit, OnDestroy {\r\n    private readonly kanbanEventService = inject(KanbanEventService);\r\n\r\n    @Input({ required: true })\r\n    public data!: KanbanColumn;\r\n\r\n    @Input()\r\n    public showCheckbox = true;\r\n\r\n    @Input()\r\n    public headerTemplate: TemplateRef<any> | null = null;\r\n\r\n    public selectionControl = new FormControl(false);\r\n    public tieredMenuOptions!: TieredMenuItemData[];\r\n\r\n    private _unsubscribe$ = new Subject<void>();\r\n\r\n    public ngOnInit(): void {\r\n        this._validateInputs();\r\n        this._subscriveEvents();\r\n\r\n        this._createTieredOptions();\r\n\r\n        this.tieredMenuOptions = this.data.options ? (this.data.options as TieredMenuItemData[]) : [];\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this._unsubscribe$.next();\r\n        this._unsubscribe$.complete();\r\n    }\r\n\r\n    private _createTieredOptions(): void {\r\n        if (!this.data.options) return;\r\n\r\n        const options: KanbanColumnOption[] = [];\r\n\r\n        this.data.options.forEach((option: KanbanColumnOption) => {\r\n            options.push({\r\n                ...option,\r\n                command: () => {\r\n                    option.command(this.data);\r\n                },\r\n            });\r\n        });\r\n\r\n        this.data.options = options;\r\n    }\r\n\r\n    private _subscriveEvents(): void {\r\n        this.selectionControl.valueChanges.pipe(takeUntil(this._unsubscribe$)).subscribe((value: boolean | null) => {\r\n            if (value) {\r\n                this.kanbanEventService.emitSelectAllColumnItemsEvent(this.data);\r\n            } else {\r\n                this.kanbanEventService.emitUnselectAllColumnItemsEvent(this.data);\r\n            }\r\n        });\r\n\r\n        this.kanbanEventService.unselectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe((_) => {\r\n            this.selectionControl.setValue(false, { emitEvent: false });\r\n        });\r\n\r\n        this.kanbanEventService.selectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe((item: KanbanItem) => {\r\n            if (!this.data.items.includes(item)) {\r\n                this.selectionControl.setValue(false, { emitEvent: false });\r\n            }\r\n        });\r\n\r\n        this.kanbanEventService.selectAllColumnItemsEvent\r\n            .pipe(takeUntil(this._unsubscribe$))\r\n            .subscribe((column: KanbanColumn) => {\r\n                if (this.data !== column) {\r\n                    this.selectionControl.setValue(false, { emitEvent: false });\r\n                }\r\n            });\r\n\r\n        this.kanbanEventService.unselectAllColumnItemsEvent\r\n            .pipe(takeUntil(this._unsubscribe$))\r\n            .subscribe((column: KanbanColumn) => {\r\n                if (this.data !== column) {\r\n                    this.selectionControl.setValue(false, { emitEvent: false });\r\n                }\r\n            });\r\n    }\r\n\r\n    private _validateInputs(): void {\r\n        if (!this.data) {\r\n            throw new Error('data parameter is required');\r\n        }\r\n    }\r\n}\r\n","<div class=\"kanban-column\">\n    <div class=\"kanban-column__header\">\n        <div class=\"content\">\n            <form>\n                @if (showCheckbox) {\n                    <input\n                        type=\"checkbox\"\n                        name=\"checkbox\"\n                        [formControl]=\"selectionControl\"\n                    />\n                }\n            </form>\n\n            @if (!headerTemplate) {\n                <div class=\"header\">\n                    <span class=\"title\">{{ data.title }} ({{ data.items.length }})</span>\n                </div>\n            } @else {\n                <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: data }\"></ng-container>\n            }\n        </div>\n        @if (data.options) {\n            <s-button\n                priority=\"default\"\n                [disabled]=\"false\"\n                [auxiliary]=\"true\"\n                size=\"small\"\n                [menuOptions]=\"tieredMenuOptions\"\n            >\n            </s-button>\n        }\n    </div>\n    <div class=\"kanban-column__body\">\n        <ng-content></ng-content>\n    </div>\n</div>\n","import { Component, Input } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { BadgeComponent } from '@seniorsistemas/angular-components/badge';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\n@Component({\r\n    selector: 's-kanban-item-dragging',\r\n    templateUrl: './kanban-item-dragging.component.html',\r\n    styleUrls: ['./kanban-item-dragging.component.scss'],\r\n    standalone: true,\r\n    imports: [NgClass, BadgeComponent, TranslatePipe],\r\n})\r\nexport class KanbanItemDraggingComponent {\r\n    @Input()\r\n    public quantityItems = 0;\r\n}\r\n","<div class=\"kanban-item-dragging-container\">\r\n    @if (quantityItems) {\r\n        <div class=\"kanban-item-dragging\"></div>\r\n    }\r\n\r\n    <div\r\n        class=\"kanban-item-dragging\"\r\n        [ngClass]=\"{ 'kanban-item-dragging--over': quantityItems }\"\r\n    >\r\n        <div class=\"content\">\r\n            <input\r\n                type=\"checkbox\"\r\n                checked\r\n            />\r\n            <s-badge\r\n                [text]=\"'platform.angular_components.count_items_selected' | translate: { count: quantityItems }\"\r\n                color=\"blue\"\r\n            >\r\n            </s-badge>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { Component, Input, OnInit, TemplateRef, inject } from '@angular/core';\r\n\r\nimport { KanbanItem } from '../../types';\r\nimport { KanbanEventService } from '../../kanban-event.service';\r\nimport { KanbanItemOption } from '../../types/kanban-data';\r\nimport { TieredMenuItemData, TieredMenuDirective } from '@seniorsistemas/angular-components/tiered-menu';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n    selector: 's-kanban-item',\r\n    templateUrl: './kanban-item.component.html',\r\n    styleUrls: ['./kanban-item.component.scss'],\r\n    standalone: true,\r\n    imports: [NgClass, FormsModule, NgTemplateOutlet, TieredMenuDirective],\r\n})\r\nexport class KanbanItemComponent implements OnInit {\r\n    private readonly _kanbanEventService = inject(KanbanEventService);\r\n\r\n    @Input({ required: true })\r\n    public item!: KanbanItem;\r\n\r\n    @Input()\r\n    public selected = false;\r\n\r\n    @Input()\r\n    public showCheckbox = true;\r\n\r\n    @Input()\r\n    public headerTemplate: TemplateRef<any> | null = null;\r\n\r\n    @Input()\r\n    public bodyTemplate: TemplateRef<any> | null = null;\r\n\r\n    @Input()\r\n    public footerTemplate: TemplateRef<any> | null = null;\r\n\r\n    public kanbanItemOptions: TieredMenuItemData[] = [];\r\n\r\n    public ngOnInit(): void {\r\n        this._convertToTieredMenuItemData();\r\n    }\r\n\r\n    public onSelectedChange(value: any): void {\r\n        if (value) {\r\n            this._kanbanEventService.emitSelectItemEvent(this.item);\r\n        } else {\r\n            this._kanbanEventService.emitUnselectItemEvent(this.item);\r\n        }\r\n    }\r\n\r\n    private _convertToTieredMenuItemData() {\r\n        if (!this.item.options) return;\r\n\r\n        const options: TieredMenuItemData[] = [];\r\n\r\n        this.item.options.forEach((option: KanbanItemOption) => {\r\n            options.push({\r\n                ...option,\r\n                command: () => option.command(this.item),\r\n            });\r\n        });\r\n\r\n        this.kanbanItemOptions = options;\r\n    }\r\n}\r\n","<div\r\n    class=\"kanban-item\"\r\n    [ngClass]=\"{\r\n        'kanban-item--selected': selected && !item.disabled,\r\n        'kanban-item--disabled': item.disabled,\r\n        'kanban-item--frozen': !item.disabled && item.frozen,\r\n    }\"\r\n>\r\n    <div class=\"kanban-item__header\">\r\n        <div class=\"content\">\r\n            <form>\r\n                @if (showCheckbox && !item.disabled && !item.frozen) {\r\n                    <input\r\n                        type=\"checkbox\"\r\n                        name=\"checkbox\"\r\n                        [(ngModel)]=\"selected\"\r\n                        (ngModelChange)=\"onSelectedChange($event)\"\r\n                        (click)=\"$event.stopPropagation()\"\r\n                    />\r\n                }\r\n            </form>\r\n            <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: item }\"></ng-container>\r\n        </div>\r\n        @if (item.options && !item.disabled) {\r\n            <button\r\n                class=\"options-button\"\r\n                (click)=\"$event.stopPropagation()\"\r\n                sTieredMenu\r\n                [items]=\"kanbanItemOptions\"\r\n            >\r\n                <i class=\"fas fa-ellipsis-v\"></i>\r\n            </button>\r\n        }\r\n    </div>\r\n    <div class=\"kanban-item__body\">\r\n        <ng-container *ngTemplateOutlet=\"bodyTemplate; context: { $implicit: item }\"></ng-container>\r\n    </div>\r\n    @if (footerTemplate) {\r\n        <div class=\"kanban-item__footer\">\r\n            <ng-container *ngTemplateOutlet=\"footerTemplate; context: { $implicit: item }\"></ng-container>\r\n        </div>\r\n    }\r\n</div>\r\n","import {\r\n    CdkDragDrop,\r\n    moveItemInArray,\r\n    transferArrayItem,\r\n    CdkDropList,\r\n    CdkDrag,\r\n    CdkDragPreview,\r\n    CdkDragPlaceholder,\r\n} from '@angular/cdk/drag-drop';\r\nimport {\r\n    AfterContentInit,\r\n    Component,\r\n    ContentChildren,\r\n    EventEmitter,\r\n    Input,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    QueryList,\r\n    TemplateRef,\r\n    inject,\r\n} from '@angular/core';\r\n\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\n\r\nimport { KanbanEventService } from './kanban-event.service';\r\nimport { KanbanColumn, KanbanData, KanbanItem, KanbanItemMovedData } from './types/index';\r\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { KanbanColumnComponent } from './components/kanban-column/kanban-column.component';\r\nimport { KanbanItemDraggingComponent } from './components/kanban-item-dragging/kanban-item-dragging.component';\r\nimport { KanbanItemComponent } from './components/kanban-item/kanban-item.component';\r\nimport { TranslatePipe } from '@ngx-translate/core';\r\n\r\n/**\r\n * @description Componente de quadro Kanban com suporte a arrastar e soltar colunas e itens.\r\n * Permite seleção via checkboxes, templates customizáveis para cabeçalho, corpo e rodapé\r\n * dos cards, além de emitir eventos de movição e seleção.\r\n *\r\n * @example\r\n * ```html\r\n * <s-kanban\r\n *   [data]=\"dadosKanban\"\r\n *   (itemsMoved)=\"onItemMovido($event)\" />\r\n * ```\r\n *\r\n * @category Data\r\n */\r\n@Component({\r\n    selector: 's-kanban',\r\n    templateUrl: './kanban.component.html',\r\n    styleUrls: ['./kanban.component.scss'],\r\n    standalone: true,\r\n    imports: [\r\n        KanbanColumnComponent,\r\n        CdkDropList,\r\n        NgTemplateOutlet,\r\n        CdkDrag,\r\n        CdkDragPreview,\r\n        KanbanItemDraggingComponent,\r\n        KanbanItemComponent,\r\n        CdkDragPlaceholder,\r\n        TranslatePipe,\r\n    ],\r\n})\r\nexport class KanbanComponent implements OnInit, AfterContentInit, OnDestroy {\r\n    private readonly kanbanEventService = inject(KanbanEventService);\r\n\r\n    /** @description Dados do quadro Kanban com colunas e itens. Campo obrigatório. */\r\n    @Input({ required: true })\r\n    public data!: KanbanData;\r\n\r\n    /** @description Exibe checkboxes de seleção em cada item Kanban. @default true */\r\n    @Input()\r\n    public showItemCheckboxes = true;\r\n\r\n    /** @description Exibe checkboxes de seleção no cabeçalho de cada coluna. @default true */\r\n    @Input()\r\n    public showColumnCheckboxes = true;\r\n\r\n    /** @description Emitido quando o usuário move um item entre colunas ou posições. */\r\n    @Output()\r\n    public itemsMoved = new EventEmitter<KanbanItemMovedData>();\r\n\r\n    /** @description Emitido quando os dados do quadro são atualizados após movição. */\r\n    @Output()\r\n    public dataUpdated = new EventEmitter<KanbanData>();\r\n\r\n    /** @description Emitido quando a seleção de itens muda, com a lista de itens selecionados. */\r\n    @Output()\r\n    public itemsSelected = new EventEmitter<KanbanItem[]>();\r\n\r\n    public selectedColumn: KanbanColumn | null = null;\r\n    public selectedItems = new Set<KanbanItem>();\r\n    public draggingItems = new Set<KanbanItem>();\r\n\r\n    public columnHeaderTemplate: TemplateRef<any> | null = null;\r\n    public columnEmptyMessageTemplate: TemplateRef<any> | null = null;\r\n    public itemHeaderTemplate: TemplateRef<any> | null = null;\r\n    public itemBodyTemplate: TemplateRef<any> | null = null;\r\n    public itemFooterTemplate: TemplateRef<any> | null = null;\r\n\r\n    private readonly _instanceId = `kanban-${Math.random().toString(36).substring(2, 9)}-${Date.now().toString(36)}`;\r\n    private readonly _columnIdMap = new Map<string, string>();\r\n    private _unsubscribe$ = new Subject<void>();\r\n\r\n    @ContentChildren(TemplateDirective) templates: QueryList<TemplateDirective> | null = null;\r\n\r\n    public ngOnInit(): void {\r\n        this._subscribeEvents();\r\n        this._normalizeData();\r\n        this._validateInputs();\r\n    }\r\n\r\n    ngAfterContentInit() {\r\n        this._getTemplates();\r\n    }\r\n\r\n    public ngOnDestroy(): void {\r\n        this._unsubscribe$.next();\r\n        this._unsubscribe$.complete();\r\n    }\r\n\r\n    public drop(event: CdkDragDrop<KanbanItem[]>): void {\r\n        const previousColumn = this.data.columns.find(\r\n            (column: KanbanColumn) => column.id === event.previousContainer.id,\r\n        );\r\n        const targetColumn = this.data.columns.find((column: KanbanColumn) => column.id === event.container.id);\r\n\r\n        if (!previousColumn || !targetColumn) {\r\n            throw new Error('Unable to obtain information about columns when performing drag and drop');\r\n        }\r\n\r\n        if (event.previousContainer === event.container) {\r\n            moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n        } else {\r\n            transferArrayItem(\r\n                event.previousContainer.data,\r\n                event.container.data,\r\n                event.previousIndex,\r\n                event.currentIndex,\r\n            );\r\n        }\r\n\r\n        this.selectedItems.forEach((item: KanbanItem) => {\r\n            const previousIndex = event.previousContainer.data.indexOf(item);\r\n            if (previousIndex !== -1 && item !== event.item.data) {\r\n                if (event.previousContainer === event.container) {\r\n                    moveItemInArray(event.container.data, previousIndex, event.currentIndex);\r\n                } else {\r\n                    transferArrayItem(\r\n                        event.previousContainer.data,\r\n                        event.container.data,\r\n                        previousIndex,\r\n                        event.currentIndex,\r\n                    );\r\n                }\r\n            }\r\n        });\r\n\r\n        this.selectedItems.add(event.item.data);\r\n\r\n        this.itemsMoved.emit({\r\n            items: [...this.selectedItems],\r\n            previousColumn,\r\n            targetColumn,\r\n        });\r\n\r\n        if (this.dataUpdated.observers?.length) {\r\n            this.dataUpdated.emit({ ...this.data });\r\n        }\r\n\r\n        this.data.columns.forEach((column: KanbanColumn) => {\r\n            this.kanbanEventService.emitUnselectAllColumnItemsEvent(column);\r\n        });\r\n        this.selectedItems.clear();\r\n    }\r\n\r\n    public selectItem(event: MouseEvent, item: KanbanItem, column: KanbanColumn): void {\r\n        if (item.disabled || item.frozen) return;\r\n\r\n        if (event.ctrlKey) {\r\n            if (this.selectedItems.delete(item)) {\r\n                this.kanbanEventService.emitUnselectItemEvent(item);\r\n            } else {\r\n                if (this.selectedColumn && !this.selectedColumn.items.includes(item)) {\r\n                    this.selectedItems.clear();\r\n                }\r\n\r\n                this.selectedItems.add(item);\r\n                this.selectedColumn = column;\r\n                this.kanbanEventService.emitSelectItemEvent(item);\r\n            }\r\n        } else {\r\n            if (this.selectedItems.delete(item)) return;\r\n\r\n            this.selectedItems.clear();\r\n            this.selectedItems.add(item);\r\n            this.selectedColumn = column;\r\n            this.kanbanEventService.emitSelectItemEvent(item);\r\n        }\r\n    }\r\n\r\n    public dragStarted(): void {\r\n        this.selectedItems.forEach((item: KanbanItem) => {\r\n            this.draggingItems.add(item);\r\n        });\r\n    }\r\n\r\n    public dragReleased(): void {\r\n        this.draggingItems.clear();\r\n    }\r\n\r\n    public getLinkedColumns(currentColumn: KanbanColumn): string[] {\r\n        return this.data.columns\r\n            .filter((column: KanbanColumn) => column != currentColumn)\r\n            .map((column: KanbanColumn) => column.id ?? '');\r\n    }\r\n\r\n    public getColumnHeaderTemplate(): TemplateRef<any> | null {\r\n        return this._getCustomTemplate('column-header') ?? null;\r\n    }\r\n\r\n    public getColumnEmptyMessageTemplate(): TemplateRef<any> | null {\r\n        return this._getCustomTemplate('column-empty-message') ?? null;\r\n    }\r\n\r\n    public getItemHeaderTemplate(): TemplateRef<any> | null {\r\n        return this._getCustomTemplate('item-header') ?? null;\r\n    }\r\n\r\n    public getItemBodyTemplate(): TemplateRef<any> | null {\r\n        return this._getCustomTemplate('item-body') ?? null;\r\n    }\r\n\r\n    public getItemFooterTemplate(): TemplateRef<any> | null {\r\n        return this._getCustomTemplate('item-footer') ?? null;\r\n    }\r\n\r\n    private _getCustomTemplate(type: string): TemplateRef<any> | null {\r\n        return this.templates?.find((template: TemplateDirective) => template.type === type)?.template ?? null;\r\n    }\r\n\r\n    private _subscribeEvents(): void {\r\n        this.kanbanEventService.selectAllColumnItemsEvent\r\n            .pipe(takeUntil(this._unsubscribe$))\r\n            .subscribe((column: KanbanColumn) => {\r\n                column.items\r\n                    .filter((item: KanbanItem) => !item.disabled && !item.frozen)\r\n                    .forEach((item: KanbanItem) => {\r\n                        this.selectedItems.add(item);\r\n                    });\r\n                this.selectedColumn = column;\r\n                this.itemsSelected.emit([...this.selectedItems]);\r\n            });\r\n\r\n        this.kanbanEventService.unselectAllColumnItemsEvent.pipe(takeUntil(this._unsubscribe$)).subscribe((_) => {\r\n            this.selectedItems.clear();\r\n        });\r\n\r\n        this.kanbanEventService.selectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe((item: KanbanItem) => {\r\n            if (this.selectedColumn && !this.selectedColumn.items.includes(item)) {\r\n                this.selectedItems.clear();\r\n            }\r\n            this.selectedItems.add(item);\r\n            this.itemsSelected.emit([...this.selectedItems]);\r\n\r\n            // Finding the item column and setting selectedColumn.\r\n            this.data.columns.forEach((column: KanbanColumn) => {\r\n                column.items.forEach((currentItem: KanbanItem) => {\r\n                    if (currentItem === item) {\r\n                        this.selectedColumn = column;\r\n                        return;\r\n                    }\r\n                });\r\n            });\r\n        });\r\n\r\n        this.kanbanEventService.unselectItemEvent.pipe(takeUntil(this._unsubscribe$)).subscribe((item: KanbanItem) => {\r\n            this.selectedItems.delete(item);\r\n        });\r\n    }\r\n\r\n    private _normalizeData(): void {\r\n        this.data.columns.forEach((column: KanbanColumn) => {\r\n            const originalId = column.id || `col-${Math.random().toString(36).substring(2, 9)}`;\r\n            // Não mutar column.id, manter original\r\n            if (!column.id) {\r\n                column.id = originalId;\r\n            }\r\n            // Criar ID único para esta instância\r\n            const uniqueId = `${this._instanceId}-${originalId}`;\r\n            this._columnIdMap.set(originalId, uniqueId);\r\n        });\r\n    }\r\n\r\n    private _validateInputs(): void {\r\n        const columns = this.data.columns;\r\n        const columnIds = this.data.columns.map((column: KanbanColumn) => column.id);\r\n\r\n        if (new Set(columnIds).size !== columns.length) {\r\n            throw new Error('Repeated IDs are not accepted.');\r\n        }\r\n    }\r\n\r\n    private _getTemplates(): void {\r\n        this.columnHeaderTemplate = this.getColumnHeaderTemplate();\r\n        this.columnEmptyMessageTemplate = this.getColumnEmptyMessageTemplate();\r\n        this.itemHeaderTemplate = this.getItemHeaderTemplate();\r\n        this.itemBodyTemplate = this.getItemBodyTemplate();\r\n        this.itemFooterTemplate = this.getItemFooterTemplate();\r\n    }\r\n}\r\n","<div class=\"kanban\">\r\n    @for (column of data.columns; track column) {\r\n        <s-kanban-column\r\n            [data]=\"column\"\r\n            [showCheckbox]=\"showColumnCheckboxes\"\r\n            [headerTemplate]=\"columnHeaderTemplate\"\r\n        >\r\n            <div\r\n                [id]=\"column.id + ''\"\r\n                style=\"height: 100%; width: 100%\"\r\n                cdkDropList\r\n                #dynamicList=\"cdkDropList\"\r\n                [cdkDropListData]=\"column.items\"\r\n                [cdkDropListConnectedTo]=\"getLinkedColumns(column)\"\r\n                (cdkDropListDropped)=\"drop($event)\"\r\n            >\r\n                @if (column.items.length === 0) {\r\n                    @if (!columnEmptyMessageTemplate) {\r\n                        <div class=\"empty-message\">\r\n                            <p class=\"text\">\r\n                                <span class=\"fas fa-clock\"></span>&nbsp;\r\n                                <span>{{\r\n                                    'platform.angular_components.count_items_in_target'\r\n                                        | translate: { count: column.items.length, target: column.title }\r\n                                }}</span>\r\n                            </p>\r\n                        </div>\r\n                    } @else {\r\n                        <ng-container\r\n                            *ngTemplateOutlet=\"columnEmptyMessageTemplate; context: { $implicit: column }\"\r\n                        ></ng-container>\r\n                    }\r\n                }\r\n                @for (item of column.items; track item) {\r\n                    <div\r\n                        cdkDrag\r\n                        [cdkDragData]=\"item\"\r\n                        [cdkDragDisabled]=\"item.disabled || item.frozen\"\r\n                        (cdkDragStarted)=\"dragStarted()\"\r\n                        (cdkDragReleased)=\"dragReleased()\"\r\n                        (click)=\"selectItem($event, item, column)\"\r\n                    >\r\n                        <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n                        <ng-container *cdkDragPreview>\r\n                            @if (selectedItems.size > 1) {\r\n                                <s-kanban-item-dragging [quantityItems]=\"selectedItems.size\"></s-kanban-item-dragging>\r\n                            } @else {\r\n                                <div class=\"max-w-96\">\r\n                                    <ng-container *ngTemplateOutlet=\"itemTemplate\"></ng-container>\r\n                                </div>\r\n                            }\r\n                        </ng-container>\r\n                        <ng-template #itemTemplate>\r\n                            <s-kanban-item\r\n                                [item]=\"item\"\r\n                                [selected]=\"selectedItems.has(item)\"\r\n                                [showCheckbox]=\"showItemCheckboxes\"\r\n                                [headerTemplate]=\"itemHeaderTemplate\"\r\n                                [bodyTemplate]=\"itemBodyTemplate\"\r\n                                [footerTemplate]=\"itemFooterTemplate\"\r\n                            >\r\n                            </s-kanban-item>\r\n                        </ng-template>\r\n                        <div *cdkDragPlaceholder>\r\n                            <div class=\"placeholder\">\r\n                                <div class=\"placeholder-line\"></div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                }\r\n            </div>\r\n        </s-kanban-column>\r\n    }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { KanbanEventService } from './kanban-event.service';\r\nimport { KanbanComponent } from './kanban.component';\r\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\r\n\r\n@NgModule({\r\n    imports: [TemplateModule, KanbanComponent],\r\n    exports: [KanbanComponent, TemplateModule],\r\n    providers: [KanbanEventService],\r\n})\r\nexport class KanbanModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}