@gravity-ui/uikit
Version:
Gravity UI base styling and components
64 lines (63 loc) • 1.76 kB
TypeScript
import * as React from 'react';
export interface UseCollapseChildrenProps {
/**
* Whether the hook is enabled
* @default true
*/
enabled?: boolean;
/**
* React ref for the container element
*/
containerRef: React.RefObject<HTMLElement | null>;
/**
* React refs for elements that should not participate in calculation
*/
preservedRefs?: Array<React.RefObject<HTMLElement | null>>;
/**
* The minimum count of items to be visible
* @default 0
*/
minCount?: number;
/**
* The maximum count of items to be visible
* @default Infinity
*/
maxCount?: number;
/**
* Collapse direction of items
* @default 'end'
*/
direction?: 'start' | 'end';
/**
* The distance between items
* @default 0
*/
gap?: number;
/**
* CSS-selector to pick child items in the container
* @default '*'
*/
childSelector?: string;
/**
* Custom measure function of item's width
* @param child HTMLElement
* @returns number
*/
getChildWidth?: (child: HTMLElement) => number;
}
export interface UseCollapseChildrenResult {
/**
* Whether calculation is complete.
* Your items should be in measurable state when it's not calculated.
*/
calculated: boolean;
/**
* Trigger recalculation manually.
*/
recalculate: () => void;
/**
* Number of items that can be visible in the container, excluding preserved items.
*/
visibleCount: number;
}
export declare function useCollapseChildren({ enabled, containerRef, preservedRefs, minCount, maxCount, direction, gap, childSelector, getChildWidth, }: UseCollapseChildrenProps): UseCollapseChildrenResult;