1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { useEffect, useState } from 'react'
- type Params = {
- ref: React.RefObject<HTMLDivElement>
- hasFooter?: boolean
- isInNode?: boolean
- }
- const useToggleExpend = ({ ref, hasFooter = true, isInNode }: Params) => {
- const [isExpand, setIsExpand] = useState(false)
- const [wrapHeight, setWrapHeight] = useState(ref.current?.clientHeight)
- const editorExpandHeight = isExpand ? wrapHeight! - (hasFooter ? 56 : 29) : 0
- useEffect(() => {
- setWrapHeight(ref.current?.clientHeight)
- // eslint-disable-next-line react-hooks/exhaustive-deps
- }, [isExpand])
- const wrapClassName = (() => {
- if (!isExpand)
- return ''
- if (isInNode)
- return 'fixed z-10 right-[9px] top-[166px] bottom-[8px] p-4 bg-white rounded-xl'
- return 'absolute z-10 left-4 right-6 top-[52px] bottom-0 pb-4 bg-white'
- })()
- const wrapStyle = isExpand
- ? {
- boxShadow: '0px 0px 12px -4px rgba(16, 24, 40, 0.05), 0px -3px 6px -2px rgba(16, 24, 40, 0.03)',
- }
- : {}
- return {
- wrapClassName,
- wrapStyle,
- editorExpandHeight,
- isExpand,
- setIsExpand,
- }
- }
- export default useToggleExpend
|