import { PropertyValues } from 'lit'; import { DDSElement } from "../../base/index.js"; /** * The tabs component manages a group of tab components and switches the content displayed using the panel switcher component. * It allows users to navigate between different sections of content by clicking on individual tabs. * * > [!WARNING] * > At least one tab must be available (that means, the tab must be present and enabled). * > Otherwise, unexpected behavior may be encountered. * * Hierarchies: * - `daikin-tabs` > `daikin-tab` * - `daikin-tabs` > `daikin-tab-panels` ("panels" slot) * * @fires beforechange - _Cancellable._ A custom event emitted when the current tab is about to be changed by user interaction. The current value can be obtained with `event.target.value` and the new value with `event.detail.newTab.value`. * @fires change - A custom event emitted when the current tab is changed. The new value can be obtained with `event.target.value`. * * @slot - A slot for tab buttons. Place `daikin-tab` elements here. * @slot panels - A slot for tab panels component. Place a `daikin-tab-panels` element here. * * @example * * ```js * import "@daikin-oss/design-system-web-components/components/tab/index.js"; * import "@daikin-oss/design-system-web-components/components/tabs/index.js"; * import "@daikin-oss/design-system-web-components/components/tab-panels/index.js"; * ``` * * ```html * * Foo tab * Bar tab * * * *

Foo tab content.

*

Bar tab content.

*
*
* ``` */ export declare class DaikinTabs extends DDSElement { static readonly styles: import('lit').CSSResult; /** * `value` of the currently selected tab (`daikin-tab`). */ value: string; /** * Whether the tab width stretches or fits. * * @default "stretch" */ sizing: "stretch" | "fit"; /** * Tab(s) in the default slot. */ private readonly _tabs; /** * Panel switcher(s) in the `panels` slot. */ private readonly _panelSwitchers; /** * Emits `beforechange` event if necessary and returns whether we should proceed. * * 1. Check if `newTab.value` is different from `value`. * 2. Emit "beforechange" event. * 3. Check and return whether the event is canceled. * * @param newTab The newly active tab element. * @returns `true` if we should proceed (event is emitted and not canceled). `false` otherwise. */ private _emitBeforeChange; /** * Updates `this.value` and emit "change" event. * * @param newTab The newly active tab element. */ private _updateValue; /** * Updates `daikin-tab` component(s)' properties in the slot. * * Invoke when: * - `this.value` is changed. * - the default slot's content is changed. */ private _updateTabs; private _updateTabStyle; /** * Updates `daikin-tab-panels` component(s)' properties in the slot. * * Invoke when: * - `this.value` is changed. * - the default slot's content is changed. * - the panel slot's content is changed. */ private _updateTabPanels; /** * Handles "click" event emitted by `daikin-tab` component. */ private _handleTabClick; /** * Handles keyboard interactions in the tab list. */ private _handleKeyDown; private _handleSlotChange; private _handleTabPanelsSlotChange; render(): import('lit-html').TemplateResult<1>; updated(changedProperties: PropertyValues): void; } declare global { interface HTMLElementTagNameMap { "daikin-tabs": DaikinTabs; } }