{"version":3,"file":"novo-elements-elements-switch.mjs","sources":["../../../projects/novo-elements/src/elements/switch/Switch.ts","../../../projects/novo-elements/src/elements/switch/Switch.module.ts","../../../projects/novo-elements/src/elements/switch/novo-elements-elements-switch.ts"],"sourcesContent":["// NG2\nimport { ChangeDetectorRef, Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BooleanInput, Key } from 'novo-elements/utils';\n\n// Value accessor for the component (supports ngModel)\nconst SWITCH_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoSwitchElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-switch',\n    providers: [SWITCH_VALUE_ACCESSOR],\n    template: `\n    <div (click)=\"toggle($event)\">\n      <div class=\"novo-switch-container\">\n        <div class=\"novo-switch-bar\"></div>\n        <div class=\"novo-switch-thumb-container\">\n          <div class=\"novo-switch-thumb\">\n            <novo-icon *ngIf=\"!value\" smaller>{{ icons[0] }}</novo-icon>\n            <novo-icon *ngIf=\"value\" smaller>{{ icons[1] }}</novo-icon>\n          </div>\n        </div>\n      </div>\n      <div class=\"novo-switch-label\"><ng-content></ng-content></div>\n    </div>\n  `,\n    styleUrls: ['./Switch.scss'],\n    host: {\n        role: 'checkbox',\n        class: 'novo-switch',\n        '[attr.aria-checked]': 'value',\n        '[attr.aria-disabled]': 'disabled',\n        '(keydown)': 'onKeydown($event)',\n        '[class]': 'theme',\n    },\n    standalone: false,\n})\nexport class NovoSwitchElement implements ControlValueAccessor {\n  @Input()\n  theme: string = 'ocean';\n\n  @Input()\n  icons: [string, string] = ['x', 'check'];\n\n  @Input()\n  @BooleanInput()\n  @HostBinding('class.novo-switch-disabled')\n  disabled: boolean = false;\n\n  @Output()\n  onChange: EventEmitter<any> = new EventEmitter();\n\n  private _value: boolean;\n  public get value(): boolean {\n    return this._value;\n  }\n  public set value(value: boolean) {\n    this._value = value;\n  }\n  onModelChange: Function = () => {};\n  onModelTouched: Function = () => {};\n\n  constructor(private ref: ChangeDetectorRef) {}\n\n  onKeydown(event: KeyboardEvent) {\n    if (event.key === Key.Space) {\n      event.preventDefault();\n      this.toggle(event);\n    }\n  }\n\n  toggle(event) {\n    if (event) {\n      event.stopPropagation();\n      event.preventDefault();\n    }\n\n    if (this.disabled) {\n      return;\n    }\n\n    this.value = !this.value;\n    this.onChange.next(this.value);\n    this.onModelChange(this.value);\n    this.ref.markForCheck();\n  }\n\n  writeValue(model: boolean): void {\n    this.value = model;\n    this.ref.markForCheck();\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NovoIconModule } from 'novo-elements/elements/icon';\nimport { NovoSwitchElement } from './Switch';\n\n@NgModule({\n  imports: [CommonModule, FormsModule, NovoIconModule],\n  declarations: [NovoSwitchElement],\n  exports: [NovoSwitchElement],\n})\nexport class NovoSwitchModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}