{"version":3,"file":"usitsdasdesign-dds-ng-radio.mjs","sources":["../../src/app/dds/radio/radio-group/radio-group.component.ts","../../src/app/dds/radio/radio-group/radio-group.component.html","../../src/app/dds/radio/radio/constants.ts","../../src/app/dds/radio/radio/radio.component.ts","../../src/app/dds/radio/radio/radio.component.html","../../src/app/dds/radio/radio.module.ts","../../src/app/dds/radio/usitsdasdesign-dds-ng-radio.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport {\n  AfterContentInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  Self,\n  SimpleChanges,\n} from '@angular/core';\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n  DestroyCtor,\n  DestroyMixin,\n  ErrorStateCtor,\n  ErrorStateMixin,\n  FormAccessorCtor,\n  FormAccessorMixin,\n} from '@usitsdasdesign/dds-ng/core/common-behaviors';\nimport { coerceBooleanProperty, generateId } from '@usitsdasdesign/dds-ng/core/utils';\nimport { AdditionalClass, DDS_FORM_CONTROL_GROUP, DdsFormControlGroup, ErrorState, WidthState } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { takeUntil } from 'rxjs/operators';\nimport { RadioComponent } from '../radio/radio.component';\n\nconst RadioGroupBase: FormAccessorCtor & ErrorStateCtor & DestroyCtor = FormAccessorMixin(ErrorStateMixin(DestroyMixin()));\n\n@Component({\n  selector: 'dds-radio-group',\n  templateUrl: './radio-group.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    role: 'radiogroup',\n  },\n  providers: [\n    {\n      provide: DDS_FORM_CONTROL_GROUP,\n      useExisting: RadioGroupComponent,\n    },\n  ],\n  standalone: true,\n  imports: [CommonModule],\n})\nexport class RadioGroupComponent extends RadioGroupBase implements OnInit, AfterContentInit, OnChanges, DdsFormControlGroup {\n  // Host binding to add 'dds-radio-group_error' class when _isError is true\n  @HostBinding('class.dds-radio-group_error') _isError = false;\n\n  // Host binding to add a full width class based on the width state\n  @HostBinding(`class.${AdditionalClass.fullWidth}`) get isFullWidth(): boolean {\n    return this.width === WidthState.full;\n  }\n\n  // Input property for the name of the radio group\n  @Input() name: string | undefined;\n\n  // Input property to set the disabled state of the radio group\n  @Input() disabled: boolean | undefined;\n\n  // Input property to set the error state of the radio group\n  @Input() isError: boolean | undefined;\n\n  // Input property to allow unchecking of radio buttons\n  @Input() isUncheckable: boolean | undefined;\n\n  // Input property to set the inverse state of the radio group\n  @Input() isInverse: boolean | undefined;\n\n  // Input property for the title of the radio group\n  @Input() title: string | undefined;\n\n  // Input property to set the width of the radio group\n  @Input() width: WidthState | string | undefined;\n\n  // Input property to set the required state of the radio group\n  @Input() isRequired: boolean | undefined = false;\n\n  // Input property to set the error state configuration\n  @Input() errorState: string | ErrorState | undefined = this.ddsConfig.getConfig().errorState;\n\n  // Input property to set the value of the radio group\n  @Input()\n  set value(value: string | undefined | null) {\n    this._value = value;\n\n    if (!this.firstChange) {\n      this.setActiveItem(this.value, this.radioItems);\n    }\n  }\n  get value(): string | undefined | null {\n    return this._value;\n  }\n\n  // Output event emitter to notify when the state of the radio group changes\n  @Output() stateChanged: EventEmitter<string | undefined | null> = new EventEmitter();\n\n  public id: string;\n  private _value: string | undefined | null;\n  private firstChange = true;\n  private radioItems: RadioComponent[] = [];\n\n  constructor(\n    @Optional() @Self() public ngControl: NgControl,\n    @Optional() public parentForm: NgForm,\n    @Optional() public parentFormGroup: FormGroupDirective,\n    public cdr: ChangeDetectorRef,\n    public el: ElementRef,\n    private ddsConfig: DdsConfigService\n  ) {\n    super();\n\n    if (this.ngControl !== null) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  public ngOnInit(): void {\n    super.ngOnInit();\n    this.id = generateId();\n\n    this.isError$.pipe(takeUntil(this.destroy)).subscribe((status) => this.setRadioError(status));\n  }\n\n  public ngOnChanges(changes: SimpleChanges): void {\n    if (changes.disabled) {\n      this.setRadioDisabled();\n    }\n\n    if (changes.isRequired) {\n      this.isRequired = coerceBooleanProperty(changes.isRequired?.currentValue);\n      this.setRadioRequired(this.isRequired);\n    }\n\n    if (changes.isInverse) {\n      this.setItemsInverse(changes.isInverse?.currentValue);\n    }\n\n    if (changes.width) {\n      this.setWidth(changes.width.currentValue);\n    }\n\n    super.ngOnChanges(changes);\n  }\n\n  public ngAfterContentInit(): void {\n    if (this.value) {\n      this.setActiveItem(this.value, this.radioItems);\n    }\n\n    this.setRadioRequired(!!this.isRequired);\n    this.setRadioError(this._isError);\n    this.setItemsInverse(!!this.isInverse);\n    this.firstChange = false;\n  }\n\n  // Method to add a radio item to the radio group\n  public addRadioItem(radio: RadioComponent): void {\n    this.radioItems.push(radio);\n  }\n\n  // Method to change the selected radio item\n  public changeItem(value: string | undefined | null): void {\n    if (this.isUncheckable) {\n      this.value = this.value === value ? null : value;\n    } else {\n      this.value = value;\n    }\n\n    this.onModelTouched();\n    this.onModelChange(this.value);\n    this.stateChanged.emit(this.value);\n    this.checkError();\n  }\n\n  // Method to write a value to the radio group\n  public writeValue(value: string): void {\n    this.value = value;\n    super.writeValue(value);\n    this.cdr.markForCheck();\n  }\n\n  // Method to set the disabled state of the radio group\n  public setDisabledState(disabled: boolean): void {\n    this.disabled = disabled;\n    this.setRadioDisabled();\n    this.cdr.markForCheck();\n  }\n\n  // Method to reset the radio group\n  public reset(): void {\n    this.changeItem(null);\n    this.cdr.markForCheck();\n  }\n\n  // Method to set the disabled state for all radio items\n  public setRadioDisabled(): void {\n    this.radioItems.forEach((radio: RadioComponent) => {\n      radio.disabled = this.disabled;\n      radio.cdr.detectChanges();\n    });\n  }\n\n  // Method to set the required state for all radio items\n  public setRadioRequired(isRequired: boolean): void {\n    this.radioItems.forEach((radio: RadioComponent) => {\n      radio.isRequiredGroup = isRequired;\n      radio.isFormControlRequired = this._isFormControlRequired;\n      radio.cdr.detectChanges();\n    });\n  }\n\n  // Method to set the error state for all radio items\n  public setRadioError(isError: boolean): void {\n    this.radioItems.forEach((radio: RadioComponent) => {\n      radio.isErrorGroup = isError;\n      radio.cdr.detectChanges();\n    });\n  }\n\n  // Method to set the inverse state for all radio items\n  public setItemsInverse(isInverse: boolean): void {\n    this.radioItems.forEach((radio: RadioComponent) => {\n      radio.setInverse(isInverse);\n    });\n  }\n\n  // Method to set the width of the radio group\n  public setWidth(width: WidthState | string): void {\n    this.width = width;\n    this.cdr.detectChanges();\n  }\n\n  // Method to set the active radio item based on the value\n  public setActiveItem(value: string | undefined | null, radioItems: RadioComponent[]): void {\n    radioItems.forEach((item) => {\n      item.checked = value === item.value;\n      item.stateChanged.emit(item.checked);\n    });\n  }\n}\n","@if (title) {\n  <span [ngClass]=\"{\n            'dds-custom-control_inverse': isInverse\n      }\"\n        [attr.id]=\"id\"\n        class=\"dds-custom-control__title\">{{title}}\n    @if (isRequired) {\n      <span class=\"dds-required\"></span>\n    }\n  </span>\n}\n<div [attr.aria-labelledby]=\"id\"\n     [ngClass]=\"{\n            'dds-full-width': isFullWidth\n      }\"\n     role=\"radiogroup\">\n  <ng-content></ng-content>\n</div>","import { ThemeClassesMap, ThemeMapEnum } from '@usitsdasdesign/dds-ng/core/theme';\nimport { Themes } from '@usitsdasdesign/dds-ng/shared';\n\nexport const themeClassesMap: ThemeClassesMap = {\n  [ThemeMapEnum.Themes]: {\n    [Themes.green]: 'dds-custom-control_green',\n    [Themes.blue]: 'dds-custom-control_blue'\n  },\n};\n","import { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  HostBinding,\n  Input,\n  OnInit,\n  Output,\n  ViewChild,\n} from '@angular/core';\nimport { FocusHandlerDirective, FocusHandlerModule } from '@usitsdasdesign/dds-ng/core/focus-handler';\nimport { ThemeClassesMap, ThemeModule } from '@usitsdasdesign/dds-ng/core/theme';\nimport { AdditionalClass, DDS_FORM_CONTROL, DdsFormControl, KeyCodes, Themes } from '@usitsdasdesign/dds-ng/shared';\nimport { DdsConfigService } from '@usitsdasdesign/dds-ng/shared/dds-config';\nimport { RadioGroupComponent } from '../radio-group/radio-group.component';\nimport { themeClassesMap } from './constants';\n\n@Component({\n  selector: 'dds-radio',\n  templateUrl: './radio.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: DDS_FORM_CONTROL,\n      useExisting: RadioComponent,\n    },\n  ],\n  standalone: true,\n  imports: [CommonModule, FocusHandlerModule, ThemeModule],\n})\nexport class RadioComponent implements OnInit, DdsFormControl {\n  // Binds the disabled class to the host element when the disabled input is true.\n  @HostBinding(`class.${AdditionalClass.disabled}`) @Input() disabled: boolean | undefined;\n\n  // Reference to the radio input element.\n  @ViewChild('radio') radio: ElementRef<HTMLInputElement>;\n\n  // Reference to the FocusHandlerDirective.\n  @ViewChild(FocusHandlerDirective) focusDir: FocusHandlerDirective;\n\n  // The label for the radio button.\n  @Input() label: string | undefined;\n\n  // The value associated with the radio button.\n  @Input() value: string | undefined;\n\n  // Custom CSS class to be applied to the radio button.\n  @Input() customClass: string | undefined;\n\n  // The theme for the radio button, defaulting to the theme from the configuration service.\n  @Input() theme: Themes | string | undefined = this.ddsConfig.getConfig().theme;\n\n  // Indicates if the radio button should be displayed in inverse mode.\n  @Input() isInverse: boolean | undefined;\n\n  // Event emitted when the state of the radio button changes.\n  @Output() stateChanged = new EventEmitter<boolean>();\n\n  // Configuration for theme classes.\n  public themeConfig: ThemeClassesMap = themeClassesMap;\n\n  // Indicates if the radio button is part of a required group.\n  public isRequiredGroup = false;\n\n  // Indicates if the radio button is a required form control.\n  public isFormControlRequired = false;\n\n  // Indicates if the radio button is part of an error group.\n  public isErrorGroup = false;\n\n  // Internal state for whether the radio button is checked.\n  private _checked: boolean;\n\n  // Internal state for the name of the radio group.\n  private _groupName: string | undefined;\n\n  // Sets the checked state of the radio button and triggers change detection.\n  set checked(value: boolean) {\n    this._checked = value;\n    this.cdr.detectChanges();\n  }\n\n  // Gets the checked state of the radio button.\n  get checked(): boolean {\n    return this._checked;\n  }\n\n  // Sets the name of the radio group and triggers change detection.\n  set groupName(value: string | undefined) {\n    this._groupName = value;\n    this.cdr.detectChanges();\n  }\n\n  // Gets the name of the radio group.\n  get groupName(): string | undefined {\n    return this._groupName;\n  }\n\n  constructor(\n    public cdr: ChangeDetectorRef,\n    private radioGroup: RadioGroupComponent,\n    public el: ElementRef,\n    private ddsConfig: DdsConfigService\n  ) { }\n\n  public ngOnInit(): void {\n    this.radioGroup.addRadioItem(this);\n    this.setValueFromParent();\n  }\n\n  // Handles keydown events on the radio button.\n  public handleKeydown(event: KeyboardEvent) {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      this.radioGroup.changeItem(this.value);\n    }\n  }\n\n  // Prevents default behavior for certain keydown events to fix double click issues in Firefox.\n  public preventEvent(event: KeyboardEvent): void {\n    if (event.keyCode === KeyCodes.ENTER || event.keyCode === KeyCodes.SPACE) {\n      event.preventDefault();\n    }\n  }\n\n  // Selects the radio button, changing the selected item in the radio group.\n  public selectItem(): void {\n    this.radioGroup.changeItem(this.value);\n  }\n\n  // Sets initial values from the parent radio group.\n  private setValueFromParent(): void {\n    this.groupName = this.radioGroup.name;\n    this.disabled ||= this.radioGroup.disabled;\n\n    this.cdr.detectChanges();\n  }\n\n  // Sets the inverse mode for the radio button and triggers change detection.\n  public setInverse(isInverse: boolean): void {\n    this.isInverse = isInverse;\n    this.cdr.detectChanges();\n  }\n}\n","<label [ngClass]=\"{\n        'dds-custom-control_disabled': disabled,\n        'dds-custom-control_inverse': isInverse\n       }\"\n       [theme]=\"theme\"\n       [ddsTheme]=\"themeConfig\"\n       class=\"dds-custom-control {{customClass}}\">\n  <input [name]=\"groupName\"\n         [disabled]=\"disabled\"\n         [attr.value]=\"value\"\n         [checked]=\"checked\"\n         role=\"radio\"\n         [attr.aria-checked]=\"checked\"\n         [attr.aria-disabled]=\"disabled\"\n         [attr.aria-required]=\"isRequiredGroup || isFormControlRequired\"\n         [attr.aria-invalid]=\"isErrorGroup\"\n         [required]=\"isRequiredGroup\"\n         [ddsFocusCheck]=\"true\"\n         ddsFocus\n         class=\"dds-custom-control__field dds-custom-control__field_radio\"\n         type=\"radio\"\n         (click)=\"selectItem()\"\n         (keydown)=\"handleKeydown($event);preventEvent($event)\"\n         (keyup)=\"preventEvent($event)\"\n         #radio />\n  <span class=\"dds-custom-control__icon dds-custom-control__icon_radio\"></span>\n\n  @if (label) {\n    <span class=\"dds-custom-control__text\">\n      {{ label }}\n    </span>\n  }\n</label>","import { NgModule } from '@angular/core';\nimport { RadioGroupComponent } from './radio-group/radio-group.component';\nimport { RadioComponent } from './radio/radio.component';\n\n@NgModule({\n  declarations: [],\n  imports: [RadioComponent, RadioGroupComponent],\n  exports: [RadioComponent, RadioGroupComponent],\n})\nexport class RadioModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RadioGroupComponent"],"mappings":"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"}