{"version":3,"file":"dshch-rad-ui-checkbox.mjs","sources":["../../../projects/rad-ui/checkbox/checkbox.component.ts","../../../projects/rad-ui/checkbox/checkbox.component.html","../../../projects/rad-ui/checkbox/module.ts","../../../projects/rad-ui/checkbox/dshch-rad-ui-checkbox.ts"],"sourcesContent":["import {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  forwardRef,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';\nimport { ClassListCtor, Element, mixinClassList } from '@dshch/rad-ui/common';\n\nclass CheckboxBase {\n  constructor() {}\n}\n\nexport const CheckboxMixinBase: ClassListCtor & typeof CheckboxBase = mixinClassList(CheckboxBase);\n\n@Component({\n  selector: 'rad-ui-checkbox',\n  templateUrl: './checkbox.component.html',\n  styleUrls: ['./checkbox.component.scss'],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CheckboxComponent),\n      multi: true,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxComponent extends CheckboxMixinBase implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\n  @Input() id: string = '';\n  @Input() override label: string = '';\n  @Input() checkboxLabel = '';\n  @Input() tooltip: string = '';\n  @Input() required = false;\n  @Input() disabled = false;\n  @Input() formControl: FormControl = new FormControl();\n  @Input() errorMessages = {};\n  @Input() wrap = true;\n  @Input() theme: 'green' | 'slide' = 'green';\n  @Input() permit = 'Вкл';\n  @Input() deny = 'Выкл';\n\n  @Input() override inputClassList: string = '';\n  @Input() override labelClassList: string = '';\n  @Input() override wrapClassList: string = '';\n\n  private value: string = '';\n  private unsubscribe$ = new Subject();\n\n  onChange = (value: string) => {};\n\n  onTouched = () => {};\n\n  constructor(private cdr: ChangeDetectorRef) {\n    super();\n  }\n\n  ngOnInit() {\n    if (!this.id) {\n      this.id = Element.generateId();\n    }\n  }\n\n  private initFormControl(): void {\n    // Для асинхронных валидаторов\n    this.formControl.statusChanges.pipe(distinctUntilChanged(), takeUntil(this.unsubscribe$)).subscribe((value) => {\n      if (value === 'VALID' || value === 'INVALID') {\n        this.cdr.detectChanges();\n      }\n    });\n\n    // Переопределяем markAsTouched чтобы запустить обнаружение изменений\n    const oldMarkAsTouched = this.formControl.markAsTouched.bind(this.formControl);\n    this.formControl.markAsTouched = (opts?: { onlySelf?: boolean }) => {\n      oldMarkAsTouched(opts);\n      this.cdr.markForCheck();\n    };\n\n    // Пустая строка => null\n    this.formControl.valueChanges\n      .pipe(\n        filter((value) => value === '' || value === null),\n        takeUntil(this.unsubscribe$),\n      )\n      .subscribe((value) => {\n        if (value === '') {\n          this.formControl.setValue(null);\n        }\n        this.cdr.detectChanges();\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.hasOwnProperty('formControl')) {\n      this.initFormControl();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n  writeValue(value: string): void {\n    if (value !== this.value) {\n      this.value = value;\n      this.onChange(this.value);\n      this.cdr.detectChanges();\n    }\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  getThemeClassList(): { [key: string]: boolean } {\n    const themeClass = 'checkbox-' + this.theme;\n    return {\n      checkbox: true,\n      [themeClass]: true,\n    };\n  }\n}\n","<div [ngClass]=\"getWrapClassList()\">\n  <rad-ui-label\n    *ngIf=\"label\"\n    [id]=\"id\"\n    [label]=\"label\"\n    [required]=\"required\"\n    [tooltip]=\"tooltip\"\n    [ngClass]=\"getLabelClassList()\"\n  ></rad-ui-label>\n\n  <div [ngClass]=\"getInputClassList()\">\n    <input [id]=\"id\" type=\"checkbox\" [ngClass]=\"getThemeClassList()\" [formControl]=\"formControl\" hidden />\n    <label [for]=\"id\" [attr.data-deny]=\"deny\" [attr.data-permit]=\"permit\" [innerHTML]=\"checkboxLabel\"></label>\n    <rad-ui-tooltip *ngIf=\"!label && tooltip\" [description]=\"tooltip\"></rad-ui-tooltip>\n\n    <rad-ui-control-errors\n      [control]=\"formControl\"\n      [touched]=\"formControl.touched\"\n      [errorMessages]=\"errorMessages\"\n    ></rad-ui-control-errors>\n  </div>\n</div>\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { RadUILabelModule } from \"@dshch/rad-ui/label\";\nimport { RadUITooltipModule } from \"@dshch/rad-ui/tooltip\";\nimport { RadUIControlErrorsModule } from \"@dshch/rad-ui/control-errors\";\nimport { CheckboxComponent } from \"./checkbox.component\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n    RadUILabelModule,\n    RadUITooltipModule,\n    RadUIControlErrorsModule,\n  ],\n  exports: [\n    CheckboxComponent,\n  ],\n  declarations: [\n    CheckboxComponent,\n  ],\n})\nexport class RadUICheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}