UNPKG

@period-year-norway/ngx-bootstrap

Version:
1 lines 25 kB
{"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({\n selector: '[btnRadio]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n standalone: false\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: KeyboardEvent) {\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({\n selector: '[btnRadioGroup]',\n providers: [RADIO_CONTROL_VALUE_ACCESSOR],\n standalone: false\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\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: KeyboardEvent) {\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: KeyboardEvent) {\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)\r\n || 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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"}