展开容器
目的
此容器可以展开或折叠至预定义的 max 和 min 尺寸。如果未指定最大尺寸,则展开时将显示所有子元素。如果未指定最小尺寸,则展开后容器将保持零尺寸。这对于动态显示或隐藏布局片段非常有用。
用法
js
import { useState, useEffect } from 'react';
import { useExpand } from 'effsz/expand';
const { observe } = useExpand();
export const App = () => {
const [open, setOpen] = useState(false);
useEffect(() => {
const unobserve = observe((event) => {
// handle expand events
});
return () => unobserve();
}, [])
return <div>
<button
onClick={() => setOpen((val) => !val)}
>...</button>
<effsz-expand open={open} min="20px">
<div>...</div>
</effsz-expand>
</div>
};类型
ts
/**
* Expand container attributes
*/
export interface IExpandContainerAttrs {
/**
* Main axis
*/
axis: 'x' | 'y';
/**
* Min size
*/
min: string;
/**
* Max size
*/
max: string;
/**
* Is container expanded
*/
open: boolean;
// transition
/**
* Transition-timing-function
*/
tf: string;
/**
* Resize transition duration
*/
dur: string;
/**
* Resize transition delay
*/
del: string;
};
/**
* Expand container
*/
export interface IExpandContainerElement extends HTMLElement {
get axis(): 'x' | 'y';
set axis(val: 'x' | 'y');
get isOpen(): boolean;
get size(): number;
/**
* Expand to max size
*/
expand(): void;
/**
* Collapse to min size
*/
collapse(): void;
/**
* toggle
*/
toggle(): void;
}