UNPKG

vuestic-ui

Version:
1 lines 2.36 kB
{"version":3,"file":"useFocus.mjs","sources":["../../../../src/composables/useFocus.ts"],"sourcesContent":["import { unwrapEl } from './../utils/unwrapEl'\nimport { focusElement, blurElement } from './../utils/focus'\nimport { ref, onMounted, onBeforeUnmount, Ref, Component, computed } from 'vue'\nimport { useEvent } from './useEvent'\nimport { useActiveElement } from './useActiveElement'\nimport { isNilValue } from '../utils/isNilValue'\n\nexport const useFocusEmits = ['focus', 'blur'] as const\n\nexport function useFocus (\n el?: Ref<HTMLElement | null | undefined | Component>,\n emit?: (event: 'focus' | 'blur', e?: Event) => void,\n) {\n const activeElement = useActiveElement()\n const isFocused = computed({\n get: () => {\n if (isNilValue(activeElement.value)) { return false }\n if (isNilValue(el?.value)) { return false }\n\n return activeElement.value === el?.value\n },\n set: (value) => {\n if (value) {\n focus()\n } else {\n blur()\n }\n },\n })\n\n const onFocus = (e?: Event) => {\n emit?.('focus', e)\n }\n\n const onBlur = (e?: Event) => {\n emit?.('blur', e)\n }\n\n const focus = (): void => {\n if (!el?.value) { return }\n focusElement(unwrapEl(el?.value))\n }\n\n const blur = (): void => {\n if (!el?.value) { return }\n blurElement(unwrapEl(el?.value))\n }\n\n useEvent('focus', onFocus, el)\n useEvent('blur', onBlur, el)\n\n return {\n isFocused,\n onFocus,\n onBlur,\n focus,\n blur,\n }\n}\n"],"names":[],"mappings":";;;;;;AAOa,MAAA,gBAAgB,CAAC,SAAS,MAAM;AAE7B,SAAA,SACd,IACA,MACA;AACA,QAAM,gBAAgB;AACtB,QAAM,YAAY,SAAS;AAAA,IACzB,KAAK,MAAM;AACL,UAAA,WAAW,cAAc,KAAK,GAAG;AAAS,eAAA;AAAA,MAAM;AAChD,UAAA,WAAW,yBAAI,KAAK,GAAG;AAAS,eAAA;AAAA,MAAM;AAEnC,aAAA,cAAc,WAAU,yBAAI;AAAA,IACrC;AAAA,IACA,KAAK,CAAC,UAAU;AACd,UAAI,OAAO;AACH;MAAA,OACD;AACA;MACP;AAAA,IACF;AAAA,EAAA,CACD;AAEK,QAAA,UAAU,CAAC,MAAc;AAC7B,iCAAO,SAAS;AAAA,EAAC;AAGb,QAAA,SAAS,CAAC,MAAc;AAC5B,iCAAO,QAAQ;AAAA,EAAC;AAGlB,QAAM,QAAQ,MAAY;AACpB,QAAA,EAAC,yBAAI,QAAO;AAAE;AAAA,IAAO;AACZ,iBAAA,SAAS,yBAAI,KAAK,CAAC;AAAA,EAAA;AAGlC,QAAM,OAAO,MAAY;AACnB,QAAA,EAAC,yBAAI,QAAO;AAAE;AAAA,IAAO;AACb,gBAAA,SAAS,yBAAI,KAAK,CAAC;AAAA,EAAA;AAGxB,WAAA,SAAS,SAAS,EAAE;AACpB,WAAA,QAAQ,QAAQ,EAAE;AAEpB,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}