123456789101112131415161718192021222324252627282930 |
- 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()
- }
- }
- }
- )
- }
|