mirror of
https://github.com/element-plus/element-plus.git
synced 2024-12-27 03:01:14 +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
31 lines
745 B
TypeScript
31 lines
745 B
TypeScript
import { isRef, watch } from 'vue'
|
|
import type { Ref } from 'vue'
|
|
|
|
/**
|
|
* This method provides dialogable components the ability to restore previously activated element before
|
|
* the dialog gets opened
|
|
*/
|
|
export const useRestoreActive = (
|
|
toggle: Ref<boolean>,
|
|
initialFocus?: Ref<HTMLElement>
|
|
) => {
|
|
let previousActive: HTMLElement
|
|
watch(
|
|
() => toggle.value,
|
|
(val) => {
|
|
if (val) {
|
|
previousActive = document.activeElement as HTMLElement
|
|
if (isRef(initialFocus)) {
|
|
initialFocus.value.focus?.()
|
|
}
|
|
} else {
|
|
if (process.env.NODE_ENV === 'test') {
|
|
previousActive.focus.call(previousActive)
|
|
} else {
|
|
previousActive.focus()
|
|
}
|
|
}
|
|
}
|
|
)
|
|
}
|