{"version":3,"file":"radio-selection.mjs","sources":["../../../projects/radio-selection/src/lib/radio-selection.component.ts","../../../projects/radio-selection/src/lib/radio-selection.component.html","../../../projects/radio-selection/src/lib/radio-selection.module.ts","../../../projects/radio-selection/src/public-api.ts","../../../projects/radio-selection/src/radio-selection.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n  selector: 'wav-radio-selection',\n  templateUrl: './radio-selection.component.html',\n  styleUrls: ['./radio-selection.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: RadioSelectionComponent,\n      multi: true,\n    }\n  ]\n})\nexport class RadioSelectionComponent implements OnInit {\n\n  @Input() layout = 'row'\n  @Input() multi = false\n\n  @Input() data: any[]\n\n  @Input() key: string\n  @Input() value: string\n\n  @Output() change = new EventEmitter<string>()\n\n  selectedRadio: string[] = []\n\n  get isArrayOfStrings() {\n    return (this.data.length > 0 && this.isString(this.data[0])) ? true : false\n  }\n\n  constructor() { }\n\n  ngOnInit() {\n\n    if(this.isArrayOfStrings) {\n      const newData: any[] = []\n      this.data.map(item => newData.push({ value: item, disabled: false }))\n      this.data = newData\n      this.key = 'value'\n      this.value = 'value'\n    }\n\n    if(!this.key) this.key = this.value\n\n  }\n\n  onChange = (value: string) => {}\n  onTouch = () => {}\n\n  writeValue(value: string) {\n\n    this.selectedRadio = value.split(',')\n    this.selectedRadio = this.selectedRadio.map((item: any) => (isNaN(item) ? item : parseInt(item)))\n\n    if(!this.multi && this.selectedRadio.length > 0) {\n\n      this.selectedRadio = [this.selectedRadio[0]]\n\n    } else {\n\n      this.data.map(item => {\n        const found = this.selectedRadio.indexOf(item[this.key])\n        if(found) this.selectedRadio.splice(found, 1)\n      })\n\n    }\n\n    this.updateValue()\n  }\n\n  registerOnChange(fn: (value: string) => void) {\n    this.onChange = fn\n  }\n\n  registerOnTouched(fn: () => void) {\n    this.onTouch = fn\n  }\n\n  setDisabledState?(isDisabled: boolean) {\n\n  }\n\n  updateValue() {\n    this.onChange(this.selectedRadio.join(','))\n    this.change.emit(this.selectedRadio.join(','))\n  }\n\n  selectRadio(value: string) {\n\n    if(this.multi) {\n\n      const foundIndex = this.selectedRadio.indexOf(value)\n\n      if(foundIndex >= 0) {\n        this.selectedRadio.splice(foundIndex, 1)\n      } else {\n        this.selectedRadio.push(value)\n      }\n\n    } else {\n      this.selectedRadio = [value]\n    }\n\n    this.updateValue()\n\n  }\n\n  isChecked(key: string) {\n    return (this.selectedRadio.indexOf(key) >= 0) ? true : false\n  }\n\n  isDisabled(key: any) {\n    const found: any = this.data.find((item: any) => item[this.key] === key)\n    return (found) ? found?.disabled : false\n  }\n\n  isString (obj: any) {\n    return (Object.prototype.toString.call(obj) === '[object String]')\n  }\n\n}\n\n","<div style=\"margin-top: 8px;\" fxLayoutGap=\"16px\" [fxLayout]=\"layout\">\n\n  <button\n    mat-stroked-button\n    class=\"border\"\n    fxFlex\n    *ngFor=\"let item of data\"\n    (click)=\"selectRadio(item[key])\"\n    [disabled]=\"isDisabled(item[key])\"\n  >\n  <mat-radio-group>\n    <mat-radio-button\n      [value]=\"item[key]\"\n      [checked]=\"isChecked(item[key])\"\n      [disabled]=\"isDisabled(item[key])\"\n      (click)=\"$event.preventDefault()\"\n      >\n      {{ item[value] }}\n    </mat-radio-button>\n  </mat-radio-group>\n\n  </button>\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { FlexLayoutModule } from '@angular/flex-layout';\n\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { RadioSelectionComponent } from './radio-selection.component';\n\n\n@NgModule({\n  declarations: [\n    RadioSelectionComponent\n  ],\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    FlexLayoutModule,\n    MatButtonModule,\n    MatRadioModule\n  ],\n  exports: [\n    RadioSelectionComponent\n  ]\n})\nexport class RadioSelectionModule { }\n","/*\n * Public API Surface of radio-selection\n */\n\nexport * from './lib/radio-selection.component';\nexport * from './lib/radio-selection.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}