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