9d71f9698b64a6616319d261a974495705392a4a93527eff827e69de190a7dd8c071ea9d2aceacad69b330f2e5c6ef22ec4f2e4f11794f8bc2fa9db0885ce4 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var submenu = require('./submenu.js');
  4. var aria = require('../../../../constants/aria.js');
  5. var aria$1 = require('../../../../utils/dom/aria.js');
  6. class MenuItem {
  7. constructor(domNode, namespace) {
  8. this.domNode = domNode;
  9. this.submenu = null;
  10. this.submenu = null;
  11. this.init(namespace);
  12. }
  13. init(namespace) {
  14. this.domNode.setAttribute("tabindex", "0");
  15. const menuChild = this.domNode.querySelector(`.${namespace}-menu`);
  16. if (menuChild) {
  17. this.submenu = new submenu["default"](this, menuChild);
  18. }
  19. this.addListeners();
  20. }
  21. addListeners() {
  22. this.domNode.addEventListener("keydown", (event) => {
  23. let prevDef = false;
  24. switch (event.code) {
  25. case aria.EVENT_CODE.down: {
  26. aria$1.triggerEvent(event.currentTarget, "mouseenter");
  27. this.submenu && this.submenu.gotoSubIndex(0);
  28. prevDef = true;
  29. break;
  30. }
  31. case aria.EVENT_CODE.up: {
  32. aria$1.triggerEvent(event.currentTarget, "mouseenter");
  33. this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1);
  34. prevDef = true;
  35. break;
  36. }
  37. case aria.EVENT_CODE.tab: {
  38. aria$1.triggerEvent(event.currentTarget, "mouseleave");
  39. break;
  40. }
  41. case aria.EVENT_CODE.enter:
  42. case aria.EVENT_CODE.numpadEnter:
  43. case aria.EVENT_CODE.space: {
  44. prevDef = true;
  45. event.currentTarget.click();
  46. break;
  47. }
  48. }
  49. if (prevDef) {
  50. event.preventDefault();
  51. }
  52. });
  53. }
  54. }
  55. exports["default"] = MenuItem;
  56. //# sourceMappingURL=menu-item.js.map