{"version":3,"file":"seniorsistemas-angular-components-radio-button.mjs","sources":["../../projects/angular-components/radio-button/src/lib/services/radio-button-registry.service.ts","../../projects/angular-components/radio-button/src/lib/radio-button/radio-button.component.ts","../../projects/angular-components/radio-button/src/lib/radio-button/radio-button.component.html","../../projects/angular-components/radio-button/src/lib/radio-button-group/radio-button-group.component.ts","../../projects/angular-components/radio-button/src/lib/radio-button-group/radio-button-group.component.html","../../projects/angular-components/radio-button/src/seniorsistemas-angular-components-radio-button.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { RadioButtonComponent } from '../radio-button/radio-button.component';\n\ntype ComponentRef = { componentInstance: RadioButtonComponent; formControl: NgControl };\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class RadioButtonRegistryService {\n    private componentRefs: ComponentRef[] = [];\n\n    add(control: NgControl, componentInstance: RadioButtonComponent) {\n        this.componentRefs.push({\n            componentInstance,\n            formControl: control,\n        });\n    }\n\n    remove(componentInstance: RadioButtonComponent) {\n        this.componentRefs = this.componentRefs.filter((item) => item.componentInstance !== componentInstance);\n    }\n\n    select(componentInstance: RadioButtonComponent) {\n        this.componentRefs.forEach((item) => {\n            if (this.isSameGroup(item, componentInstance) && item.componentInstance !== componentInstance) {\n                item.componentInstance.writeValue(componentInstance.value());\n            }\n        });\n    }\n\n    private isSameGroup(\n        { componentInstance, formControl }: ComponentRef,\n        currentComponentInstance: RadioButtonComponent,\n    ): boolean {\n        if (!formControl) {\n            return false;\n        }\n        const controlRoot = formControl.control?.root;\n        return (\n            controlRoot === componentInstance?.['control']?.control?.root &&\n            componentInstance.name() === currentComponentInstance.name()\n        );\n    }\n}\n","import { NgClass } from '@angular/common';\nimport {\n    Component,\n    computed,\n    forwardRef,\n    inject,\n    Injector,\n    input,\n    model,\n    OnDestroy,\n    OnInit,\n    output,\n    signal,\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\nimport { RadioButtonRegistryService } from '../services/radio-button-registry.service';\n\n/**\n * @description Componente de botão de opção (radio button) individual que implementa\n * {@link ControlValueAccessor} para integração com formulários Angular.\n * Pode ser usado de forma independente ou agrupado dentro de {@link RadioButtonGroupComponent}\n * para garantir a exclusividade de seleção entre os itens do grupo.\n *\n * @example\n * ```html\n * <s-radiobutton\n *   name=\"opcao\"\n *   label=\"Opção A\"\n *   value=\"A\"\n *   [(ngModel)]=\"selecionado\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-radiobutton',\n    standalone: true,\n    imports: [FormsModule, NgClass, InteractiveContentDirective],\n    templateUrl: './radio-button.component.html',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => RadioButtonComponent),\n            multi: true,\n        },\n    ],\n})\nexport class RadioButtonComponent implements ControlValueAccessor, OnInit, OnDestroy {\n    private static ID = 0;\n    private readonly radioButtonRegistry = inject(RadioButtonRegistryService);\n    private readonly injector = inject(Injector);\n    private control: NgControl | null = null;\n\n    protected readonly disabled = computed(() => {\n        return this.buttonDisabled() || this.formItemDisabled();\n    });\n\n    protected onChange: (value: unknown) => void = () => {};\n    protected onTouched: (value: unknown) => void = () => {};\n    protected checked: boolean | null = null;\n    protected formItemDisabled = signal(false);\n\n    /** @description Controla o estado desabilitado do botão via two-way binding. @default false */\n    buttonDisabled = model(false);\n\n    /** @description Texto do label exibido ao lado do botão de opção. Campo obrigatório. */\n    label = input.required<string>();\n\n    /** @description Nome do grupo de radio buttons. Deve ser igual para todos os botões do mesmo grupo. Campo obrigatório. */\n    name = input.required<string>();\n\n    /** @description Valor associado a este botão de opção. Emitido ao formulário quando o item é selecionado. Campo obrigatório. */\n    value = model.required<unknown>();\n\n    /**\n     * @description Identificador único do elemento `<input>` interno, usado para acessibilidade.\n     * Gerado automaticamente se não informado.\n     */\n    inputId = input(`RadioButton_${RadioButtonComponent.ID++}`);\n\n    /** @description Emitido quando o campo interno recebe foco. */\n    focusedInput = output<FocusEvent>();\n\n    /** @description Emitido quando o campo interno perde o foco. */\n    inputFocusLost = output<FocusEvent>();\n\n    registerOnChange(fn: (value: unknown) => 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.formItemDisabled.set(isDisabled);\n    }\n\n    writeValue(value: unknown): void {\n        this.checked = value === this.value();\n    }\n\n    ngOnInit(): void {\n        this.control = this.injector.get(NgControl, null);\n        if (this.control) {\n            this.radioButtonRegistry.add(this.control, this);\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.control) {\n            this.radioButtonRegistry.remove(this);\n        }\n    }\n\n    protected setValue() {\n        if (this.disabled()) {\n            return;\n        }\n        this.checked = true;\n        this.onChange(this.value());\n        this.radioButtonRegistry.select(this);\n        this.onTouched(this.value());\n    }\n\n    protected activedContent(event: Event | KeyboardEvent) {\n        event.stopPropagation();\n        event.preventDefault();\n        this.setValue();\n    }\n}\n\n","<div\n    class=\"flex items-center gap-3\"\n    (sInteractiveContent)=\"activedContent($event)\"\n    [stopPropagation]=\"true\"\n    [disabled]=\"disabled()\"\n    [tabindex]=\"disabled() ? -1 : 0\"\n>\n    <input\n        type=\"radio\"\n        [value]=\"value()\"\n        [checked]=\"checked\"\n        [name]=\"name()\"\n        [id]=\"inputId()\"\n        (change)=\"setValue()\"\n        [disabled]=\"disabled()\"\n        class=\"h-4 w-4 appearance-none rounded-[50%] transition-all ease-in-out disabled:opacity-50\"\n        [ngClass]=\"{\n            'border-2 border-primary': checked,\n            'border-[1px] border-grayscale-30': !checked,\n            'cursor-pointer': !disabled(),\n            'focus-within:!border-primary hover:border-[1px] hover:border-[#063951]': !disabled() && checked,\n            'hover:border-grayscale-50': !disabled() && !checked,\n        }\"\n        [stopPropagation]=\"true\"\n        (sInteractiveContent)=\"activedContent($event)\"\n        (focus)=\"focusedInput.emit($event)\"\n        (blur)=\"inputFocusLost.emit($event)\"\n    />\n\n    <label\n        class=\"font-open-sans m-0 text-sm text-grayscale-90\"\n        [disabled]=\"disabled()\"\n        (sInteractiveContent)=\"activedContent($event)\"\n        [stopPropagation]=\"true\"\n        [tabindex]=\"disabled() ? -1 : 0\"\n        [ngClass]=\"{\n            'cursor-pointer': !disabled(),\n            'opacity-50': disabled(),\n        }\"\n        [for]=\"inputId()\"\n    >\n        {{ label() }}\n    </label>\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { RadioButtonComponent } from '../radio-button/radio-button.component';\nimport { RadioButtonGroupItem } from './models/radio-button-group.models';\n\n/**\n * @description Componente de grupo de botões de opção (radio button group) que gerencia\n * a seleção exclusiva entre múltiplas opções. Implementa {@link ControlValueAccessor}\n * para uso com Reactive Forms e Template-driven Forms do Angular.\n * Renderiza internamente componentes {@link RadioButtonComponent} para cada item configurado.\n *\n * @example\n * ```html\n * <s-radiobutton-group\n *   formControlName=\"opcao\"\n *   inputName=\"plano\"\n *   [items]=\"planos\"\n *   viewMode=\"vertical\" />\n * ```\n *\n * @category Inputs\n */\n@Component({\n    selector: 's-radiobutton-group',\n    standalone: true,\n    imports: [FormsModule, RadioButtonComponent],\n    templateUrl: './radio-button-group.component.html',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => RadioButtonGroupComponent),\n            multi: true,\n        },\n    ],\n})\nexport class RadioButtonGroupComponent implements ControlValueAccessor {\n    protected onChange: (value: unknown) => void = () => {};\n    protected onTouched: (value: unknown) => void = () => {};\n    protected modelValue = signal<unknown>(undefined);\n\n    /** @description Controla o estado desabilitado de todos os botões do grupo via two-way binding. @default false */\n    readonly disabled = model(false);\n\n    /** @description Lista de itens que serão renderizados como opções do grupo. Campo obrigatório. */\n    readonly items = input.required<RadioButtonGroupItem[]>();\n\n    /** @description Atributo `name` compartilhado entre todos os radio buttons do grupo, garantindo exclusividade. Campo obrigatório. */\n    readonly inputName = input.required<string>();\n\n    /**\n     * @description Direção de layout dos botões de opção.\n     * `'horizontal'` exibe os botões lado a lado; `'vertical'` os empilha.\n     *\n     * @default 'horizontal'\n     */\n    readonly viewMode = input<'horizontal' | 'vertical'>('horizontal');\n\n    registerOnChange(fn: (value: unknown) => 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.disabled.set(isDisabled);\n    }\n\n    writeValue(value: unknown): void {\n        this.modelValue.set(value);\n    }\n\n    protected radioButtonItems = computed(() => {\n        const items = this.items();\n        return items.map((item) => {\n            return {\n                ...item,\n                hash: randomHash(),\n            };\n        });\n    });\n\n    protected setValue(value: unknown) {\n        if (this.disabled()) {\n            return;\n        }\n\n        this.onChange(value);\n        this.onTouched(value);\n    }\n}\n\n","<section\n    class=\"flex gap-2\"\n    [class.flex-col]=\"viewMode() === 'horizontal'\"\n>\n    @for (radioButtonItem of radioButtonItems(); track radioButtonItem.hash) {\n        @let itemDisabled = disabled() ? true : radioButtonItem.disabled || false;\n\n        <s-radiobutton\n            [(ngModel)]=\"modelValue\"\n            (ngModelChange)=\"setValue($event)\"\n            [value]=\"radioButtonItem.value\"\n            [buttonDisabled]=\"itemDisabled\"\n            [name]=\"inputName()\"\n            [label]=\"radioButtonItem.label\"\n        >\n        </s-radiobutton>\n    }\n</section>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}