{"version":3,"file":"seniorsistemas-angular-components-picklist.mjs","sources":["../../projects/angular-components/picklist/src/lib/picklist/picklist.component.ts","../../projects/angular-components/picklist/src/lib/picklist/picklist.component.html","../../projects/angular-components/picklist/src/lib/picklist/picklist.module.ts","../../projects/angular-components/picklist/src/seniorsistemas-angular-components-picklist.ts"],"sourcesContent":["import { CdkDrag, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { AfterViewInit, ChangeDetectorRef, Component, ContentChildren, EventEmitter, Input, OnChanges, Output, QueryList, SimpleChanges, TemplateRef, inject } from '@angular/core';\nimport { pipe } from 'rxjs';\nimport { PickListItem } from './types';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\n\ninterface InternalPicklistItem<T = any> extends PickListItem<T> {\n    invisible?: boolean;\n    selected?: boolean;\n}\n\ntype CdkDragEvent = { source: CdkDrag<InternalPicklistItem<any>> };\n\n/**\n * @description Componente de lista de dupla seleção (picklist) com suporte a\n * arrastar e soltar, filtro, checkboxes e template customizável para cada item.\n * Emite eventos ao mover itens entre as listas.\n *\n * @example\n * ```html\n * <s-picklist\n *   [itensToSelect]=\"itensDisponiveis\"\n *   [selectedItens]=\"itensSelecionados\"\n *   (selectedItensChange)=\"onSelecaoMudou($event)\" />\n * ```\n *\n * @category Data\n */\n@Component({\n    selector: 's-picklist',\n    templateUrl: './picklist.component.html',\n    styleUrls: ['./picklist.component.scss'],\n})\nexport class PicklistComponent implements AfterViewInit, OnChanges {\n    private cdr = inject(ChangeDetectorRef);\n\n    /** @description Lista de itens disponíveis para seleção (coluna esquerda). @default [] */\n    @Input()\n    public itensToSelect: PickListItem<any>[] = [];\n\n    /** @description Lista de itens já selecionados (coluna direita). @default [] */\n    @Input()\n    public selectedItens: PickListItem<any>[] = [];\n\n    /** @description Rótulo do título da lista de disponíveis. */\n    @Input()\n    public availableItensLabel?: string;\n\n    /** @description Placeholder da busca na lista de disponíveis. */\n    @Input()\n    public availableItensPlaceholder?: string;\n\n    /** @description Rótulo do botão de adicionar itens selecionados. */\n    @Input()\n    public addSelectedItensLabel?: string;\n\n    /** @description Rótulo do botão de adicionar todos os itens. */\n    @Input()\n    public addAllItensLabel?: string;\n\n    /** @description Rótulo do título da lista de selecionados. */\n    @Input()\n    public selectedItensLabel?: string;\n\n    /** @description Placeholder da busca na lista de selecionados. */\n    @Input()\n    public selectedItensPlaceholder?: string;\n\n    /** @description Rótulo do botão de remover itens selecionados. */\n    @Input()\n    public removeSelectedItemsLabel?: string;\n\n    /** @description Rótulo do botão de remover todos os itens. */\n    @Input()\n    public removeAllItemsLabel?: string;\n\n    /** @description Exibe checkbox nos itens das listas. @default false */\n    @Input()\n    public showCheckbox = false;\n\n    /** @description Propriedade usada para filtrar os itens das listas. @default '' */\n    @Input()\n    public filterBy = '';\n\n    /** @description Emitido quando a lista de selecionados muda. */\n    @Output()\n    public selectedItensChange = new EventEmitter<any[]>();\n\n    /** @description Emitido quando a lista de disponíveis muda. */\n    @Output()\n    public itensToSelectChange = new EventEmitter<any[]>();\n\n    public availableItensFilter = '';\n\n    public selectedItensFilter = '';\n\n    public itemToSelectTemplate: TemplateRef<any> | null = null;\n\n    public itemSelectedTemplate: TemplateRef<any> | null = null;\n\n    public itensToSelectFilterUtil: {\n        rawItensToSelect: InternalPicklistItem[];\n        filteredItensToSelect: InternalPicklistItem[];\n    } = {\n        rawItensToSelect: [],\n        filteredItensToSelect: [],\n    };\n\n    selectedItensFilterUtil: {\n        rawSelectedItens: InternalPicklistItem[];\n        filteredSelectedItens: InternalPicklistItem[];\n    } = {\n        rawSelectedItens: [],\n        filteredSelectedItens: [],\n    };\n\n    public selectedItensMap: Set<InternalPicklistItem> = new Set();\n    public itensToSelectId = randomHash('itensToSelect');\n    public selectedItensId = randomHash('selectedItens');\n\n    private _logErrorTemplate = true;\n    @ContentChildren(TemplateDirective)\n    private templates: QueryList<TemplateDirective> | null = null;\n\n    ngAfterViewInit(): void {\n        this.itemToSelectTemplate = this.templates?.find((x) => x.type === 'item-to-select')?.template ?? null;\n        this.itemSelectedTemplate = this.templates?.find((x) => x.type === 'selected-item')?.template ?? null;\n        if (this._logErrorTemplate) {\n            if (!this.itemToSelectTemplate) {\n                console.error(`Missing template for 'item-to-select' add this template using sTemplate directive.`);\n            }\n            if (!this.itemSelectedTemplate) {\n                console.error(`Missing template for 'selected-item' add this template using sTemplate directive.`);\n            }\n        }\n        this.cdr.detectChanges();\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if (changes['itensToSelect']?.firstChange) {\n            this.itensToSelectFilterUtil = {\n                rawItensToSelect: this.itensToSelect,\n                filteredItensToSelect: this.itensToSelect,\n            };\n        }\n\n        if (changes['selectedItens']?.firstChange) {\n            this.selectedItensFilterUtil = {\n                filteredSelectedItens: this.selectedItens,\n                rawSelectedItens: this.selectedItens,\n            };\n        }\n    }\n\n    toggleSelected(internalPicklistItem: InternalPicklistItem, containerListId: string) {\n        if (internalPicklistItem.disabled) {\n            return;\n        }\n        this.unselectedItensByListId(this.getOppositiveId(containerListId));\n        internalPicklistItem.selected = !internalPicklistItem.selected;\n        if (internalPicklistItem.selected) {\n            this.selectedItensMap.add(internalPicklistItem);\n        } else {\n            this.selectedItensMap.delete(internalPicklistItem);\n        }\n        this.cdr.detectChanges();\n    }\n\n    remove(all = false) {\n        const itens = filterEnabled(all ? this.selectedItensFilterUtil.rawSelectedItens : this.selectedItensMap);\n        if (!itens.length) {\n            return;\n        }\n        itens.forEach((itemRemove) => {\n            this.itensToSelect.push(itemRemove);\n            itemRemove.selected = false;\n            this.selectedItensMap.delete(itemRemove);\n        });\n        this.selectedItens = this.selectedItens.filter((x) => !itens.includes(x));\n        this.selectedItensFilterUtil.rawSelectedItens = this.selectedItens;\n        this.filterSelectedItens();\n        this.filterItensToSelect();\n        this.emitData();\n        this.cdr.detectChanges();\n    }\n\n    add(all = false) {\n        const itens = filterEnabled(all ? this.itensToSelectFilterUtil.rawItensToSelect : this.selectedItensMap);\n        if (!itens.length) {\n            return;\n        }\n        itens.forEach((itemRemove) => {\n            this.selectedItens.push(itemRemove);\n            itemRemove.selected = false;\n            this.selectedItensMap.delete(itemRemove);\n        });\n        this.itensToSelect = this.itensToSelect.filter((x) => !itens.includes(x));\n        this.itensToSelectFilterUtil.rawItensToSelect = this.itensToSelect;\n        this.filterSelectedItens();\n        this.filterItensToSelect();\n        this.emitData();\n        this.cdr.detectChanges();\n    }\n\n    filterItensToSelect() {\n        let searchTerm = this.availableItensFilter;\n        searchTerm = searchTerm.trim();\n        if (searchTerm) {\n            this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect.filter(\n                (item) => compareStrings(item.data[this.filterBy], searchTerm),\n            );\n        } else {\n            this.itensToSelectFilterUtil.filteredItensToSelect = this.itensToSelectFilterUtil.rawItensToSelect;\n        }\n        this.cdr.detectChanges();\n    }\n\n    filterSelectedItens() {\n        let searchTerm = this.selectedItensFilter;\n        searchTerm = searchTerm.trim();\n        if (searchTerm) {\n            this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens.filter(\n                (item) => compareStrings(item.data[this.filterBy], searchTerm),\n            );\n        } else {\n            this.selectedItensFilterUtil.filteredSelectedItens = this.selectedItensFilterUtil.rawSelectedItens;\n        }\n    }\n\n    drop(event: CdkDragDrop<InternalPicklistItem[]>) {\n        const isDifferentContainer = event.container !== event.previousContainer;\n        if (!isDifferentContainer) {\n            return;\n        }\n\n        const isRemovedItens = event.previousContainer.id === this.selectedItensId;\n        if (isRemovedItens) {\n            this.remove();\n        } else {\n            this.add();\n        }\n        this.cdr.detectChanges();\n    }\n\n    onDragStart(event: CdkDragEvent, dragListId: string) {\n        this.unselectedItensByListId(this.getOppositiveId(dragListId));\n        event.source.data.selected = true;\n        this.selectedItensMap.add(event.source.data);\n        this.selectedItensMap.forEach((x) => (x.invisible = true));\n        this.cdr.detectChanges();\n    }\n\n    onDragRelease() {\n        this.selectedItensMap.forEach((item) => (item.invisible = false));\n    }\n\n    checkAllAvailableItensChange(target: HTMLInputElement) {\n        const checked = target.checked;\n        this._checkAllSelectedItensChange(\n            checked,\n            this.itensToSelectFilterUtil.filteredItensToSelect,\n            this.itensToSelectId,\n        );\n    }\n\n    checkAllSelectedItensChange(target: HTMLInputElement) {\n        const checked = target.checked;\n        this._checkAllSelectedItensChange(\n            checked,\n            this.selectedItensFilterUtil.filteredSelectedItens,\n            this.selectedItensId,\n        );\n    }\n\n    get disableSelectedItensCheckbox() {\n        return filterEnabled(this.selectedItensFilterUtil.filteredSelectedItens).length === 0;\n    }\n\n    get disableItensToSelectCheckbox() {\n        return filterEnabled(this.itensToSelectFilterUtil.filteredItensToSelect).length === 0;\n    }\n\n    get itensToSelectAllSelected() {\n        return this._checkAllSelectedByList(this.itensToSelectFilterUtil.filteredItensToSelect);\n    }\n\n    get selectedItensAllSelected() {\n        return this._checkAllSelectedByList(this.selectedItensFilterUtil.filteredSelectedItens);\n    }\n\n    get canAddItens() {\n        return (this.itensToSelect as InternalPicklistItem[]).filter((x) => x?.selected).length > 0;\n    }\n\n    get canRemoveItens() {\n        return (this.selectedItens as InternalPicklistItem[]).filter((x) => x?.selected).length > 0;\n    }\n\n    private _checkAllSelectedByList(list: InternalPicklistItem[]) {\n        const _listItens = filterEnabled(list);\n        if (!_listItens.length) {\n            return false;\n        } else {\n            return _listItens.every((x) => x.selected);\n        }\n    }\n\n    private _checkAllSelectedItensChange(checked: boolean, list: InternalPicklistItem[], listId: string) {\n        this.unselectedItensByListId(listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId);\n        filterEnabled(list).forEach((item) => {\n            item.selected = checked;\n            this.selectedItensMap.add(item);\n        });\n        this.cdr.detectChanges();\n    }\n\n    private unselectedItensByListId(listId: string) {\n        const clearList = this.getAllElementsByListId(listId);\n        clearList.forEach((x) => {\n            x.selected = false;\n            this.selectedItensMap.delete(x);\n        });\n        this.cdr.detectChanges();\n    }\n\n    private getAllElementsByListId(listId: string) {\n        return listId === this.selectedItensId\n            ? this.selectedItensFilterUtil.rawSelectedItens\n            : this.itensToSelectFilterUtil.rawItensToSelect;\n    }\n\n    private getOppositiveId(listId: string) {\n        return listId === this.selectedItensId ? this.itensToSelectId : this.selectedItensId;\n    }\n\n    private emitData() {\n        this.itensToSelectChange.emit(parseValueEmit(this.itensToSelect));\n        this.selectedItensChange.emit(parseValueEmit(this.selectedItens));\n    }\n}\n\nconst normalizeString = (str: string) => {\n    return str\n        .normalize('NFD')\n        .replace(/[\\u0300-\\u036f]/g, '')\n        .toLowerCase();\n};\n\n/**\n * Compares two strings by normalizing them to a case-insensitive and accent-free form,\n * and checks if the main string contains the substring.\n *\n * @param mainString - The string to be searched.\n * @param substring - The string to search for within the main string.\n * @returns A boolean indicating whether the normalized main string contains the normalized substring.\n */\n\nconst compareStrings = (mainString: string, substring: string) => {\n    return normalizeString(mainString).includes(normalizeString(substring));\n};\n\nconst filterEnabled = (list: PickListItem<any>[] | Set<InternalPicklistItem>): InternalPicklistItem[] => {\n    const _list = list instanceof Set ? Array.from(list) : list;\n    return _list.filter((x) => !x.disabled);\n};\n\nconst mapData = (list: PickListItem<any>[]) => {\n    return list.map((x) => x.data);\n};\n\nconst parseValueEmit = pipe(filterEnabled, mapData);\n\nexport const parseItensPickList = <T>(array: T[], disabledFn?: (item: T) => boolean): PickListItem<T>[] => {\n    return array.map((x) => {\n        return {\n            data: x,\n            disabled: disabledFn ? disabledFn(x) : false,\n        };\n    });\n};\n\n","<ng-template\n    #previewRender\n    let-itens=\"itens\"\n    let-template=\"template\"\n>\n    <section class=\"picklist-items\">\n        @for (item of itens; track $index) {\n            <ng-container *ngTemplateOutlet=\"template; context: { item: item.data }\"></ng-container>\n        }\n    </section>\n</ng-template>\n\n<ng-template\n    #picklistItensRender\n    let-id=\"id\"\n    let-itens=\"itens\"\n    let-template=\"template\"\n    let-listConnectedTo=\"listConnectedTo\"\n>\n    <div\n        class=\"picklist-items\"\n        cdkDropList\n        [id]=\"id\"\n        [cdkDropListSortingDisabled]=\"true\"\n        [cdkDropListData]=\"itens\"\n        [cdkDropListConnectedTo]=\"listConnectedTo\"\n        (cdkDropListDropped)=\"drop($event)\"\n    >\n        @for (item of itens; track $index) {\n            <div\n                cdkDrag\n                [cdkDragDisabled]=\"item.disabled\"\n                [cdkDragData]=\"item\"\n                (click)=\"toggleSelected(item, id)\"\n                (cdkDragStarted)=\"onDragStart($event, id)\"\n                (cdkDragReleased)=\"onDragRelease()\"\n                class=\"picklist-item\"\n                [class.picklist-disabled]=\"item.disabled\"\n                [class.picklist-item-invisible]=\"item.invisible\"\n                [class.picklist-item-active]=\"item.selected\"\n            >\n                @if (showCheckbox) {\n                    <input\n                        type=\"checkbox\"\n                        class=\"input-checkbox\"\n                        [(ngModel)]=\"item.selected\"\n                        [disabled]=\"item.disabled\"\n                    />\n                }\n                <div class=\"picklist-content\">\n                    <ng-container *ngTemplateOutlet=\"template; context: { item: item.data, selected: item.selected, disabled: item.disabled }\"></ng-container>\n                </div>\n                <ng-container *cdkDragPreview>\n                    <ng-container *ngTemplateOutlet=\"previewRender; context: { itens: selectedItensMap, template: template }\"></ng-container>\n                </ng-container>\n            </div>\n        }\n    </div>\n</ng-template>\n\n<ng-template\n    #checkboxTitleRender\n    let-disabled=\"disabled\"\n    let-checked=\"checked\"\n    let-changeFn=\"changeFn\"\n>\n    @if (showCheckbox) {\n        <input\n            class=\"input-checkbox\"\n            type=\"checkbox\"\n            [disabled]=\"disabled\"\n            [checked]=\"checked\"\n            (change)=\"changeFn($event.target)\"\n        />\n    }\n</ng-template>\n\n<div class=\"picklist-container\">\n    <div class=\"picklist-item-container\">\n        <div class=\"picklist-box\">\n            <div class=\"picklist-title-container\">\n                @if (!filterBy) {\n                    <ng-container\n                        *ngTemplateOutlet=\"\n                            checkboxTitleRender;\n                            context: {\n                                disabled: disableItensToSelectCheckbox,\n                                checked: itensToSelectAllSelected,\n                                changeFn: checkAllAvailableItensChange.bind(this),\n                            }\n                        \"\n                    ></ng-container>\n                }\n                <span class=\"picklist-title\">\n                    {{ availableItensLabel || 'platform.angular_components.available-items' | translate }}\n                </span>\n            </div>\n            @if (filterBy && showCheckbox) {\n                <div class=\"picklist-filter\">\n                    <ng-container\n                        *ngTemplateOutlet=\"\n                            checkboxTitleRender;\n                            context: {\n                                disabled: disableItensToSelectCheckbox,\n                                checked: itensToSelectAllSelected,\n                                changeFn: checkAllAvailableItensChange.bind(this),\n                            }\n                        \"\n                    ></ng-container>\n                    @if (filterBy) {\n                        <input\n                            type=\"text\"\n                            class=\"input-search\"\n                            [(ngModel)]=\"availableItensFilter\"\n                            (ngModelChange)=\"filterItensToSelect()\"\n                            [placeholder]=\"availableItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n                        />\n                    }\n                </div>\n            }\n\n            <ng-container\n                *ngTemplateOutlet=\"\n                    picklistItensRender;\n                    context: {\n                        id: itensToSelectId,\n                        itens: itensToSelectFilterUtil.filteredItensToSelect,\n                        template: itemToSelectTemplate,\n                        listConnectedTo: selectedItensId,\n                    }\n                \"\n            >\n            </ng-container>\n        </div>\n        <div class=\"buttons-container\">\n            <s-button\n                [label]=\"addSelectedItensLabel || 'platform.angular_components.add' | translate\"\n                priority=\"primary\"\n                rightIconClass=\"fa fa-fw fa-arrow-right\"\n                [disabled]=\"!canAddItens\"\n                (clicked)=\"add()\"\n                [auxiliary]=\"false\"\n                [caret]=\"false\"\n            >\n            </s-button>\n            <s-button\n                [label]=\"addAllItensLabel || 'platform.angular_components.add_all' | translate\"\n                priority=\"link\"\n                (clicked)=\"add(true)\"\n                [auxiliary]=\"false\"\n            >\n            </s-button>\n        </div>\n    </div>\n    <div class=\"picklist-item-container\">\n        <div class=\"picklist-box\">\n            <div class=\"picklist-title-container\">\n                @if (!filterBy) {\n                    <ng-container>\n                        <ng-container\n                            *ngTemplateOutlet=\"\n                                checkboxTitleRender;\n                                context: {\n                                    disabled: disableSelectedItensCheckbox,\n                                    checked: selectedItensAllSelected,\n                                    changeFn: checkAllSelectedItensChange.bind(this),\n                                }\n                            \"\n                        ></ng-container>\n                    </ng-container>\n                }\n                <span class=\"picklist-title\">\n                    {{ selectedItensLabel || 'platform.angular_components.selected-items' | translate }}\n                </span>\n            </div>\n            <div\n                class=\"picklist-filter\"\n                *ngIf=\"filterBy && showCheckbox\"\n            >\n                <ng-container\n                    *ngTemplateOutlet=\"\n                        checkboxTitleRender;\n                        context: { disabled: disableSelectedItensCheckbox, checked: selectedItensAllSelected, changeFn: checkAllSelectedItensChange.bind(this) }\n                    \"\n                ></ng-container>\n                @if (filterBy) {\n                    <input\n                        type=\"text\"\n                        class=\"input-search\"\n                        [(ngModel)]=\"selectedItensFilter\"\n                        (ngModelChange)=\"filterSelectedItens()\"\n                        [placeholder]=\"selectedItensPlaceholder || 'platform.angular_components.picklist-placeholder' | translate\"\n                    />\n                }\n            </div>\n            <ng-container\n                *ngTemplateOutlet=\"\n                    picklistItensRender;\n                    context: {\n                        id: selectedItensId,\n                        itens: selectedItensFilterUtil.filteredSelectedItens,\n                        template: itemSelectedTemplate,\n                        listConnectedTo: itensToSelectId,\n                    }\n                \"\n            >\n            </ng-container>\n        </div>\n        <div class=\"buttons-container\">\n            <s-button\n                [label]=\"removeSelectedItemsLabel || 'platform.angular_components.remove' | translate\"\n                priority=\"primary\"\n                iconClass=\"fa fa-fw fa-arrow-left\"\n                [disabled]=\"!canRemoveItens\"\n                [auxiliary]=\"false\"\n                (clicked)=\"remove()\"\n                [caret]=\"false\"\n            >\n            </s-button>\n            <s-button\n                [label]=\"removeAllItemsLabel || 'platform.angular_components.remove_all' | translate\"\n                priority=\"link\"\n                (clicked)=\"remove(true)\"\n                [auxiliary]=\"false\"\n            >\n            </s-button>\n        </div>\n    </div>\n</div>\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TranslateModule } from '@ngx-translate/core';\n\nimport { PicklistComponent } from './picklist.component';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n\n@NgModule({\n  declarations: [PicklistComponent],\n  imports: [\n    CommonModule,\n    TranslateModule,\n    DragDropModule,\n    FormsModule,\n    ButtonModule,\n  ],\n  exports: [PicklistComponent]\n})\nexport class PicklistModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}