{"version":3,"file":"submenu.mjs","sources":["../../../../../../../packages/components/menu/src/utils/submenu.ts"],"sourcesContent":["import { triggerEvent, EVENT_CODE } from '@sgui-plus/utils/aria'\r\nimport type MenuItem from './menu-item'\r\n\r\nclass SubMenu {\r\n  public subMenuItems: NodeList = document.querySelectorAll('')\r\n  public subIndex = 0\r\n  constructor(public parent: MenuItem, public domNode: ParentNode) {\r\n    this.subIndex = 0\r\n    this.init()\r\n  }\r\n\r\n  init(): void {\r\n    this.subMenuItems = this.domNode.querySelectorAll('li')\r\n    this.addListeners()\r\n  }\r\n\r\n  gotoSubIndex(idx: number): void {\r\n    if (idx === this.subMenuItems.length) {\r\n      idx = 0\r\n    } else if (idx < 0) {\r\n      idx = this.subMenuItems.length - 1\r\n    }\r\n    ;(this.subMenuItems[idx] as HTMLElement).focus()\r\n    this.subIndex = idx\r\n  }\r\n\r\n  addListeners(): void {\r\n    const parentNode = this.parent.domNode\r\n    Array.prototype.forEach.call(this.subMenuItems, (el: Element) => {\r\n      el.addEventListener('keydown', (event: any) => {\r\n        let prevDef = false\r\n        switch (event.code) {\r\n          case EVENT_CODE.down: {\r\n            this.gotoSubIndex(this.subIndex + 1)\r\n            prevDef = true\r\n            break\r\n          }\r\n          case EVENT_CODE.up: {\r\n            this.gotoSubIndex(this.subIndex - 1)\r\n            prevDef = true\r\n            break\r\n          }\r\n          case EVENT_CODE.tab: {\r\n            triggerEvent(parentNode as HTMLElement, 'mouseleave')\r\n            break\r\n          }\r\n          case EVENT_CODE.enter:\r\n          case EVENT_CODE.space: {\r\n            prevDef = true\r\n            ;(event.currentTarget as HTMLElement).click()\r\n            break\r\n          }\r\n        }\r\n        if (prevDef) {\r\n          event.preventDefault()\r\n          event.stopPropagation()\r\n        }\r\n        return false\r\n      })\r\n    })\r\n  }\r\n}\r\n\r\nexport default SubMenu\r\n"],"names":[],"mappings":";;AACA,MAAM,OAAO,CAAC;AACd,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE;AAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACtD,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACtB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AAChB,GAAG;AACH,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC5D,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;AACxB,GAAG;AACH,EAAE,YAAY,CAAC,GAAG,EAAE;AACpB,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC1C,MAAM,GAAG,GAAG,CAAC,CAAC;AACd,KAAK,MAAM,IAAI,GAAG,GAAG,CAAC,EAAE;AACxB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,KAAK;AACL,IAAI,CAAC;AACL,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;AACxB,GAAG;AACH,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC3C,IAAI,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK;AAC5D,MAAM,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,KAAK;AAChD,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAC5B,QAAQ,QAAQ,KAAK,CAAC,IAAI;AAC1B,UAAU,KAAK,UAAU,CAAC,IAAI,EAAE;AAChC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACjD,YAAY,OAAO,GAAG,IAAI,CAAC;AAC3B,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,KAAK,UAAU,CAAC,EAAE,EAAE;AAC9B,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACjD,YAAY,OAAO,GAAG,IAAI,CAAC;AAC3B,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,KAAK,UAAU,CAAC,GAAG,EAAE;AAC/B,YAAY,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AACnD,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,KAAK,UAAU,CAAC,KAAK,CAAC;AAChC,UAAU,KAAK,UAAU,CAAC,KAAK,EAAE;AACjC,YAAY,OAAO,GAAG,IAAI,CAAC;AAC3B,YAAY,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT,QAAQ,IAAI,OAAO,EAAE;AACrB,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,KAAK,CAAC,eAAe,EAAE,CAAC;AAClC,SAAS;AACT,QAAQ,OAAO,KAAK,CAAC;AACrB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC,CAAC;AACP,GAAG;AACH;;;;"}