mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-14 17:31:02 +08:00
dd19cae2bc
* refactor(components): popper composables - Refactor popper composables * updates * updates for tooltip * Updates for popper. TODO: fix controlled tooltip animation * Fix controlled mode popper animation issue * Add new feature for customizing tooltip theme * Fix popover and popconfirm error * - Add Collection component for wrapping a collection of component - Add FocusTrap component for trap focus for popups - Add RovingFocus component for roving focus component type - Adjust dropdown component based on these newly added components - Add popper-trigger component for placing the trigger - TODO: Finish current dropdown component, and all component's tests plus documents * Refactor popper * Complete organizing popper * Almost finish dropdown * Update popper tests * update only-child test * Finish focus trap component test * Finish tooltip content test * Finish tooltip trigger tests * Finish tooltip tests * finish tests for Collection and RovingFocusGroup * Fix test cases for timeselect & select & popover * Fix popover, popconfirm, menu bug and test cases * Fix select-v2 test error caused by updating popper * Fix date-picker test issue for updating popper * fix test cases * Fix eslint * Rebase dev & fix tests * Remove unused code
48 lines
871 B
TypeScript
48 lines
871 B
TypeScript
import { unref } from 'vue'
|
|
import { buildProps } from '@element-plus/utils/props'
|
|
import { useTimeout } from '../use-timeout'
|
|
|
|
import type { ToRefs, ExtractPropTypes } from 'vue'
|
|
|
|
export const useDelayedToggleProps = buildProps({
|
|
showAfter: {
|
|
type: Number,
|
|
default: 0,
|
|
},
|
|
hideAfter: {
|
|
type: Number,
|
|
default: 200,
|
|
},
|
|
})
|
|
|
|
export type UseDelayedToggleProps = {
|
|
open: () => void
|
|
close: () => void
|
|
} & ToRefs<ExtractPropTypes<typeof useDelayedToggleProps>>
|
|
|
|
export const useDelayedToggle = ({
|
|
showAfter,
|
|
hideAfter,
|
|
open,
|
|
close,
|
|
}: UseDelayedToggleProps) => {
|
|
const { registerTimeout } = useTimeout()
|
|
|
|
const onOpen = () => {
|
|
registerTimeout(() => {
|
|
open()
|
|
}, unref(showAfter))
|
|
}
|
|
|
|
const onClose = () => {
|
|
registerTimeout(() => {
|
|
close()
|
|
}, unref(hideAfter))
|
|
}
|
|
|
|
return {
|
|
onOpen,
|
|
onClose,
|
|
}
|
|
}
|