{"version":3,"file":"kif-lib-toolbar.mjs","sources":["../../../projects/kif-lib/toolbar/enum/action-type.enum.ts","../../../projects/kif-lib/toolbar/enum/button-style.enum.ts","../../../projects/kif-lib/toolbar/components/toolbar-action/toolbar-action.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-action/toolbar-action.component.html","../../../projects/kif-lib/toolbar/enum/filter-type.enum.ts","../../../projects/kif-lib/toolbar/enum/button-icon.enum.ts","../../../projects/kif-lib/toolbar/enum/input-type.enum.ts","../../../projects/kif-lib/toolbar/enum/validator-error-key.enum.ts","../../../projects/kif-lib/toolbar/enum/toolbar-filter-action.enum.ts","../../../projects/kif-lib/toolbar/class/filter-base.ts","../../../projects/kif-lib/toolbar/class/filter-autocomplete.ts","../../../projects/kif-lib/toolbar/class/filter-button.ts","../../../projects/kif-lib/toolbar/class/filter-date.ts","../../../projects/kif-lib/toolbar/class/filter-input.ts","../../../projects/kif-lib/toolbar/class/filter-select.ts","../../../projects/kif-lib/toolbar/class/action-base.ts","../../../projects/kif-lib/toolbar/class/action-button.ts","../../../projects/kif-lib/toolbar/class/action-icon.ts","../../../projects/kif-lib/toolbar/class/filter-select-state.ts","../../../projects/kif-lib/toolbar/common/utils.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter-autocomplete/toolbar-filter-autocomplete.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter-autocomplete/toolbar-filter-autocomplete.component.html","../../../projects/kif-lib/toolbar/components/toolbar-filter-select/toolbar-filter-select.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter-select/toolbar-filter-select.component.html","../../../projects/kif-lib/toolbar/components/toolbar-filter-input/toolbar-filter-input.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter-input/toolbar-filter-input.component.html","../../../projects/kif-lib/toolbar/components/toolbar-filter-date/toolbar-filter-date.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter-date/toolbar-filter-date.component.html","../../../projects/kif-lib/toolbar/components/toolbar-filter-sidebar/toolbar-filter-sidebar.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter-sidebar/toolbar-filter-sidebar.component.html","../../../projects/kif-lib/toolbar/components/kit-toolbar-filter-select-state/kit-toolbar-filter-select-state.component.ts","../../../projects/kif-lib/toolbar/components/kit-toolbar-filter-select-state/kit-toolbar-filter-select-state.component.html","../../../projects/kif-lib/toolbar/components/toolbar-filter/toolbar-filter.component.ts","../../../projects/kif-lib/toolbar/components/toolbar-filter/toolbar-filter.component.html","../../../projects/kif-lib/toolbar/toolbar.component.ts","../../../projects/kif-lib/toolbar/toolbar.component.html","../../../projects/kif-lib/toolbar/toolbar.module.ts","../../../projects/kif-lib/toolbar/common/custom-validators.ts","../../../projects/kif-lib/toolbar/public-api.ts","../../../projects/kif-lib/toolbar/kif-lib-toolbar.ts"],"sourcesContent":["export enum ACTION_TYPE {\n    BUTTON,\n    ICON\n}\n","export enum BUTTON_STYLE {\n    RAISED = 'raised',\n    STROKED = 'stroked',\n    FLAT = 'flat',\n    ICON = 'icon',\n    FAB = 'fab',\n    MINI_FAB = 'mini_fab'\n}\n  ","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BUTTON_STYLE } from '../../enum/button-style.enum';\nimport { Action } from '../../interface/action.interface';\n\n@Component({\n    selector: 'kit-toolbar-action',\n    templateUrl: './toolbar-action.component.html',\n})\nexport class ToolbarActionComponent {\n    // identifier of this element\n    @Input() public action!: Action;\n\n    // output to notify changes\n    @Output() public toolbarAction: EventEmitter<string> = new EventEmitter();\n\n    public BUTTON_STYLE = BUTTON_STYLE;\n\n    constructor() {}\n\n    public onAction() {\n        this.toolbarAction.emit(this.action.id);\n    }\n}\n","<div class=\"action-field\">\n\n    @switch (action.style) { \n  \n        @default {\n          <button\n            type=\"button\"\n            mat-raised-button\n            [color]=\"action.color ? action.color : ''\"\n            [disabled]=\"action.disable\"\n            [ngClass]=\"action.class\"\n            (click)=\"onAction()\"\n          >            \n            <mat-label>\n              <span class=\"m-0 p-0\">{{ action.description }}</span>\n              @if(action.icon){\n                <lucide-angular \n                    [img]=\"action.icon.iconSvg\" \n                    [size]=\"action.icon.size ? action.icon.size : '16'\" \n                    [color]=\"action.icon.color ? action.icon.color : '#5B62DA'\" \n                    [class]=\"action.icon.class ? action.icon.class : '' \" >\n                </lucide-angular>\n              }\n            </mat-label>\n        </button>\n        } \n    }\n    \n  </div>\n  ","export enum FILTER_TYPE{\n    BASE= \"base\",\n    INPUT = \"input\",\n    SELECT = \"select\",\n    AUTOCOMPLETE = \"autocomplete\",\n    DATE = \"datepicker\",\n    BUTTON = \"button\",\n    SELECT_STATE = \"select_state\"\n}\n\n\n","export enum BUTTON_ICON {\n    ADD = 'add-icon',\n    FILTER = 'filter-icon',\n}\n","export enum INPUT_TYPE {\n    SEARCH='search',\n    BUTTON='button',\n    DATE='date',\n    LABEL='label',\n    FILTER_BUTTON='filterButton',\n    TEXT = \"text\",\n    SELECT = \"select\",\n}\n\n\n","export enum VALIDATOR_ERROR_KEY {\n    REQUIRED = 'required',\n    MINLENGTH = 'minlength',\n    MAXLENGTH = 'maxlength',\n    PATTERN = 'pattern',\n    MIN = 'min',\n    MAX = 'max',\n    EMAIL = 'email',\n}","export enum TOOLBAR_FILTER_ACTION{\n    SEARCH= \"search\",\n    CLEAR= \"clear\",\n}\n\n\n","import { ValidatorFn } from \"@angular/forms\";\nimport { OptionSelect } from \"../interface/option-select.interface\";\nimport { INPUT_TYPE } from \"../enum/input-type.enum\";\nimport { Mask } from \"../interface/mask.interface\";\nimport { ErrorValidator } from \"../interface/error-validator.interface\";\nimport { Filter } from \"../interface/filter.interface\";\nimport { FILTER_TYPE } from \"../enum/filter-type.enum\";\nimport { LucideIcon } from \"../interface\";\n\nexport abstract class FilterBase implements Filter{\n    id!:string;\n    main?: boolean;\n    hide?: boolean;\n    disabled?: boolean;\n    required?: boolean;   \n    values?: OptionSelect[];\n    validators?:ValidatorFn[];\n    placeholder?:string;  \n    minLength?: number;\n    maxLength?: number;    \n    minDate?: string \n    maxDate?: string \n    label?: string;\n    pattern?: RegExp;    \n    mask?: Mask;    \n    inputType?: INPUT_TYPE;\n    errors?:ErrorValidator[];\n    description?: string;\n    group?: number;\n    disable?: boolean;\n    defaultValue?: string | string[];\n    errorDescriptions?: string[];\n    customErrorMessage?:string;\n    value?: string | string[] | number | OptionSelect;\n    lucideIcon?: LucideIcon;\n    abstract type: FILTER_TYPE;\n}","import { FILTER_TYPE } from \"../enum/filter-type.enum\";\nimport { Autocomplete } from \"../interface/autocomplete.interface\";\nimport { FilterBase } from \"./filter-base\";\n\nexport class FilterAutocomplete extends FilterBase implements Autocomplete {\n    type: FILTER_TYPE = FILTER_TYPE.AUTOCOMPLETE;\n    autocompleteSelected?:boolean = true\n}","import { BUTTON_ICON } from '../enum/button-icon.enum';\nimport { FILTER_TYPE } from '../enum/filter-type.enum';\nimport { FilterBase } from './filter-base';\n\nexport class FilterButton extends FilterBase {\n    type: FILTER_TYPE = FILTER_TYPE.BUTTON;\n    style!: string;\n    icon!: BUTTON_ICON;\n    color?: string;\n}\n","import { FILTER_TYPE } from \"../enum/filter-type.enum\";\nimport { FilterBase } from \"./filter-base\";\n\nexport class FilterDate extends FilterBase {\n    type:  FILTER_TYPE = FILTER_TYPE.DATE;\n}","import { FILTER_TYPE } from \"../enum/filter-type.enum\";\nimport { FilterBase } from \"./filter-base\";\n\nexport class FilterInput extends FilterBase {\n    type:  FILTER_TYPE = FILTER_TYPE.INPUT;\n}","import { FILTER_TYPE } from \"../enum/filter-type.enum\";\nimport { FilterBase } from \"./filter-base\";\n\nexport class FilterSelect extends FilterBase {\n    type:  FILTER_TYPE = FILTER_TYPE.SELECT;\n    multiple?:boolean = false;\n}","import { ACTION_TYPE } from '../enum/action-type.enum';\nimport { Action, LucideIcon } from '../interface';\n\nexport abstract class ActionBase implements Action{\n    id!: string;\n    description?: string;\n    icon?: LucideIcon;\n    color?: string;\n    style?: string;\n    class?: string;\n    hide?: boolean;\n    disable?: boolean;\n    useSpinner?: boolean;\n    abstract type: ACTION_TYPE;\n}\n","import { ACTION_TYPE } from \"../enum\";\nimport { ActionBase } from \"./action-base\";\n\nexport class ActionButton extends ActionBase{\n    type: ACTION_TYPE = ACTION_TYPE.BUTTON;\n}\n","import { ACTION_TYPE } from \"../enum\";\nimport { ActionBase } from \"./action-base\";\n\nexport class ActionIcon extends ActionBase{\n    type: ACTION_TYPE = ACTION_TYPE.ICON;\n}\n","import { FILTER_TYPE } from \"../enum/filter-type.enum\";\nimport { FilterBase } from \"./filter-base\";\n\nexport class FilterSelectState extends FilterBase {\n    type:  FILTER_TYPE = FILTER_TYPE.SELECT_STATE;\n}","import { FormControl } from '@angular/forms';\nimport { ErrorValidator } from '../interface';\n\nexport class Utils {\n\n    public static validateError(formControl: FormControl, errors: ErrorValidator[]): string[] {\n        const errorDescriptions: string[] = [];\n        \n        if (errors) {\n            for (const error of errors) {\n                const errorKey = error.errorValidator;\n                // Caso 1: Error estándar basado en la clave\n                if (errorKey && formControl.hasError(errorKey)) {\n                    errorDescriptions.push(error.errorDescription);\n                    \n                }\n                // Caso 2: Manejo de condiciones adicionales\n                else if (error.conditions) {\n                    for (const condition of error.conditions) {\n                        const hasErrorsValid = condition.hasError\n                            ? condition.hasError.every((key) => formControl.hasError(key))\n                            : true; // Todas las claves en `hasError` deben existir\n                        const notErrorsValid = condition.notError\n                            ? condition.notError.every((key) => !formControl.hasError(key))\n                            : true; // Todas las claves en `notError` NO deben existir\n                        \n                        if (hasErrorsValid && notErrorsValid) {\n                            errorDescriptions.push(error.errorDescription);\n                           \n                        }\n                    }\n                }\n               \n            }\n        }\n        \n        return errorDescriptions;\n    }\n}","import { Component, Input } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { Observable, distinctUntilChanged, map, of } from 'rxjs';\nimport { OptionSelect } from '../../interface/option-select.interface';\nimport { Filter } from '../../interface/filter.interface';\nimport { FilterAutocomplete } from '../../class';\nimport { Search } from 'lucide-angular';\nimport { Utils } from '../../common/utils';\n@Component({\n    selector: 'kit-toolbar-filter-autocomplete',\n    templateUrl: './toolbar-filter-autocomplete.component.html'\n})\n  \nexport class ToolbarFilterAutocompleteComponent{\n\n    @Input() filterForm: FormControl = new FormControl({});\n    @Input() iconArrow:  boolean = false;\n    public filteredOptions: Observable<OptionSelect[]> | undefined;\n    public readonly searchI = Search;\n\n    private _filter :Filter = new FilterAutocomplete();\n    \n    public constructor(){}\n\n    @Input() public set filter(filter:Filter){\n        this._filter = filter;\n        this.setFilteredOptions()\n    }\n\n    public get filter(){        \n        return this._filter;\n    }\n\n    displayFn(option: any): string {\n        return option && option.label ? option.label : '';\n    }\n\n    setFilteredOptions(){\n        this.filteredOptions = of(this.filter).pipe(\n            distinctUntilChanged(),\n            map(filter => filter.values ? filter.values : [] )\n        );\n    }\n\n    isControlRequired(): boolean {\n        return this.filterForm.hasValidator(Validators.required); \n    }\n\n    public validateError() {\n        return this.filter?.errors ? Utils.validateError(this.filterForm, this.filter?.errors) : [];\n    }\n   \n}","@if(filter.label) {\n    <mat-label [class.required]=\"isControlRequired()\">{{filter.label}}</mat-label>    \n}\n\n<mat-form-field class=\"example-full-width custom-label-outside autocomplete-custom\" [class.multiple-errors]=\"validateError().length > 1\" appearance=\"outline\" floatLabel=\"always\">\n    <input \n    type=\"text\" \n    class=\"form-control\"\n    matInput [formControl]=\"filterForm\" \n    [placeholder]=\"filter.placeholder ? filter.placeholder : '' \" \n    [matAutocomplete]=\"auto\" />\n    \n    <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\n        @for (option of filteredOptions | async; track option) {\n        <mat-option [value]=\"option\">{{ option.label }}</mat-option>\n        }\n    </mat-autocomplete> \n    <lucide-angular matPrefix color=\"#5D6F85\" size=\"16\" [img]=\"searchI\" ></lucide-angular>   \n    @for (error of validateError(); track error) {\n      <mat-error>\n        {{error}}\n      </mat-error>\n    }\n      <!-- errors = [{\n        errorValidator: { required: true },\n        errorDescription: 'Mensaje error',\n      }]; -->\n</mat-form-field>\n\n\n\n\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { AbstractControl, FormControl, ValidationErrors } from '@angular/forms';\nimport { OptionSelect } from '../../interface/option-select.interface';\nimport { Filter } from '../../interface/filter.interface';\nimport { MatOptionSelectionChange } from '@angular/material/core';\nimport { combineLatestWith, map, Observable, of, startWith } from 'rxjs';\nimport { ChevronDown as iconChevronDown, X as iconClose } from 'lucide-angular';\nimport { Utils } from '../../common/utils';\n@Component({\n    selector: 'kit-toolbar-filter-select',\n    templateUrl: './toolbar-filter-select.component.html'\n})\n  \nexport class ToolbarFilterSelectComponent implements OnInit, OnChanges{\n    \n    @Input() filterForm: FormControl = new FormControl({});\n    public filteredOptions$: Observable<OptionSelect[]> | undefined;\n    public iconChevronDown = iconChevronDown\n    public iconClose = iconClose\n\n    private _filter!:Filter;\n\n    public constructor(){}\n\n    @Input() public set filter(filter:Filter){\n        this._filter = filter;\n    }\n\n    public get filter(){\n        return this._filter;\n    }\n\n    public ngOnInit(): void {\n        this.setFilterObservable()\n    }\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if(changes['options']) {\n            this.setFilterObservable()\n        }\n    }\n\n    public onChange(event: MatOptionSelectionChange) {\n        //this.changeEvent.emit(event.source.value);\n    }\n\n    public compareFn(option1: string, option2: OptionSelect | string): boolean {\n        let validation = false\n        if(option1 && option2){\n            if(typeof (option2) === 'string'){\n                validation = option1 === option2\n            }else{\n                validation = option1 === option2.value\n            }\n        }\n        return validation\n    }\n\n    public isControlRequired(): boolean {\n        if (this.filterForm && this.filterForm.validator) {\n            const validator = this.filterForm.validator({} as any);\n            return !!(validator && validator['required']);\n        }\n        return false;\n    }\n\n    public displayFn(option: OptionSelect): string {\n        return option && option.label ? option.label : '';\n    }\n\n    public clearSelection(){\n        this.filterForm.setValue(null);\n        //this.changeEvent.emit();\n    }\n\n    public validateError () {\n        return this.filter?.errors ? Utils.validateError(this.filterForm, this.filter?.errors) : '';\n    }\n\n    private validateOption(control: AbstractControl): ValidationErrors|null {\n        const value = control.value;\n        // Valida si el valor es un objeto o un primitivo y si está en las opciones\n        if(this.filter.values && value) {\n            const isValid = this.filter.values?.some(option =>\n                typeof value === 'object'\n                    ? option.value === value.value\n                    : option.value === value\n            );\n            return isValid ? null : { invalidOption: true };\n        }\n        return null\n    }\n    \n    private setFilterObservable(){\n        this.filteredOptions$ = this.filterForm.valueChanges.pipe(\n            startWith(this.filterForm.value || ''),\n            combineLatestWith(of(this.filter.values || [])),\n            map(([inputValue, optionslist]) => {\n                if(inputValue){\n                    let filterValue: string;\n                    if (typeof inputValue === 'object' && inputValue) {\n                        filterValue = inputValue.value ? inputValue.value.toLowerCase() : '';\n                    } else if (typeof inputValue === 'string') {\n                        filterValue = inputValue.toLowerCase();\n                    } else {\n                        filterValue = '';\n                    }\n                    if (!filterValue) {\n                        return optionslist;\n                    }\n                    return optionslist.filter((option: any) =>\n                        option.value.toLowerCase().includes(filterValue) || // Filtra por value\n                        option.label.toLowerCase().includes(filterValue)    // O por label\n                    );          \n                    \n                } else {\n                    return optionslist;\n                }\n            })\n        );\n        if (this.filter.values && this.filter.values.length > 0 ) {\n            const existingValidators = this.filterForm.validator ? [this.filterForm.validator] : [];\n            this.filterForm.setValidators([this.validateOption.bind(this), ...existingValidators])\n        }\n    }\n}","@if(filter.label) {\n    <mat-label [class.required]=\"isControlRequired()\">{{filter.label}}</mat-label>\n}\n<mat-form-field class=\"example-full-width custom-label-outside\" [ngClass]=\"filter.main ? ' autocomplete-custom autocomplete-custom-select':''\" appearance=\"outline\" floatLabel=\"always\">\n    <input \n        matInput \n        type=\"text\" \n        class=\"form-control\"\n        class=\"form-control\"\n        [formControl]=\"filterForm\" \n        [placeholder]=\"filter.placeholder ? filter.placeholder : '' \"\n        [matAutocomplete]=\"auto\"\n    />\n    <mat-autocomplete \n        #auto=\"matAutocomplete\"  \n        [displayWith]=\"displayFn\"\n    >\n      @for (option of filteredOptions$ | async; track option) {\n        <mat-option (onSelectionChange)=\"onChange($event)\" [value]=\"option\">{{option.label}}</mat-option>\n      }\n    </mat-autocomplete>\n    @if (filterForm && filterForm.value && !filterForm.disabled) {\n      <lucide-angular color=\"#5D6F85\" size=\"16\" [img]=\"iconClose\" (click)=\"clearSelection()\" class=\"cursor-pointer close-icon-select\"></lucide-angular>\n    }\n    <lucide-angular color=\"#5D6F85\" size=\"16\" [img]=\"iconChevronDown\" ></lucide-angular>\n    \n    @if (validateError()) {\n      <mat-error>\n        {{validateError()}}\n      </mat-error>\n    }\n    <!-- errors = [{\n      errorValidator: { required: true },\n      errorDescription: 'Mensaje error',\n    }]; -->\n    \n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { Filter } from '../../interface/filter.interface';\nimport { FilterInput } from '../../class';\nimport { INPUT_TYPE } from '../../enum/input-type.enum';\nimport { Utils } from '../../common/utils';\n\n@Component({\n    selector: 'kit-toolbar-filter-input',\n    templateUrl: './toolbar-filter-input.component.html'\n})\n  \n\nexport class ToolbarFilterInputComponent{\n    @Input() filterForm: FormControl = new FormControl({});\n    public INPUT_TYPE = INPUT_TYPE;\n    \n    private _filter!:Filter\n\n    public constructor(){}\n    \n    @Input() public set filter(filter:Filter){\n        this._filter = filter;\n    }\n    \n    public get filter(){\n        return this._filter;\n    }\n    \n    public validateError () {\n        return this.filter?.errors ? Utils.validateError(this.filterForm, this.filter?.errors) : '';\n    }\n\n    isControlRequired(): boolean {\n        return this.filterForm.hasValidator(Validators.required); \n    }\n}","@if(filter.label) {\n    <mat-label [class.required]=\"isControlRequired()\">{{filter.label}}</mat-label>    \n}\n\n<mat-form-field class=\"example-full-width custom-label-outside\" appearance=\"outline\" floatLabel=\"always\">\n    <input\n        matInput\n        class=\"form-control\"\n        [formControl]=\"filterForm\"\n        [type]=\"filter.inputType ? filter.inputType : INPUT_TYPE.TEXT\"\n        [placeholder]=\"filter.placeholder ? filter.placeholder : '' \"\n        [dropSpecialCharacters]=\"filter.mask && filter.mask.dropSpecialCharacters ? false : true\"\n        [prefix]=\"filter.mask?.prefix || ''\"\n        [suffix]=\"filter.mask?.suffix || ''\"\n        [mask]=\"filter.mask?.mask || ''\"\n        [showMaskTyped]=\"filter.mask?.showMaskTyped || false\"\n        [allowNegativeNumbers]=\"filter.mask?.allowNegativeNumbers || false\"\n        [clearIfNotMatch]=\"filter.mask?.clearIfNotMatch || false\"\n        [specialCharacters]=\"filter.mask?.specialCharacters || ['']\"\n        [thousandSeparator]=\"filter.mask?.thousandSeparator || '.'\"\n        [decimalMarker]=\"(filter.mask && filter.mask.thousandSeparator && filter.mask.thousandSeparator === '.') ? ',':'.'\"\n        [patterns]=\"filter.mask?.customPatterns ||  null\"\n        [validation]=\" filter.mask?.validation ||  false\" />\n        @if (validateError()) {\n            <mat-error>\n              {{validateError()}}\n            </mat-error>\n        }\n    <!-- errors = [{\n        errorValidator: { required: true },\n        errorDescription: 'Mensaje error',\n    }]; -->\n</mat-form-field>","import { Component, Input } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { Filter } from '../../interface/filter.interface';\nimport { Calendar as iconCalendar } from 'lucide-angular';\nimport { Utils } from '../../common/utils';\n@Component({\n    selector: 'kit-toolbar-filter-date',\n    templateUrl: './toolbar-filter-date.component.html'\n})\n  \nexport class ToolbarFilterDateComponent{\n    @Input() filterForm: FormControl = new FormControl({});\n    public iconCalendar = iconCalendar;\n    \n    private _filter!:Filter;\n\n    public constructor(){}\n    \n    @Input() public set filter(filter:Filter){\n        this._filter = filter;\n    }\n    public get filter(){\n        return this._filter;\n    }\n\n    public isControlRequired(): boolean {\n        return this.filterForm.hasValidator(Validators.required); \n    }\n\n    public validateError () {\n        return this.filter?.errors ? Utils.validateError(this.filterForm, this.filter?.errors) : '';\n    }\n\n}","@if(filter.label) {\n    <mat-label [class.required]=\"isControlRequired()\">{{filter.label}}</mat-label>\n}\n    <mat-form-field class=\"example-full-width custom-label-outside\"  appearance=\"outline\" floatLabel=\"always\">\n        <input \n            kitAppCustomDateFormat \n            matInput \n            [matDatepicker]=\"picker\" \n            [formControl]=\"filterForm\" \n            [placeholder]=\"filter.placeholder ? filter.placeholder : '' \" \n            [min]=\"filter.minDate\" \n            [max]=\"filter.maxDate\"\n        >\n        <lucide-angular \n            color=\"#5D6F85\" \n            class=\"cursor-pointer\" \n            size=\"20\"\n            [img]=\"iconCalendar\"\n            (click)=\"picker.open()\"  \n        ></lucide-angular>\n\n        <mat-datepicker #picker></mat-datepicker>\n        @if (filterForm.hasError('control') && !filterForm.hasError('required')) {\n            <mat-error>Por favor ingrese una fecha</mat-error>\n        }\n        @if (filterForm.hasError('required')) {\n            <mat-error>Fecha es <strong>obligatorio</strong></mat-error>\n        }\n        @if (filterForm.hasError('errorCommons')) {\n            <mat-error>{{filter.customErrorMessage ? filter.customErrorMessage : ''}}</mat-error>\n        }\n</mat-form-field>\n","import { Component, Inject, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { Filter } from '../../interface/filter.interface';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Filter as iconFilter, X as iconClose, ChevronUp as iconChevronUp, ChevronDown as iconChevronDown} from 'lucide-angular';\nimport { FILTER_TYPE } from '../../enum';\nimport { FormControl } from '@angular/forms';\nimport { Group } from '../../interface';\nimport { Subject, Subscription } from 'rxjs';\nimport { MatExpansionPanel } from '@angular/material/expansion';\nimport { SidebarInstance } from '../../interface/sidebar-instance.interface';\nimport { SidebarDialog } from '../../interface/sidebar-dialog.interface';\n\n@Component({\n    selector: 'kit-toolbar-filter-sidebar',\n    templateUrl: './toolbar-filter-sidebar.component.html',\n})\nexport class ToolbarFilterSidebarComponent implements OnInit, OnDestroy{\n    @ViewChildren(MatExpansionPanel) panels!: QueryList<MatExpansionPanel>;\n    private filtersSub!: Subscription;\n    public _filters!:Filter[];\n    public filterForm!: any;\n    public groups!:Group[];\n    public filtersCount:number = 0\n\n    public iconFilter = iconFilter;\n    public iconClose = iconClose;\n    public iconChevronUp = iconChevronUp;\n    public iconChevronDown = iconChevronDown;\n    \n    public FILTER_TYPE = FILTER_TYPE;\n    public groupIdPanelOpen:number = 0;\n\n    public filterGroupList:any[]=[]\n\n    public resetFilterFormSubject = new Subject<SidebarInstance>(); \n    public resetFilterForm$ = this.resetFilterFormSubject.asObservable();\n\n    private isFilterGroup:boolean = false\n  \n    constructor(\n        @Inject(MAT_DIALOG_DATA) public data: any,\n        public dialogRef: MatDialogRef<ToolbarFilterSidebarComponent>, \n        private dialog: MatDialog\n    ) { }\n\n    public set filters(filters:Filter[]){\n        this._filters = [...filters]; \n    }\n\n    public get filters(){\n        return this._filters;\n    }\n\n    public get validForm(){\n        return (this.groups && this.groups.length === 0) ? this.validateSimpleForm() : this.validateGroupForm()\n    }\n\n    public ngOnInit(): void{\n        this.filtersSub = this.data.filters$.subscribe((updatedFilters: Filter[]) => {\n            this.filters = [...updatedFilters]; \n        });\n\n        this.filterForm = this.data.filterForm ? this.data.filterForm : this.filterForm\n        this.groups = this.data.groups ? this.data.groups : this.groups\n        this.filtersCount = this.data.filtersCount ? this.data.filtersCount : this.filtersCount,\n        this.groupIdPanelOpen = this.data.groupIdPanelOpen ? this.data.groupIdPanelOpen : this.groupIdPanelOpen\n\n        if(this.groups && this.groups.length > 0 && !this.groupIdPanelOpen){\n            this.groupIdPanelOpen = this.groups[0].id\n        }\n\n        this.isFilterGroup = this.groups.length > 0\n    }\n\n    public ngOnDestroy(): void {\n        this.resetFilterFormSubject.complete();\n        if (this.filtersSub) {\n            this.filtersSub.unsubscribe();\n        }\n    }\n\n    public getFilter(filterIndex:number){\n        return { ...this.filters[filterIndex] };\n    }\n\n    public getSingleFilterFormControl(filter:Filter){\n        return this.filterForm.get(filter.id) as FormControl;\n    }\n\n    public getGroupFilterFormControl(filter:Filter,groupId:number){\n        return this.filterForm[groupId].get(filter.id) as FormControl;\n    }\n\n    public getFilterWhitValues(){\n        let count = 0;\n        for (const filter of this.filters) {\n            const value = this.filterForm.controls[filter.id].value\n            count = (value && value !== '' && !filter.main) ? count+1 : count\n        }\n        return count\n    }\n\n    public setAccordionPanel(index:number){\n        if(index >= 0){\n            this.groupIdPanelOpen = index\n        }else{\n            if(!this.panels.some((panel) => panel.expanded)){\n                this.groupIdPanelOpen = index\n            }\n        }        \n    }\n\n    public onFilterGroup(groupId:number){\n        this.dialogRef.close({groupId});\n    }\n\n    public onFilterSingle(){\n        this.dialogRef.close({filter: true} as SidebarDialog);\n    }\n\n    public onClear(groupId?:number){\n        this.filtersCount = 0;\n        this.resetFilterFormSubject.next( this.isFilterGroup ? {emitEvent:true,groupId} : {emitEvent:true})\n    }\n\n    private validateSimpleForm(){\n        const formControlsID = this.filters.reduce((acc:any,filter:any)=> {\n            if (!filter.main) {\n                acc.push(filter.id);\n            }\n            return acc; \n        },[])\n        return this.validateForm(formControlsID)\n    }\n\n    private validateGroupForm(){\n        let validate:boolean = false\n        if(this.groupIdPanelOpen >= 0){\n            const formControlsID = this.filters.reduce((acc:any,filter:any)=> {\n                if (filter.group === this.groupIdPanelOpen && !filter.main) {\n                    acc.push(filter.id);\n                }\n                return acc; \n            },[])\n            \n            validate = this.validateForm(formControlsID,this.groupIdPanelOpen);\n        }\n        return validate;\n    }\n\n    private validateForm(formControlsID:string[],groupId?:number){\n        const enabledControls = formControlsID.filter(\n            (controlId) => groupId ? !this.filterForm[groupId].controls[controlId].disabled : !this.filterForm.controls[controlId].disabled\n        );\n\n        const validControls = enabledControls.filter( controlId => (\n            groupId ? this.filterForm[groupId].controls[controlId].valid : this.filterForm.controls[controlId].valid\n        ) )  \n              \n        const emptyControls = enabledControls.filter( controlId => (\n            groupId ? !this.filterForm[groupId].controls[controlId].value : !this.filterForm.controls[controlId].value\n        ))\n\n        const validation = ( \n            validControls.length ===  enabledControls.length && emptyControls.length < enabledControls.length\n        )\n        \n        return validation\n    }\n\n}","<mat-dialog-content class=\"toolbar-filter-sidebar-content bg-body text-start\">\n    <section class=\"dialog-title\">\n        <div class=\"dialog-title-description\">\n            <lucide-angular matPrefix [color]=\"'#5D6F85'\" [size]=\"16\" [img]=\"iconFilter\" ></lucide-angular>              \n            <mat-label>Filtros <span>{{filtersCount}}</span></mat-label>\n        </div>\n        <lucide-angular class=\"close-dialog\" matPrefix [color]=\"'#343F4B'\" [size]=\"24\" [img]=\"iconClose\" (click)=\"dialogRef.close({filter: false})\"></lucide-angular>\n    </section>\n\n    @if (filters.length > 0 && groups.length === 0){\n        <section>\n            <form [formGroup]=\"filterForm\">\n                <div class=\"toolbar-filter-sidebar-body\">            \n                    @for (filter of filters; track filter ; let i = $index) {\n                        @if (!filter.main) {\n                            @switch (filter.type) {     \n                                @case (FILTER_TYPE.AUTOCOMPLETE) {\n                                    <kit-toolbar-filter-autocomplete [filterForm]=\"getSingleFilterFormControl(filter)\" [filter]=\"getFilter(i)\"></kit-toolbar-filter-autocomplete>\n                                } \n                                @case (FILTER_TYPE.SELECT) {\n                                    <kit-toolbar-filter-select [filterForm]=\"getSingleFilterFormControl(filter)\" [filter]=\"filter\"></kit-toolbar-filter-select>\n                                }\n                                @case (FILTER_TYPE.INPUT) {\n                                    <kit-toolbar-filter-input [filterForm]=\"getSingleFilterFormControl(filter)\" [filter]=\"filter\"></kit-toolbar-filter-input> \n                                }\n                                @case (FILTER_TYPE.DATE) {\n                                    <div class=\"date-picker-flex\">\n                                        <kit-toolbar-filter-date [filterForm]=\"getSingleFilterFormControl(filter)\" [filter]=\"filter\"></kit-toolbar-filter-date>\n                                    </div> \n                                } \n                            } \n                        }\n                    }\n                </div>\n                <div class=\"toolbar-filter-sidebar-footer d-flex justify-content-end align-items-center gap-4\">\n                    <button type=\"button\" mat-raised-button (click)=\"onClear()\">\n                        Limpiar\n                    </button>\n                    <button \n                        mat-raised-button\n                        type=\"button\"  \n                        [disabled]=\"!validForm\"\n                        class=\"btn-primary\"\n                        color=\"primary\"\n                        (click)=\"onFilterSingle()\">\n                        Filtrar\n                    </button>\n                </div>\n            </form>\n        </section>\n    }\n\n    @if (groups.length > 0) {\n        <section>\n            <div class=\"toolbar-filter-sidebar-body\">\n                <mat-accordion>\n                    @for (group of groups; track $index) {\n                        <mat-expansion-panel \n                            [expanded]=\"group.id === groupIdPanelOpen\" \n                            [ngClass]=\"groupIdPanelOpen === group.id  ? 'background-mat-expansion-panel-header' : ''\" \n                            (opened)=\"setAccordionPanel(group.id)\" \n                            (closed)=\"setAccordionPanel(-1)\">\n                            <mat-expansion-panel-header>\n                                <span>{{group.label}}</span> \n                                <div class=\"custom-expansion-indicator\">\n                                    @if(groupIdPanelOpen === group.id){\n                                        <lucide-angular \n                                            [img]=\"iconChevronDown\" \n                                            [size]=\"20\"\n                                        ></lucide-angular>\n                                    } @else{\n                                        <lucide-angular \n                                            [img]=\"iconChevronUp\" \n                                            [size]=\"20\"\n                                        ></lucide-angular>\n                                    }\n                                </div>   \n                            </mat-expansion-panel-header>\n                            <form [formGroup]=\"filterForm[group.id]\">\n                                @for (filter of filters; track $index) {\n                                    @if (filter.group === group.id) {\n                                        @switch (filter.type) {     \n                                            @case (FILTER_TYPE.AUTOCOMPLETE) {\n                                                <kit-toolbar-filter-autocomplete [filterForm]=\"getGroupFilterFormControl(filter,group.id)\" [filter]=\"getFilter($index)\"></kit-toolbar-filter-autocomplete>\n                                            } \n                                            @case (FILTER_TYPE.SELECT) {\n                                                <kit-toolbar-filter-select [filterForm]=\"getGroupFilterFormControl(filter,group.id)\" [filter]=\"getFilter($index)\"></kit-toolbar-filter-select>\n                                            }\n                                            @case (FILTER_TYPE.INPUT) {\n                                                <kit-toolbar-filter-input [filterForm]=\"getGroupFilterFormControl(filter,group.id)\" [filter]=\"getFilter($index)\"></kit-toolbar-filter-input>\n                                            }\n                                            @case (FILTER_TYPE.DATE) {\n                                                <div class=\"date-picker-flex\">\n                                                    <kit-toolbar-filter-date [filterForm]=\"getGroupFilterFormControl(filter,group.id)\" [filter]=\"getFilter($index)\"></kit-toolbar-filter-date>\n                                                </div> \n                                            } \n                                        }\n                                    } \n                                }\n                                <div class=\"toolbar-filter-group-sidebar-footer d-flex justify-content-end align-items-center\">\n                                    <button \n                                        mat-raised-button\n                                        type=\"button\" \n                                        (click)=\"onClear(group.id)\">\n                                        Limpiar\n                                    </button>\n                                    <button \n                                        mat-raised-button\n                                        type=\"button\"\n                                        class=\"btn-primary\"\n                                        color=\"primary\"  \n                                        [disabled]=\"!validForm\"\n                                        (click)=\"onFilterGroup(group.id)\">\n                                        Filtrar\n                                    </button>\n                                </div>\n                            </form>\n                        </mat-expansion-panel>\n                    }\n                </mat-accordion>\n            </div>  \n        </section>\n    }\n\n</mat-dialog-content>","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { Filter, OptionSelect } from '../../interface';\n\n@Component({\n    selector: 'kit-toolbar-filter-select-state',\n    templateUrl: './kit-toolbar-filter-select-state.component.html',\n})\nexport class KitToolbarFilterSelectStateComponent implements OnInit, OnChanges {\n\n    @Input() filterForm: FormControl = new FormControl({});\n    public filteredOptions$: Observable<OptionSelect[]> | undefined;\n\n    private _filter!:Filter;\n    public options: OptionSelect[] = [];\n\n    @Input() public set filter(filter:Filter){\n        this._filter = filter;\n    }\n\n\n    public constructor(){}\n \n    public get filter(){\n        return this._filter;\n    }\n\n    onChange(event: any): void {\n        console.log('Selection changed:', event);\n    }\n\n    public setFilterObservable(): void {\n        this.options = this.filter.values || [];\n        if (this.filter.value && Array.isArray(this.filter.values)) {\n            const matchingOption = this.filter.values.find(option => option.value === (this.filter.value as OptionSelect)?.value);\n\n            if (matchingOption) {\n                this.filterForm.setValue(matchingOption.value);\n            } else {\n                this.filterForm.setValue(this.filter.value);\n            }    \n        }\n    }\n\n    public ngOnInit(): void {\n        this.setFilterObservable();\n       \n    }\n\n    public isControlRequired(): boolean {\n        if (this.filterForm && this.filterForm.validator) {\n            const validator = this.filterForm.validator({} as any);\n            return !!(validator && validator['required']);\n        }\n        return false;\n    }\n\n\n    defaultCompareWithFn = (o1: any, o2: any) => o1 === o2;\n    compareWithFn(o1: any, o2: any): boolean {\n        return o1 && o2 ? o1.value === o2.value : o1 === o2;\n    }\n\n\n    public ngOnChanges(changes: SimpleChanges): void {\n        if(changes['options']) {\n            this.setFilterObservable()\n        }\n    }\n    \n\n}\n","@if (filter.label) {\n    <mat-label [class.required]=\"isControlRequired()\">{{ filter.label }}</mat-label>\n}\n<mat-form-field class=\"custom-label-outside custom-select-basic-state autocomplete-custom\" appearance=\"outline\" floatLabel=\"always\">\n    @if (filter.lucideIcon && !filterForm.value) {\n        <lucide-angular\n            [img]=\"filter.lucideIcon.iconSvg\"\n            [size]=\"filter.lucideIcon.size\"\n            [color]=\"filter.lucideIcon.color\"\n            [strokeWidth]=\"filter.lucideIcon.strokeWidth\"\n            [absoluteStrokeWidth]=\"filter.lucideIcon.absoluteStrokeWidth ?? false\"\n            [class]=\"filter.lucideIcon.class\"\n        ></lucide-angular>\n    }\n    <mat-select\n        (selectionChange)=\"onChange($event)\"\n        [formControl]=\"filterForm\"\n        [multiple]=\"false\"\n        [placeholder]=\"filter.placeholder || ''\"\n    >\n        @if (options && options.length > 0) {\n            @for (option of options; track option) {\n                <mat-option #optionsTemplate [value]=\"option.value\">\n                    <span class=\"d-flex align-items-center gap-3\">\n                        {{ option.label }}\n                    </span>\n                </mat-option>\n            }\n        } @else {\n            <mat-option [value]=\"\">No se encontraron opciones</mat-option>\n        }\n    </mat-select>\n\n</mat-form-field>\n","import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { Filter } from '../../interface/filter.interface';\nimport { FILTER_TYPE } from '../../enum/filter-type.enum';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ToolbarFilterSidebarComponent } from '../toolbar-filter-sidebar/toolbar-filter-sidebar.component';\nimport { FilterChange, Group, ToolbarFilterAction } from '../../interface';\nimport { Filter as iconFilter } from 'lucide-angular';\nimport { SidebarDialog } from '../../interface/sidebar-dialog.interface';\nimport { BehaviorSubject } from 'rxjs';\nimport { SidebarInstance } from '../../interface/sidebar-instance.interface';\n\n@Component({\n    selector: 'kit-toolbar-filter',\n    templateUrl: './toolbar-filter.component.html',\n})\nexport class ToolbarFilterComponent implements OnInit{\n\n    @Input() public groups!:Group[]\n    @Output() valueChange: EventEmitter<FilterChange> = new EventEmitter();\n    @Output() actionFilter: EventEmitter<ToolbarFilterAction> = new EventEmitter();\n    public filters$ = new BehaviorSubject<Filter[]>([]);\n    \n    public iconFilter = iconFilter;\n    public filtersToComponents:Filter[] = [];\n    public FILTER_TYPE = FILTER_TYPE;\n    public singleFilterForm: FormGroup = new FormGroup({});\n    public filtersCount: number = 0\n    public groupIdPanelOpen!:number;\n    public groupFilterForm: any = {};\n\n    private _filters :Filter[] = [];\n    private fb = inject(FormBuilder);\n    private isFilterGroup:boolean = false\n    private previousFilterForm!:any;\n    private previousGroupFilterForm!:any;\n    private INDEX_GROUP_MAIN = 99\n    private groupsIds!:number[];\n    private isFilterAdded:boolean = false;\n    constructor(private dialog: MatDialog) {}\n\n    @Input() public set filters(filters:Filter[]){\n        this._filters = [...filters]; \n        this.filters$.next(this._filters); \n        if( filters.find(e=>e.group) ){\n            if(this.groups){\n                this.updateGroupFilterForm()\n                this.setGroupFiltersCount(); \n            }           \n        }else{\n            this.updateSingleFilterForm()\n            this.setSingleFiltersCount(); \n        }\n    }\n\n    public get filters(){\n        return this._filters;\n    }\n\n    public ngOnInit(): void {\n        this.isFilterGroup = this.groups.length > 0\n        this.createForm();  \n        if (this.isFilterGroup) {\n            this.setGroupFiltersCount();\n        } else {\n            this.setSingleFiltersCount();\n        }\n    }\n\n    public showFilterButton(){\n        let show = false;\n        if(this.filters.length > 0){\n            const findFilter = this.filters.find( e => !e.main);\n            show = findFilter ? true : false;\n        }\n        return show\n    }\n\n    public setGroupFiltersCount(){\n        let count = 0;\n        \n        if (!this.groupIdPanelOpen || this.groupIdPanelOpen === 0) {\n            for (const filter of this.filters) {\n                if (filter.group !== undefined && this.groupFilterForm[filter.group]) {\n                    const formControl = this.groupFilterForm[filter.group].controls[filter.id];\n                    if (formControl) {\n                        const value = formControl.value;\n                        count = (value && value !== '' && !filter.main) ? count + 1 : count;\n                    }\n                }\n            }\n        } else {\n            for (const filter of this.filters) {\n                if(filter.group === this.groupIdPanelOpen){\n                    const value = this.groupFilterForm[this.groupIdPanelOpen].controls[filter.id].value\n                    count = (value && value !== '' && !filter.main) ? count+1 : count\n                }\n            }\n        }\n        this.filtersCount = count;\n    }\n\n    public setSingleFiltersCount(){\n        let count = 0;\n        for (const filter of this.filters) {\n            if(this.singleFilterForm.controls[filter.id]) {\n                const value = this.singleFilterForm.controls[filter.id].value\n                count = (value && value !== '' && !filter.main) ? count+1 : count     \n            }\n        }\n        this.filtersCount = count\n    }\n\n    public onAction() {\n        this.openVersionHistoryDialog();\n    }\n    \n    public openVersionHistoryDialog() {\n        const dialogRef = this.dialog.open(ToolbarFilterSidebarComponent, {\n            data: {\n                filters$: this.filters$,\n                filterForm:this.isFilterGroup ? this.groupFilterForm : this.singleFilterForm,\n                groups:this.groups,\n                filtersCount:this.filtersCount,\n                groupIdPanelOpen:this.groupIdPanelOpen\n            },\n            panelClass:'toolbar-filter-sidebar',\n            autoFocus: false,\n            position:{top:'5vh',right:'5vh', bottom:'5vh'},\n            height:'90vh',\n            width:'300px',\n        })\n\n        dialogRef.afterClosed().subscribe((sidebarDialog:SidebarDialog) => {\n            if (sidebarDialog && sidebarDialog?.groupId) {\n                this.groupIdPanelOpen = sidebarDialog.groupId;\n                this.setGroupFiltersCount()\n                this.resetGroupFilterFormWhitoutOpenPanel()\n                this.actionFilter.emit({searchGroup:sidebarDialog.groupId})\n                this.isFilterAdded = true;\n            }else if(!this.isFilterGroup && this.emptySingleFormValues() && sidebarDialog?.filter) {\n                \n                this.groupIdPanelOpen = 0;\n                this.setSingleFiltersCount();\n                this.actionFilter.emit({search:true});\n                this.isFilterAdded = true;\n            }  else if (!this.isFilterGroup && sidebarDialog?.filter) { \n                this.groupIdPanelOpen = 0;\n                this.setSingleFiltersCount();\n                this.actionFilter.emit({ search: true });\n                this.isFilterAdded = true;\n            }else {\n                if((!sidebarDialog || sidebarDialog?.filter === false) && !this.isFilterAdded) {\n                    this.filtersCount = 0;\n                    if (this.isFilterGroup) {\n                        this.resetGroupFilterFormWhitoutOpenPanel();\n                    } else {\n                        this.resetSingleFilterForm();\n                    }\n                }\n                if (this.isFilterGroup) {\n                    this.setGroupFiltersCount(); \n                } else {\n                    this.setSingleFiltersCount(); \n                }\n                this.groupIdPanelOpen = 0;\n            }\n        });\n\n        const instance = dialogRef.componentInstance;\n\n        instance.resetFilterForm$.subscribe((sidebarInstance:SidebarInstance) => {\n            if(!sidebarInstance.groupId){\n                this.resetSingleFilterForm();\n            }else{\n                this.resetGroupFilterForm(sidebarInstance.groupId);\n            }\n\n            if(sidebarInstance?.emitEvent){\n                this.isFilterAdded = false;\n                this.actionFilter.emit({clear:true})\n            } \n           \n        });\n    }\n\n    public resetGroupFilterFormWhitoutOpenPanel(){\n        for(const groupId of this.groupsIds){\n            if(this.groupIdPanelOpen !== groupId){\n                this.resetGroupFilterForm(groupId)\n            }\n        }\n    }\n\n    public resetSingleFilterForm(){\n        this.singleFilterForm.reset();\n        this.previousFilterForm = this.singleFilterForm.value;\n        this.setSingleFiltersCount(); \n    }\n\n    public resetGroupFilterForm(groupId:number){\n        this.groupFilterForm[groupId].reset();\n        this.previousGroupFilterForm[groupId] = this.groupFilterForm[groupId].value;\n        this.setGroupFiltersCount(); \n    }\n\n    public getFilterForm(filter:Filter){\n        return this.isFilterGroup ? this.groupFilterForm[this.INDEX_GROUP_MAIN].get(filter.id) as FormControl : this.singleFilterForm.get(filter.id) as FormControl;\n    }\n\n    public getFilter(filter:Filter){\n        return {...filter}\n    }\n\n    private emptySingleFormValues(){\n        const formControlsID = this.filters.reduce((acc:any,filter:any)=> {\n            if (!filter.main) {\n                acc.push(filter.id);\n            }\n            return acc; \n        },[])\n        \n        const enabledControls = formControlsID.filter(\n            (controlId:any) => !this.singleFilterForm.controls[controlId].disabled \n        );\n             \n        const emptyControls = enabledControls.filter( (controlId:any) => (\n            !this.singleFilterForm.controls[controlId].value\n        ))\n        \n        return emptyControls.length === enabledControls.length\n    }\n\n    private createForm() {\n        if(this.isFilterGroup){\n            this.createGroupForm();\n        }else{\n            this.createSingleForm();        \n        }\n    }\n\n    private createSingleForm(){\n        this.singleFilterForm = this.fb.group({});\n        this.updateSingleFilterForm();\n        this.singleFilterFormSubscribes();\n        this.previousFilterForm = this.singleFilterForm.value;\n    }\n\n    private createGroupForm(){\n        this.groupsIds = this.groups.map(item=>item.id)\n        if(this.filters.find(e => e.main)){\n            this.groupsIds = [...this.groupsIds,this.INDEX_GROUP_MAIN]\n        }\n        for (const groupId of this.groupsIds) {\n            this.groupFilterForm = {\n                ...this.groupFilterForm,\n                [groupId]:this.fb.group({})\n            };\n            let filters = []\n            if(groupId === this.INDEX_GROUP_MAIN){\n                filters = this.filters.filter(e => e.main);  \n            }else{\n                filters = this.filters.filter(e => e.group === groupId);   \n            }  \n            for(const filter of filters){\n                if(filter.group === groupId || (filter.main && groupId === this.INDEX_GROUP_MAIN) ){\n                    this.groupFilterForm[groupId].addControl(\n                        filter.id,\n                        this.fb.control(\n                            {\n                                value: filter.value ?? '',\n                                disabled: filter.disabled ?? false\n                            },\n                            filter.validators\n                        )\n                    );\n                }\n            }  \n            this.previousGroupFilterForm= {\n                ...this.previousGroupFilterForm,\n                [groupId]:this.groupFilterForm[groupId].value\n            }\n        }\n        this.groupFilterFormSubscribes()\n    }\n\n    private updateGroupFilterForm() {\n        for (const groupId of this.groupsIds) {\n            const formGroup = this.groupFilterForm[groupId]  \n            const filters = this.filters.filter(e => e.group === groupId);\n            for(const filter of filters){\n                const formControl = formGroup.controls[filter.id]\n                if(filter.disabled){\n                    formControl.disable();\n                }else{\n                    formControl.enable();\n                }\n                if(filter?.validators !== undefined){\n                    formControl.clearValidators();\n                    formControl.addValidators(filter.validators);  \n                    formControl.updateValueAndValidity();\n                }\n                formControl.updateValueAndValidity();        \n            }              \n        }\n        this.setGroupFiltersCount()\n    }\n\n    private updateSingleFilterForm() {\n        for (const filter of this.filters) {\n            if(this.singleFilterForm.controls[filter.id]){\n                this.updateFilterFormControl(filter);\n            }else{\n                this.addFilterFormControl(filter);\n            }\n        }\n    }\n\n    private updateFilterFormControl(filter:Filter){\n        const formControl = this.singleFilterForm.controls[filter.id]\n        \n        if(filter.disabled){\n            formControl.disable();\n        }else{\n            formControl.enable();\n        }\n\n        if(filter?.validators !== undefined){\n            formControl.clearValidators();\n            formControl.addValidators(filter.validators);  \n            formControl.updateValueAndValidity();\n        }\n\n        formControl.updateValueAndValidity();\n    }\n\n    private addFilterFormControl(filter:Filter){\n        this.singleFilterForm.addControl(\n            filter.id,\n            this.fb.control(\n                {\n                    value: filter.value ?? '',\n                    disabled: filter.disabled ?? false\n                },\n                filter.validators\n            )\n        );\n    }\n\n    private singleFilterFormSubscribes(){\n        this.singleFilterForm.valueChanges.subscribe((filterForm) => {\n            const changedControl = Object.keys(filterForm).find(key => filterForm[key] !== this.previousFilterForm[key]);\n            if (changedControl) {\n                const filterChange:FilterChange = {id:changedControl,value:filterForm[changedControl]}\n                this.valueChange.emit(filterChange)\n            }\n            this.previousFilterForm = filterForm;\n        });\n    }\n\n    private groupFilterFormSubscribes(){\n        for (const groupId of this.groupsIds) {\n            this.groupFilterForm[groupId].valueChanges.subscribe((filterForm:any) => {\n                const changedControl = Object.keys(filterForm).find(key => filterForm[key] !== this.previousGroupFilterForm[groupId][key]);\n                if (changedControl) {\n                    const filterChange:FilterChange = {id:changedControl,value:filterForm[changedControl]}\n                    this.valueChange.emit(filterChange)\n                }\n                this.previousGroupFilterForm[groupId] = filterForm;\n            });\n        }\n    }\n}\n","@if (filters.length>0){\n\n    <section class=\"toolbar-filter-container\">\n        @for (filter of filters; track filter) {\n            @if (filter.main){\n                @switch (filter.type) {     \n                    @case (FILTER_TYPE.AUTOCOMPLETE) {\n                        <kit-toolbar-filter-autocomplete [filterForm]=\"getFilterForm(filter)\" [filter]=\"getFilter(filter)\"></kit-toolbar-filter-autocomplete>\n                    } \n                    @case (FILTER_TYPE.SELECT) {\n                        <kit-toolbar-filter-select [filterForm]=\"getFilterForm(filter)\" [filter]=\"getFilter(filter)\"></kit-toolbar-filter-select>\n                    }\n                    @case (FILTER_TYPE.INPUT) {\n                        <kit-toolbar-filter-input [filterForm]=\"getFilterForm(filter)\" [filter]=\"getFilter(filter)\"></kit-toolbar-filter-input>\n                    }\n                    @case (FILTER_TYPE.DATE) {\n                        <div class=\"date-picker-flex\">\n                            <kit-toolbar-filter-date [filterForm]=\"getFilterForm(filter)\" [filter]=\"getFilter(filter)\"></kit-toolbar-filter-date>\n                        </div> \n                    } \n                    @case (FILTER_TYPE.SELECT_STATE) {\n                        <kit-toolbar-filter-select-state [filterForm]=\"getFilterForm(filter)\" [filter]=\"getFilter(filter)\"></kit-toolbar-filter-select-state>\n                    }\n                }\n            }     \n        }\n        @if (showFilterButton()) {\n            <div class=\"toolbar-filter-button-container\">\n                <button\n                [ngClass]=\"filtersCount > 0 ? 'btn-primary-filter' : 'btn-cancel'\"\n                (click)=\"onAction()\"\n                >\n                    <lucide-angular matPrefix  size=\"20\" [img]=\"iconFilter\" [color]=\"filtersCount > 0 ?'#5B62DA':'#5D6F85'\" ></lucide-angular> \n                    <mat-label>Filtros <span>{{filtersCount}}</span></mat-label>\n                </button>\n            </div>\n        }\n    </section>\n\n}\n\n\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventEmitter, Input, Output} from '@angular/core';\nimport { Filter } from './interface/filter.interface';\nimport { ACTION_TYPE } from './enum/action-type.enum';\nimport { Action } from './interface/action.interface';\nimport { Group } from './interface/group.interface';\nimport { FilterChange, ToolbarFilterAction } from './interface';\n\n@Component({\n    selector: 'kit-toolbar',\n    templateUrl: './toolbar.component.html',    \n    styleUrls: ['../styles/index.scss']\n})\n\nexport class ToolbarComponent{\n    // all actions elements\n    @Input() public actions!: Action[];\n    @Input() public groups: Group[] = [];\n    @Output() changeFilters: EventEmitter<FilterChange> = new EventEmitter();    \n    @Output() toolbarFilterAction: EventEmitter<ToolbarFilterAction> = new EventEmitter();\n    @Output() toolbarAction: EventEmitter<string> = new EventEmitter();\n\n    public ACTION_TYPE = ACTION_TYPE; \n\n    private _filters!: Filter[];\n\n    public constructor() {}\n\n    @Input() public set filters(filters:Filter[]){\n        this._filters = [...filters];  \n    }\n\n    public get filters(){\n        return this._filters;\n    }\n\n    public onChangeFilters($event:FilterChange){\n        this.changeFilters.emit($event);\n    }\n\n    public onToolbarFilterAction(toolbarFilterAction:ToolbarFilterAction){\n        this.toolbarFilterAction.emit(toolbarFilterAction)\n    }\n\n    public onToolbarAction(action:string){\n        this.toolbarAction.emit(action)\n    }\n}\n","<section class=\"toolbar-container\">\n\n  <div class=\"container-filters\">\n    <kit-toolbar-filter\n      class=\"selected-filter\"\n      [filters]=\"filters\"\n      [groups]=\"groups\"\n      (valueChange)=\"onChangeFilters($event)\"\n      (actionFilter)=\"onToolbarFilterAction($event)\"\n    >\n    </kit-toolbar-filter>\n  </div>\n  \n  <!-- Actions -->\n  <div class=\"container-actions\">\n    @for (action of actions; track $index) {\n      @if(!action.hide){\n        @switch (action.type) { \n          @case (ACTION_TYPE.BUTTON) {\n            <kit-toolbar-action\n              [action]=\"action\"\n              [hidden]=\"action.hide\"\n              (toolbarAction)=\"onToolbarAction($event)\"\n            ></kit-toolbar-action>\n          } \n        }\n      }\n    }\n  </div>\n</section>","import { NgModule } from '@angular/core';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatOptionModule, provideNativeDateAdapter } from '@angular/material/core';\nimport { AsyncPipe, CommonModule } from '@angular/common';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { ToolbarComponent } from './toolbar.component';\nimport { MatTooltip, MatTooltipModule } from '@angular/material/tooltip';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ToolbarFilterAutocompleteComponent } from './components/toolbar-filter-autocomplete/toolbar-filter-autocomplete.component';\nimport { ToolbarFilterSelectComponent } from './components/toolbar-filter-select/toolbar-filter-select.component';\nimport { ToolbarFilterInputComponent } from './components/toolbar-filter-input/toolbar-filter-input.component';\nimport { ToolbarFilterDateComponent } from './components/toolbar-filter-date/toolbar-filter-date.component';\nimport { ToolbarFilterComponent } from './components/toolbar-filter/toolbar-filter.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { ToolbarFilterSidebarComponent } from './components/toolbar-filter-sidebar/toolbar-filter-sidebar.component';\nimport { LucideAngularModule } from 'lucide-angular';\nimport { ToolbarActionComponent } from './components/toolbar-action/toolbar-action.component';\nimport { KitToolbarFilterSelectStateComponent } from './components/kit-toolbar-filter-select-state/kit-toolbar-filter-select-state.component';\n@NgModule({\n    imports: [\n        CommonModule,\n        MatButtonModule,\n        MatExpansionModule,\n        MatIconModule,\n        MatFormFieldModule,\n        MatDatepickerModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatInputModule,\n        MatToolbarModule,\n        MatSelectModule,\n        MatAutocompleteModule,\n        AsyncPipe,\n        MatIconModule,\n        MatOptionModule,\n        NgxMaskDirective, \n        NgxMaskPipe,\n        MatTooltip,\n        MatTabsModule,        \n        MatTooltipModule,\n        MatDialogModule,\n        LucideAngularModule\n    ],\n    declarations: [\n        ToolbarComponent,\n        ToolbarActionComponent,\n        ToolbarFilterComponent,\n        ToolbarFilterAutocompleteComponent,\n        ToolbarFilterSelectComponent,\n        ToolbarFilterInputComponent,\n        ToolbarFilterDateComponent,\n        ToolbarFilterSidebarComponent,\n        KitToolbarFilterSelectStateComponent\n    ],\n    exports:[\n        ToolbarComponent\n    ],\n    providers: [provideNativeDateAdapter(), provideNgxMask()],\n})\nexport class KifToolbarModule { }\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport class CustomValidators {\n\n    public static optionSelect(control: AbstractControl): ValidationErrors | null {\n        const value = control.value;\n  \n        if (typeof value === 'string' && value.trim().length >= 3) {\n            return { optionSelect: true };\n        }\n        \n        // Si no es un objeto o es null, retornamos error\n        if (typeof value !== 'object' || value === null) {\n            return { optionSelect: false };\n        }\n  \n        const hasValue = typeof value.value === 'string' && value.value.trim() !== '';\n        const hasLabel = typeof value.label === 'string' && value.label.trim() !== '';\n  \n        if (!hasValue || !hasLabel) {\n            return { optionSelect: true };\n        }\n  \n        return null; \n    }\n\n}","/*\n * Public API Surface of kif-lib-input\n */\n\nexport * from './toolbar.component';\nexport * from './toolbar.module';\nexport * from './enum';\nexport * from './class';\nexport * from './interface';\nexport * from './common/custom-validators';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i1","i2","i6","i7","iconChevronDown","iconClose","i5","iconCalendar","iconFilter","iconChevronUp","i8.ToolbarFilterAutocompleteComponent","i9.ToolbarFilterSelectComponent","i10.ToolbarFilterInputComponent","i11.ToolbarFilterDateComponent","i5.ToolbarFilterAutocompleteComponent","i6.ToolbarFilterSelectComponent","i7.ToolbarFilterInputComponent","i8.ToolbarFilterDateComponent","i9.KitToolbarFilterSelectStateComponent","i1.ToolbarActionComponent","i2.ToolbarFilterComponent"],"mappings":"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"}