watercolor-ui
Version:
A modern minimalist cross-framework component library
257 lines • 7.64 kB
TypeScript
/**
* Handle keyboard navigation
* @param {Event} event - Keyboard event
* @param {number} currentIndex - Current tab index
* @param {Array} tabs - Array of tabs
* @param {string} orientation - Tab orientation
* @returns {number} New tab index
*/
export function handleKeyboardNavigation(event: Event, currentIndex: number, tabs: any[], orientation?: string): number;
/**
* Find next enabled tab
* @param {number} currentIndex - Current index
* @param {Array} tabs - Array of tabs
* @returns {number} Next enabled tab index
*/
export function findNextEnabledTab(currentIndex: number, tabs: any[]): number;
/**
* Find previous enabled tab
* @param {number} currentIndex - Current index
* @param {Array} tabs - Array of tabs
* @returns {number} Previous enabled tab index
*/
export function findPreviousEnabledTab(currentIndex: number, tabs: any[]): number;
/**
* Find first enabled tab
* @param {Array} tabs - Array of tabs
* @returns {number} First enabled tab index
*/
export function findFirstEnabledTab(tabs: any[]): number;
/**
* Find last enabled tab
* @param {Array} tabs - Array of tabs
* @returns {number} Last enabled tab index
*/
export function findLastEnabledTab(tabs: any[]): number;
/**
* Generate tabs wrapper classes
* @param {Object} props - Component props
* @returns {string} Class names
*/
export function getTabsWrapperClasses(props?: Object): string;
/**
* Generate tabs container classes
* @param {Object} props - Component props
* @returns {string} Class names
*/
export function getTabsClasses(props?: Object): string;
/**
* Generate tab classes
* @param {Object} props - Component props
* @returns {string} Class names
*/
export function getTabClasses(props?: Object): string;
/**
* Generate tab content classes
* @param {Object} props - Component props
* @returns {string} Class names
*/
export function getTabContentClasses(props?: Object): string;
/**
* Create controlled tab state
* @param {Object} config - Configuration
* @returns {Object} State management object
*/
export function createTabState(config?: Object): Object;
/**
* Animate tab content transition
* @param {Element} element - Content element
* @param {Object} options - Animation options
* @returns {Promise} Animation promise
*/
export function animateTabContent(element: Element, options?: Object): Promise<any>;
/**
* Generate ARIA attributes for tabs
* @param {Object} props - Component props
* @returns {Object} ARIA attributes
*/
export function getTabsAriaAttributes(props?: Object): Object;
/**
* Generate ARIA attributes for individual tab
* @param {Object} props - Component props
* @returns {Object} ARIA attributes
*/
export function getTabAriaAttributes(props?: Object): Object;
/**
* Generate ARIA attributes for tab panel
* @param {Object} props - Component props
* @returns {Object} ARIA attributes
*/
export function getTabPanelAriaAttributes(props?: Object): Object;
/**
* Validate tabs configuration
* @param {Array} tabs - Tabs array
* @returns {Object} Validation result
*/
export function validateTabs(tabs: any[]): Object;
/**
* Validate tab props
* @param {Object} props - Component props
* @returns {Object} Validation result
*/
export function validateTabProps(props?: Object): Object;
/**
* Debounce tab change handler
* @param {Function} handler - Change handler
* @param {number} delay - Debounce delay
* @returns {Function} Debounced handler
*/
export function debounceTabChange(handler: Function, delay?: number): Function;
/**
* Throttle tab change handler
* @param {Function} handler - Change handler
* @param {number} delay - Throttle delay
* @returns {Function} Throttled handler
*/
export function throttleTabChange(handler: Function, delay?: number): Function;
/**
* Create tab ID generator
* @param {string} prefix - ID prefix
* @returns {Function} ID generator function
*/
export function createTabIdGenerator(prefix?: string): Function;
/**
* Scroll tab into view
* @param {Element} tabElement - Tab element
* @param {Element} containerElement - Container element
* @param {Object} options - Scroll options
*/
export function scrollTabIntoView(tabElement: Element, containerElement: Element, options?: Object): void;
export namespace TAB_VARIANTS {
let _default: string;
export { _default as default };
export let pills: string;
export let underline: string;
export let bordered: string;
export let segmented: string;
export let minimal: string;
export let filled: string;
}
export namespace TAB_SIZES {
let sm: string;
let md: string;
let lg: string;
}
export namespace TAB_ORIENTATIONS {
let horizontal: string;
let vertical: string;
}
export namespace KEY_CODES {
let ARROW_LEFT: number;
let ARROW_UP: number;
let ARROW_RIGHT: number;
let ARROW_DOWN: number;
let HOME: number;
let END: number;
let ENTER: number;
let SPACE: number;
}
/**
* Tab Manager Class
* Manages tab state, navigation, and lifecycle
*/
export class TabManager {
constructor(config?: {});
tabs: any[];
activeIndex: any;
orientation: any;
variant: any;
size: any;
allowKeyboardNavigation: boolean;
lazy: any;
keepAlive: any;
onChange: any;
onTabLoad: any;
loadedTabs: Set<any>;
/**
* Add tab to manager
* @param {Object} tab - Tab configuration
* @returns {number} Tab index
*/
addTab(tab: Object): number;
/**
* Remove tab by index
* @param {number} index - Tab index
* @returns {boolean} Success
*/
removeTab(index: number): boolean;
/**
* Set active tab
* @param {number} index - Tab index
* @returns {boolean} Success
*/
setActiveTab(index: number): boolean;
/**
* Get active tab
* @returns {Object|null} Active tab
*/
getActiveTab(): Object | null;
/**
* Get tab by index
* @param {number} index - Tab index
* @returns {Object|null} Tab
*/
getTab(index: number): Object | null;
/**
* Mark tab as loaded
* @param {number} index - Tab index
*/
markTabAsLoaded(index: number): void;
/**
* Check if tab is loaded
* @param {number} index - Tab index
* @returns {boolean} Is loaded
*/
isTabLoaded(index: number): boolean;
/**
* Notify change listeners
* @param {number} index - New active index
*/
notifyChange(index: number): void;
/**
* Update tab properties
* @param {number} index - Tab index
* @param {Object} updates - Properties to update
* @returns {boolean} Success
*/
updateTab(index: number, updates: Object): boolean;
}
declare namespace _default {
export { TAB_VARIANTS };
export { TAB_SIZES };
export { TAB_ORIENTATIONS };
export { KEY_CODES };
export { TabManager };
export { handleKeyboardNavigation };
export { findNextEnabledTab };
export { findPreviousEnabledTab };
export { findFirstEnabledTab };
export { findLastEnabledTab };
export { getTabsWrapperClasses };
export { getTabsClasses };
export { getTabClasses };
export { getTabContentClasses };
export { createTabState };
export { animateTabContent };
export { getTabsAriaAttributes };
export { getTabAriaAttributes };
export { getTabPanelAriaAttributes };
export { validateTabs };
export { validateTabProps };
export { debounceTabChange };
export { throttleTabChange };
export { createTabIdGenerator };
export { scrollTabIntoView };
}
export default _default;
//# sourceMappingURL=utils.d.ts.map