UNPKG

@cds/core

Version:

Clarity Design System - common components, themes, and utilties

109 lines (108 loc) 3.91 kB
import { LitElement, TemplateResult, PropertyValues } from 'lit'; import { EventEmitter } from '@cds/core/internal'; import { CdsControlAction } from '../control-action/control-action.element.js'; import { CdsControlMessage } from './../control-message/control-message.element.js'; import { ControlStatus, ControlLayout, ControlWidth } from './../utils/interfaces.js'; import { CdsInternalControlLabel } from '../control-label/control-label.element.js'; export declare const enum ControlLabelLayout { default = "default", ariaLabel = "aria-label", inputGroup = "input-group", hiddenLabel = "hidden-label" } /** * Generic Control * * ```typescript * import '@cds/core/forms/register.js'; * ``` * * ```html * <cds-control> * <label>control</label> * <input type="text" /> * </cds-control> * ``` * @element cds-control * @slot - For projecting input and label * @cssprop --label-width */ export declare class CdsControl extends LitElement { /** * Set the status of form control validation * @type {neutral | error | success} */ status: ControlStatus; /** * Adjust the control from the default full width or the browser default width * @type {stretch | shrink} */ controlWidth: ControlWidth; /** * Set the validate attribute to sync with HTML5 native validation * https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation */ validate: boolean; /** * By default forms will collapse to layout that prevents overflow. * If disabled control layout may break or overflow in unexpected ways. */ responsive: boolean; /** * Set to adjust the default control layout. When `responsive` is true this will be the largest size to scale to. * @type {vertical | horizontal | compact} */ get layout(): ControlLayout; set layout(value: ControlLayout); private _layout; protected focused: boolean; protected disabled: boolean; protected readonly: boolean; protected fixedControlWidth: boolean; protected supportsPrefixSuffixActions: boolean; protected get isRTL(): boolean; /** @private */ labelLayout: ControlLabelLayout; /** @private Used for control/form groups */ inputControl: HTMLInputElement; protected label: HTMLLabelElement; /** @private */ controlLabel: CdsInternalControlLabel; protected datalistControl: HTMLDataListElement; protected messages: NodeListOf<CdsControlMessage>; protected controlActions: NodeListOf<CdsControlAction>; private prefixAction; private suffixAction; private messageSlot; layoutChange: EventEmitter<ControlLayout>; protected observers: (MutationObserver | ResizeObserver)[]; static get styles(): import("lit").CSSResultGroup[]; private get hasAriaLabelTypeAttr(); private get hasStatusIcon(); render(): TemplateResult<1>; protected get inputTemplate(): TemplateResult<1>; protected get prefixDefaultTemplate(): TemplateResult | null; protected get suffixDefaultTemplate(): TemplateResult | null; private get isGenericControl(); private get hasControlActions(); private get primaryLabelTemplate(); protected get messagesTemplate(): TemplateResult<1>; private get prefixTemplate(); private get suffixTemplate(); connectedCallback(): void; firstUpdated(props: PropertyValues<this>): void; updated(props: PropertyValues<any>): void; disconnectedCallback(): void; protected associateInputAndLabel(): void; private associateInputToDatalist; private setupDescribedByUpdates; private setupHostAttributes; private setupHTML5Validation; private setupPositioningListeners; private setActionOffsetPadding; /** @private */ get layoutStable(): boolean; private setupResponsive; private setupLabelLayout; private assignSlotIfInControlGroup; }