@element-plus-next/vue-hooks
Version:
Vue hooks for Element Plus.
31 lines (29 loc) • 745 B
text/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()
}
}
}
)
}