{"version":3,"file":"chunk-n8pz9t7b.js","sources":["packages/design-system/ui/radio-button/src/radio-button.component.ts","packages/design-system/ui/radio-button/src/index.ts"],"sourcesContent":["import { FocusMonitor } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n forwardRef,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { rxHostPressedListener } from '@frontend/ui/rx-host-listener';\n\nexport const DS_RADIO_SIZE_ARRAY = ['medium', 'large'] as const;\nexport const DS_RADIO_POSITION_ARRAY = ['left', 'right'] as const;\nexport type DsRadioSize = (typeof DS_RADIO_SIZE_ARRAY)[number];\nexport type DsRadioLabelPosition = (typeof DS_RADIO_POSITION_ARRAY)[number];\n\n@Component({\n selector: 'ds-radio-button',\n template: `\n \n `,\n styleUrls: ['./radio-button.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n host: {\n 'class': 'ds-radio-button',\n '(focus)': 'onFocus()',\n '[class.ds-radio-selected]': 'checkedSignal()',\n '[class.ds-radio-focused]': 'focused()',\n '[class.ds-radio-unselected]': '!checkedSignal()',\n '[class.ds-radio-disabled]': 'disabledSignal()',\n '[attr.tabindex]': 'tabIndex()',\n '[attr.aria-disabled]': 'disabledSignal()',\n '[attr.aria-label]': 'null',\n '[attr.aria-labelledby]': 'null',\n '[attr.aria-describedby]': 'null',\n '[attr.data-focus-visible]': 'focusVisible()',\n '[class.data-focus-visible]': 'focusVisible()',\n '[attr.data-focus]': 'focused()',\n },\n})\nexport class DsRadioButton implements AfterContentInit, OnDestroy {\n @Input() value: any;\n @Input({ required: true }) name!: string;\n @Input() ariaLabel: string | null = null;\n @Input() ariaLabelledby: string | null = null;\n @Input() ariaDescribedby: string | null = null;\n @Input() id?: string;\n position = 1;\n setSize = 1;\n\n private static nextUniqueId = 0;\n private _uniqueId = `ds-radio-${DsRadioButton.nextUniqueId++}`;\n\n get inputId(): string {\n return `${this.id || this._uniqueId}-input`;\n }\n\n getAriaLabel(): string {\n return this.ariaLabel || `Option ${this.value}`;\n }\n\n @ViewChild('input') _inputElement!: ElementRef;\n\n private _focusMonitor = inject(FocusMonitor);\n private _elementRef = inject(ElementRef);\n private destroyRef = inject(DestroyRef);\n public radioGroup = inject(DsRadioGroup, { optional: true });\n\n checkedSignal = signal(false);\n disabledSignal = signal(false);\n focusVisible = signal(false);\n focused = signal(false);\n tabIndex = signal(-1);\n\n @Input() set disabled(value: boolean) {\n this.disabledSignal.set(value);\n }\n\n @Input() set checked(value: boolean) {\n this.checkedSignal.set(value);\n }\n\n updatePositionAndSize(position: number, size: number) {\n this.position = position;\n this.setSize = size;\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n ngAfterContentInit() {\n this._focusMonitor\n .monitor(this._elementRef, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((focusOrigin) => {\n this.focused.set(!!focusOrigin);\n if (focusOrigin === 'keyboard') {\n this.focusVisible.set(true);\n } else {\n this.focusVisible.set(false);\n }\n });\n }\n\n constructor() {\n rxHostPressedListener()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (event.target === this._inputElement.nativeElement) {\n this.onInputChange();\n }\n });\n }\n\n onInputClick(event: Event) {\n event.stopPropagation();\n }\n\n onInputChange(event?: Event) {\n event?.stopPropagation();\n\n if (!this.checkedSignal() && !this.disabledSignal()) {\n const groupValueChanged = this.radioGroup && this.value !== this.radioGroup.valueSignal();\n this.checkedSignal.set(true);\n\n if (this.radioGroup) {\n this.radioGroup.selectButton(this);\n if (groupValueChanged) {\n this.radioGroup.emitChangeEvent();\n }\n }\n }\n }\n\n setTabIndex(value: number) {\n this.tabIndex.set(value);\n }\n\n focus() {\n this.focused.set(true);\n this.focusVisible.set(true);\n this._focusMonitor.focusVia(this._inputElement, 'keyboard');\n }\n\n registerOnInputChange(fn: () => void) {\n this.onInputChange = fn;\n }\n\n onFocus() {\n this._inputElement.nativeElement.focus();\n }\n}\n\n@Component({\n selector: 'ds-radio-group',\n template: ` `,\n host: {\n '[class]': `hostClass`,\n '(keydown)': 'handleKeydown($event)',\n 'role': 'radiogroup',\n },\n styleUrls: ['./radio-button.component.scss'],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DsRadioGroup),\n multi: true,\n },\n ],\n})\nexport class DsRadioGroup implements OnChanges, AfterContentInit, AfterViewInit, ControlValueAccessor {\n @Input() size: DsRadioSize = 'large';\n @Input() labelPosition: DsRadioLabelPosition = 'right';\n valueSignal = signal('');\n disabledSignal = signal(false);\n @Output() valueChange = new EventEmitter();\n\n @Input() set value(value: string) {\n this.valueSignal.set(value);\n }\n\n @Input() set disabled(value: boolean) {\n this.disabledSignal.set(value);\n }\n\n @ContentChildren(DsRadioButton) radioButtons!: QueryList;\n\n private onChange: (value: any) => void = () => {};\n private onTouched: () => void = () => {};\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['value'] || changes['disabled']) {\n this.updateButtonsState();\n }\n }\n\n ngAfterViewInit() {\n if (this.radioButtons) {\n this.radioButtons.changes.subscribe(() => {\n this.updatePositionsAndSizes();\n this.updateButtonsState();\n this.radioButtons.forEach((button) => {\n button.registerOnInputChange(() => {\n this.selectButton(button);\n });\n });\n });\n }\n }\n\n private updateButtonsState() {\n if (this.radioButtons) {\n this.radioButtons.forEach((btn) => {\n btn.checkedSignal.set(btn.value === this.valueSignal());\n btn.disabledSignal.set(this.disabledSignal() || btn.disabledSignal());\n btn.setTabIndex(btn.checkedSignal() ? 0 : -1);\n });\n }\n }\n\n private updatePositionsAndSizes() {\n this.radioButtons.forEach((button, index) => {\n button.updatePositionAndSize(index + 1, this.radioButtons.length);\n });\n }\n\n selectButton(selectedBtn: DsRadioButton) {\n if (!this.disabledSignal() && !selectedBtn.disabledSignal() && this.radioButtons) {\n this.radioButtons.forEach((btn) => {\n btn.checkedSignal.set(btn === selectedBtn);\n btn.setTabIndex(btn.checkedSignal() && !btn.disabledSignal() ? 0 : -1);\n });\n this.valueSignal.set(selectedBtn.value);\n this.emitChangeEvent();\n this.onChange(this.valueSignal());\n this.onTouched();\n }\n }\n\n ngAfterContentInit() {\n if (this.radioButtons) {\n this.updatePositionsAndSizes();\n this.updateButtonsState();\n this.radioButtons.forEach((button) => {\n button.registerOnInputChange(() => {\n this.selectButton(button);\n });\n });\n }\n }\n\n emitChangeEvent() {\n this.valueChange.emit(this.valueSignal());\n }\n\n handleKeydown(event: KeyboardEvent) {\n const { key } = event;\n if (this.radioButtons) {\n const buttonsArray = this.radioButtons.toArray().filter((button) => !button.disabledSignal());\n const focusedIndex = buttonsArray.findIndex((button) => button.focused());\n let nextIndex = -1;\n\n if (buttonsArray.length === 0) {\n return;\n }\n if (key === 'ArrowRight' || key === 'ArrowDown') {\n nextIndex = focusedIndex < buttonsArray.length - 1 ? focusedIndex + 1 : 0;\n } else if (key === 'ArrowLeft' || key === 'ArrowUp') {\n nextIndex = focusedIndex > 0 ? focusedIndex - 1 : buttonsArray.length - 1;\n }\n\n if (nextIndex !== -1) {\n buttonsArray.forEach((button) => {\n button.focused.set(false);\n button.focusVisible.set(false);\n });\n event.preventDefault();\n const nextButton = buttonsArray[nextIndex];\n if (nextButton != null) {\n nextButton.focus();\n }\n }\n\n if ((key === 'Space' || key === 'Enter') && focusedIndex !== -1) {\n event.preventDefault();\n const focusedButton = buttonsArray[focusedIndex];\n if (focusedButton != null && !focusedButton.checkedSignal()) {\n this.selectButton(focusedButton); // Ensure no redundant emits\n }\n }\n }\n }\n\n writeValue(value: string): void {\n this.valueSignal.set(value);\n this.updateButtonsState();\n }\n\n registerOnChange(fn: (value: any) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabledSignal.set(isDisabled);\n this.updateButtonsState();\n }\n\n get hostClass() {\n const sizeClass = this.size === 'large' ? 'ds-radio-large' : 'ds-radio-medium';\n const labelPositionClass = this.labelPosition === 'left' ? 'ds-radio-label-left' : '';\n return `ds-radio-group ${sizeClass} ${labelPositionClass}`;\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { DsRadioButton, DsRadioGroup } from './radio-button.component';\n\nexport { FormsModule } from '@angular/forms';\nexport { DS_RADIO_SIZE_ARRAY, DS_RADIO_POSITION_ARRAY, DsRadioButton, DsRadioGroup } from './radio-button.component';\n\n@NgModule({\n imports: [DsRadioButton, DsRadioGroup],\n exports: [DsRadioButton, DsRadioGroup],\n})\nexport class DsRadioModule {}\n"],"names":["DsRadioButton","inputId","id","_uniqueId","getAriaLabel","ariaLabel","value","disabled","disabledSignal","set","checked","checkedSignal","updatePositionAndSize","position","size","setSize","ngOnDestroy","_focusMonitor","stopMonitoring","_elementRef","ngAfterContentInit","monitor","pipe","takeUntilDestroyed","destroyRef","subscribe","focusOrigin","focused","focusVisible","constructor","ariaLabelledby","ariaDescribedby","nextUniqueId","inject","FocusMonitor","ElementRef","DestroyRef","radioGroup","DsRadioGroup","optional","signal","tabIndex","rxHostPressedListener","event","target","_inputElement","nativeElement","onInputChange","onInputClick","stopPropagation","groupValueChanged","valueSignal","selectButton","emitChangeEvent","setTabIndex","focus","focusVia","registerOnInputChange","fn","onFocus","_DsRadioButton","h","selectors","viewQuery","rf","ctx","T","y","S","ɵɵlistener","c","ɵɵclassProp","ɵɵelementStart","$event","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementEnd","ɵɵelement","ɵɵprojection","ɵɵadvance","ɵɵproperty","name","labelPosition","valueChange","EventEmitter","onChange","onTouched","ngOnChanges","changes","updateButtonsState","ngAfterViewInit","radioButtons","updatePositionsAndSizes","forEach","button","btn","index","length","selectedBtn","emit","handleKeydown","key","buttonsArray","toArray","filter","focusedIndex","findIndex","nextIndex","preventDefault","nextButton","focusedButton","writeValue","registerOnChange","registerOnTouched","setDisabledState","isDisabled","hostClass","sizeClass","labelPositionClass","contentQueries","dirIndex","M","ɵɵclassMap","G","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","ngContentSelectors","_c1","decls","vars","template","f","_DsRadioGroup","DsRadioModule","_","C","_DsRadioModule"],"mappings":"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"}