{"version":3,"file":"useMenuKeyboardNavigation.mjs","sources":["../../../../../../src/components/va-menu-list/composables/useMenuKeyboardNavigation.ts"],"sourcesContent":["import { Ref } from 'vue'\nimport { useEvent } from '../../../composables'\nimport { focusElement } from './../../../utils/focus'\n\nconst NON_DISABLED_MENU_ITEM_SELECTOR = '[role=\"menuitem\"]:not([aria-disabled=\"true\"])'\nconst FOCUSED_MENU_ITEM_SELECTOR = '[role=\"menuitem\"]:focus'\n\nexport const makeMenuItemAttributes = (options: { disabled?: boolean }) => ({\n  role: 'menuitem',\n  tabindex: -1,\n  'aria-disabled': Boolean(options.disabled),\n})\n\nexport const makeMenuContainerAttributes = () => ({\n  role: 'menu',\n  tabindex: 0,\n})\n\nexport const useMenuKeyboardNavigation = (container: Ref<HTMLElement | undefined>) => {\n  useEvent('keydown', ({ key }) => {\n    if (!container.value) { return }\n\n    const items = container.value.querySelectorAll(NON_DISABLED_MENU_ITEM_SELECTOR)\n    const focusedItem = container.value.querySelector(FOCUSED_MENU_ITEM_SELECTOR)\n\n    if (!items.length) { return }\n\n    if (!focusedItem) {\n      const firstItem = container.value.querySelector(NON_DISABLED_MENU_ITEM_SELECTOR)\n      if (firstItem) { focusElement(firstItem) }\n      return\n    }\n\n    if (key === 'ArrowDown' || key === 'ArrowRight') {\n      const focusedElementIndex = Array.from(items).indexOf(focusedItem)\n      focusElement(items[focusedElementIndex + 1])\n    }\n\n    if (key === 'ArrowUp' || key === 'ArrowLeft') {\n      const focusedElementIndex = Array.from(items).indexOf(focusedItem)\n      focusElement(items[focusedElementIndex - 1])\n    }\n  }, container)\n}\n"],"names":[],"mappings":";;AAIA,MAAM,kCAAkC;AACxC,MAAM,6BAA6B;AAEtB,MAAA,yBAAyB,CAAC,aAAqC;AAAA,EAC1E,MAAM;AAAA,EACN,UAAU;AAAA,EACV,iBAAiB,QAAQ,QAAQ,QAAQ;AAC3C;AAEO,MAAM,8BAA8B,OAAO;AAAA,EAChD,MAAM;AAAA,EACN,UAAU;AACZ;AAEa,MAAA,4BAA4B,CAAC,cAA4C;AACpF,WAAS,WAAW,CAAC,EAAE,UAAU;AAC3B,QAAA,CAAC,UAAU,OAAO;AAAE;AAAA,IAAO;AAE/B,UAAM,QAAQ,UAAU,MAAM,iBAAiB,+BAA+B;AAC9E,UAAM,cAAc,UAAU,MAAM,cAAc,0BAA0B;AAExE,QAAA,CAAC,MAAM,QAAQ;AAAE;AAAA,IAAO;AAE5B,QAAI,CAAC,aAAa;AAChB,YAAM,YAAY,UAAU,MAAM,cAAc,+BAA+B;AAC/E,UAAI,WAAW;AAAE,qBAAa,SAAS;AAAA,MAAE;AACzC;AAAA,IACF;AAEI,QAAA,QAAQ,eAAe,QAAQ,cAAc;AAC/C,YAAM,sBAAsB,MAAM,KAAK,KAAK,EAAE,QAAQ,WAAW;AACpD,mBAAA,MAAM,sBAAsB,CAAC,CAAC;AAAA,IAC7C;AAEI,QAAA,QAAQ,aAAa,QAAQ,aAAa;AAC5C,YAAM,sBAAsB,MAAM,KAAK,KAAK,EAAE,QAAQ,WAAW;AACpD,mBAAA,MAAM,sBAAsB,CAAC,CAAC;AAAA,IAC7C;AAAA,KACC,SAAS;AACd;"}