Ограничивающий контейнер
Назначение
Этот контейнер ограничивает количество видимых дочерних элементов при переполнении. Он также может отображать специальное содержимое при переполнении (элемент с атрибутом 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;
}