mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
* 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
85 lines
1.9 KiB
TypeScript
85 lines
1.9 KiB
TypeScript
import { buildProps, definePropType } from '@element-plus/utils/props'
|
|
import {
|
|
usePopperTriggerProps,
|
|
usePopperContentProps,
|
|
} from '@element-plus/components/popper'
|
|
import { useDelayedToggleProps } from '@element-plus/hooks'
|
|
|
|
import type { ExtractPropTypes, PropType } from 'vue'
|
|
|
|
const triggers = ['hover', 'focus', 'click', 'contextmenu'] as const
|
|
|
|
export type Trigger = typeof triggers[number]
|
|
|
|
export const useTooltipContentProps = {
|
|
...useDelayedToggleProps,
|
|
...usePopperContentProps,
|
|
...buildProps({
|
|
content: {
|
|
type: String,
|
|
default: '',
|
|
},
|
|
rawContent: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
persistent: Boolean,
|
|
ariaLabel: String,
|
|
// because model toggle prop is generated dynamically
|
|
// so the typing cannot be evaluated by typescript as type:
|
|
// [name]: { type: Boolean, default: null }
|
|
// so we need to declare that again for type checking.
|
|
visible: {
|
|
type: definePropType<boolean | null>(Boolean),
|
|
default: null,
|
|
},
|
|
transition: {
|
|
type: String,
|
|
default: 'el-fade-in-linear',
|
|
},
|
|
teleported: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
}),
|
|
}
|
|
|
|
export const useTooltipTriggerProps = {
|
|
...usePopperTriggerProps,
|
|
disabled: Boolean,
|
|
trigger: {
|
|
type: [String, Array] as PropType<Trigger | Trigger[]>,
|
|
default: 'hover',
|
|
},
|
|
}
|
|
|
|
export const useTooltipProps = buildProps({
|
|
openDelay: {
|
|
type: Number,
|
|
},
|
|
visibleArrow: {
|
|
type: Boolean,
|
|
default: undefined,
|
|
},
|
|
hideAfter: {
|
|
type: Number,
|
|
default: 200,
|
|
},
|
|
showArrow: {
|
|
type: Boolean,
|
|
default: true,
|
|
},
|
|
})
|
|
|
|
export type ElTooltipContentProps = ExtractPropTypes<
|
|
typeof useTooltipContentProps
|
|
>
|
|
|
|
export type ElTooltipTriggerProps = ExtractPropTypes<
|
|
typeof useTooltipTriggerProps
|
|
>
|
|
|
|
export type ElTooltipProps = ExtractPropTypes<typeof useTooltipProps> &
|
|
ElTooltipContentProps &
|
|
ElTooltipTriggerProps
|