{"version":3,"file":"eui-components-eui-slide-toggle.mjs","sources":["../../eui-slide-toggle/animations/on-off.ts","../../eui-slide-toggle/eui-slide-toggle.component.ts","../../eui-slide-toggle/eui-slide-toggle.component.html","../../eui-slide-toggle/index.ts","../../eui-slide-toggle/eui-components-eui-slide-toggle.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const onOff = trigger('onOff', [\n    state(\n        'off',\n        style({\n            left: 0,\n        }),\n    ),\n    state(\n        'on',\n        style({\n            left: '1rem',\n        }),\n    ),\n    transition('off => on', [animate('0ms 100ms linear')]),\n    transition('on => off', [animate('0ms 100ms linear')]),\n]);\n","import {\n    Component,\n    HostBinding,\n    ChangeDetectionStrategy,\n    Input,\n    Output,\n    EventEmitter,\n    ChangeDetectorRef,\n    booleanAttribute,\n    inject,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl, ReactiveFormsModule } from '@angular/forms';\n\nimport { uniqueId } from '@eui/core';\nimport { BaseStatesDirective } from '@eui/components/shared';\n\nimport { onOff } from './animations/on-off';\nimport { EUI_ICON } from '@eui/components/eui-icon';\n\n/**\n * @description\n * Slide toggle component used to represent a boolean state.\n * It can be used as a standalone toggle or integrated with Angular Reactive Forms.\n * Supports icons for ON/OFF states and visual variants via EUI base state directives.\n *\n * @usageNotes\n * ### Basic Usage\n * ```html\n * <!-- Simple toggle -->\n * <eui-slide-toggle [(isChecked)]=\"enabled\" />\n *\n * <!-- With icons -->\n * <eui-slide-toggle\n *   [iconSvgNameOn]=\"'check'\"\n *   [iconSvgNameOff]=\"'close'\"\n *   [(isChecked)]=\"enabled\" />\n *\n * <!-- Reactive forms -->\n * <form [formGroup]=\"form\">\n *   <eui-slide-toggle formControlName=\"notifications\" />\n * </form>\n * ```\n *\n * ### Accessibility\n * - Provide meaningful aria-label describing the toggle's purpose\n * - Toggle is keyboard accessible (Space/Enter to toggle)\n * - Disabled state is properly communicated to screen readers\n *\n * ### Notes\n * - Supports semantic color variants (euiPrimary, euiSuccess, euiDanger, etc.)\n * - Size variants (euiSizeS, euiSizeM, euiSizeL, euiSizeXL) control toggle dimensions\n * - Icons are optional and can be customized for ON/OFF states\n */\n@Component({\n    templateUrl: './eui-slide-toggle.component.html',\n    selector: 'eui-slide-toggle',\n    styleUrl: './eui-slide-toggle.scss',\n    animations: [onOff],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        ReactiveFormsModule,\n        ...EUI_ICON,\n    ],\n    hostDirectives: [\n        {\n            directive: BaseStatesDirective,\n            inputs: [\n                'euiPrimary',\n                'euiSecondary',\n                'euiInfo',\n                'euiWarning',\n                'euiSuccess',\n                'euiDanger',\n                'euiVariant',\n                'euiSizeS',\n                'euiSizeM',\n                'euiSizeL',\n                'euiSizeXL',\n                'euiSizeVariant',\n            ],\n        },\n    ],\n})\nexport class EuiSlideToggleComponent implements ControlValueAccessor {\n    /** CSS classes applied to the host element */\n    @HostBinding('class')\n    get cssClasses(): string {\n        return [this.baseStatesDirective.getCssClasses('eui-slide-toggle')].join(' ').trim();\n    }\n\n    /**\n     * Unique identifier for the toggle\n     * @default Generated unique ID with 'eui-slide-toggle-' prefix\n     */\n    @Input() id = `eui-slide-toggle-${uniqueId()}`;\n    /**\n     * attribute attached to the aria-label of the input field\n     * @default 'eUI slide toggle'\n     */\n    @Input() ariaLabel = 'eUI slide toggle';\n\n    /**\n     * Name of the icon to display when toggle is ON\n     * @default undefined\n     */\n    @Input() iconSvgNameOn: string;\n\n    /**\n     * Name of the icon to display when toggle is OFF\n     * @default undefined\n     */\n    @Input() iconSvgNameOff: string;\n\n    /**\n     * Fill color for the ON state icon\n     * @default 'secondary'\n     */\n    @Input() iconSvgFillColorOn = 'secondary';\n\n    /**\n     * Fill color for the OFF state icon\n     * @default 'secondary'\n     */\n    @Input() iconSvgFillColorOff = 'secondary';\n\n    /**\n     * Current checked state of the toggle\n     * @default false\n     */\n    @Input({ transform: booleanAttribute }) isChecked = false;\n\n    /**\n     * Whether the toggle is disabled\n     * @default false\n     */\n    @Input({ transform: booleanAttribute })\n    set disabled(value: boolean) {\n        this._disabled = value;\n        if (value) {\n            this.checkboxControl.disable();\n        } else {\n            this.checkboxControl.enable();\n        }\n    }\n    get disabled(): boolean {\n        return this._disabled;\n    }\n\n    /**\n     * Event emitted when toggle state changes\n     * @emits boolean - The new toggle state\n     */\n    @Output() slideToggleChange = new EventEmitter<boolean>();\n\n    /** Form control for the toggle when used in reactive forms */\n    public checkboxControl = new FormControl();\n\n    private _disabled = false;\n    \n    private cd = inject(ChangeDetectorRef);\n    private control = inject(NgControl, { self: true, optional: true })!;\n    protected baseStatesDirective = inject(BaseStatesDirective);\n\n    constructor() {\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n    }\n\n    /**\n     * Toggles the current state if not disabled\n     * Emits the new state and notifies form control\n     */\n    public toggle(): void {\n        if (!this.disabled) {\n            this.isChecked = !this.isChecked;\n            this.slideToggleChange.emit(this.isChecked);\n            this.onChange(this.isChecked);\n            this.onTouch();\n        }\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Updates the toggle's checked state\n     */\n    public writeValue(value: boolean): void {\n        this.isChecked = value;\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Updates the toggle's disabled state\n     */\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n        if (isDisabled) {\n            this.checkboxControl.disable();\n        } else {\n            this.checkboxControl.enable();\n        }\n        this.cd.detectChanges();\n    }\n\n    /**\n     * Handles focus out event\n     * Notifies form control of touch event\n     */\n    public onFocusOut(): void {\n        this.onTouch();\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Registers change handler\n     * @todo Improve type definition or make generic\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public registerOnChange(fn: any): void {\n        this.onChange = fn;\n    }\n\n    /**\n     * Implements ControlValueAccessor\n     * Registers touch handler\n     * @todo Improve type definition or make generic\n     */\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    public registerOnTouched(fn: any): void {\n        this.onTouch = fn;\n    }\n\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private onChange: any = () => {/* empty */};\n\n    // TODO: find the correct type or turn into a generic, https://www.typescriptlang.org/docs/handbook/2/generics.html\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    private onTouch: any = () => {/* empty */};\n}\n","<div\n    class=\"eui-slide-toggle__container\"\n    [class.eui-slide-toggle__container--disabled]=\"disabled\">\n    <input\n        class=\"eui-slide-toggle__container-input\"\n        [formControl]=\"checkboxControl\"\n        [id]=\"id\"\n        type=\"checkbox\"\n        role=\"switch\"\n        [aria-label]=\"ariaLabel\"\n        [checked]=\"isChecked\"\n        (change)=\"toggle(); $event.preventDefault()\"\n        (keydown.enter)=\"toggle()\"\n        (blur)=\"onFocusOut()\" />\n    <div\n        class=\"eui-slide-toggle__track\"\n        [class.eui-slide-toggle__track--off]=\"!isChecked\"\n        [class.eui-slide-toggle__track--on]=\"isChecked\"></div>\n    <div\n        class=\"eui-slide-toggle__handler\"\n        [@onOff]=\"isChecked ? 'on' : 'off'\"\n        [class.eui-slide-toggle__handler--off]=\"!isChecked\"\n        [class.eui-slide-toggle__handler--on]=\"isChecked\">\n\n        @if (iconSvgNameOn && iconSvgNameOff) {\n            @if (isChecked) {\n                <eui-icon-svg icon=\"{{iconSvgNameOn}}\" fillColor=\"{{iconSvgFillColorOn}}\"></eui-icon-svg>\n            } @else {\n                <eui-icon-svg icon=\"{{iconSvgNameOff}}\" fillColor=\"{{iconSvgFillColorOff}}\"></eui-icon-svg>\n            }\n        }\n    </div>\n</div>\n","import { EuiSlideToggleComponent } from './eui-slide-toggle.component';\n\nexport * from './eui-slide-toggle.component';\n\nexport const EUI_SLIDE_TOGGLE = [\n    EuiSlideToggleComponent,\n] as const;\n\n// export { EuiSlideToggleComponent as EuiSlideToggle } from './eui-slide-toggle.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}