{"version":3,"file":"ngx-bootstrap-buttons.mjs","sources":["../../../../src/buttons/button-checkbox.directive.ts","../../../../src/buttons/button-radio.directive.ts","../../../../src/buttons/button-radio-group.directive.ts","../../../../src/buttons/buttons.module.ts","../../../../src/buttons/ngx-bootstrap-buttons.ts"],"sourcesContent":["import {\n  Directive,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Input,\n  OnInit,\n  Provider\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n// TODO: config: activeClass - Class to apply to the checked buttons\nexport const CHECKBOX_CONTROL_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => ButtonCheckboxDirective),\n  multi: true\n};\n\ntype AvailableValues = boolean | string | number;\n\n/**\n * Add checkbox functionality to any element\n */\n@Directive({\n    selector: '[btnCheckbox]',\n    providers: [CHECKBOX_CONTROL_VALUE_ACCESSOR],\n    standalone: true\n})\nexport class ButtonCheckboxDirective implements ControlValueAccessor, OnInit {\n  /** Truthy value, will be set to ngModel */\n  @Input() btnCheckboxTrue:AvailableValues = true;\n  /** Falsy value, will be set to ngModel */\n  @Input() btnCheckboxFalse:AvailableValues = false;\n\n  @HostBinding('class.active')\n  @HostBinding('attr.aria-pressed')\n  state = false;\n\n  protected value?: AvailableValues;\n  protected isDisabled = false;\n\n  protected onChange = Function.prototype;\n  protected onTouched = Function.prototype;\n\n  // view -> model\n  @HostListener('click')\n  onClick(): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    this.toggle(!this.state);\n    this.onChange(this.value);\n  }\n\n  ngOnInit(): void {\n    this.toggle(this.trueValue === this.value);\n  }\n\n  protected get trueValue(): AvailableValues {\n    return typeof this.btnCheckboxTrue !== 'undefined'\n      ? this.btnCheckboxTrue\n      : true;\n  }\n\n  protected get falseValue(): AvailableValues {\n    return typeof this.btnCheckboxFalse !== 'undefined'\n      ? this.btnCheckboxFalse\n      : false;\n  }\n\n  toggle(state: boolean): void {\n    this.state = state;\n    this.value = this.state ? this.trueValue : this.falseValue;\n  }\n\n  // ControlValueAccessor\n  // model -> view\n  writeValue(value: boolean | string | null): void {\n    this.state = this.trueValue === value;\n    this.value = value ? this.trueValue : this.falseValue;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.isDisabled = isDisabled;\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  ElementRef,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Input,\n  OnChanges,\n  Optional,\n  Provider,\n  Renderer2,\n  SimpleChanges\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\n\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => ButtonRadioDirective),\n  multi: true\n};\n\n/**\n * Create radio buttons or groups of buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\n@Directive({\n    selector: '[btnRadio]',\n    providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n    standalone: true\n})\nexport class ButtonRadioDirective implements ControlValueAccessor, OnChanges {\n  onChange = Function.prototype;\n  onTouched = Function.prototype;\n\n  /** Radio button value, will be set to `ngModel` */\n  @Input() btnRadio?: unknown;\n  /** If `true` — radio button can be unchecked */\n  @Input() uncheckable = false;\n  /** Current value of radio component or group */\n  @Input()\n  get value() {\n    return this.group ? this.group.value : this._value;\n  }\n\n  set value(value: unknown | undefined) {\n    if (this.group) {\n      this.group.value = value;\n\n      return;\n    }\n    this._value = value;\n    this._onChange(value);\n  }\n  /** If `true` — radio button is disabled */\n  @Input()\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  set disabled(disabled: boolean) {\n    this.setDisabledState(disabled);\n  }\n\n  @HostBinding('attr.aria-disabled')\n  get controlOrGroupDisabled() {\n    return this.disabled || (this.group && this.group.disabled) ? true : undefined;\n  }\n\n  @HostBinding('class.disabled')\n  get hasDisabledClass() {\n    // Although the radio is disabled the active radio should still stand out.\n    // The disabled class will prevent this so don't add it on the active radio\n    return this.controlOrGroupDisabled && !this.isActive;\n  }\n\n  @HostBinding('class.active')\n  @HostBinding('attr.aria-checked')\n  get isActive(): boolean {\n    return this.btnRadio === this.value;\n  }\n\n  @HostBinding('attr.role') readonly role: string = 'radio';\n\n  @HostBinding('attr.tabindex')\n  get tabindex(): undefined | number {\n    if (this.controlOrGroupDisabled) {\n      // Disabled radio buttons should not receive focus\n      return undefined;\n    } else if (this.isActive || this.group == null) {\n      return 0;\n    } else {\n      return -1;\n    }\n  }\n\n  get hasFocus(): boolean {\n    return this._hasFocus;\n  }\n\n  private _value?: unknown;\n  private _disabled = false;\n  private _hasFocus = false;\n\n  constructor(\n    private el: ElementRef,\n    private cdr: ChangeDetectorRef,\n    private renderer: Renderer2,\n    @Optional()\n    @Inject(forwardRef(() => ButtonRadioGroupDirective))\n    private group: ButtonRadioGroupDirective\n  ) {}\n\n  @HostListener('click')\n  toggleIfAllowed(): void {\n    if (!this.canToggle()) {\n      return;\n    }\n\n    if (this.uncheckable && this.btnRadio === this.value) {\n      this.value = undefined;\n    } else {\n      this.value = this.btnRadio;\n    }\n  }\n\n  @HostListener('keydown.space', ['$event'])\n  onSpacePressed(event: KeyboardEvent) {\n    this.toggleIfAllowed();\n    event.preventDefault();\n  }\n\n  focus() {\n    this.el.nativeElement.focus();\n  }\n\n  @HostListener('focus')\n  onFocus() {\n    this._hasFocus = true;\n  }\n\n  @HostListener('blur')\n  onBlur() {\n    this._hasFocus = false;\n    this.onTouched();\n  }\n\n  canToggle(): boolean {\n    return !this.controlOrGroupDisabled && (this.uncheckable || this.btnRadio !== this.value);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if ('uncheckable' in changes) {\n      this.uncheckable = this.uncheckable !== false && typeof this.uncheckable !== 'undefined';\n    }\n  }\n\n  _onChange(value?: unknown): void {\n    if (this.group) {\n      this.group.value = value;\n\n      return;\n    }\n    this.onTouched();\n    this.onChange(value);\n  }\n\n  // ControlValueAccessor\n  // model -> view\n  writeValue(value: unknown): void {\n    this.value = value;\n    this.cdr.markForCheck();\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    this._disabled = disabled;\n    if (disabled) {\n      this.renderer.setAttribute(this.el.nativeElement, 'disabled', 'disabled');\n\n      return;\n    }\n    this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n  }\n}\n","import {\n  ChangeDetectorRef,\n  ContentChildren,\n  Directive,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Provider,\n  QueryList\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ButtonRadioDirective } from './button-radio.directive';\n\nexport const RADIO_CONTROL_VALUE_ACCESSOR: Provider = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => ButtonRadioGroupDirective),\n  multi: true\n};\n\n/**\n * A group of radio buttons.\n * A value of a selected button is bound to a variable specified via ngModel.\n */\n@Directive({\n    selector: '[btnRadioGroup]',\n    providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n    standalone: true\n})\nexport class ButtonRadioGroupDirective implements ControlValueAccessor {\n  onChange = Function.prototype;\n  onTouched = Function.prototype;\n\n  @HostBinding('attr.role') readonly role: string = 'radiogroup';\n\n  @ContentChildren(forwardRef(() => ButtonRadioDirective))\n  radioButtons?: QueryList<ButtonRadioDirective>;\n\n  constructor(private cdr: ChangeDetectorRef) {\n  }\n\n  private _value?: unknown;\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value: unknown | undefined) {\n    this._value = value;\n    this.onChange(value);\n  }\n\n  private _disabled = false;\n\n  get disabled(): boolean {\n    return this._disabled;\n  }\n\n  @HostBinding('attr.tabindex')\n  get tabindex(): null | number {\n    if (this._disabled) {\n      return null;\n    } else {\n      return 0;\n    }\n  }\n\n  writeValue(value?: string): void {\n    this._value = value;\n    this.cdr.markForCheck();\n  }\n\n  registerOnChange(fn: () => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(disabled: boolean): void {\n    if (this.radioButtons) {\n      this._disabled = disabled;\n      this.radioButtons.forEach(buttons => {\n        buttons.setDisabledState(disabled);\n      });\n      this.cdr.markForCheck();\n    }\n  }\n\n  @HostListener('focus')\n  onFocus() {\n    if (this._disabled) {\n      return;\n    }\n    const activeRadio = this.getActiveOrFocusedRadio();\n    if (activeRadio) {\n      activeRadio.focus();\n      return;\n    }\n\n    if (this.radioButtons) {\n      const firstEnabled = this.radioButtons.find(r => !r.disabled);\n      if (firstEnabled) {\n        firstEnabled.focus();\n      }\n    }\n  }\n\n  @HostListener('blur')\n  onBlur() {\n    if (this.onTouched) {\n      this.onTouched();\n    }\n  }\n\n  @HostListener('keydown.ArrowRight', ['$event'])\n  @HostListener('keydown.ArrowDown', ['$event'])\n  selectNext(event: KeyboardEvent) {\n    this.selectInDirection('next');\n    event.preventDefault();\n  }\n\n  @HostListener('keydown.ArrowLeft', ['$event'])\n  @HostListener('keydown.ArrowUp', ['$event'])\n  selectPrevious(event: KeyboardEvent) {\n    this.selectInDirection('previous');\n    event.preventDefault();\n  }\n\n  private selectInDirection(direction: 'next' | 'previous') {\n    if (this._disabled) {\n      return;\n    }\n\n    function nextIndex(currentIndex: number, buttonRadioDirectives: ButtonRadioDirective[]) {\n      const step = direction === 'next' ? 1 : -1;\n      let calcIndex = (currentIndex + step) % buttonRadioDirectives.length;\n      if (calcIndex < 0) {\n        calcIndex = buttonRadioDirectives.length - 1;\n      }\n\n      return calcIndex;\n    }\n\n    const activeRadio = this.getActiveOrFocusedRadio();\n\n    if (activeRadio && this.radioButtons) {\n      const buttonRadioDirectives = this.radioButtons.toArray();\n      const currentActiveIndex = buttonRadioDirectives.indexOf(activeRadio);\n      for (\n        let i = nextIndex(currentActiveIndex, buttonRadioDirectives);\n        i !== currentActiveIndex;\n        i = nextIndex(i, buttonRadioDirectives)\n      ) {\n        if (buttonRadioDirectives[i].canToggle()) {\n          buttonRadioDirectives[i].toggleIfAllowed();\n          buttonRadioDirectives[i].focus();\n          break;\n        }\n      }\n    }\n  }\n\n  private getActiveOrFocusedRadio(): ButtonRadioDirective | undefined {\n    if (!this.radioButtons) {\n      return void 0;\n    }\n\n    return this.radioButtons.find(button => button.isActive)\n      || this.radioButtons.find(button => button.hasFocus);\n  }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport { ButtonCheckboxDirective } from './button-checkbox.directive';\nimport { ButtonRadioDirective } from './button-radio.directive';\nimport { ButtonRadioGroupDirective } from './button-radio-group.directive';\n\n@NgModule({\n    imports: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective],\n    exports: [ButtonCheckboxDirective, ButtonRadioDirective, ButtonRadioGroupDirective]\n})\nexport class ButtonsModule {\n  // @deprecated method not required anymore, will be deleted in v19.0.0\n  static forRoot(): ModuleWithProviders<ButtonsModule> {\n    return {\n      ngModule: ButtonsModule,\n      providers: []\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["RADIO_CONTROL_VALUE_ACCESSOR"],"mappings":"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"}