{"version":3,"file":"pad-ui-lib-checkbox.mjs","sources":["../../../components/checkbox/checkbox.component.ts","../../../components/checkbox/checkbox.component.html","../../../components/checkbox/checkbox.module.ts","../../../components/checkbox/pad-ui-lib-checkbox.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Input,\n  NgZone,\n  OnDestroy,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation,\n  forwardRef,\n  inject,\n} from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { OnChangeType, OnTouchedType, PadSafeAny } from \"pad-ui-lib/core/type\";\nimport { Subject, fromEvent, takeUntil } from \"rxjs\";\n\nlet nextUniqueId = 0;\nexport type PadCheckboxSize = \"sm\" | \"md\";\n@Component({\n  selector: \"pad-checkbox\",\n  exportAs: \"padCheckbox\",\n  templateUrl: \"./checkbox.component.html\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: [\"./checkbox.scss\"],\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => PadCheckboxComponent),\n      multi: true,\n    },\n  ],\n  host: {\n    class: \"pad-checkbox\",\n    \"[class.pad-checkbox-size-sm]\": `padSize === 'sm'`,\n    \"[class.pad-checkbox-size-md]\": `padSize === 'md'`,\n    \"[class.disabled]\": \"disabled\",\n  },\n})\nexport class PadCheckboxComponent implements OnInit, OnDestroy, ControlValueAccessor {\n  // TODO: typing for checkbox value\n  protected readonly cdr = inject(ChangeDetectorRef);\n  protected readonly ngZone = inject(NgZone);\n\n  @ViewChild(\"input\", { static: true }) input!: ElementRef<HTMLInputElement>;\n  @Input() id = `pad-checkbox-${++nextUniqueId}`;\n  @Input() name: string | null = null;\n  @Input() padSize: PadCheckboxSize = \"md\";\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: BooleanInput) {\n    const checked = coerceBooleanProperty(value);\n    if (checked != this.checked) {\n      this._checked = checked;\n      this.cdr.markForCheck();\n    }\n  }\n  private _checked = false;\n\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: BooleanInput) {\n    this._required = coerceBooleanProperty(value);\n  }\n  private _required!: boolean;\n\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: BooleanInput) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this.disabled) {\n      this._disabled = newValue;\n      this.cdr.markForCheck();\n    }\n  }\n  private _disabled = false;\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() readonly change = new EventEmitter<boolean>();\n\n  private _destroy$ = new Subject<void>();\n\n  ngOnInit(): void {\n    this.ngZone.runOutsideAngular(() => {\n      fromEvent(this.input.nativeElement, \"click\")\n        .pipe(takeUntil(this._destroy$))\n        .subscribe(event => {\n          if (this.disabled) {\n            event.preventDefault();\n            return;\n          }\n          this.ngZone.run(() => {\n            this.onChange(!this.checked);\n            this.cdr.markForCheck();\n          });\n        });\n      fromEvent(this.input.nativeElement, \"click\")\n        .pipe(takeUntil(this._destroy$))\n        .subscribe(event => event.stopPropagation());\n    });\n  }\n\n  ngOnDestroy(): void {\n    this._destroy$.next();\n    this._destroy$.subscribe();\n  }\n\n  private _onChanged!: OnChangeType;\n  private _onTouched!: OnTouchedType;\n\n  writeValue(obj: PadSafeAny): void {\n    this._checked = !!obj;\n  }\n  registerOnChange(fn: PadSafeAny): void {\n    this._onChanged = fn;\n  }\n  registerOnTouched(fn: PadSafeAny): void {\n    this._onTouched = fn;\n  }\n\n  toggle() {\n    this.checked = !this.checked;\n    this._onChanged(this.checked);\n  }\n\n  onChange(value: boolean) {\n    if (!this.disabled) {\n      this.checked = value;\n      this._onChanged(value);\n      this.change.next(value);\n    }\n  }\n}\n","<div class=\"pad-checkbox-control\">\n  <input\n    #input\n    type=\"checkbox\"\n    [attr.name]=\"name\"\n    [attr.id]=\"id\"\n    [required]=\"required\"\n    [checked]=\"checked\"\n    [disabled]=\"disabled\" />\n  <div (click)=\"toggle()\" class=\"pad-checkbox-background\">\n    <svg\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 24 24\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\">\n      <path d=\"M20 6L9 17L4 12\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n    </svg>\n  </div>\n</div>\n\n<label class=\"pad-checkbox-text\" [for]=\"id\">\n  <ng-content></ng-content>\n</label>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { PadCheckboxComponent } from \"./checkbox.component\";\n\n@NgModule({\n  declarations: [PadCheckboxComponent],\n  exports: [PadCheckboxComponent],\n  imports: [CommonModule, FormsModule],\n})\nexport class PadCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}