{"version":3,"file":"tableau-ui-angular-checkbox.mjs","sources":["../../../projects/component-library/checkbox/src/checkbox.component.ts","../../../projects/component-library/checkbox/src/checkbox.component.html","../../../projects/component-library/checkbox/src/tableau-ui-checkbox.module.ts","../../../projects/component-library/checkbox/src/tableau-ui-angular-checkbox.ts"],"sourcesContent":["import type { Signal } from '@angular/core';\nimport { ChangeDetectionStrategy, Component, contentChild, forwardRef, input, model } from '@angular/core';\nimport type { ControlValueAccessor } from '@angular/forms';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ErrorComponent, HintComponent } from 'tableau-ui-angular/common';\nimport { generateRandomString } from 'tableau-ui-angular/utils';\n@Component({\n  selector: 'tab-checkbox',\n  standalone: false,\n  templateUrl: './checkbox.component.html',\n  styleUrl: '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  host: {\n    class: 'checkbox',\n    '[class.disabled]': '$disabled()',\n    '[class.checked]': '$value() === true',\n    '[class.partial]': '$value() === \"partial\"',\n    '[class.loading]': '$loading()',\n    '(click)': 'toggleValue()',\n  },\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n  /**\n   * The disabled state of the checkbox.\n   * For forms, disable the form field instead of using this property.\n   */\n  readonly $disabled = model(false, {\n    alias: 'disabled',\n  });\n  /**\n   * The value of the checkbox.\n   * - `true`: Checkbox is checked\n   * - `false`: Checkbox is unchecked\n   * - `'partial'`: Checkbox is in a partial state (e.g., indeterminate)\n   */\n  readonly $value = model<boolean | 'partial'>(false, {\n    alias: 'value',\n  });\n  /**\n   * The loading state of the checkbox.\n   * This can be used to indicate that the checkbox is in a loading state, e.g., when data is being fetched.\n   */\n  readonly $loading = input(false, {\n    alias: 'loading',\n  });\n\n  /**\n   * The value to set when the checkbox is in a partial state and is clicked.\n   */\n  readonly $valueAfterPartial = input<boolean>(false, {\n    alias: 'valueAfterPartial',\n  });\n\n  /**\n   * The id of the checkbox form field for autocomplete\n   */\n  readonly $id = input<string | undefined>(generateRandomString(), {\n    alias: 'id',\n  });\n  /**\n   * The name of the checkbox form field for autocomplete\n   */\n  readonly $name = input<string | undefined>('', {\n    alias: 'name',\n  });\n  /**\n   * The autocomplete attribute of the checkbox form field\n   *  * @default 'off'\n   */\n  readonly $autocomplete = input<AutoFill>('off', {\n    alias: 'autocomplete',\n  });\n\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  protected readonly $hintElement: Signal<HintComponent | undefined> = contentChild(HintComponent);\n  // nullable Signal type needs to be set explicitly -> ng-packagr strips nullability\n  protected readonly $errorElement: Signal<ErrorComponent | undefined> = contentChild(ErrorComponent);\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n  onChange = (value: boolean) => {};\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onTouched = () => {};\n  writeValue(value: boolean): void {\n    this.$value.set(value);\n  }\n  registerOnChange(fn: (value: boolean) => void): void {\n    this.onChange = fn;\n  }\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n  setDisabledState(isDisabled: boolean): void {\n    this.$disabled.set(isDisabled);\n  }\n  toggleValue() {\n    if (!this.$disabled() && !this.$loading()) {\n      let val = this.$value();\n      if (val === 'partial') {\n        val = this.$valueAfterPartial();\n      } else {\n        val = !val;\n      }\n      this.$value.set(val);\n      this.onChange(val);\n\n      this.onTouched();\n    }\n  }\n\n  onKeyDown(e: KeyboardEvent) {\n    switch (e.key) {\n      case 'Enter':\n      case ' ':\n        this.toggleValue();\n        e.preventDefault();\n        break;\n      default:\n        return;\n    }\n  }\n}\n","<input\n  type=\"checkbox\"\n  [attr.id]=\"$id()\"\n  [attr.name]=\"$name() ?? ''\"\n  [autocomplete]=\"$autocomplete()\"\n  [value]=\"$value()\"\n  [checked]=\"$value()\"\n  [tabindex]=\"$disabled() ? -1 : 0\"\n  (change)=\"toggleValue()\"\n  (keydown)=\"onKeyDown($event)\"\n/>\n\n@if ($loading()) {\n  <tab-loading-gif width=\"1.2rem\" height=\"1.2rem\" />\n} @else {\n  <div class=\"box\">\n    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 12\">\n      <path fill=\"currentColor\" transform=\"translate(-2, -2)\" d=\"M7.2 12.3c-.2 0-.4-.1-.5-.2l-3-3L4.8 8l2.3 2.3 4-6.7 1.3.8L7.9 12c-.2.2-.4.3-.7.3z\" />\n    </svg>\n    <div class=\"partial\"></div>\n  </div>\n}\n\n<div class=\"label\">\n  <ng-content />\n</div>\n\n@if ($hintElement() || $errorElement()) {\n  <div class=\"extra-info\">\n    @if ($hintElement() && !$errorElement()) {\n      <ng-content select=\"tab-hint\" />\n    }\n    @if ($errorElement()) {\n      <ng-content select=\"tab-error\" />\n    }\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport { CheckboxComponent } from './checkbox.component';\nimport { CommonModule } from '@angular/common';\nimport { TableauUiCommonModule } from 'tableau-ui-angular/common';\n\n@NgModule({\n  imports: [CommonModule, TableauUiCommonModule],\n  declarations: [CheckboxComponent],\n  exports: [CheckboxComponent],\n})\nexport class TableauUiCheckboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}