UNPKG

vue-hooks-plus

Version:
40 lines (39 loc) 1.32 kB
"use strict"; const useEventListener = require("../useEventListener"); const useBoolean = require("../useBoolean"); const _interopDefaultLegacy = (e) => e && typeof e === "object" && "default" in e ? e : { default: e }; const useEventListener__default = /* @__PURE__ */ _interopDefaultLegacy(useEventListener); const useBoolean__default = /* @__PURE__ */ _interopDefaultLegacy(useBoolean); function useFocusWithin(target, options) { const [isFocusWithin, { set: setIsFocusWithin }] = useBoolean__default.default(false); const { onFocus, onBlur, onChange } = options || {}; useEventListener__default.default( "focusin", (e) => { if (!isFocusWithin.value) { onFocus == null ? void 0 : onFocus(e); onChange == null ? void 0 : onChange(true); setIsFocusWithin(true); } }, { target } ); useEventListener__default.default( "focusout", (e) => { var _a, _b; if (isFocusWithin.value && !((_b = (_a = e.currentTarget) == null ? void 0 : _a.contains) == null ? void 0 : _b.call(_a, e.relatedTarget))) { onBlur == null ? void 0 : onBlur(e); onChange == null ? void 0 : onChange(false); setIsFocusWithin(false); } }, { target } ); return isFocusWithin; } module.exports = useFocusWithin;