{"version":3,"file":"seniorsistemas-angular-components-switch.mjs","sources":["../../projects/angular-components/switch/src/lib/switch/switch.component.ts","../../projects/angular-components/switch/src/lib/switch/switch.component.html","../../projects/angular-components/switch/src/lib/switch/switch.module.ts","../../projects/angular-components/switch/src/seniorsistemas-angular-components-switch.ts"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, forwardRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n/**\r\n * @description Componente de chave tipo switch (liga/desliga) que implementa\r\n * `ControlValueAccessor` para uso em formulários Angular. Suporta rótulos\r\n * personalizados para os estados verdadeiro e falso, além de modo somente leitura.\r\n *\r\n * @example\r\n * ```html\r\n * <s-switch formControlName=\"ativo\" trueLabel=\"Ativo\" falseLabel=\"Inativo\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n    selector: 's-switch',\r\n    templateUrl: './switch.component.html',\r\n    styleUrls: ['./switch.component.scss'],\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => SwitchComponent),\r\n            multi: true,\r\n        },\r\n    ],\r\n    standalone: true,\r\n    imports: [TranslateModule],\r\n})\r\nexport class SwitchComponent implements ControlValueAccessor {\r\n    /** @description Impede alterações pelo usuário sem desabilitar o campo. @default false */\r\n    @Input()\r\n    public readonly = false;\r\n\r\n    /** @description Rótulo exibido quando o valor é `true`. @default 'Ligado' */\r\n    @Input()\r\n    public trueLabel = 'Ligado';\r\n\r\n    /** @description Rótulo exibido quando o valor é `false`. @default 'Desligado' */\r\n    @Input()\r\n    public falseLabel = 'Desligado';\r\n\r\n    /** @description `id` do elemento `<input>` interno para associação com `<label>`. */\r\n    @Input()\r\n    public inputId?: string;\r\n    /** @description Nome acessível descritivo do switch para tecnologias assistivas (aria-label). */\r\n    @Input()\r\n    public label?: string;\r\n\r\n    /** @description Atributo `name` do `<input>` interno. */\r\n    @Input()\r\n    public inputName?: string;\r\n\r\n    /** @description Desabilita o componente, impedindo interação e alterações. @default false */\r\n    @Input()\r\n    public disabled = false;\r\n\r\n    /** @description Emitido quando o valor do switch muda, com o novo estado booleano. */\r\n    @Output()\r\n    public valueChanged = new EventEmitter<boolean>();\r\n\r\n    /** @description Valor atual do switch. @default false */\r\n    @Input()\r\n    public value = false;\r\n\r\n    /** @description Controla se deve ou não exibir o value do componente. @default true */\r\n    @Input()\r\n    public showStatusLabel = true;\r\n\r\n    @ViewChild('switch', { static: true })\r\n    public switchRef!: ElementRef;\r\n\r\n    private _onChange?: (value: boolean) => void;\r\n    private _onTouched?: (value: boolean) => void;\r\n\r\n    @HostListener('focusin')\r\n    public onFocusIn(): void {\r\n        const switchElement = this.switchRef.nativeElement as HTMLDivElement;\r\n        switchElement.classList.add('switch--focus');\r\n    }\r\n\r\n    @HostListener('focusout')\r\n    public onFocusOut(): void {\r\n        const switchElement = this.switchRef.nativeElement as HTMLDivElement;\r\n        switchElement.classList.remove('switch--focus');\r\n    }\r\n\r\n    public writeValue(value: boolean): void {\r\n        if (!this.disabled) {\r\n            this.value = value;\r\n        }\r\n    }\r\n\r\n    public registerOnChange(onChange: (value: boolean) => void): void {\r\n        this._onChange = onChange;\r\n    }\r\n\r\n    public registerOnTouched(onTouched: (value: boolean) => void): void {\r\n        this._onTouched = onTouched;\r\n    }\r\n\r\n    public setDisabledState?(disabled: boolean): void {\r\n        this.disabled = disabled;\r\n    }\r\n\r\n    public toggleCheck() {\r\n        if (this.readonly) {\r\n            return;\r\n        }\r\n        this.value = !this.value;\r\n        this.valueChanged.emit(this.value);\r\n\r\n        if (this._onChange) {\r\n            this._onChange(this.value);\r\n        }\r\n\r\n        if (this._onTouched) {\r\n            this._onTouched(this.value);\r\n        }\r\n    }\r\n}\r\n","<div\n    #switch\n    class=\"inline-flex items-center\"\n    role=\"group\"\n    [attr.aria-label]=\"label || ('platform.angular_components.switch_toggle' | translate)\"\n    [class.opacity-50]=\"disabled\"\n    [attr.aria-disabled]=\"disabled || null\"\n>\n    <label class=\"inline-block h-6 m-0 relative w-10\">\n        <span class=\"sr-only\">{{ label || ('platform.angular_components.switch_toggle' | translate) }}</span>\n        <input\n            #input\n            [id]=\"inputId\"\n            [name]=\"inputName\"\n            type=\"checkbox\"\n            role=\"switch\"\n            class=\"h-0 opacity-0 w-0\"\n            [attr.aria-checked]=\"value\"\n            [checked]=\"value\"\n            [disabled]=\"disabled\"\n            [attr.aria-readonly]=\"readonly || null\"\n            (change)=\"toggleCheck()\"\n        />\n        <span\n            class=\"slider bg-grayscale-40 rounded-[15px] inset-0 absolute cursor-pointer transition-all duration-[400ms]\"\n            aria-hidden=\"true\"\n        ></span>\n    </label>\n    @if (showStatusLabel) {\n        <span class=\"text-grayscale-90 font-open-sans text-sm font-normal leading-[150%] ml-3\">{{ value ? trueLabel : falseLabel }}</span>\n    }\n</div>\n\n","import { NgModule } from '@angular/core';\r\n\r\nimport { SwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n    imports: [SwitchComponent],\r\n    exports: [SwitchComponent],\r\n})\r\nexport class SwitchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}