diff --git a/src/runtime/components/elements/Dropdown.vue b/src/runtime/components/elements/Dropdown.vue index 68cce5e4..3971ee7a 100644 --- a/src/runtime/components/elements/Dropdown.vue +++ b/src/runtime/components/elements/Dropdown.vue @@ -129,6 +129,14 @@ const props = defineProps({ popperOptions: { type: Object as PropType, default: () => {} + }, + openDelay: { + type: Number, + default: 50 + }, + closeDelay: { + type: Number, + default: 0 } }) @@ -194,7 +202,7 @@ function onMouseOver () { openTimeout = openTimeout || setTimeout(() => { menuApi.value.openMenu && menuApi.value.openMenu() openTimeout = null - }, 50) + }, props.openDelay) } function onMouseLeave () { @@ -214,7 +222,7 @@ function onMouseLeave () { closeTimeout = closeTimeout || setTimeout(() => { menuApi.value.closeMenu && menuApi.value.closeMenu() closeTimeout = null - }, 0) + }, props.closeDelay) } diff --git a/src/runtime/components/overlays/Popover.vue b/src/runtime/components/overlays/Popover.vue index 8b7745f8..174dc09c 100644 --- a/src/runtime/components/overlays/Popover.vue +++ b/src/runtime/components/overlays/Popover.vue @@ -56,6 +56,14 @@ const props = defineProps({ popperOptions: { type: Object as PropType, default: () => {} + }, + openDelay: { + type: Number, + default: 50 + }, + closeDelay: { + type: Number, + default: 0 } }) @@ -90,6 +98,7 @@ function onMouseOver () { if (props.mode !== 'hover' || !popoverApi.value) { return } + // cancel programmed closing if (closeTimeout) { clearTimeout(closeTimeout) @@ -102,13 +111,14 @@ function onMouseOver () { openTimeout = openTimeout || setTimeout(() => { popoverApi.value.togglePopover && popoverApi.value.togglePopover() openTimeout = null - }, 50) + }, props.openDelay) } function onMouseLeave () { if (props.mode !== 'hover' || !popoverApi.value) { return } + // cancel programmed opening if (openTimeout) { clearTimeout(openTimeout) @@ -121,7 +131,7 @@ function onMouseLeave () { closeTimeout = closeTimeout || setTimeout(() => { popoverApi.value.closePopover && popoverApi.value.closePopover() closeTimeout = null - }, 0) + }, props.closeDelay) } diff --git a/src/runtime/components/overlays/Tooltip.vue b/src/runtime/components/overlays/Tooltip.vue index 59e89ba2..fe1243b0 100644 --- a/src/runtime/components/overlays/Tooltip.vue +++ b/src/runtime/components/overlays/Tooltip.vue @@ -1,5 +1,5 @@