import { r as registerInstance, h, a as getElement } from './index-PqnYwNKt.js';
import { d as detectFramework, t as trackComponent } from './framework-detection-DcmcuUOA.js';
import { i as isNestedInIfxComponent } from './dom-utils-Bw2fh5LT.js';

const radioButtonGroupCss = ":root{--ifx-font-family:\"Source Sans 3\", \"Arial, sans-serif\"}.radio-button-group-container{display:flex;flex-direction:column}.radio-button-group{display:flex;gap:8px}.radio-button-group.horizontal{flex-direction:row;column-gap:12px}.radio-button-group.vertical{flex-direction:column;row-gap:12px}.group-label{font-size:1rem;color:#1D1D1D;line-height:1.5rem;font-weight:400;margin-bottom:8px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.group-label .required{color:#575352;margin-left:4px}.group-label .required.error{color:#CD002F}.caption{margin-top:8px;align-self:flex-start;display:flex;width:100%;column-gap:8px;justify-content:space-between;align-items:center}.caption.default{color:#1D1D1D}.caption.error{color:#CD002F}.caption-text{font-size:0.75rem;line-height:1rem;flex:1;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.caption-icon{flex:0;display:flex}";

const RadioButtonGroup = class {
    constructor(hostRef) {
        registerInstance(this, hostRef);
        this.errorStates = new Map();
        this.alignment = 'vertical';
        this.groupLabelText = 'Group Label Text';
        this.required = false;
        this.hasErrors = false;
        this.handleSlotChange = () => {
            this.initializeState();
        };
    }
    handleRadioButtonError(event) {
        const radioButton = event.target;
        if (radioButton.tagName.toLowerCase() === 'ifx-radio-button') {
            this.errorStates.set(radioButton, event.detail);
            this.updateHasErrors();
        }
    }
    // Method to set the error state of all radio-butttons in the group
    async setGroupError(error) {
        const radioButtons = Array.from(this.el.querySelectorAll('ifx-radio-button'));
        radioButtons.forEach((radioButton) => {
            radioButton.error = error;
        });
    }
    componentWillLoad() {
        this.initializeState();
    }
    async componentDidLoad() {
        if (!isNestedInIfxComponent(this.el)) {
            const framework = detectFramework();
            trackComponent('ifx-radio-button-group', await framework);
        }
    }
    initializeState() {
        this.errorStates.clear();
        const radioButtons = Array.from(this.el.querySelectorAll('ifx-radio-button'));
        radioButtons.forEach((radioButton) => {
            if (!this.errorStates.has(radioButton)) {
                this.errorStates.set(radioButton, radioButton.error || false);
            }
        });
        this.updateHasErrors();
    }
    updateHasErrors() {
        console.log('here');
        this.hasErrors = Array.from(this.errorStates.values()).some((error) => error);
    }
    render() {
        return (h("div", { key: 'dcd66919142f41e8d51054f7de1663361c273232', class: 'radio-button-group-container' }, this.showGroupLabel && (h("div", { key: '7765acb090b78c495b03b17f242b0efacba29a10', class: "group-label" }, this.groupLabelText, this.required && h("span", { key: 'e500cc4867c756991d6e76b77640b6fc1f052296', class: `required ${this.hasErrors ? 'error' : ''}` }, "*"))), h("div", { key: '05211a3727a84a135588bccee63d22c36511cbee', class: `radio-button-group ${this.alignment} ${this.size}` }, h("slot", { key: '4d9cbd4f52276f6c101306208bd6156e01287f2f', onSlotchange: this.handleSlotChange })), this.showCaption ? (h("div", { class: `caption ${this.hasErrors ? 'error' : 'default'}` }, this.showCaptionIcon ? h("div", { class: 'caption-icon' }, h("ifx-icon", { icon: "c-info-16" })) : '', h("div", { class: 'caption-text' }, this.captionText))) : ''));
    }
    get el() { return getElement(this); }
};
RadioButtonGroup.style = radioButtonGroupCss;

export { RadioButtonGroup as ifx_radio_button_group };
//# sourceMappingURL=ifx-radio-button-group.entry.js.map

//# sourceMappingURL=ifx-radio-button-group.entry.js.map