mirror of
https://gitee.com/element-plus/element-plus.git
synced 2024-12-15 01:41:20 +08:00
bbd16a08e9
* refactor(hooks): remove use-css-var * refactor(hooks): remove use-events * refactor(hooks): remove use-migrating * refactor(hooks): remove use-transition * refactor(hooks): named export useAttrs * refactor(hooks): named export useFocus * refactor(hooks): refactor useFormItem * refactor(hooks): refactor useGlobalConfig * refactor(hooks): refactor useLocale * refactor(hooks): refactor useLockscreen * refactor(hooks): refactor useModal * refactor(hooks): refactor useModelToggle * refactor(hooks): refactor usePreventGlobal * refactor(hooks): refactor useRestoreActive * refactor(hooks): refactor useTeleport * refactor(hooks): refactor useThrottleRender * refactor(hooks): refactor useTimeout * refactor(hooks): refactor useTransitionFallthrogh
31 lines
748 B
TypeScript
31 lines
748 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 === 'testing') {
|
|
previousActive.focus.call(previousActive)
|
|
} else {
|
|
previousActive.focus()
|
|
}
|
|
}
|
|
}
|
|
)
|
|
}
|