Skip to content

Ограничивающий контейнер

Назначение

Этот контейнер ограничивает количество видимых дочерних элементов при переполнении. Он также может отображать специальное содержимое при переполнении (элемент с атрибутом slot='limit'). Это может быть полезно на панелях инструментов или карточках, когда вам нужно отобразить некоторые элементы, а остальные показать с помощью дополнительных панелей или разворота.

Использование

jsx
import { useEffect } from 'react';
import { useLimit } from 'effsz/limit';

const { observe } = useLimit();

export const App = () => {
    useEffect(() => {
        const unobserve = observe((event) => {
            // обработка событий контейнера
        });
        return () => unobserve();
    }, []);
    return <effsz-limit fdir='rr' gap='5'>
        <div className='first'>...</div>
        <div className='second'>...</div>
        <div slot='limit' className='overflow'>...</div>
    </effsz-limit>
};

Типизация

ts
/**
 * Limit container attributes
 */
export interface ILimitContainerAttrs {
    /**
     * Flex direction
     */
    fdir: 'r' | 'rr' | 'c' | 'cr';
    /**
     * Gap in px
     */
    gap: string;
};

/**
 * Limit container
 */
export interface ILimitContainerElement extends HTMLElement {
    /**
     * Split axis
     */
    get axis(): 'x' | 'y';
    /**
     * Visible elements count
     */
    get limitCount(): number;
    /**
     * Is container hiding some children
     */
    get isLimited(): boolean;
}

Опубликовано под лицензией Apache License 2.0