{"version":3,"file":"seniorsistemas-angular-components-tree.mjs","sources":["../../projects/angular-components/tree/src/lib/tree/components/tree-node-item/tree-node-item.component.ts","../../projects/angular-components/tree/src/lib/tree/components/tree-node-item/tree-node-item.component.html","../../projects/angular-components/tree/src/lib/tree/tree.component.ts","../../projects/angular-components/tree/src/lib/tree/tree.component.html","../../projects/angular-components/tree/src/lib/tree/tree.module.ts","../../projects/angular-components/tree/src/seniorsistemas-angular-components-tree.ts"],"sourcesContent":["import { animate, query, stagger, style, transition, trigger } from '@angular/animations';\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, input, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { TranslateService } from '@ngx-translate/core';\nimport { InternalTreeNodeItem, TreeNodeEdit } from '../../Models/tree.models';\n\n@Component({\n    selector: 's-tree-node-item',\n    templateUrl: './tree-node-item.component.html',\n    styleUrls: ['./tree-node-item.component.scss'],\n    animations: [\n        trigger('fadeExpand', [\n            transition(':enter', [\n                style({ height: '0px', opacity: 0, overflow: 'hidden' }),\n                animate('200ms ease-out', style({ height: '*', opacity: 1 })),\n            ]),\n            transition(':leave', [animate('150ms ease-in', style({ height: '0px', opacity: 0 }))]),\n        ]),\n        trigger('childrenAnimation', [\n            transition(':enter', [\n                query(\n                    ':enter',\n                    [\n                        style({ opacity: 0, transform: 'translateY(-10px)' }),\n                        stagger(60, [animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' }))]),\n                    ],\n                    { optional: true },\n                ),\n            ]),\n        ]),\n    ],\n})\nexport class TreeNodeItemComponent {\n    private readonly cdr = inject(ChangeDetectorRef);\n    private readonly translateService = inject(TranslateService);\n\n    readonly ariaLevel = input(0);\n    readonly showCheckbox = input(false);\n    @Input() treeNodeItem!: InternalTreeNodeItem;\n    @Output() treeNodeItemClicked = new EventEmitter<{ item: InternalTreeNodeItem; event: Event }>();\n    @Output() treeNodeEdit = new EventEmitter<TreeNodeEdit>();\n    @Output() nodeExpanded = new EventEmitter<InternalTreeNodeItem>();\n    @Output() nodeCollapsed = new EventEmitter<InternalTreeNodeItem>();\n\n    @ViewChild('input', { read: ElementRef }) input!: ElementRef<HTMLInputElement>;\n\n    get hasChildren(): boolean {\n        return !!(this.treeNodeItem?.children && this.treeNodeItem.children.length > 0);\n    }\n\n    get editable() {\n        return this.treeNodeItem?.editable || false;\n    }\n\n    get ariaLabel() {\n        return `${this.translateService.instant('platform.angular_components.select')} ${this.treeNodeItem.label}`;\n    }\n\n    expandNode() {\n        if (this.hasChildren && !this.treeNodeItem.isExpanded) {\n            this.toggleExpanded(this.treeNodeItem);\n        }\n    }\n\n    collapseNode() {\n        if (this.hasChildren && this.treeNodeItem.isExpanded) {\n            this.toggleExpanded(this.treeNodeItem);\n        }\n    }\n\n    onCheckboxEnter(node: InternalTreeNodeItem) {\n        const newState = node.checked === true ? false : true;\n        node.checked = newState;\n        this.treeNodeItemClicked.emit({ item: node, event: new KeyboardEvent('keydown', { key: 'Enter' }) });\n    }\n\n    handleTreeNodeItemClick(event: Event, treeNodeItem?: InternalTreeNodeItem) {\n        const item = treeNodeItem || this.treeNodeItem;\n        this.treeNodeItemClicked.emit({ item, event });\n    }\n\n    handleTreeNodeItemClicked({ event, item }: { event: Event; item: InternalTreeNodeItem }) {\n        if (item.isEditing) {\n            return;\n        }\n        this.handleTreeNodeItemClick(event, item);\n    }\n\n    toggleExpanded(treeNodeItem: InternalTreeNodeItem) {\n        treeNodeItem.isExpanded = !treeNodeItem.isExpanded;\n        if (treeNodeItem.isExpanded) {\n            this.nodeExpanded.emit(treeNodeItem);\n        } else {\n            this.nodeCollapsed.emit(treeNodeItem);\n        }\n    }\n\n    toggleEditing($event: Event) {\n        $event.stopPropagation();\n        this.treeNodeItem.isEditing = !this.treeNodeItem.isEditing;\n        this.cdr.detectChanges();\n        if (this.treeNodeItem.isEditing) {\n            this.treeNodeItem.editNewValue = this.treeNodeItem.label;\n            const input = this.input?.nativeElement;\n            input?.focus();\n        }\n    }\n\n    cancelEdit($event: Event) {\n        $event.stopPropagation();\n        this.treeNodeItem.isEditing = false;\n        this.treeNodeItem.editNewValue = '';\n        this.treeNodeItem.editPreviousValue = '';\n        this.cdr.detectChanges();\n    }\n\n    saveEdit($event: Event) {\n        $event.stopPropagation();\n        this.treeNodeItem.isEditing = false;\n        if (!this.treeNodeItem.editNewValue) {\n            return;\n        }\n\n        this.treeNodeItem.editPreviousValue = this.treeNodeItem.label;\n        this.treeNodeItem.label = this.treeNodeItem.editNewValue;\n\n        const revertAction = () => {\n            this.treeNodeItem.label = this.treeNodeItem.editPreviousValue as string;\n            this.treeNodeItem.isEditing = false;\n            this.cdr.detectChanges();\n        };\n        this.treeNodeEdit.emit({\n            revertAction,\n            item: this.treeNodeItem,\n            newValue: this.treeNodeItem.editNewValue,\n            previousValue: this.treeNodeItem.editPreviousValue,\n        });\n    }\n\n    treeNodeEditChildEvent(payload: TreeNodeEdit) {\n        this.treeNodeEdit.emit(payload);\n    }\n}\n","@if (treeNodeItem) {\n    <div\n        class=\"tree-node-item\"\n        role=\"treeitem\"\n        [class.tree-node-item-selected]=\"treeNodeItem.checked\"\n        [class.selectable]=\"hasChildren\"\n        [attr.aria-expanded]=\"hasChildren ? treeNodeItem.isExpanded : null\"\n        [attr.aria-selected]=\"treeNodeItem.checked === true\"\n        [attr.aria-label]=\"treeNodeItem.label\"\n        [attr.aria-level]=\"ariaLevel()\"\n        tabindex=\"0\"\n        (keydown.enter)=\"handleTreeNodeItemClick($event)\"\n        (keydown.arrowRight)=\"expandNode()\"\n        (keydown.arrowLeft)=\"collapseNode()\"\n    >\n        @if (hasChildren || treeNodeItem.leaf === true) {\n            <div\n                class=\"arrow\"\n                (click)=\"toggleExpanded(treeNodeItem)\"\n            >\n                @if (!treeNodeItem.isExpanded) {\n                    <i [class]=\"treeNodeItem.collapsedIcon || 'fas fa-chevron-right'\"></i>\n                }\n                @if (treeNodeItem.isExpanded) {\n                    <i [class]=\"treeNodeItem.expandedIcon || 'fas fa-chevron-down'\"></i>\n                }\n            </div>\n        }\n\n        <div\n            class=\"tree-node-item-text\"\n            (click)=\"handleTreeNodeItemClick($event)\"\n        >\n            @if (treeNodeItem.icon || treeNodeItem.isEditing) {\n                <span class=\"tree-node-item-text-icon\">\n                    @if (treeNodeItem.icon && !treeNodeItem.isEditing) {\n                        <i [class]=\"treeNodeItem.icon\"></i>\n                    }\n                    @if (treeNodeItem.isEditing) {\n                        <i\n                            class=\"fas fa-edit edit\"\n                            (click)=\"saveEdit($event)\"\n                        ></i>\n                    }\n                </span>\n            }\n\n            @if (showCheckbox() && !treeNodeItem.isEditing) {\n                <span class=\"tree-node-item-text-checkbox\">\n                    <input\n                        type=\"checkbox\"\n                        [checked]=\"treeNodeItem.checked === true\"\n                        [indeterminate]=\"treeNodeItem.checked === null\"\n                        [attr.aria-checked]=\"treeNodeItem.checked === null ? 'mixed' : treeNodeItem.checked\"\n                        [attr.aria-label]=\"ariaLabel\"\n                        role=\"checkbox\"\n                        tabindex=\"0\"\n                        (keydown.enter)=\"onCheckboxEnter(treeNodeItem)\"\n                    />\n                </span>\n            }\n\n            <span class=\"tree-node-item-text-label\">\n                @if (treeNodeItem.isEditing) {\n                    <input\n                        #input\n                        type=\"text\"\n                        pInputText\n                        class=\"tree-node-item-text-input\"\n                        [(ngModel)]=\"treeNodeItem.editNewValue\"\n                        (keydown.enter)=\"saveEdit($event)\"\n                        (keydown.escape)=\"cancelEdit($event)\"\n                        (click)=\"$event.stopPropagation()\"\n                        aria-label=\"Editar nome do item\"\n                        aria-live=\"polite\"\n                    />\n                } @else if (!treeNodeItem.isEditing) {\n                    {{ treeNodeItem.label }}\n                }\n            </span>\n\n            @if (editable) {\n                <span class=\"tree-node-item-text-editable\">\n                    <i\n                        class=\"fas fa-pencil-alt\"\n                        (click)=\"toggleEditing($event)\"\n                        aria-label=\"Editar item\"\n                        tabindex=\"0\"\n                    ></i>\n                </span>\n            }\n        </div>\n    </div>\n}\n\n@if (hasChildren && treeNodeItem.isExpanded) {\n    <div\n        @fadeExpand\n        class=\"child\"\n        role=\"group\"\n        @childrenAnimation\n    >\n        @for (child of treeNodeItem.children; track $index) {\n            <s-tree-node-item\n                [showCheckbox]=\"showCheckbox()\"\n                [treeNodeItem]=\"child\"\n                [ariaLevel]=\"ariaLevel() + 1\"\n                (treeNodeItemClicked)=\"handleTreeNodeItemClicked($event)\"\n                (treeNodeEdit)=\"treeNodeEditChildEvent($event)\"\n                (nodeExpanded)=\"nodeExpanded.emit($event)\"\n                (nodeCollapsed)=\"nodeCollapsed.emit($event)\"\n                class=\"child-item\"\n            />\n        }\n    </div>\n}\n\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { InternalTreeNodeItem, TreeNodeEdit, TreeNodeItem } from './Models/tree.models';\n\n/**\n * @description Componente de árvore hierárquica com suporte a seleção única ou múltipla,\n * checkboxes, noós expansíveis e edição inline de rótulos. Gerencia o estado interno\n * dos nós e emite eventos na seleção, expansão, colapso e edição.\n *\n * @example\n * ```html\n * <s-tree\n *   [treeData]=\"nos\"\n *   selectionMode=\"multiple\"\n *   [showCheckbox]=\"true\"\n *   (selectedChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n    selector: 's-tree',\n    templateUrl: './tree.component.html',\n    styleUrls: ['./tree.component.scss'],\n})\nexport class TreeComponent implements OnChanges {\n    /** @description Lista de nós raíz da árvore. @default [] */\n    @Input()\n    public treeData: TreeNodeItem[] = [];\n\n    private _selected: TreeNodeItem[] = [];\n    /** @description Nó(s) selecionado(s). Suporta array ou item único dependendo de `selectionMode`. @default [] */\n    @Input()\n    public get selected(): TreeNodeItem[] {\n        return this._selected;\n    }\n    public set selected(value: TreeNodeItem[] | TreeNodeItem | undefined) {\n        if (!value) {\n            value = [];\n        }\n        if (!Array.isArray(value)) {\n            value = [value];\n        }\n        this._selected = value;\n    }\n\n    /** @description Exibe indicador de carregamento nos nós. @default false */\n    @Input()\n    public loading = false;\n\n    /** @description Modo de seleção: `'single'` ou `'multiple'`. @default 'single' */\n    @Input()\n    public selectionMode: 'single' | 'multiple' = 'single';\n\n    /** @description Exibe checkboxes nos nós para seleção visual. @default false */\n    @Input()\n    public showCheckbox = false;\n\n    /** @description Expão todos os nós inicialmente. @default false */\n    @Input()\n    public allExpanded = false;\n\n    /** @description Emitido quando a seleção muda, com o(s) nó(s) selecionado(s). */\n    @Output()\n    public selectedChange: EventEmitter<TreeNodeItem[] | TreeNodeItem> = new EventEmitter();\n\n    /** @description Emitido quando o usuário clica em um nó da árvore. */\n    @Output()\n    public treeNodeItemClicked: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n    /** @description Emitido após uma edição inline de rótulo de nó. */\n    @Output()\n    public treeNodeEdit: EventEmitter<TreeNodeEdit> = new EventEmitter();\n\n    /** @description Emitido quando um nó é expandido pelo usuário. */\n    @Output()\n    public nodeExpanded: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n    /** @description Emitido quando um nó é colapsado pelo usuário. */\n    @Output()\n    public nodeCollapsed: EventEmitter<TreeNodeItem> = new EventEmitter();\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        this.onChanges(changes);\n    }\n\n    public onTreeNodeItemClicked({ item }: { item: InternalTreeNodeItem }) {\n        this.treeNodeItemClicked.emit(parseInternalTreeNodeItem(item));\n        this.toggleChecked(item);\n    }\n\n    public onTreeNodeEdit(payload: TreeNodeEdit) {\n        const { revertAction, item, newValue, previousValue } = payload;\n        this.treeNodeEdit.emit({\n            revertAction,\n            item: parseInternalTreeNodeItem(item),\n            newValue,\n            previousValue,\n        });\n    }\n\n    public onNodeExpanded(item: InternalTreeNodeItem) {\n        this.nodeExpanded.emit(parseInternalTreeNodeItem(item));\n    }\n\n    public onNodeCollapsed(item: InternalTreeNodeItem) {\n        this.nodeCollapsed.emit(parseInternalTreeNodeItem(item));\n    }\n\n    private toggleChecked(treeNodeItem: TreeNodeItem) {\n        const elementCheckState = !treeNodeItem.checked;\n        if (!this.multiple) {\n            flattenTree(this.treeData).forEach((x) => (x.checked = false));\n            this.selected = [treeNodeItem];\n        }\n        treeNodeItem.checked = elementCheckState;\n        if (this.multiple) {\n            this.checkTreeDataChildren(treeNodeItem);\n        }\n        this.setSelected();\n    }\n\n    private checkTreeDataChildren(selectedTreeNode: TreeNodeItem) {\n        const parentChecked = selectedTreeNode.checked;\n        if (selectedTreeNode.children) {\n            selectedTreeNode.children.forEach((item) => {\n                const childrens = flattenTree(item.children || []);\n                item.checked = parentChecked;\n                childrens.forEach((child) => (child.checked = parentChecked));\n            });\n        }\n\n        const getNodeChildrenSummary = (node: TreeNodeItem) => {\n            const children = node.children ?? [];\n            const allChildrenChecked = children.every((y) => y.checked === true);\n            const someChildrenChecked = children.some((y) => y.checked === true || y.checked === null);\n            const allChildrenUnchecked = children.every((y) => y.checked === false || y.checked === undefined);\n            return { allChildrenChecked, someChildrenChecked, allChildrenUnchecked };\n        };\n        const updateCheckedStateRecursively = (node: TreeNodeItem): void => {\n            if (!node.children?.length) return;\n\n            node.children.forEach(updateCheckedStateRecursively);\n\n            const { allChildrenChecked, someChildrenChecked, allChildrenUnchecked } = getNodeChildrenSummary(node);\n            if (allChildrenChecked) {\n                node.checked = true;\n            } else if (someChildrenChecked) {\n                node.checked = null;\n            } else if (allChildrenUnchecked) {\n                node.checked = false;\n            }\n        };\n        this.treeData.forEach(updateCheckedStateRecursively);\n    }\n\n    private setSelected() {\n        const selected = this.selectedElements;\n        this.selected = [...selected];\n        this.selectedChange.emit(selected);\n    }\n\n    private onChanges(changes: SimpleChanges) {\n        const allExpandedChanges = changes['allExpanded'];\n        const _checkIsFirstChangeWithValue = (value: Extract<keyof TreeComponent, 'selected' | 'treeData'>) => {\n            if (!changes[value]) {\n                return;\n            }\n            return (\n                (!changes[value].previousValue || changes[value].previousValue.length === 0) &&\n                changes[value].currentValue?.length > 0\n            );\n        };\n\n        if (_checkIsFirstChangeWithValue('selected')) {\n            this.syncSelectedChanges();\n        }\n\n        if (_checkIsFirstChangeWithValue('treeData')) {\n            const isAllExpanded = this.allExpanded;\n            if (isAllExpanded) {\n                this.expandAll();\n            }\n        }\n\n        if (allExpandedChanges) {\n            if (this.allExpanded) {\n                this.expandAll();\n            } else {\n                this.collapseAll();\n            }\n        }\n    }\n\n    private syncSelectedChanges() {\n        const treeFlatten = flattenTree(this.treeData);\n        this.selected.forEach((selectedItem) => {\n            const item = treeFlatten.find((item) => item.id === selectedItem.id);\n            if (item) {\n                item.checked = true;\n            }\n            if (item && item.children && this.multiple) {\n                item.children.forEach((child) => {\n                    child.checked = true;\n                    const existChildInSelectedList = this.selected.some((item) => item.id === child.id);\n                    if (!existChildInSelectedList) {\n                        this.selected.push(child);\n                    }\n                });\n            }\n        });\n        const selectedElements = this.selectedElements;\n        const selectedElementsNotInSelectedList = selectedElements.filter(\n            (x) => !this.selected.some((y) => y.id === x.id),\n        );\n        selectedElementsNotInSelectedList.forEach((item) => {\n            this.checkTreeDataChildren(item);\n        });\n        this.setSelected();\n    }\n\n    private collapseAll() {\n        const flatten = flattenTree(this.treeData);\n        flatten.forEach((item) => {\n            item.isExpanded = false;\n        });\n    }\n\n    private expandAll() {\n        const flatten = flattenTree(this.treeData);\n        flatten.forEach((item) => {\n            item.isExpanded = true;\n        });\n    }\n\n    private get selectedElements() {\n        return flattenTree(this.treeData)\n            .filter((x) => x.checked)\n            .filter((x) => x.leaf !== true && !x.children?.length);\n    }\n\n    private get multiple() {\n        return this.selectionMode === 'multiple';\n    }\n}\n\nconst flattenTree = <T = any>(tree: TreeNodeItem<T>[]): TreeNodeItem<T>[] => {\n    const result: TreeNodeItem<T>[] = [];\n\n    function traverse(nodes: TreeNodeItem<T>[]) {\n        for (const node of nodes) {\n            result.push(node);\n            if (node.children && node.children.length) {\n                traverse(node.children);\n            }\n        }\n    }\n\n    traverse(tree);\n    return result;\n};\n\nconst parseInternalTreeNodeItem = <T = any>(internalTreeNodeItem: InternalTreeNodeItem<T>): TreeNodeItem<T> => {\n    const { id, label, icon, checked, isExpanded, payload, editable, children } = internalTreeNodeItem;\n    const object = {\n        id,\n        label,\n        icon,\n        checked,\n        isExpanded,\n        payload,\n        editable,\n        _children: children?.map(parseInternalTreeNodeItem),\n        get children() {\n            return this._children;\n        },\n        set children(value) {\n            this._children = value;\n            internalTreeNodeItem.children = value;\n        },\n    };\n    Object.defineProperty(object, '_children', {\n        enumerable: false,\n    });\n    return object as TreeNodeItem<T>;\n};\n\n","<div class=\"tree\" *sLoadingState=\"loading\">\n    @for(item of treeData; track $index) {\n        <s-tree-node-item\n            [showCheckbox]=\"showCheckbox\"\n            [treeNodeItem]=\"item\"\n            (nodeExpanded)=\"onNodeExpanded($event)\"\n            (nodeCollapsed)=\"onNodeCollapsed($event)\"\n            (treeNodeEdit)=\"onTreeNodeEdit($event)\"\n            (treeNodeItemClicked)=\"onTreeNodeItemClicked($event)\">\n        </s-tree-node-item>\n\n    }\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { TreeComponent } from './tree.component';\nimport { TreeNodeItemComponent } from './components/tree-node-item/tree-node-item.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\nimport { FormsModule } from '@angular/forms';\nimport { InputTextModule } from 'primeng/inputtext';\n\n@NgModule({\n    declarations: [TreeComponent, TreeNodeItemComponent],\n    imports: [FormsModule, InputTextModule, LoadingStateModule, TranslateModule],\n    exports: [TreeComponent],\n})\nexport class TreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TreeNodeItemComponent"],"mappings":"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"}