{"version":3,"file":"chunk-k5rtdhux.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.monitor(this._elementRef, true).subscribe((focusOrigin) => {\n this.focused.set(!!focusOrigin);\n if (focusOrigin === 'keyboard' || focusOrigin === 'program') {\n this.focusVisible.set(true);\n } else if (!focusOrigin) {\n this.focusVisible.set(false);\n this.focused.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","subscribe","focusOrigin","focused","focusVisible","constructor","ariaLabelledby","ariaDescribedby","nextUniqueId","inject","FocusMonitor","ElementRef","destroyRef","DestroyRef","radioGroup","DsRadioGroup","optional","signal","tabIndex","rxHostPressedListener","pipe","takeUntilDestroyed","event","target","_inputElement","nativeElement","onInputChange","onInputClick","stopPropagation","groupValueChanged","valueSignal","selectButton","emitChangeEvent","setTabIndex","focus","focusVia","registerOnInputChange","fn","onFocus","_DsRadioButton","selectors","viewQuery","rf","ctx","T","z","x","ɵɵlistener","ɵɵclassProp","ɵɵtext","ɵɵelementStart","$event","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵelementEnd","ɵɵelement","ɵɵprojection","ɵɵadvance","b","ɵɵ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","ɵɵclassMap","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","ɵɵNgOnChangesFeature","ɵɵStandaloneFeature","ngContentSelectors","_c1","decls","vars","template","y","_DsRadioGroup","DsRadioModule","_","_DsRadioModule"],"mappings":"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"}