{"version":3,"file":"seniorsistemas-angular-components-rating-scale.mjs","sources":["../../projects/angular-components/rating-scale/src/lib/rating-scale/rating-scale.component.ts","../../projects/angular-components/rating-scale/src/lib/rating-scale/rating-scale.component.html","../../projects/angular-components/rating-scale/src/lib/rating-scale/rating-scale.module.ts","../../projects/angular-components/rating-scale/src/seniorsistemas-angular-components-rating-scale.ts"],"sourcesContent":["import { Component, Input, forwardRef } from '@angular/core';\n\nimport { RatingScaleNode } from './models/rating-scale-node';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n/**\n * @description Componente de escala de avaliação que permite ao usuário selecionar um nó de uma escala visual.\n * Implementa `ControlValueAccessor` para integração com Reactive Forms e Template-Driven Forms.\n * Ideal para pesquisas de satisfação (NPS, CSAT) e questionários de feedback.\n *\n * @example\n * ```html\n * <s-rating-scale\n *   [nodes]=\"ratingNodes\"\n *   startLabel=\"Péssimo\"\n *   endLabel=\"Ótimo\"\n *   [(ngModel)]=\"rating\"\n * />\n * ```\n *\n * @category Feedback\n */\n@Component({\n    selector: 's-rating-scale',\n    templateUrl: './rating-scale.component.html',\n    styleUrls: ['./rating-scale.component.scss'],\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => RatingScaleComponent),\n            multi: true,\n        },\n    ],\n})\nexport class RatingScaleComponent implements ControlValueAccessor {\n    /**\n     * @description Lista de nós que compõem a escala de avaliação. Campo obrigatório.\n     * Cada `RatingScaleNode` define o valor, rótulo e cor do item na escala.\n     */\n    @Input({ required: true })\n    public nodes!: RatingScaleNode[];\n\n    /** @description Rótulo exibido no início (extremidade esquerda) da escala. */\n    @Input()\n    public startLabel?: string;\n\n    /** @description Rótulo exibido no final (extremidade direita) da escala. */\n    @Input()\n    public endLabel?: string;\n\n    /**\n     * @description Quando `true`, a escala fica desabilitada e o usuário não pode selecionar nenhum nó.\n     *\n     * @default false\n     */\n    @Input()\n    public disabled = false;\n\n    public value?: RatingScaleNode;\n    private _onChange?: (value: RatingScaleNode) => void;\n    private _onTouched?: (value: RatingScaleNode) => void;\n\n    public writeValue(value: RatingScaleNode): void {\n        if (!this.disabled) {\n            this.value = value;\n        }\n    }\n    public registerOnChange(onChange: (value: RatingScaleNode) => void): void {\n        this._onChange = onChange;\n    }\n    public registerOnTouched(onTouched: (value: RatingScaleNode) => void): void {\n        this._onTouched = onTouched;\n    }\n\n    public onSelect(rating: RatingScaleNode) {\n        this.value = rating;\n        if (this._onChange) {\n            this._onChange(this.value);\n        }\n    }\n}\n\n","<div\n    class=\"rating-scale\"\n    [ngClass]=\"{ 'rating-scale--disabled': disabled }\">\n    <div class=\"nodes\">\n        @for (node of nodes; track node.id) {\n            <button\n                class=\"node\"\n                [ngClass]=\"{ 'node--selected': value?.id === node.id && !disabled }\"\n                tabindex=\"0\"\n                (click)=\"onSelect(node)\">\n                @if (node.icon) {\n                    <span\n                        class=\"icon fas\"\n                        [ngClass]=\"node.icon\">\n                    </span>\n                }\n                @if (node.title) {\n                    <span class=\"label\">{{ node.title }}</span>\n                }\n            </button>\n        }\n    </div>\n    <div class=\"labels\">\n        <span>{{ startLabel }}</span>\n        <span>{{ endLabel }}</span>\n    </div>\n</div>","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ReactiveFormsModule } from \"@angular/forms\";\n\nimport { RatingScaleComponent } from \"./rating-scale.component\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n    ],\n    declarations: [RatingScaleComponent],\n    exports: [RatingScaleComponent],\n})\nexport class RatingScaleModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}