{"version":3,"file":"novo-elements-elements-radio.mjs","sources":["../../../projects/novo-elements/src/elements/radio/tokens.ts","../../../projects/novo-elements/src/elements/radio/Radio.ts","../../../projects/novo-elements/src/elements/radio/RadioGroup.ts","../../../projects/novo-elements/src/elements/radio/Radio.module.ts","../../../projects/novo-elements/src/elements/radio/novo-elements-elements-radio.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface RadioGroup<T = any> {\n  name: string;\n  value: T;\n  disabled: boolean;\n  appearance: 'vertical' | 'horizontal';\n}\n\nexport type ComponentType<T> = new (...args: any[]) => T;\n\nexport const NOVO_RADIO_GROUP = new InjectionToken<ComponentType<RadioGroup>>('RadioGroupComponent');\n","// NG2\nimport {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnInit,\n  Optional,\n  Output,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NOVO_RADIO_GROUP, RadioGroup } from './tokens';\n\n// make radio-buttons ids unique\nlet nextId = 0;\n\n// Value accessor for the component (supports ngModel)\nconst RADIO_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoRadioElement),\n  multi: true,\n};\n\n@Component({\n    selector: 'novo-radio',\n    providers: [RADIO_VALUE_ACCESSOR],\n    template: `\n    <input\n      type=\"radio\"\n      [id]=\"id\"\n      [name]=\"name\"\n      [checked]=\"_checked\"\n      [tabIndex]=\"tabindex\"\n      [disabled]=\"disabled\"\n      (focus)=\"focus.emit($event)\"\n      (blur)=\"blur.emit($event)\"\n      (change)=\"_onInputChange($event)\"\n    />\n    <label [attr.for]=\"id\" [class.disabled]=\"disabled\">\n      <novo-button\n        *ngIf=\"button\"\n        [ngClass]=\"{ unchecked: !_checked, checked: _checked, 'has-icon': !!icon }\"\n        [theme]=\"theme\"\n        [color]=\"_checked ? color : null\"\n        [icon]=\"icon\"\n        [size]=\"size\"\n      >\n        {{ label }}\n      </novo-button>\n      <div *ngIf=\"!button\" class=\"novo-radio-button-label\">\n        <i [ngClass]=\"{ 'bhi-radio-empty': !_checked, 'bhi-radio-filled': _checked }\"></i>\n        {{ label }}\n        <ng-content></ng-content>\n      </div>\n    </label>\n  `,\n    styleUrls: ['./Radio.scss'],\n    host: {\n        '[class.vertical]': 'vertical',\n    },\n    standalone: false,\n})\nexport class NovoRadioElement implements ControlValueAccessor, OnInit {\n  private _uniqueId: string = `novo-radio-${++nextId}`;\n  private _value: boolean | string = false;\n  _checked: boolean = false;\n\n  @Input() id: string = this._uniqueId;\n  @Input() name: string = this._uniqueId;\n  @Input() tabindex: number = 0;\n  @Input() vertical: boolean = false;\n  @Input() label: string;\n  @Input() button: boolean = false;\n  @Input() theme: string = 'secondary';\n  @Input() size: string;\n  @Input() icon: string;\n  @Input() color: string;\n  @Input() disabled: boolean;\n\n  @Output() change = new EventEmitter();\n  @Output() blur = new EventEmitter();\n  @Output() focus = new EventEmitter();\n\n  @Input()\n  get checked(): boolean {\n    return this._checked;\n  }\n  set checked(value: boolean) {\n    value = !!value;\n    if (this._checked !== value) {\n      this._checked = value;\n      if (this._checked && this.radioGroup && this.radioGroup.value !== this.value) {\n        this.radioGroup.value = this.value;\n      }\n      this.onChangeCallback(this._value);\n    }\n  }\n\n  @Input()\n  get value(): boolean | string {\n    return this._value;\n  }\n  set value(value) {\n    if (this.value !== value) {\n      this._value = value;\n      if (this.radioGroup) {\n        this._checked = this.radioGroup.value === this.value;\n      }\n      this.onChangeCallback(this._value);\n    }\n  }\n\n  constructor(@Inject(NOVO_RADIO_GROUP) @Optional() public radioGroup: RadioGroup, private ref: ChangeDetectorRef) {\n    this.radioGroup = radioGroup;\n  }\n\n  ngOnInit() {\n    if (this.radioGroup) {\n      this.checked = this.radioGroup.value === this._value;\n      this.vertical = this.radioGroup.appearance === 'vertical';\n      this.name = this.radioGroup.name;\n      this.disabled = this.disabled || this.radioGroup.disabled;\n    }\n  }\n\n  _onInputChange(event: Event) {\n    event.stopPropagation();\n    this.change.emit(event);\n\n    this.checked = true;\n\n    if (this.radioGroup) {\n      this.radioGroup.value = this.value;\n    }\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n    this.ref.markForCheck();\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  private onChangeCallback = (_: any) => {\n    // placeholder\n  };\n\n  private onTouchedCallback = () => {\n    // placeholder\n  };\n\n  setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n  }\n}\n","// NG2\nimport { FocusKeyManager } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n  AfterContentInit,\n  Component,\n  ContentChildren,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  Output,\n  QueryList,\n} from '@angular/core';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { CanUpdateErrorStateCtor, ErrorStateMatcher, mixinErrorState } from 'novo-elements/elements/common';\nimport { NovoFieldControl } from 'novo-elements/elements/field';\nimport { NovoRadioElement } from './Radio';\nimport { NOVO_RADIO_GROUP } from './tokens';\n\n// make radio-button-group ids unique\nlet nextId = 0;\n// Value accessor for the component (supports ngModel)\nconst RADIOGROUP_VALUE_ACCESSOR = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NovoRadioGroup),\n  multi: true,\n};\n\n// Boilerplate for applying mixins\nclass NovoRadioGroupBase {\n  constructor(\n    public _defaultErrorStateMatcher: ErrorStateMatcher,\n    public _parentForm: NgForm,\n    public _parentFormGroup: FormGroupDirective,\n    public ngControl: NgControl,\n  ) {}\n}\nconst NovoRadioGroupMixins: CanUpdateErrorStateCtor & typeof NovoRadioGroupBase = mixinErrorState(NovoRadioGroupBase);\n\n@Component({\n    selector: 'novo-radio-group',\n    providers: [\n        RADIOGROUP_VALUE_ACCESSOR,\n        { provide: NOVO_RADIO_GROUP, useExisting: NovoRadioGroup },\n        { provide: NovoFieldControl, useExisting: NovoRadioGroup },\n    ],\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./radio-group.scss'],\n    host: {\n        class: 'novo-radio-group',\n        '[class.novo-radio-group-appearance-horizontal]': 'appearance==\"horizontal\"',\n        '[class.novo-radio-group-appearance-vertical]': 'appearance==\"vertical\"',\n    },\n    standalone: false,\n})\nexport class NovoRadioGroup extends NovoRadioGroupMixins implements NovoFieldControl<any>, ControlValueAccessor, AfterContentInit {\n  private _uniqueId: string = `novo-radio-group-${++nextId}`;\n  /** The aria-describedby attribute on the chip list for improved a11y. */\n  _ariaDescribedby: string;\n  /** Tab index for the chip list. */\n  _tabIndex = 0;\n  /** User defined tab index. */\n  _userTabIndex: number | null = null;\n  /** The FocusKeyManager which handles focus. */\n  _keyManager: FocusKeyManager<NovoRadioElement>;\n\n  readonly controlType: string = 'radio-group';\n  /** @docs-private Implemented as part of NovoFieldControl. */\n  lastKeyValue: string = null;\n  /** @docs-private Implemented as part of NovoFieldControl.*/\n  lastCaretPosition: number | null;\n\n  @Input() id: string = this._uniqueId;\n  @Input() tabindex: number = 0;\n  /** An object used to control when error messages are shown. */\n  @Input() errorStateMatcher: ErrorStateMatcher;\n\n  @Output() change = new EventEmitter();\n  @Output() blur = new EventEmitter();\n\n  @ContentChildren(forwardRef(() => NovoRadioElement), { descendants: true })\n  _radios: QueryList<NovoRadioElement>;\n\n  @Input()\n  get appearance(): any {\n    return this._appearance;\n  }\n\n  set appearance(value) {\n    if (this._appearance !== value) {\n      this._appearance = value;\n      this._updateRadioButtonAppearance();\n    }\n  }\n\n  @Input() get value(): any {\n    return this._value;\n  }\n\n  set value(value) {\n    if (this._value !== value) {\n      this._value = value;\n      this._updateSelectedRadioFromValue();\n      this.onChangeCallback(this._value);\n    }\n  }\n\n  @Input()\n  get name(): string {\n    return this._name;\n  }\n\n  set name(value: string) {\n    if (this._name !== value) {\n      this._updateRadioButtonNames();\n    }\n  }\n\n  @HostBinding('class.disabled')\n  @Input()\n  get disabled(): boolean {\n    return this.ngControl ? !!this.ngControl.disabled : this._disabled;\n  }\n  set disabled(value: boolean) {\n    this._disabled = coerceBooleanProperty(value);\n    this._updateRadioButtonDisabled();\n  }\n\n  /**\n   * Implemented as part of NovoFieldControl.\n   * @docs-private\n   */\n  @Input()\n  get required(): boolean {\n    return this._required;\n  }\n  set required(value: boolean) {\n    this._required = coerceBooleanProperty(value);\n    this.stateChanges.next();\n  }\n\n  /** Implemented as part of NovoFieldControl. */\n  @Input()\n  get placeholder(): string {\n    return this._placeholder;\n  }\n  set placeholder(value: string) {\n    this._placeholder = value;\n  }\n\n  get selected(): NovoRadioElement {\n    return this._selected;\n  }\n\n  protected _name: string = this._uniqueId;\n  protected _value: boolean = false;\n  protected _selected: NovoRadioElement;\n  protected _required: boolean = false;\n  protected _disabled: boolean = false;\n  protected _placeholder: string;\n  protected _appearance: 'horizontal' | 'vertical' = 'horizontal';\n\n  ngAfterContentInit() {\n    this._updateRadioButtonAppearance();\n    this._updateRadioButtonNames();\n    this._updateSelectedRadioFromValue();\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChangeCallback = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouchedCallback = fn;\n  }\n\n  private onChangeCallback = (_: any) => {\n    // placeholder\n  };\n\n  private onTouchedCallback = () => {\n    // placeholder\n  };\n\n  private _updateRadioButtonAppearance(): void {\n    if (this._radios) {\n      this._radios.forEach((radio) => {\n        radio.vertical = this.appearance === 'vertical';\n      });\n    }\n  }\n\n  private _updateRadioButtonNames(): void {\n    if (this._radios) {\n      this._radios.forEach((radio) => {\n        radio.name = this.name;\n      });\n    }\n  }\n\n  private _updateRadioButtonDisabled(): void {\n    if (this._radios) {\n      this._radios.forEach((radio) => {\n        radio.disabled = this.disabled;\n      });\n    }\n  }\n\n  private _updateSelectedRadioFromValue(): void {\n    if (this._radios) {\n      this._radios.forEach((radio) => {\n        radio.checked = this.value === radio.value;\n        if (radio.checked) {\n          this._selected = radio;\n        }\n      });\n    }\n  }\n\n  /** Whether any radio buttons has focus. */\n  get focused(): boolean {\n    // todo: implement this.\n    return false;\n  }\n\n  /** Implemented as part of NovoFieldControl. */\n  get empty(): boolean {\n    return this.value === null;\n  }\n\n  /** Implemented as part of NovoFieldControl. */\n  get shouldLabelFloat(): boolean {\n    return !this.empty || this.focused;\n  }\n\n  /** Implemented as part of NovoFieldControl. */\n  setDescribedByIds(ids: string[]) {\n    this._ariaDescribedby = ids.join(' ');\n  }\n\n  /** Implemented as part of NovoFieldControl. */\n  onContainerClick(event: MouseEvent) {\n    this.focus();\n  }\n\n  /**\n   * Focuses the first non-disabled chip in this chip list, or the associated input when there\n   * are no eligible chips.\n   */\n  focus(options?: FocusOptions): void {\n    if (this.disabled) {\n      return;\n    }\n    // TODO\n  }\n}\n","// NG2\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoRadioElement } from './Radio';\nimport { NovoRadioGroup } from './RadioGroup';\n\n@NgModule({\n  imports: [CommonModule, NovoButtonModule],\n  declarations: [NovoRadioElement, NovoRadioGroup],\n  exports: [NovoRadioElement, NovoRadioGroup],\n})\nexport class NovoRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}