{"version":3,"file":"checkbox.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/checkbox/checkbox-config.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/checkbox/checkbox.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/checkbox/checkbox.html","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/src/angular/checkbox/checkbox.module.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\n/** Default `sbb-checkbox` options that can be overridden. */\nexport interface SbbCheckboxDefaultOptions {\n  clickAction?: SbbCheckboxClickAction;\n}\n\n/** Injection token to be used to override the default options for `sbb-checkbox`. */\nexport const SBB_CHECKBOX_DEFAULT_OPTIONS = new InjectionToken<SbbCheckboxDefaultOptions>(\n  'sbb-checkbox-default-options',\n  {\n    providedIn: 'root',\n    factory: SBB_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\n  },\n);\n\n/** @docs-private */\nexport function SBB_CHECKBOX_DEFAULT_OPTIONS_FACTORY(): SbbCheckboxDefaultOptions {\n  return {\n    clickAction: 'check-indeterminate',\n  };\n}\n\n/**\n * Checkbox click action when user click on input element.\n * noop: Do not toggle checked or indeterminate.\n * check: Only toggle checked status, ignore indeterminate.\n * check-indeterminate: Toggle checked status, set indeterminate to false. Default behavior.\n * undefined: Same as `check-indeterminate`.\n */\nexport type SbbCheckboxClickAction = 'noop' | 'check' | 'check-indeterminate' | undefined;\n","import { FocusableOption, FocusMonitor, FocusOrigin, _IdGenerator } from '@angular/cdk/a11y';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n  AfterViewInit,\n  booleanAttribute,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostAttributeToken,\n  inject,\n  Input,\n  numberAttribute,\n  OnChanges,\n  OnDestroy,\n  Output,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n} from '@angular/forms';\n\nimport {\n  SbbCheckboxDefaultOptions,\n  SBB_CHECKBOX_DEFAULT_OPTIONS,\n  SBB_CHECKBOX_DEFAULT_OPTIONS_FACTORY,\n} from './checkbox-config';\n\n// Default checkbox configuration.\nconst defaults = SBB_CHECKBOX_DEFAULT_OPTIONS_FACTORY();\n\n/** Change event object emitted by SbbCheckbox. */\nexport class SbbCheckboxChange {\n  /** The source SbbCheckbox of the event. */\n  source!: SbbCheckbox;\n  /** The new `checked` value of the checkbox. */\n  checked: boolean = false;\n}\n\n/**\n * An SBB design checkbox component. Supports all the functionality of an HTML5 checkbox,\n * and exposes a similar API. A SbbCheckbox can be either checked, unchecked, indeterminate, or\n * disabled. Note that all additional accessibility attributes are taken care of by the component,\n * so there is no need to provide them yourself. However, if you want to omit a label and still\n * have the checkbox be accessible, you may supply an [aria-label] input.\n */\n@Component({\n  selector: 'sbb-checkbox',\n  templateUrl: './checkbox.html',\n  exportAs: 'sbbCheckbox',\n  host: {\n    class: 'sbb-checkbox sbb-selection-item',\n    '[id]': 'id',\n    '[attr.tabindex]': 'null',\n    '[attr.aria-label]': 'null',\n    '[attr.aria-labelledby]': 'null',\n    '[class.sbb-selection-indeterminate]': 'indeterminate',\n    '[class.sbb-selection-checked]': 'checked',\n    '[class.sbb-selection-disabled]': 'disabled',\n  },\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SbbCheckbox),\n      multi: true,\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: SbbCheckbox,\n      multi: true,\n    },\n  ],\n  inputs: ['tabIndex'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  imports: [CdkObserveContent],\n})\n// tslint:disable-next-line: naming-convention class-name\nexport class SbbCheckbox\n  implements ControlValueAccessor, AfterViewInit, OnDestroy, OnChanges, Validator, FocusableOption\n{\n  private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n  protected _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n  private _focusMonitor = inject(FocusMonitor);\n  private _options = inject<SbbCheckboxDefaultOptions>(SBB_CHECKBOX_DEFAULT_OPTIONS, {\n    optional: true,\n  });\n\n  /**\n   * Attached to the aria-label attribute of the host element. In most cases, aria-labelledby will\n   * take precedence so this may be omitted.\n   */\n  @Input('aria-label') ariaLabel: string = '';\n\n  /**\n   * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\n   */\n  @Input('aria-labelledby') ariaLabelledby: string | null = null;\n\n  /** The 'aria-describedby' attribute is read after the element's label and field type. */\n  @Input('aria-describedby') ariaDescribedby!: string;\n\n  /**\n   * Users can specify the `aria-expanded` attribute which will be forwarded to the input element\n   */\n  @Input({ alias: 'aria-expanded', transform: booleanAttribute }) ariaExpanded!: boolean;\n\n  /**\n   * Users can specify the `aria-controls` attribute which will be forwarded to the input element\n   */\n  @Input('aria-controls') ariaControls!: string;\n\n  /** Users can specify the `aria-owns` attribute which will be forwarded to the input element */\n  @Input('aria-owns') ariaOwns!: string;\n\n  private _uniqueId = inject(_IdGenerator).getId('sbb-checkbox-');\n\n  /** A unique id for the checkbox input. If none is supplied, it will be auto-generated. */\n  @Input() id: string = this._uniqueId;\n\n  /** Returns the unique id for the visual hidden input. */\n  get inputId(): string {\n    return `${this.id || this._uniqueId}-input`;\n  }\n\n  /** Whether the checkbox is required. */\n  @Input({ transform: booleanAttribute }) required!: boolean;\n\n  /** Whether the label should appear after or before the checkbox. Defaults to 'after' */\n  @Input() labelPosition: 'before' | 'after' = 'after';\n\n  /** Name value will be applied to the input element if present */\n  @Input() name: string | null = null;\n\n  /** Tabindex for the checkbox. */\n  @Input({ transform: (value: unknown) => (value == null ? undefined : numberAttribute(value)) })\n  tabIndex: number;\n\n  /** Event emitted when the checkbox's `checked` value changes. */\n  @Output()\n  readonly change: EventEmitter<SbbCheckboxChange> = new EventEmitter<SbbCheckboxChange>();\n\n  /** Event emitted when the checkbox's `indeterminate` value changes. */\n  @Output() readonly indeterminateChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n  /** The value attribute of the native input element */\n  @Input() value!: string;\n\n  /** The native `<input type=\"checkbox\">` element */\n  @ViewChild('input') _inputElement!: ElementRef<HTMLInputElement>;\n\n  /**\n   * Called when the checkbox is blurred. Needed to properly implement ControlValueAccessor.\n   * @docs-private\n   */\n  _onTouched: () => any = () => {};\n\n  private _controlValueAccessorChangeFn: (value: any) => void = () => {};\n  private _validatorChangeFn = () => {};\n\n  constructor(...args: unknown[]);\n  constructor() {\n    const tabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });\n    this._options = this._options || defaults;\n    this.tabIndex = tabIndex == null ? 0 : parseInt(tabIndex, 10) || 0;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes['required']) {\n      this._validatorChangeFn();\n    }\n  }\n\n  ngAfterViewInit() {\n    this._focusMonitor.monitor(this._elementRef, true).subscribe((focusOrigin) => {\n      if (!focusOrigin) {\n        // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n        // Angular does not expect events to be raised during change detection, so any state change\n        // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n        // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n        // telling the form control it has been touched until the next tick.\n        Promise.resolve().then(() => {\n          this._onTouched();\n          this._changeDetectorRef.markForCheck();\n        });\n      }\n    });\n\n    this._syncIndeterminate(this._indeterminate);\n  }\n\n  ngOnDestroy() {\n    this._focusMonitor.stopMonitoring(this._elementRef);\n  }\n\n  /**\n   * Whether the checkbox is checked.\n   */\n  @Input({ transform: booleanAttribute })\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    if (value !== this.checked) {\n      this._checked = value;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n  private _checked: boolean = false;\n\n  /**\n   * Whether the checkbox is disabled. This fully overrides the implementation provided by the input.\n   */\n  @Input({ transform: booleanAttribute })\n  get disabled(): boolean {\n    return this._disabled;\n  }\n  set disabled(value: boolean) {\n    if (value !== this.disabled) {\n      this._disabled = value;\n      this._changeDetectorRef.markForCheck();\n    }\n  }\n  private _disabled: boolean = false;\n\n  /**\n   * Whether the checkbox is indeterminate. This is also known as \"mixed\" mode and can be used to\n   * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n   * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n   * set to false.\n   */\n  @Input({ transform: booleanAttribute })\n  get indeterminate(): boolean {\n    return this._indeterminate;\n  }\n  set indeterminate(value: boolean) {\n    const changed = value !== this._indeterminate;\n    this._indeterminate = value;\n\n    if (changed) {\n      this.indeterminateChange.emit(this._indeterminate);\n    }\n\n    this._syncIndeterminate(this._indeterminate);\n  }\n  private _indeterminate: boolean = false;\n\n  /** Method being called whenever the label text changes. */\n  _onLabelTextChange() {\n    // Since the event of the `cdkObserveContent` directive runs outside of the zone, the checkbox\n    // component will be only marked for check, but no actual change detection runs automatically.\n    // Instead of going back into the zone in order to trigger a change detection which causes\n    // *all* components to be checked (if explicitly marked or not using OnPush), we only trigger\n    // an explicit change detection for the checkbox view and its children.\n    this._changeDetectorRef.detectChanges();\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: any) {\n    this.checked = !!value;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void) {\n    this._controlValueAccessorChangeFn = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: any) {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean) {\n    this.disabled = isDisabled;\n  }\n\n  // Implemented as a part of Validator.\n  validate(control: AbstractControl<boolean>): ValidationErrors | null {\n    return this.required && control.value !== true ? { required: true } : null;\n  }\n\n  // Implemented as a part of Validator.\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorChangeFn = fn;\n  }\n\n  protected _emitChangeEvent() {\n    const event = new SbbCheckboxChange();\n    event.source = this;\n    event.checked = this.checked;\n\n    this._controlValueAccessorChangeFn(this.checked);\n    this.change.emit(event);\n  }\n\n  /** Toggles the `checked` state of the checkbox. */\n  toggle(): void {\n    this.checked = !this.checked;\n    this._controlValueAccessorChangeFn(this.checked);\n  }\n\n  /**\n   * Event handler for checkbox input element.\n   * Toggles checked state if element is not disabled.\n   * Do not toggle on (change) event since IE doesn't fire change event when\n   *   indeterminate checkbox is clicked.\n   */\n  _onInputClick(event: Event) {\n    const clickAction = this._options?.clickAction;\n\n    // We have to stop propagation for click events on the visual hidden input element.\n    // By default, when a user clicks on a label element, a generated click event will be\n    // dispatched on the associated input element. Since we are using a label element as our\n    // root container, the click event on the `checkbox` will be executed twice.\n    // The real click event will bubble up, and the generated click event also tries to bubble up.\n    // This will lead to multiple click events.\n    // Preventing bubbling for the second event will solve that issue.\n    event.stopPropagation();\n\n    // If resetIndeterminate is false, and the current state is indeterminate, do nothing on click\n    if (!this.disabled && clickAction !== 'noop') {\n      // When user manually click on the checkbox, `indeterminate` is set to false.\n      if (this.indeterminate && clickAction !== 'check') {\n        Promise.resolve().then(() => {\n          this._indeterminate = false;\n          this.indeterminateChange.emit(this._indeterminate);\n        });\n      }\n\n      this._checked = !this._checked;\n\n      // Emit our custom change event if the native input emitted one.\n      // It is important to only emit it, if the native input triggered one, because\n      // we don't want to trigger a change event, when the `checked` variable changes for example.\n      this._emitChangeEvent();\n    } else if (!this.disabled && clickAction === 'noop') {\n      // Reset native input when clicked with noop. The native checkbox becomes checked after\n      // click, reset it to be align with `checked` value of `sbb-checkbox`.\n      this._inputElement.nativeElement.checked = this.checked;\n      this._inputElement.nativeElement.indeterminate = this.indeterminate;\n    }\n  }\n\n  /** Focuses the checkbox. */\n  focus(origin?: FocusOrigin, options?: FocusOptions): void {\n    if (origin) {\n      this._focusMonitor.focusVia(this._inputElement, origin, options);\n    } else {\n      this._inputElement.nativeElement.focus(options);\n    }\n  }\n\n  _onInteractionEvent(event: Event) {\n    // We always have to stop propagation on the change event.\n    // Otherwise the change event, from the input element, will bubble up and\n    // emit its event object to the `change` output.\n    event.stopPropagation();\n  }\n\n  /**\n   * Syncs the indeterminate value with the checkbox DOM node.\n   *\n   * We sync `indeterminate` directly on the DOM node, because in Ivy the check for whether a\n   * property is supported on an element boils down to `if (propName in element)`. Domino's\n   * HTMLInputElement doesn't have an `indeterminate` property so Ivy will warn during\n   * server-side rendering.\n   */\n  private _syncIndeterminate(value: boolean) {\n    const nativeCheckbox = this._inputElement;\n\n    if (nativeCheckbox) {\n      nativeCheckbox.nativeElement.indeterminate = value;\n    }\n  }\n}\n","<label [attr.for]=\"inputId\" class=\"sbb-selection-item-label\">\n  <input\n    #input\n    type=\"checkbox\"\n    class=\"cdk-visually-hidden sbb-selection-input sbb-checkbox-input sbb-transparent-parent-overlay\"\n    [id]=\"inputId\"\n    [indeterminate]=\"indeterminate\"\n    [required]=\"required\"\n    [checked]=\"checked\"\n    [attr.value]=\"value\"\n    [disabled]=\"disabled\"\n    [attr.name]=\"name\"\n    [tabIndex]=\"disabled ? -1 : tabIndex\"\n    [attr.aria-expanded]=\"ariaExpanded\"\n    [attr.aria-label]=\"ariaLabel || null\"\n    [attr.aria-labelledby]=\"ariaLabelledby\"\n    [attr.aria-describedby]=\"ariaDescribedby\"\n    [attr.aria-checked]=\"indeterminate ? 'mixed' : null\"\n    [attr.aria-controls]=\"ariaControls\"\n    [attr.aria-owns]=\"ariaOwns\"\n    (change)=\"_onInteractionEvent($event)\"\n    (click)=\"_onInputClick($event)\"\n  />\n\n  <div class=\"sbb-selection-container\">\n    <span class=\"sbb-selection-container-checked\">\n      <svg\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width=\"24\"\n        height=\"24\"\n        viewBox=\"0 0 24 24\"\n        focusable=\"false\"\n      >\n        <polyline\n          fill=\"none\"\n          fill-rule=\"evenodd\"\n          stroke=\"#000\"\n          stroke-width=\"1\"\n          points=\"6 12 10 16 19 7.01\"\n        />\n      </svg>\n    </span>\n  </div>\n\n  <div class=\"sbb-selection-content\" (cdkObserveContent)=\"_onLabelTextChange()\">\n    <!-- Add an invisible span so JAWS can read the label -->\n    <span hidden>&nbsp;</span>\n    <ng-content></ng-content>\n  </div>\n</label>\n","import { ObserversModule } from '@angular/cdk/observers';\nimport { NgModule } from '@angular/core';\nimport { SbbCommonModule } from '@sbb-esta/angular/core';\n\nimport { SbbCheckbox } from './checkbox';\n\n@NgModule({\n  imports: [ObserversModule, SbbCommonModule, SbbCheckbox],\n  exports: [SbbCheckbox],\n})\nexport class SbbCheckboxModule {}\n"],"names":[],"mappings":"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"}