vuestic-ui
Version:
Vue 3 UI Framework
1 lines • 1.2 kB
Source Map (JSON)
{"version":3,"file":"useFocusable.mjs","sources":["../../../../src/composables/useFocusable.ts"],"sourcesContent":["import { ExtractPropTypes, Ref, onMounted } from 'vue'\nimport { blurElement, focusElement } from '../utils/focus'\nimport { unwrapEl } from '../utils/unwrapEl'\n\nexport const useFocusableProps = {\n /** Focus element when mounted */\n autofocus: { type: Boolean, default: false },\n}\n\n// TODO: Maybe accept a component here\nexport const useFocusable = (\n el: Ref<HTMLElement | null | undefined>,\n props: ExtractPropTypes<typeof useFocusableProps>,\n) => {\n const focus = () => {\n focusElement(unwrapEl(el.value))\n }\n\n const blur = () => {\n blurElement(unwrapEl(el.value))\n }\n\n onMounted(() => {\n if (props.autofocus) {\n focus()\n }\n })\n\n return {\n focus,\n blur,\n }\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,oBAAoB;AAAA;AAAA,EAE/B,WAAW,EAAE,MAAM,SAAS,SAAS,MAAM;AAC7C;AAGa,MAAA,eAAe,CAC1B,IACA,UACG;AACH,QAAM,QAAQ,MAAM;AACL,iBAAA,SAAS,GAAG,KAAK,CAAC;AAAA,EAAA;AAGjC,QAAM,OAAO,MAAM;AACL,gBAAA,SAAS,GAAG,KAAK,CAAC;AAAA,EAAA;AAGhC,YAAU,MAAM;AACd,QAAI,MAAM,WAAW;AACb;IACR;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}