UNPKG

@exadel/esl

Version:

Exadel Smart Library (ESL) is the lightweight custom elements library that provide a set of super-flexible components

72 lines (71 loc) 3.27 kB
import { ESLBaseElement } from '../../esl-base-element/core'; import { ESLMediaRuleList } from '../../esl-media-query/core/esl-media-rule-list'; import { ESLTab } from './esl-tab'; /** * ESlTabs component * @author Julia Murashko * * Tabs container component for Tabs trigger group. * Uses {@link ESLTab} as an item. * Each individual {@link ESLTab} can control {@link ESLToggleable} or, usually, {@link ESLPanel} */ export declare class ESLTabs extends ESLBaseElement { static is: string; static observedAttributes: string[]; /** List of supported scrollable types */ static supportedScrollableTypes: string[]; /** * Scrollable mode (supports {@link ESLMediaRuleList}). * Supported types for different breakpoints ('disabled' by default): * - 'disabled' or not defined - scroll behavior is disabled; * - 'center' - scroll behavior is enabled, tab is center-aligned; * - 'side' - scroll behavior is enabled, tab is side-aligned; * - empty or unsupported value is equal to 'side' behavior; */ scrollable: string; /** Inner element to contain {@link ESLTab} collection. Will be scrolled in a scrollable mode */ scrollableTarget: string; protected _deferredUpdateArrows: import("../../esl-utils/async/debounce").Debounced<() => void>; protected _deferredFitToViewport: import("../../esl-utils/async/debounce").Debounced<($trigger: ESLTab | null, behavior?: ScrollBehavior) => void>; /** ESLMediaRuleList instance of the scrollable type mapping */ get scrollableTypeRules(): ESLMediaRuleList<string>; /** @returns current scrollable type */ get currentScrollableType(): string; protected connectedCallback(): void; protected attributeChangedCallback(attrName: string, oldVal: string, newVal: string): void; protected bindScrollableEvents(): void; protected unbindScrollableEvents(): void; /** Collection of inner {@link ESLTab} items */ get $tabs(): ESLTab[]; /** Active {@link ESLTab} item */ get $current(): ESLTab | null; /** Container element to scroll */ get $scrollableTarget(): HTMLElement | null; /** Is the scrollable mode enabled ? */ get isScrollable(): boolean; /** Move scroll to the next/previous item */ moveTo(direction: string, behavior?: ScrollBehavior): void; /** Scroll tab to the view */ protected fitToViewport($trigger: ESLTab | null, behavior?: ScrollBehavior): void; /** Get scroll offset position from the selected item rectangle */ protected calcScrollOffset(itemRect: DOMRect, areaRect: DOMRect): number | undefined; protected updateArrows(): void; protected updateMarkers(): void; /** Update element state according to scrollable type */ protected updateScrollableType(): void; protected _onTriggerStateChange({ detail }: CustomEvent): void; protected _onClick(event: Event): void; protected _onFocus(e: FocusEvent): void; protected _onScroll(): void; protected _onResize(): void; /** Handles scrollable type change */ protected _onScrollableTypeChange(): void; } declare global { export interface ESLLibrary { Tabs: typeof ESLTabs; } export interface HTMLElementTagNameMap { 'esl-tabs': ESLTabs; } }