{"version":3,"file":"alyle-ui-radio.mjs","sources":["../../../lib/radio/radio.ts","../../../lib/radio/radio.html","../../../lib/radio/alyle-ui-radio.ts"],"sourcesContent":["import {\n  Component,\n  forwardRef,\n  NgModule,\n  Input,\n  Output,\n  ChangeDetectorRef,\n  OnInit,\n  OnDestroy,\n  ContentChildren,\n  QueryList,\n  Optional,\n  EventEmitter,\n  ChangeDetectionStrategy,\n  NgZone,\n  ViewChild,\n  ElementRef,\n  Renderer2,\n  AfterViewInit\n} from '@angular/core';\nimport {\n  NG_VALUE_ACCESSOR,\n  ControlValueAccessor,\n  FormsModule,\n} from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport {\n  LyCommonModule,\n  LyTheme2,\n  LyCoreStyles,\n  mixinDisableRipple,\n  ThemeVariables,\n  LyFocusState,\n  LY_COMMON_STYLES,\n  st2c,\n  StyleCollection,\n  LyClasses,\n  StyleTemplate,\n  ThemeRef,\n  StyleRenderer } from '@alyle/ui';\nimport { Platform } from '@angular/cdk/platform';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nexport interface LyRadioTheme {\n  /** Styles for Radio Component */\n  root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n    | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyRadioVariables {\n  radio?: LyRadioTheme;\n}\n\nconst STYLE_PRIORITY = -2;\nconst DEFAULT_DISABLE_RIPPLE = false;\nconst DEFAULT_COLOR = 'accent';\n\nexport const LY_RADIO_CONTROL_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => LyRadioGroup),\n  multi: true\n};\n\nlet idx = 0;\n\nexport class UndefinedValue {\n  constructor() { }\n}\n\nexport const STYLES = (theme: ThemeVariables & LyRadioVariables, ref: ThemeRef) => {\n  const radio = ref.selectorsOf(STYLES);\n  const { after, before } = theme;\n  return {\n    $priority: STYLE_PRIORITY,\n    /** ly-radio-group */\n    root: ( ) => (_className: string) => `${_className}{display:inline-block;}${st2c((\n          (theme.radio\n            && theme.radio.root\n            && (theme.radio.root instanceof StyleCollection\n              ? theme.radio.root.setTransformer(fn => fn(radio))\n              : theme.radio.root(radio))\n          )), `${_className}`)}`,\n    radio: ( ) => (_className: string) => `${_className}{display:inline-block;-webkit-tap-highlight-color:transparent;}${_className}${radio.checked} ${radio.container} div:nth-child(1){transform:scale(1.25);}${_className}${radio.checked} ${radio.container} div:nth-child(2){transform:scale(0.8);}${_className}${radio.onFocusByKeyboard} ${radio.container}::after{box-shadow:0 0 0 12px;background:currentColor;opacity:.13;border-radius:50%;}`,\n    label: (_className: string) => `${_className}{user-select:none;cursor:pointer;white-space:nowrap;position:relative;display:flex;align-items:baseline;}`,\n    labelContent: null,\n    container: (_className: string) => `${_className}{position:relative;margin-${before}:.125em;margin-${after}:.5em;margin-top:auto;margin-bottom:auto;width:16px;height:16px;}${_className} div{margin:auto;border-radius:50%;width:1em;height:1em;box-sizing:border-box;}${_className}::after{content:'';}${st2c((LY_COMMON_STYLES.fill), `${_className}::after`)}${_className}::after{width:16px;height:16px;margin:auto;}${_className} div:nth-child(2){background:currentColor;transform:scale(0);}${_className} div:nth-child(1){transform:scale(1);border:solid .08em currentColor;color:${theme.text.disabled};}`,\n    checked: null,\n    _animations: ( ) => (_className: string) => `${_className} ${radio.container} div{transition:transform cubic-bezier(.1,1,0.5,1);transition-duration:250ms;}`,\n    onFocusByKeyboard: null,\n    disabled: ( ) => (_className: string) => `${_className}{color:${theme.disabled.contrast};}${_className} ${radio.container} div{color:${theme.disabled.contrast}!important;}`\n  };\n};\n\n@Component({\n  selector: 'ly-radio-group',\n  template: `<ng-content></ng-content>`,\n  providers: [LY_RADIO_CONTROL_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  exportAs: 'lyRadioGroup',\n  standalone: false\n})\nexport class LyRadioGroup implements ControlValueAccessor {\n  /** @docs-private */\n  static readonly и = 'LyRadioGroup';\n  /** @docs-private */\n  readonly classes = this._theme.renderStyleSheet(STYLES);\n  private _value: any;\n  /** @docs-private */\n  name = `ly-radio-name-${idx++}`;\n\n  @Input()\n  set value(val: any) {\n    if (this._value !== val) {\n      if (this._radios) {\n        this._updateCheckFromValue(val);\n      }\n    }\n  }\n  get value() {\n    return this._value;\n  }\n\n  @Output() readonly change: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input() color = 'accent';\n  @ContentChildren(forwardRef(() => LyRadio)) _radios: QueryList<LyRadio>;\n\n  /** The method to be called in order to update ngModel */\n  _controlValueAccessorChangeFn: (value: any) => void = () => {};\n\n  /**\n   * onTouch function registered via registerOnTouch (ControlValueAccessor).\n   * @docs-private\n   */\n  onTouched: () => any = () => {};\n\n  /**\n   * Mark this group as being \"touched\" (for ngModel). Meant to be called by the contained\n   * radio buttons upon their blur.\n   */\n  _touch() {\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n\n  /** @docs-private */\n  writeValue(value: any) {\n    if (!!this._radios) {\n      this.value = value;\n      this._markForCheck();\n    }\n  }\n\n  /**\n   * Registers a callback to be triggered when the model value changes.\n   * Implemented as part of ControlValueAccessor.\n   * @param fn Callback to be registered.\n   * @docs-private\n   */\n  registerOnChange(fn: (value: any) => void) {\n    this._controlValueAccessorChangeFn = fn;\n  }\n\n  /**\n   * Registers a callback to be triggered when the control is touched.\n   * Implemented as part of ControlValueAccessor.\n   * @param fn Callback to be registered.\n   * @docs-private\n   */\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n\n  /**\n   * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n   * @param _isDisabled Whether the control should be disabled.\n   * @docs-private\n   */\n  setDisabledState(_isDisabled: boolean) {\n    // this.disabled = isDisabled;\n    this._markForCheck();\n  }\n\n  constructor(\n    elementRef: ElementRef,\n    renderer: Renderer2,\n    private _theme: LyTheme2,\n    private _cd: ChangeDetectorRef\n  ) {\n    renderer.addClass(elementRef.nativeElement, this.classes.root);\n  }\n\n  _updateCheckFromValue(val: any) {\n    let newChecked: boolean;\n    this._radios.forEach(radioButton => {\n      if (val === radioButton.value) {\n        this.updatevalue(val);\n        newChecked = true;\n        radioButton.checked = true;\n      } else if (radioButton.checked) {\n        radioButton.checked = false;\n      }\n    });\n    if (!newChecked!) {\n      /** when val not exist in radio button !==  */\n      this._controlValueAccessorChangeFn(null);\n      if (this._value != null) {\n        this._value = null;\n      }\n    }\n  }\n  /** @docs-private */\n  updatevalue(value: any) {\n    this._value = value;\n    this._controlValueAccessorChangeFn(value);\n    this.change.emit();\n    this._markForCheck();\n  }\n\n  _markForCheck() {\n    this._cd.markForCheck();\n  }\n\n  _radioResetChecked() {\n    this._radios.forEach(_ => _._setCheckedToFalsy());\n  }\n\n}\n\n/** @docs-private */\nexport class LyRadioBase {\n  constructor(\n    public _theme: LyTheme2,\n    public _ngZone: NgZone,\n    public _platform: Platform\n  ) { }\n}\n\n/** @docs-private */\nexport const LyRadioMixinBase = mixinDisableRipple(LyRadioBase);\n\n@Component({\n  selector: 'ly-radio',\n  templateUrl: 'radio.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  preserveWhitespaces: false,\n  inputs: [\n    'disableRipple'\n  ],\n  providers: [\n    StyleRenderer\n  ],\n  standalone: false\n})\nexport class LyRadio extends LyRadioMixinBase implements OnInit, AfterViewInit, OnDestroy {\n  /** @docs-private */\n  static readonly и = 'LyRadio';\n  /** @docs-private */\n  readonly classes = this.radioGroup.classes;\n  /** @docs-private */\n  id = `ly-radio-id-${idx++}`;\n  /** @docs-private */\n  name = '';\n  private _value = null;\n  private _checked = false;\n  private _color: string;\n  private _animClass: string;\n  private _disabled: boolean;\n  private _disabledClass?: string;\n  @ViewChild('_input') _input: ElementRef;\n  @ViewChild('_radioContainer') private _radioContainer: ElementRef;\n  @ViewChild('_labelContainer') _labelContainer: ElementRef;\n  @Output() change = new EventEmitter<boolean>();\n\n  @Input()\n  set value(val: any) {\n    if (this._value !== val) {\n      this._value = val;\n    }\n  }\n  get value() { return this._value; }\n\n  @Input()\n  set color(val) {\n    if (this._color !== val) {\n      this._color = val;\n      this[0x1] = this._styleRenderer.add(\n        `${LyRadio.и}--color-${val}`,\n        (theme: ThemeVariables, ref) => {\n          const {\n            checked,\n            container\n          } = ref.selectorsOf(STYLES);\n          return (_className: string) => `${_className}${checked} ${container},${_className}${checked} ${container} div:nth-child(1),${_className} ${container} div:nth-child(2){color:${theme.colorOf(val)};}`;\n        },\n        STYLE_PRIORITY,\n        this[0x1]\n      );\n    }\n  }\n  get color() { return this._color; }\n  [0x1]: string;\n\n  @Input()\n  set checked(val: BooleanInput) {\n    const newCheckedState = coerceBooleanProperty(val);\n    const before = this._checked;\n    if (before !== newCheckedState) {\n      this._checked = newCheckedState;\n      if (!before && newCheckedState) {\n        /** Add class checked */\n        this._renderer.addClass(this._elementRef.nativeElement, this.classes.checked);\n\n        if (this.value !== this.radioGroup.value) {\n          /** update Value */\n          this.radioGroup.updatevalue(this.value);\n        }\n      } else {\n        /** Remove class checked */\n        this._renderer.removeClass(this._elementRef.nativeElement, this.classes.checked);\n      }\n      this._markForCheck();\n    }\n  }\n\n  get checked() {\n    return this._checked;\n  }\n\n  /** @docs-private */\n  get inputId(): string {\n    return `${this.id}-input`;\n  }\n\n  @Input()\n  get disabled(): boolean { return this._disabled; }\n  set disabled(value: BooleanInput) {\n    const newVal = coerceBooleanProperty(value);\n    if (newVal) {\n      this._renderer.addClass(this._elementRef.nativeElement, this.classes.disabled);\n      this._disabledClass = this.classes.disabled;\n    } else if (this._disabledClass) {\n      this._renderer.removeClass(this._elementRef.nativeElement, this.classes.disabled);\n      this._disabledClass = undefined;\n    }\n    this._disabled = coerceBooleanProperty(value);\n    this._markForCheck();\n  }\n\n  constructor(\n    /** @docs-private */\n    @Optional() public radioGroup: LyRadioGroup,\n    private _elementRef: ElementRef,\n    private _renderer: Renderer2,\n    theme: LyTheme2,\n    private changeDetectorRef: ChangeDetectorRef,\n    ngZone: NgZone,\n    public _coreStyles: LyCoreStyles,\n    private _focusState: LyFocusState,\n    private _styleRenderer: StyleRenderer,\n    platform: Platform\n  ) {\n    super(theme, ngZone, platform);\n    this._triggerElement = this._elementRef;\n    this._rippleConfig = {\n      centered: true,\n      radius: 'containerSize',\n      percentageToIncrease: 150\n    };\n    _renderer.addClass(_elementRef.nativeElement, radioGroup.classes.radio);\n  }\n\n  ngOnInit() {\n    if (this.radioGroup) {\n      // Copy name from parent radio group\n      this.name = this.radioGroup.name;\n    }\n    if (!this.color) {\n      this.color = this.radioGroup.color || DEFAULT_COLOR;\n    }\n  }\n\n  ngAfterViewInit() {\n    this._rippleContainer = this._radioContainer;\n\n    // set default disable ripple\n    if (this.disableRipple == null) {\n      this.disableRipple = DEFAULT_DISABLE_RIPPLE;\n    }\n    const focusState = this._focusState.listen(this._input, this._elementRef);\n    if (focusState) {\n      focusState.subscribe((event) => {\n        if (event === 'keyboard') {\n          this._renderer.addClass(this._elementRef.nativeElement, this.classes.onFocusByKeyboard);\n        } else if (event == null) {\n          this._renderer.removeClass(this._elementRef.nativeElement, this.classes.onFocusByKeyboard);\n        }\n      });\n    }\n  }\n\n  _markForCheck() {\n    this.changeDetectorRef.markForCheck();\n  }\n\n  ngOnDestroy() {\n    this._focusState.unlisten(this._elementRef);\n    this._removeRippleEvents();\n  }\n\n  _onInputChange(event: any) {\n    event.stopPropagation();\n    this.radioGroup._updateCheckFromValue(this.value);\n    this.radioGroup._touch();\n    this._addAnim();\n  }\n\n  private _addAnim() {\n    if (!this._animClass) {\n      this._renderer.addClass(this._elementRef.nativeElement, this.classes._animations);\n      this._animClass = this.classes._animations;\n    }\n  }\n\n  _onInputClick(event: Event) { event.stopPropagation(); }\n\n  _setCheckedToFalsy() {\n    this.checked = false;\n  }\n\n}\n\n@NgModule({\n  imports: [CommonModule, FormsModule, LyCommonModule],\n  exports: [LyRadioGroup, LyRadio],\n  declarations: [LyRadioGroup, LyRadio],\n})\nexport class LyRadioModule { }\n","<label #_labelContainer [attr.for]=\"inputId\" [className]=\"classes.label\">\n  <input #_input\n    [className]=\"_coreStyles.classes.visuallyHidden\"\n    [id]=\"inputId\"\n    [checked]=\"checked\"\n    [name]=\"name\"\n    (change)=\"_onInputChange($event)\"\n    (click)=\"_onInputClick($event)\"\n    [disabled]=\"disabled\"\n    type=\"radio\"\n    >\n  <div #_radioContainer [className]=\"classes.container\">\n    <div [className]=\"_coreStyles.classes.fill\"></div>\n    <div [className]=\"_coreStyles.classes.fill\"></div>\n  </div>\n  <div\n  [className]=\"classes.labelContent\">\n    <ng-content></ng-content>\n  </div>\n</label>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}