UNPKG

vuestic-ui

Version:
1 lines 2.12 kB
{"version":3,"file":"useKeyboardOnlyFocus.mjs","sources":["../../../../src/composables/useKeyboardOnlyFocus.ts"],"sourcesContent":["import { ref } from 'vue'\nimport { getWindow } from '../utils/ssr'\n\nexport function useKeyboardOnlyFocus () {\n const hasKeyboardFocus = ref(false)\n let previouslyClicked = false\n\n const keyboardFocusListeners = {\n mousedown: () => {\n previouslyClicked = true\n },\n\n focus: () => {\n if (!previouslyClicked) {\n hasKeyboardFocus.value = true\n }\n\n previouslyClicked = false\n },\n\n blur: () => {\n hasKeyboardFocus.value = false\n previouslyClicked = false\n },\n }\n\n return {\n hasKeyboardFocus,\n keyboardFocusListeners,\n }\n}\n\nlet previouslyClicked = false\nlet timeout: ReturnType<typeof setTimeout>\n\ngetWindow()?.addEventListener('mousedown', () => {\n previouslyClicked = true\n timeout = setTimeout(() => {\n previouslyClicked = false\n }, 300)\n})\n\nexport function useKeyboardOnlyFocusGlobal () {\n const hasKeyboardFocus = ref(false)\n const keyboardFocusListeners = {\n focus: () => {\n if (!previouslyClicked) {\n hasKeyboardFocus.value = true\n }\n },\n\n blur: () => {\n hasKeyboardFocus.value = false\n },\n }\n\n return {\n hasKeyboardFocus,\n keyboardFocusListeners,\n }\n}\n"],"names":["previouslyClicked"],"mappings":";;;AAGO,SAAS,uBAAwB;AAChC,QAAA,mBAAmB,IAAI,KAAK;AAClC,MAAIA,qBAAoB;AAExB,QAAM,yBAAyB;AAAA,IAC7B,WAAW,MAAM;AACfA,2BAAoB;AAAA,IACtB;AAAA,IAEA,OAAO,MAAM;AACX,UAAI,CAACA,oBAAmB;AACtB,yBAAiB,QAAQ;AAAA,MAC3B;AAEAA,2BAAoB;AAAA,IACtB;AAAA,IAEA,MAAM,MAAM;AACV,uBAAiB,QAAQ;AACzBA,2BAAoB;AAAA,IACtB;AAAA,EAAA;AAGK,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,IAAI,oBAAoB;AAAA,CAGxB,qBAAA,mBAAa,iBAAiB,aAAa,MAAM;AAC3B,sBAAA;AACV,aAAW,MAAM;AACL,wBAAA;AAAA,KACnB,GAAG;AACR;AAEO,SAAS,6BAA8B;AACtC,QAAA,mBAAmB,IAAI,KAAK;AAClC,QAAM,yBAAyB;AAAA,IAC7B,OAAO,MAAM;AACX,UAAI,CAAC,mBAAmB;AACtB,yBAAiB,QAAQ;AAAA,MAC3B;AAAA,IACF;AAAA,IAEA,MAAM,MAAM;AACV,uBAAiB,QAAQ;AAAA,IAC3B;AAAA,EAAA;AAGK,SAAA;AAAA,IACL;AAAA,IACA;AAAA,EAAA;AAEJ;"}