UNPKG

element-plus

Version:

A Component Library for Vue 3

47 lines (44 loc) 1.35 kB
import { getCurrentInstance, shallowRef, ref, watch } from 'vue'; import { useEventListener } from '@vueuse/core'; import '../../utils/index.mjs'; import { isFunction } from '@vue/shared'; function useFocusController(target, { afterFocus, beforeBlur, afterBlur } = {}) { const instance = getCurrentInstance(); const { emit } = instance; const wrapperRef = shallowRef(); const isFocused = ref(false); const handleFocus = (event) => { if (isFocused.value) return; isFocused.value = true; emit("focus", event); afterFocus == null ? void 0 : afterFocus(); }; const handleBlur = (event) => { var _a; const cancelBlur = isFunction(beforeBlur) ? beforeBlur(event) : false; if (cancelBlur || event.relatedTarget && ((_a = wrapperRef.value) == null ? void 0 : _a.contains(event.relatedTarget))) return; isFocused.value = false; emit("blur", event); afterBlur == null ? void 0 : afterBlur(); }; const handleClick = () => { var _a; (_a = target.value) == null ? void 0 : _a.focus(); }; watch(wrapperRef, (el) => { if (el) { el.setAttribute("tabindex", "-1"); } }); useEventListener(wrapperRef, "click", handleClick); return { wrapperRef, isFocused, handleFocus, handleBlur }; } export { useFocusController }; //# sourceMappingURL=index.mjs.map