import { LabeledChoiceElement } from '../../internal/mixin/labeledChoiceElement'; /** * `dap-ds-switch` * @summary A switch is a graphical control element that allows the user to toggle between two states. * @element dap-ds-switch * @title - Switch * * @property {string} name - The name of the switch. * @property {string} value - The value of the switch. * @property {string} label - The label of the switch. * @property {string} description - The description of the switch. * @property {boolean} checked - The checked state of the switch. * @property {'xs' | 'sm' | 'lg'} size - The size of the switch. * @property {boolean} disabled - The disabled state of the switch. * @property {boolean} readonly - Whether the switch is readonly (cannot be changed but value is submitted with form). * @property {boolean} required - The required state of the switch. * @property {'left' | 'right'} labelPlacement - The placement of the label. * @property {'top' | 'bottom'} descriptionPlacement - The placement of the description. * @property {boolean} subtle - The weight of the label. * @property {string} feedback - The feedback of the switch. * @property {'negative' | 'positive' | 'warning'} feedbackType - The feedback type of the switch. * @property {boolean} optional - The optional state of the switch. * @property {string} optionalLabel - The optional label of the switch. * * @cssProperty --dds-switch-width - Width of the switch control (default: var(--dds-spacing-1000) * @cssProperty --dds-switch-height - Height of the switch control (default: var(--dds-spacing-600)) * @cssProperty --dds-switch-thumb-width - Width of the switch thumb (default: var(--dds-spacing-500)) * @cssProperty --dds-switch-thumb-height - Height of the switch thumb (default: var(--dds-spacing-500)) * @cssProperty --dds-switch-thumb-margin - Margin around the switch thumb (default: 0.125rem) * @cssProperty --dds-switch-thumb-color - Color of the switch thumb (default: var(--dds-button-primary-icon-enabled)) * @cssProperty --dds-switch-unchecked-bg - Background color of the switch when unchecked (default: var(--dds-background-neutral-base-inverted)) * @cssProperty --dds-switch-checked-bg - Background color of the switch when checked (default: var(--dds-background-brand-base-inverted)) * @cssProperty --dds-switch-invalid-bg - Background color of the switch when invalid (default: var(--dds-background-negative-base-inverted)) * @cssProperty --dds-switch-disabled-bg - Background color of the switch when disabled (default: var(--dds-background-neutral-disabled)) * @cssProperty --dds-switch-readonly-bg - Background color of the switch when readonly (default: var(--dds-background-neutral-disabled)) * @cssProperty --dds-switch-wrapper-padding - Padding of the switch wrapper (default: var(--dds-spacing-400)) * @cssProperty --dds-switch-wrapper-bg - Background color of the switch wrapper (default: var(--dds-background-neutral-subtle)) * @cssProperty --dds-switch-border-color - Border color of the switch (default: var(--dds-border-neutral-subtle)) * @cssProperty --dds-switch-high-contrast-border-color - Border color of the switch in high contrast mode (default: var(--dds-border-neutral-transparent-interactive, #fff500)) * * @event {{ value: string }} dds-change - Fired when the input value changes. * @event {{ void }} dds-blur - Emitted when the input loses focus. * @event {{ void }} dds-focus - Emitted when the input gains focus. * @event {{ value: string }} dds-input - Emitted when the input receives input. * * @csspart base - The main switch container. * @csspart baselabel - The main label container * @csspart label - The label of the switch. * @csspart input - The native input of the switch. * @csspart control - The control of the switch. * @csspart description - The description of the switch. */ export default class DapDSSwitch extends LabeledChoiceElement { private static nextId; private readonly inputId; private readonly labelId; private readonly descriptionId; private readonly input; /** This sets up border around the switch, when true. */ border: boolean; /** The type of the switch * @type {'normal' | 'background'} */ type: 'normal' | 'background'; static readonly styles: import('lit').CSSResult; constructor(); /** * Validates property combinations and logs warnings for invalid states. * @private */ private validateProperties; /** * Gets the aria-describedby attribute value by combining description and feedback IDs. * @returns {string | undefined} Space-separated IDs or undefined if none exist * @private */ private getAriaDescribedBy; /** * Handles click events on the switch. * Manages the checked state transitions and emits change events. * @private */ private readonly handleClick; get focusElement(): HTMLInputElement; /** * Programmatically focuses the switch input element. * @public */ focus(): void; /** * Programmatically blurs the switch input element. * @public */ blur(): void; /** * Handles invalid events on the switch input. * Prevents the default browser validation UI from showing and manages invalid state. * @param {Event} event - The invalid event * @private */ handleInvalid(event: Event): void; /** * Handles keyboard events on the switch. * Provides enhanced keyboard navigation and accessibility. * @param {KeyboardEvent} event - The keyboard event * @private */ private handleKeyDown; render(): import('lit-html').TemplateResult; }