{"version":3,"file":"igniteui-angular-radio.mjs","sources":["../../../projects/igniteui-angular/radio/src/radio/radio-group/radio-group.directive.ts","../../../projects/igniteui-angular/radio/src/radio/radio.component.ts","../../../projects/igniteui-angular/radio/src/radio/radio.component.html","../../../projects/igniteui-angular/radio/src/radio/radio-group/public_api.ts","../../../projects/igniteui-angular/radio/src/radio/radio-group/radio-group.module.ts","../../../projects/igniteui-angular/radio/src/igniteui-angular-radio.ts"],"sourcesContent":["import {\n    ChangeDetectorRef,\n    Directive,\n    DoCheck,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    OnDestroy,\n    Output,\n    QueryList,\n    booleanAttribute,\n    effect,\n    signal,\n    inject\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl, Validators } from '@angular/forms';\nimport { fromEvent, noop, Subject, takeUntil } from 'rxjs';\nimport { IgxRadioComponent } from '../radio.component';\nimport { ɵIgxDirectionality } from 'igniteui-angular/core';\nimport { IChangeCheckboxEventArgs } from 'igniteui-angular/directives';\n/**\n * Determines the Radio Group alignment\n */\nexport const RadioGroupAlignment = {\n    horizontal: 'horizontal',\n    vertical: 'vertical'\n} as const;\nexport type RadioGroupAlignment = typeof RadioGroupAlignment[keyof typeof RadioGroupAlignment];\n\nlet nextId = 0;\n\n/**\n * Radio group directive renders set of radio buttons.\n *\n * @igxModule IgxRadioModule\n *\n * @igxTheme igx-radio-theme\n *\n * @igxKeywords radiogroup, radio, button, input\n *\n * @igxGroup Data Entry & Display\n *\n * @remarks\n * The Ignite UI Radio Group allows the user to select a single option from an available set of options that are listed side by side.\n *\n * @example:\n * ```html\n * <igx-radio-group name=\"radioGroup\">\n *   <igx-radio *ngFor=\"let item of ['Foo', 'Bar', 'Baz']\" value=\"{{item}}\">\n *      {{item}}\n *   </igx-radio>\n * </igx-radio-group>\n * ```\n */\n@Directive({\n    exportAs: 'igxRadioGroup',\n    selector: '[igxRadioGroup],igx-radio-group',\n    standalone: true\n})\nexport class IgxRadioGroupDirective implements ControlValueAccessor, OnDestroy, DoCheck {\n    public ngControl = inject(NgControl, { optional: true, self: true });\n    private _directionality = inject(ɵIgxDirectionality);\n    private cdr = inject(ChangeDetectorRef);\n\n    private _radioButtons = signal<IgxRadioComponent[]>([]);\n    private _radioButtonsList = new QueryList<IgxRadioComponent>();\n\n    /**\n     * Returns reference to the child radio buttons.\n     *\n     * @example\n     * ```typescript\n     * let radioButtons =  this.radioGroup.radioButtons;\n     * ```\n     */\n    public get radioButtons(): QueryList<IgxRadioComponent> {\n        this._radioButtonsList.reset(this._radioButtons());\n        return this._radioButtonsList;\n    }\n\n    /**\n     * Sets/gets the `value` attribute.\n     *\n     * @example\n     * ```html\n     * <igx-radio-group [value] = \"'radioButtonValue'\"></igx-radio-group>\n     * ```\n     */\n    @Input()\n    public get value(): any {\n        return this._value;\n    }\n\n    public set value(newValue: any) {\n        if (this._value !== newValue) {\n            this._value = newValue;\n            this._selectRadioButton();\n        }\n    }\n\n    /**\n     * Sets/gets the `name` attribute of the radio group component. All child radio buttons inherits this name.\n     *\n     * @example\n     * ```html\n     * <igx-radio-group name = \"Radio1\"></igx-radio-group>\n     *  ```\n     */\n    @Input()\n    public get name(): string {\n        return this._name;\n    }\n    public set name(newValue: string) {\n        if (this._name !== newValue) {\n            this._name = newValue;\n            this._setRadioButtonNames();\n        }\n    }\n\n    /**\n     * Sets/gets whether the radio group is required.\n     *\n     * @remarks\n     * If not set, `required` will have value `false`.\n     *\n     * @example\n     * ```html\n     * <igx-radio-group [required] = \"true\"></igx-radio-group>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public get required(): boolean {\n        return this._required;\n    }\n\n    public set required(value: boolean) {\n        this._required = value;\n        this._setRadioButtonsRequired();\n    }\n\n    /**\n     * Sets/gets the selected child radio button.\n     *\n     * @example\n     * ```typescript\n     * let selectedButton = this.radioGroup.selected;\n     * this.radioGroup.selected = selectedButton;\n     * ```\n     */\n    @Input()\n    public get selected() {\n        return this._selected;\n    }\n\n    public set selected(selected: IgxRadioComponent | null) {\n        if (this._selected !== selected) {\n            this._selected = selected;\n            this.value = selected ? selected.value : null;\n        }\n    }\n\n    /**\n     * Sets/gets whether the radio group is invalid.\n     *\n     * @remarks\n     * If not set, `invalid` will have value `false`.\n     *\n     * @example\n     * ```html\n     * <igx-radio-group [invalid] = \"true\"></igx-radio-group>\n     * ```\n     */\n    @Input({ transform: booleanAttribute })\n    public get invalid(): boolean {\n        return this._invalid;\n    }\n\n    public set invalid(value: boolean) {\n        this._invalid = value;\n        this._setRadioButtonsInvalid();\n    }\n\n    /**\n     * An event that is emitted after the radio group `value` is changed.\n     *\n     * @remarks\n     * Provides references to the selected `IgxRadioComponent` and the `value` property as event arguments.\n     *\n     * @example\n     * ```html\n     * <igx-radio-group (change)=\"handler($event)\"></igx-radio-group>\n     * ```\n     */\n    // eslint-disable-next-line @angular-eslint/no-output-native\n    @Output() public readonly change: EventEmitter<IChangeCheckboxEventArgs> = new EventEmitter<IChangeCheckboxEventArgs>();\n\n    /**\n     * The css class applied to the component.\n     *\n     * @hidden\n     * @internal\n     */\n    @HostBinding('class.igx-radio-group')\n    public cssClass = 'igx-radio-group';\n\n    /**\n     * @hidden\n     * @internal\n     * Sets vertical alignment to the radio group, if `alignment` is set to `vertical`.\n     * By default the alignment is horizontal.\n     *\n     * @example\n     * ```html\n     * <igx-radio-group alignment=\"vertical\"></igx-radio-group>\n     * ```\n     */\n    @HostBinding('class.igx-radio-group--vertical')\n    protected vertical = false;\n\n    /**\n     * A css class applied to the component if any of the\n     * child radio buttons labelPosition is set to `before`.\n     *\n     * @hidden\n     * @internal\n     */\n    @HostBinding('class.igx-radio-group--before')\n    protected get labelBefore() {\n        return this._radioButtons().some((radio) => radio.labelPosition === 'before');\n    }\n\n    /**\n     * A css class applied to the component if all\n     * child radio buttons are disabled.\n     *\n     * @hidden\n     * @internal\n     */\n    @HostBinding('class.igx-radio-group--disabled')\n    protected get disabled() {\n        return this._radioButtons().every((radio) => radio.disabled);\n    }\n\n    @HostListener('click', ['$event'])\n    protected handleClick(event: MouseEvent) {\n        event.stopPropagation();\n\n        if (this.selected) {\n            this.selected.nativeElement.focus();\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    protected handleKeyDown(event: KeyboardEvent) {\n        const { key } = event;\n        const buttons = this._radioButtons().filter(radio => !radio.disabled);\n        const checked = buttons.find((radio) => radio.checked);\n\n        if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(key)) {\n            let index = checked ? buttons.indexOf(checked) : -1;\n            const ltr = this._directionality.value === 'ltr';\n\n            switch (key) {\n                case 'ArrowUp':\n                    index += -1;\n                    break;\n                case 'ArrowLeft':\n                    index += ltr ? -1 : 1;\n                    break;\n                case 'ArrowRight':\n                    index += ltr ? 1 : -1;\n                    break;\n                default:\n                    index += 1;\n            }\n\n            if (index < 0) index = buttons.length - 1;\n            if (index > buttons.length - 1) index = 0;\n\n            buttons.forEach((radio) => {\n                radio.deselect();\n                radio.nativeElement.blur();\n            });\n\n            buttons[index].focused = true;\n            buttons[index].nativeElement.focus();\n            buttons[index].select();\n            event.preventDefault();\n        }\n\n        if (event.key === \"Tab\") {\n            buttons.forEach((radio) => {\n                if (radio !== checked) {\n                    event.stopPropagation();\n                }\n            });\n        }\n    }\n\n    /**\n     * Returns the alignment of the `igx-radio-group`.\n     * ```typescript\n     * @ViewChild(\"MyRadioGroup\")\n     * public radioGroup: IgxRadioGroupDirective;\n     * ngAfterViewInit(){\n     *    let radioAlignment = this.radioGroup.alignment;\n     * }\n     * ```\n     */\n    @Input()\n    public get alignment(): RadioGroupAlignment {\n        return this.vertical ? RadioGroupAlignment.vertical : RadioGroupAlignment.horizontal;\n    }\n    /**\n     * Allows you to set the radio group alignment.\n     * Available options are `RadioGroupAlignment.horizontal` (default) and `RadioGroupAlignment.vertical`.\n     * ```typescript\n     * public alignment = RadioGroupAlignment.vertical;\n     * //..\n     * ```\n     * ```html\n     * <igx-radio-group [alignment]=\"alignment\"></igx-radio-group>\n     * ```\n     */\n    public set alignment(value: RadioGroupAlignment) {\n        this.vertical = value === RadioGroupAlignment.vertical;\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _onChangeCallback: (_: any) => void = noop;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _name = `igx-radio-group-${nextId++}`;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _value: any = null;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _selected: IgxRadioComponent | null = null;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _isInitialized = signal(false);\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _required = false;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _invalid = false;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private destroy$ = new Subject<boolean>();\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private queryChange$ = new Subject<void>();\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private updateValidityOnBlur() {\n        this._radioButtons().forEach((button) => {\n            button.focused = false;\n\n            if (button.invalid) {\n                this.invalid = true;\n            }\n        });\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private updateOnKeyUp(event: KeyboardEvent) {\n        const checked = this._radioButtons().find(x => x.checked);\n\n        if (event.key === \"Tab\") {\n            this._radioButtons().forEach((radio) => {\n                if (radio === checked) {\n                    checked.focused = true;\n                }\n            });\n        }\n    }\n\n    public ngDoCheck(): void {\n        this._updateTabIndex();\n    }\n\n    private _updateTabIndex() {\n        // Needed so that the keyboard navigation of a radio group\n        // placed inside a dialog works properly\n        if (this._radioButtons) {\n            const checked = this._radioButtons().find(x => x.checked);\n\n            if (checked) {\n                this._radioButtons().forEach((button) => {\n                    checked.nativeElement.tabIndex = 0;\n\n                    if (button !== checked) {\n                        button.nativeElement.tabIndex = -1;\n                        button.focused = false;\n                    }\n                });\n            }\n        }\n    }\n\n    /**\n     * Sets the \"checked\" property value on the radio input element.\n     *\n     * @remarks\n     * Checks whether the provided value is consistent to the current radio button.\n     * If it is, the checked attribute will have value `true` and selected property will contain the selected `IgxRadioComponent`.\n     *\n     * @example\n     * ```typescript\n     * this.radioGroup.writeValue('radioButtonValue');\n     * ```\n     */\n    public writeValue(value: any) {\n        this.value = value;\n    }\n\n    /**\n     * Registers a function called when the control value changes.\n     *\n     * @hidden\n     * @internal\n     */\n    public registerOnChange(fn: (_: any) => void) {\n        this._onChangeCallback = fn;\n    }\n\n    /**\n     * Registers a function called when the control is touched.\n     *\n     * @hidden\n     * @internal\n     */\n    public registerOnTouched(fn: () => void) {\n        if (this._radioButtons) {\n            this._radioButtons().forEach((button) => {\n                button.registerOnTouched(fn);\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.complete();\n    }\n\n    constructor() {\n        if (this.ngControl !== null) {\n            this.ngControl.valueAccessor = this;\n        }\n\n        effect(() => {\n            this.initialize();\n            this.setRadioButtons();\n        });\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private initialize() {\n        // The initial value can possibly be set by NgModel and it is possible that\n        // the OnInit of the NgModel occurs after the OnInit of this class.\n        this._isInitialized.set(true);\n\n        if (this.ngControl) {\n            this.ngControl.statusChanges\n                .pipe(takeUntil(this.destroy$))\n                .subscribe(() => {\n                    this.invalid = false;\n                });\n\n            if (this.ngControl.control.validator || this.ngControl.control.asyncValidator) {\n                this._required = this.ngControl?.control?.hasValidator(Validators.required);\n            }\n\n            this._radioButtons().forEach((button) => {\n                if (this.ngControl.disabled) {\n                    button.disabled = this.ngControl.disabled;\n                }\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private setRadioButtons() {\n        this._radioButtons().forEach((button) => {\n            Promise.resolve().then(() => {\n                button.name = this._name;\n                button.required = this._required;\n            });\n\n            if (button.value === this._value) {\n                button.checked = true;\n                this._selected = button;\n                this.cdr.markForCheck();\n            }\n\n            this._setRadioButtonEvents(button);\n        });\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _setRadioButtonEvents(button: any) {\n        button.change.pipe(\n            takeUntil(button.destroy$),\n            takeUntil(this.destroy$),\n            takeUntil(this.queryChange$)\n        ).subscribe((ev: IChangeCheckboxEventArgs) => this._selectedRadioButtonChanged(ev));\n\n        button.blurRadio\n            .pipe(takeUntil(this.destroy$))\n            .subscribe(() => this.updateValidityOnBlur());\n\n        fromEvent(button.nativeElement, 'keyup')\n            .pipe(takeUntil(this.destroy$))\n            .subscribe((event: KeyboardEvent) => this.updateOnKeyUp(event));\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _selectedRadioButtonChanged(args: IChangeCheckboxEventArgs) {\n        this._radioButtons().forEach((button) => {\n            button.checked = button.id === args.owner.id;\n            if (button.checked && button.ngControl) {\n                this.invalid = button.ngControl.invalid;\n            } else if (button.checked) {\n                this.invalid = false;\n            }\n        });\n\n        this._selected = args.owner;\n        this._value = args.value;\n\n        if (this._isInitialized) {\n            this.change.emit(args);\n            this._onChangeCallback(this.value);\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _setRadioButtonNames() {\n        if (this._radioButtons) {\n            this._radioButtons().forEach((button) => {\n                button.name = this._name;\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _selectRadioButton() {\n        if (this._radioButtons) {\n            this._radioButtons().forEach((button) => {\n                if (this._value === null) {\n                    // no value - uncheck all radio buttons\n                    if (button.checked) {\n                        button.checked = false;\n                    }\n                } else {\n                    if (this._value === button.value) {\n                        // selected button\n                        if (this._selected !== button) {\n                            this._selected = button;\n                        }\n\n                        if (!button.checked) {\n                            button.checked = true;\n                        }\n                    } else {\n                        // non-selected button\n                        if (button.checked) {\n                            button.checked = false;\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _setRadioButtonsRequired() {\n        if (this._radioButtons) {\n            this._radioButtons().forEach((button) => {\n                button.required = this._required;\n            });\n        }\n    }\n\n\n    /**\n     * Registers a radio button with this radio group.\n     * This method is called by radio button components when they are created.\n     * @hidden @internal\n     */\n    public _addRadioButton(radioButton: IgxRadioComponent): void {\n        this._radioButtons.update(buttons => {\n            if (!buttons.includes(radioButton)) {\n                this._setRadioButtonEvents(radioButton);\n\n                return [...buttons, radioButton];\n            }\n            return buttons;\n        });\n    }\n\n    /**\n     * Unregisters a radio button from this radio group.\n     * This method is called by radio button components when they are destroyed.\n     * @hidden @internal\n     */\n    public _removeRadioButton(radioButton: IgxRadioComponent): void {\n        this._radioButtons.update(buttons =>\n            buttons.filter(btn => btn !== radioButton)\n        );\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    private _setRadioButtonsInvalid() {\n        if (this._radioButtons) {\n            this._radioButtons().forEach((button) => {\n                button.invalid = this._invalid;\n            });\n        }\n    }\n}\n","import {\n    AfterViewInit,\n    Component,\n    EventEmitter,\n    HostBinding,\n    HostListener,\n    Input,\n    booleanAttribute,\n    OnDestroy,\n    inject\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { EditorProvider, EDITOR_PROVIDER } from 'igniteui-angular/core';\nimport { CheckboxBaseDirective, IgxRippleDirective, IChangeCheckboxEventArgs } from 'igniteui-angular/directives';\nimport { IgxRadioGroupDirective } from './radio-group/radio-group.directive';\n\n/**\n * **Ignite UI for Angular Radio Button** -\n * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/radio_button.html)\n *\n * The Ignite UI Radio Button allows the user to select a single option from an available set of options that are listed side by side.\n *\n * Example:\n * ```html\n * <igx-radio>\n *   Simple radio button\n * </igx-radio>\n * ```\n */\n@Component({\n    selector: 'igx-radio',\n    providers: [{\n        provide: EDITOR_PROVIDER,\n        useExisting: IgxRadioComponent,\n        multi: true\n    }],\n    templateUrl: 'radio.component.html',\n    imports: [IgxRippleDirective]\n})\nexport class IgxRadioComponent\n    extends CheckboxBaseDirective\n    implements AfterViewInit, OnDestroy, ControlValueAccessor, EditorProvider {\n    /** @hidden @internal */\n    public blurRadio = new EventEmitter();\n\n    private radioGroup = inject(IgxRadioGroupDirective, { optional: true, skipSelf: true });\n\n    /**\n     * Returns the class of the radio component.\n     * ```typescript\n     * let radioClass = this.radio.cssClass;\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    @HostBinding('class.igx-radio')\n    public override cssClass = 'igx-radio';\n\n    /**\n     * Sets/gets  the `checked` attribute.\n     * Default value is `false`.\n     * ```html\n     * <igx-radio [checked]=\"true\"></igx-radio>\n     * ```\n     * ```typescript\n     * let isChecked =  this.radio.checked;\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    @HostBinding('class.igx-radio--checked')\n    @Input({ transform: booleanAttribute })\n    public override set checked(value: boolean) {\n        this._checked = value;\n    }\n    public override get checked() {\n        return this._checked;\n    }\n\n    /**\n     * Sets/gets  the `disabled` attribute.\n     * Default value is `false`.\n     * ```html\n     * <igx-radio disabled></igx-radio>\n     * ```\n     * ```typescript\n     * let isDisabled =  this.radio.disabled;\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    @HostBinding('class.igx-radio--disabled')\n    @Input({ transform: booleanAttribute })\n    public override disabled = false;\n\n    /**\n     * Sets/gets whether the radio button is invalid.\n     * Default value is `false`.\n     * ```html\n     * <igx-radio invalid></igx-radio>\n     * ```\n     * ```typescript\n     * let isInvalid =  this.radio.invalid;\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    @HostBinding('class.igx-radio--invalid')\n    @Input({ transform: booleanAttribute })\n    public override invalid = false;\n\n    /**\n     * Sets/gets whether the radio component is on focus.\n     * Default value is `false`.\n     * ```typescript\n     * this.radio.focus = true;\n     * ```\n     * ```typescript\n     * let isFocused =  this.radio.focused;\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    @HostBinding('class.igx-radio--focused')\n    public override focused = false;\n\n    /**\n     * @hidden\n     * @internal\n     */\n    @HostListener('change', ['$event'])\n    public _changed(event: IChangeCheckboxEventArgs) {\n        if (event instanceof Event) {\n            event.preventDefault();\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('click')\n    public override _onCheckboxClick() {\n        this.select();\n    }\n\n    /**\n     * Selects the current radio button.\n     * ```typescript\n     * this.radio.select();\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    public select() {\n        if (!this.checked) {\n            this.checked = true;\n            this.change.emit({\n                value: this.value,\n                owner: this,\n                checked: this.checked,\n            });\n            this._onChangeCallback(this.value);\n        }\n    }\n\n    /**\n     * Deselects the current radio button.\n     * ```typescript\n     * this.radio.deselect();\n     * ```\n     *\n     * @memberof IgxRadioComponent\n     */\n    public deselect() {\n        this.checked = false;\n        this.focused = false;\n        this.cdr.markForCheck();\n    }\n\n    /**\n     * Checks whether the provided value is consistent to the current radio button.\n     * If it is, the checked attribute will have value `true`;\n     * ```typescript\n     * this.radio.writeValue('radioButtonValue');\n     * ```\n     */\n    public override writeValue(value: any) {\n        this.value = this.value ?? value;\n\n        if (value === this.value) {\n            if (!this.checked) {\n                this.checked = true;\n            }\n        } else {\n            this.deselect();\n        }\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('blur')\n    public override onBlur() {\n        super.onBlur();\n        this.blurRadio.emit();\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public override ngAfterViewInit(): void {\n        super.ngAfterViewInit();\n\n        // Register with parent radio group if it exists\n        if (this.radioGroup) {\n            this.radioGroup._addRadioButton(this);\n        }\n    }\n\n    /**\n     * @hidden\n     * @internal\n     */\n    public ngOnDestroy(): void {\n        // Unregister from parent radio group if it exists\n        if (this.radioGroup) {\n            this.radioGroup._removeRadioButton(this);\n        }\n    }\n}\n","<input #checkbox class=\"igx-radio__input\" type=\"radio\"\n    [id]=\"inputId\"\n    [name]=\"name\"\n    [value]=\"value\"\n    [tabindex]=\"tabindex\"\n    [disabled]=\"disabled\"\n    [checked]=\"checked\"\n    [required]=\"required\"\n    [attr.aria-required]=\"required\"\n    [attr.aria-invalid]=\"invalid\"\n    [attr.aria-checked]=\"checked\"\n    [attr.aria-labelledby]=\"ariaLabel ? null : ariaLabelledBy\"\n    [attr.aria-label]=\"ariaLabel\"\n    (blur)=\"onBlur()\" />\n\n<span #label class=\"igx-radio__composite\" igxRipple\n    igxRippleTarget=\".igx-radio__ripple\"\n    [igxRippleDisabled]=\"disableRipple\"\n    [igxRippleCentered]=\"true\"\n    [igxRippleDuration]=\"300\">\n    <div class=\"igx-radio__ripple\"></div>\n</span>\n\n<span #placeholderLabel\n    [id]=\"labelId\"\n    [class]=\"labelClass\">\n    <ng-content></ng-content>\n</span>\n","import { IgxRadioComponent } from '../../radio/radio.component';\nimport { IgxRadioGroupDirective } from './radio-group.directive';\n\nexport * from './radio-group.directive';\n\n/* NOTE: Radio Group directives collection for ease-of-use import in standalone components scenario */\nexport const IGX_RADIO_GROUP_DIRECTIVES = [\n    IgxRadioGroupDirective,\n    IgxRadioComponent\n] as const;\n","import { NgModule } from '@angular/core';\nimport { IgxRadioGroupDirective } from './radio-group.directive';\nimport { IgxRadioComponent } from '../radio.component';\n\n/**\n * @hidden\n * @deprecated\n * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components\n */\n@NgModule({\n    imports: [IgxRadioGroupDirective, IgxRadioComponent],\n    exports: [IgxRadioGroupDirective, IgxRadioComponent]\n})\nexport class IgxRadioModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵIgxDirectionality"],"mappings":"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"}