{"version":3,"file":"ngx-mui-kit-components-muk-chips-input.mjs","sources":["../../../projects/ngx-mui-kit/components/muk-chips-input/src/muk-chips-input.component.ts","../../../projects/ngx-mui-kit/components/muk-chips-input/src/muk-chips-input.component.html","../../../projects/ngx-mui-kit/components/muk-chips-input/ngx-mui-kit-components-muk-chips-input.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { AbstractControl, FormControl, ReactiveFormsModule, UntypedFormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { NgxIntlTelInputModule } from 'ngx-intl-tel-input';\r\nimport { ButtonTypes, IButton } from 'ngx-mui-kit/components/muk-button';\r\nimport { MukButtonComponent } from 'ngx-mui-kit/components/muk-button';\r\nimport { MukValidationMessagesComponent } from 'ngx-mui-kit/components/muk-validation-messages';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@Component({\r\n  selector: 'lib-muk-chips-input',\r\n  standalone: true,\r\n  imports: [\r\n    CommonModule,\r\n    MatInputModule,\r\n    ReactiveFormsModule,\r\n    MatChipsModule,\r\n    MatIconModule,\r\n    NgxIntlTelInputModule,\r\n    MukButtonComponent,\r\n    MukValidationMessagesComponent,\r\n    MatTooltipModule\r\n  ],\r\n  templateUrl: './muk-chips-input.component.html',\r\n  styleUrls: ['./muk-chips-input.component.scss'],\r\n})\r\nexport class MukChipsInputComponent implements OnInit{\r\n  @Input() controller!: FormControl<any>;\r\n  @Input() chipController: FormControl<any> = new FormControl();\r\n  @Input() label!: string;\r\n  @Input() placeholder: string = '';\r\n  @Input() isAutofocus: boolean = false;\r\n  @Input() isRequired: boolean = false;\r\n  @Input() isDisabled: boolean = false;\r\n  @Input() options: any[] = [];\r\n  @Input() isWhiteMode: boolean = false;\r\n  @Input() validators!: ValidatorFn | ValidatorFn[];\r\n  @Input() min: number | string = 0;\r\n  @Input() max: number | string = 100;\r\n  @Output() onChange = new EventEmitter();\r\n\r\n  button:IButton = {\r\n    color: 'accent',\r\n    matType: ButtonTypes.raised,\r\n    text: 'Add',\r\n    buttonType: 'button'\r\n  }\r\n\r\n  ngOnInit(): void{\r\n    this.duplicateController();\r\n  }\r\n\r\n  duplicateController(){\r\n    if(this.validators?.length){\r\n      this.chipController.setValidators(this.validators);\r\n    }\r\n    this.chipController.addValidators(this.alreadyExisted());\r\n    if(this.controller.disabled){\r\n      this.chipController.disable();\r\n    }\r\n    if(this.controller.value && !Array.isArray(this.controller.value)){\r\n      this.controller.setValue([this.controller.value]);\r\n    }\r\n\r\n  }\r\n\r\n  addItem(){\r\n    const VALUE = this.chipController.value;\r\n    const CURRENT_VALUE =  this.controller.value as any;\r\n\r\n    if(VALUE?.length && this.chipController.valid && !CURRENT_VALUE.includes(VALUE)) {\r\n      this.controller.markAsTouched();\r\n      if (!CURRENT_VALUE?.length) {\r\n        this.controller.setValue([VALUE]);\r\n      } else if(CURRENT_VALUE?.length && !Array.isArray(CURRENT_VALUE)){\r\n        this.controller.setValue([CURRENT_VALUE,VALUE]);\r\n      } else if(Array.isArray(CURRENT_VALUE)){\r\n        this.controller.setValue([...CURRENT_VALUE,VALUE]);\r\n      }\r\n      this.onChange.emit(this.controller.value);\r\n      this.chipController.setValue('');\r\n    };\r\n\r\n  }\r\n\r\n  removeItem(index:number){\r\n    this.controller.markAsTouched();\r\n    const CURRENT_VALUE = this.controller.value as Array<any>;\r\n    CURRENT_VALUE.splice(index,1);\r\n    this.controller.setValue(CURRENT_VALUE);\r\n    this.onChange.emit(this.controller.value);\r\n  }\r\n\r\n\r\n  alreadyExisted(): ValidatorFn {\r\n\t\treturn (control: AbstractControl): ValidationErrors | null => {\r\n      if (!control.value) return null;\r\n      const CURRENT_VALUE =  this.controller.value as Array<any>;\r\n\t\t\tconst isExisted = CURRENT_VALUE.includes(control.value);\r\n\t\t\treturn isExisted ? { alreadyExisted: true } : null;\r\n\t\t}\r\n  };\r\n\r\n}\r\n","<div class=\"stc-muk-chips-input\">\r\n  <mat-label class=\"stc-muk-tele-input__label\">{{ label }}</mat-label>\r\n  <div class=\"input-group\">\r\n    <mat-form-field class=\"stc-input w-100 my-2\" [ngClass]=\"isWhiteMode ? 'stc-bg-white' : 'stc-bg-gray'\">\r\n      <input\r\n        [autofocus]=\"isAutofocus\"\r\n        [formControl]=\"chipController\"\r\n        [placeholder]=\"placeholder\"\r\n        type=\"text\"\r\n        (change)=\"onChange.emit($event)\"\r\n        [required]=\"isRequired\"\r\n        [attr.disabled]=\"isDisabled\"\r\n        matInput\r\n        [min]=\"min\"\r\n        [max]=\"max\"\r\n        (keydown.enter)=\"addItem()\"\r\n      />\r\n    </mat-form-field>\r\n    <lib-muk-button\r\n      (clicked)=\"addItem()\"\r\n      [class]=\"'mx-1'\"\r\n      [color]=\"button.color\"\r\n      [icon]=\"button.icon\"\r\n      [matType]=\"button.matType\"\r\n      [text]=\"button.text\"\r\n      [type]=\"button.buttonType\"\r\n      [disabled]=\"chipController.disabled! || chipController.invalid!\"\r\n    ></lib-muk-button>\r\n  </div>\r\n</div>\r\n<lib-muk-validation-messages [errors]=\"{alreadyExisted: 'Already existed'}\" [controller]=\"chipController\"></lib-muk-validation-messages>\r\n<div class=\"w-100\">\r\n  <ng-container *ngIf=\"controller?.value && controller?.value?.length\">\r\n    <mat-chip-row\r\n      *ngFor=\"let item of controller?.value; let i = index\"\r\n      (removed)=\"removeItem(i)\"\r\n      [editable]=\"false\"\r\n      [matTooltip]=\"item\">\r\n      {{ item }}\r\n      <button matChipRemove [disabled]=\"chipController.disabled\" [attr.aria-label]=\"'remove ' + item\">\r\n        <mat-icon>close</mat-icon>\r\n      </button>\r\n    </mat-chip-row>\r\n  </ng-container>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}