{"version":3,"file":"kif-lib-input-currency.mjs","sources":["../../../projects/kif-lib/input-currency/input-currency.component.ts","../../../projects/kif-lib/input-currency/input-currency.component.html","../../../projects/kif-lib/input-currency/input-currency.module.ts","../../../projects/kif-lib/input-currency/models/mask.ts","../../../projects/kif-lib/input-currency/public-api.ts","../../../projects/kif-lib/input-currency/kif-lib-input-currency.ts"],"sourcesContent":["\nimport { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { Mask } from './models/mask';\nimport { Observable, combineLatestWith, map, of, startWith } from 'rxjs';\nimport { ChevronDown, DollarSign, X } from 'lucide-angular';\n@Component({\n    selector: 'kit-input-currency',\n    templateUrl: './input-currency.component.html',\n    styleUrls: ['../styles/index.scss'],\n})\nexport class InputCurrencyComponent implements OnInit , OnChanges{\n    @Input() options: any[] = [];\n    @Input() type: string = '';\n    @Input() placeholderType: string = '';\n    @Input() isLoading: boolean = false;\n    @Input() label: string = '';\n    @Input() labelInput: string = '';\n    @Input() valueCurrency: AbstractControl | any;\n    @Input() minlength?: number;\n    @Input() maxlength?: number;\n    @Input() onlyNumbers?: boolean;\n    @Input() typeCurrency: AbstractControl | any;\n    @Input() mask: Mask | any;\n    @Input() iconClear:string =\"\";\n    @Input() useChipListbox: boolean = true;\n    @Input() showValueInput: boolean = true; \n    @Input() currency: string = '';\n    @Output() chipSelected = new EventEmitter<any>(); \n    public filteredOptions$: Observable<any[]> | undefined;\n    readonly dollarSignI = DollarSign;\n    readonly chevronDownI = ChevronDown;\n    readonly xI = X;\n\n    ngOnInit(): void {\n        this.setFilterObservable()\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if(changes['options']) {\n            this.setFilterObservable()\n        }\n    }\n\n    private setFilterObservable(){\n        this.filteredOptions$ = this.typeCurrency.valueChanges.pipe(\n            startWith(this.typeCurrency.value || ''),\n            combineLatestWith(of(this.options || [])),\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.options.length > 0 ) {\n            const existingValidators = this.typeCurrency.validator ? [this.typeCurrency.validator] : [];\n            this.typeCurrency.setValidators([this.validateOption.bind(this), ...existingValidators])\n        }\n    }\n\n    displayFn(option: any): string {\n        return option && option.label ? option.label : '';\n    }\n\n    clearSelection(){\n        this.typeCurrency.setValue(null);\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.options && value) {\n            const isValid = this.options?.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    isControlRequired(): boolean {\n        if(this.valueCurrency && this.valueCurrency.validator && this.typeCurrency && this.typeCurrency.validator) {\n            const validatorValue = this.valueCurrency.validator({} as any);\n            const validatorType = this.typeCurrency.validator({} as any);\n            \n            return !!(\n                (validatorValue && validatorValue.required) || \n                (validatorType && validatorType.required)\n            );\n        }\n        return false\n        \n    }\n\n    compareChipOptions(option1: any, option2: any): boolean {\n        // Si alguno de los dos es nulo o indefinido, no son iguales\n        if (!option1 || !option2) return false;\n        \n        // Comparar por valor si ambos son objetos\n        if (typeof option1 === 'object' && typeof option2 === 'object') {\n            return option1.value === option2.value;\n        }\n        \n        // Comparación directa en otros casos\n        return option1 === option2;\n    }\n}\n","<div class=\"row g-2\">\n  <div [class]=\"useChipListbox ? 'col-12 content-chip' : 'col-6'\">\n    @if(label && !useChipListbox ) {\n      <mat-label [class.required]=\"isControlRequired()\">{{label}}</mat-label>\n    }@else {\n      <span>{{label}}</span>\n    }\n    \n    @if(!useChipListbox) {\n      <mat-form-field class=\"example-full-width custom-label-outside w-100\" appearance=\"outline\" floatLabel=\"always\">\n        <input type=\"text\" matInput [formControl]=\"typeCurrency\" [placeholder]=\"placeholderType\"\n          [matAutocomplete]=\"auto\" class=\"form-control\"/>\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        @if (typeCurrency && typeCurrency.value && !typeCurrency.disabled){\n          <lucide-angular color=\"#5D6F85\" size=\"16\" [img]=\"xI\" (click)=\"clearSelection()\" class=\"cursor-pointer close-icon-select\"></lucide-angular>\n        }\n        <lucide-angular color=\"#5D6F85\" size=\"16\" [img]=\"chevronDownI\" ></lucide-angular>\n        @if (typeCurrency.hasError('required') && valueCurrency.hasError('required')) {\n          <mat-error>{{placeholderType}} son <strong>requeridos</strong></mat-error>\n        } @else if (typeCurrency.hasError('required')) {\n          <mat-error>Código es <strong>requerido</strong></mat-error>\n        }\n        @if (valueCurrency.hasError('maxlength')) {\n          <mat-error>El máximo permitido son {{maxlength}} caracteres</mat-error>\n        }\n        @if (valueCurrency.hasError('minlength')) {\n          <mat-error>El mínimo permitido son {{minlength}} caracteres</mat-error>\n        }\n        @if (valueCurrency.hasError('invalidOption')) {\n          <mat-error>Seleccione una opción <strong>válida</strong></mat-error>\n        }\n      </mat-form-field>\n    } @else {\n      <mat-chip-listbox [formControl]=\"typeCurrency\" [required]=\"isControlRequired()\" \n        [compareWith]=\"compareChipOptions\" class=\"w-100\">\n        @for (option of options; track option) {\n        <mat-chip-option [value]=\"option\">\n        {{option.label}}\n        </mat-chip-option>\n        }\n      </mat-chip-listbox>\n\n    }\n  </div>\n  @if(showValueInput) {\n    <div class=\"col-6\">\n      @if(label) {\n        <mat-label [class.required]=\"isControlRequired()\">{{labelInput}}</mat-label>\n      }\n      <mat-form-field class=\"example-full-width custom-label-outside w-100\" appearance=\"outline\" floatLabel=\"always\">\n        <input matInput [type]=\"type\" class=\"form-control\" [formControl]=\"valueCurrency\"\n          [dropSpecialCharacters]=\"mask?.dropSpecialCharacters ? false : true\" [prefix]=\"mask?.prefix ? mask.prefix : ''\"\n          [suffix]=\"mask?.suffix ? mask.suffix : ''\" [mask]=\"mask?.mask ? mask.mask : ''\"\n          [showMaskTyped]=\"mask?.showMaskTyped ? mask.showMaskTyped : false\"\n          [allowNegativeNumbers]=\"mask?.allowNegativeNumbers ? mask.allowNegativeNumbers : false\"\n          [placeHolderCharacter]=\"mask?.placeHolderCharacter ? mask.placeHolderCharacter : null\"\n          [clearIfNotMatch]=\"mask?.clearIfNotMatch ? mask.clearIfNotMatch : false\"\n          [specialCharacters]=\"mask?.specialCharacters ? mask?.specialCharacters : (mask?.thousandSeparator ? [mask?.thousandSeparator] : null)\"\n          [thousandSeparator]=\"mask?.thousandSeparator ? mask?.thousandSeparator : '.'\"\n          [decimalMarker]=\"mask?.decimalMarker ? mask?.decimalMarker:','\"\n          [validation]=\"mask?.validation ? mask?.validation : false\" />\n          @if (currency) {\n            <div class=\"currency-select\">{{currency}}</div>\n          }@else {\n            <lucide-angular color=\"#5D6F85\" class=\"cursor-pointer\" size=\"16\" [img]=\"dollarSignI\"></lucide-angular>\n          }\n        @if (valueCurrency.hasError('required')) {\n          <mat-error>Monto es <strong>requerido</strong></mat-error>\n        }\n      </mat-form-field>\n    </div>\n    }\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { InputCurrencyComponent } from './input-currency.component';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport {MatIconModule} from '@angular/material/icon';\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatOptionModule } from '@angular/material/core';\nimport { LucideAngularModule } from 'lucide-angular';\nimport { MatChipsModule } from '@angular/material/chips';\n@NgModule({\n    imports: [\n        CommonModule,\n        MatInputModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatIconModule, \n        NgxMaskDirective, \n        NgxMaskPipe,\n        MatSelectModule,\n        MatProgressSpinnerModule,\n        MatAutocompleteModule,\n        MatOptionModule,\n        LucideAngularModule,\n        MatChipsModule\n    ],\n    declarations: [InputCurrencyComponent],\n    exports:[\n        InputCurrencyComponent,\n    ],\n    providers: [provideNgxMask()],\n\n})\nexport class KifInputCurrencyModule { }\n","export class Mask {\n    //Si se incluye caracter especial en el modelo o no, es decir si el formato que se confgura debe ser guardado \n    dropSpecialCharacters?: boolean | undefined; //You can choose if mask will drop special character in the model, or not, default value is true.\n    //Prefijo // Es valido para los campo de texto,número pero no para select,autocomplete,date\n    prefix?: string; //You can add prefix to you masked value\n    //Sufijo // Es valido para los campo de texto,número pero no para select,autocomplete,date\n    suffix?: string; //You can add suffix to you masked value\n    //Formato del campo\n    mask: string | undefined;\n    //showMaskTyped // Define si se muestra la máscara mientras escribe o no, el valor predeterminado es false.\n    showMaskTyped?: boolean //You can choose if mask is shown while typing, or not, default value is false.\n    //Si permite números negativos\n    allowNegativeNumbers?: boolean; //You can choose if mask will allow the use of negative numbers. The default value is false.\n    //Si el showMaskTypedparámetro está habilitado, esta configuración personaliza el carácter utilizado como marcador de posición\n    placeHolderCharacter?: string|null //If the showMaskTyped parameter is enabled, this setting customizes the character used as placeholder. Default value is _.\n    //Puede elegir borrar la entrada si el valor de entrada no coincide con la máscara, el valor predeterminado es false.\n    clearIfNotMatch?: boolean; //You can choose clear the input if the input value not match the mask, default value is false.\n    //Es un array de string que debe incluir los caracteres especiales que se incluyen en el mask por ejemplo ['-','.']\n    specialCharacters?: Array<string>|null //You can define your custom options for all directives (as object in the mask module) or for each (as attributes for directive). \n    //If you override this parameter, you have to provide all the special characters (default one are not included).\n    //Separador de miles\n    thousandSeparator?: string = \"\"\n    //Separador de decimales\n    decimalMarker?:string\n    customPatterns?: any\n    validation?: boolean\n}\n","/*\n * Public API Surface of kif-lib-input\n */\n\nexport * from '../input-currency/input-currency.component';\nexport * from '../input-currency/input-currency.module';\nexport * from './models/mask'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}