@laerdal/life-react-components 2.3.1-dev.9 → 3.0.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/dist/AuthPage/AuthPage.cjs +1 -1
  2. package/dist/AuthPage/AuthPage.cjs.map +1 -1
  3. package/dist/AuthPage/AuthPage.d.ts +1 -0
  4. package/dist/AuthPage/AuthPage.js +1 -1
  5. package/dist/AuthPage/AuthPage.js.map +1 -1
  6. package/dist/Banners/Banner.cjs.map +1 -1
  7. package/dist/Banners/Banner.js.map +1 -1
  8. package/dist/Breadcrumb/Breadcrumb.cjs +34 -32
  9. package/dist/Breadcrumb/Breadcrumb.cjs.map +1 -1
  10. package/dist/Breadcrumb/Breadcrumb.d.ts +1 -0
  11. package/dist/Breadcrumb/Breadcrumb.js +34 -32
  12. package/dist/Breadcrumb/Breadcrumb.js.map +1 -1
  13. package/dist/Dropdown/DropdownButtonTypes.d.ts +1 -0
  14. package/dist/Dropdown/DropdownContent.cjs +1 -1
  15. package/dist/Dropdown/DropdownContent.js +1 -1
  16. package/dist/Footer/Components/FooterBottomLinks.d.ts +1 -0
  17. package/dist/Footer/Components/FooterDropdownLinks.d.ts +1 -0
  18. package/dist/Footer/Components/FooterNavSection.d.ts +1 -0
  19. package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs.map +1 -1
  20. package/dist/Footer/Components/FooterNewsletterAndSocialSection.d.ts +1 -0
  21. package/dist/Footer/Components/FooterNewsletterAndSocialSection.js.map +1 -1
  22. package/dist/Footer/Components/FooterTop.d.ts +1 -0
  23. package/dist/Footer/Footer.d.ts +1 -0
  24. package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
  25. package/dist/GlobalNavigationBar/Logo.js.map +1 -1
  26. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs +2 -0
  27. package/dist/GlobalNavigationBar/desktop/DesktopActions.cjs.map +1 -1
  28. package/dist/GlobalNavigationBar/desktop/DesktopActions.js +2 -0
  29. package/dist/GlobalNavigationBar/desktop/DesktopActions.js.map +1 -1
  30. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs +1 -1
  31. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs.map +1 -1
  32. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.d.ts +1 -0
  33. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js +2 -2
  34. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js.map +1 -1
  35. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +66 -5
  36. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
  37. package/dist/GlobalNavigationBar/desktop/MainMenu.js +66 -5
  38. package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
  39. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs +102 -19
  40. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs.map +1 -1
  41. package/dist/GlobalNavigationBar/desktop/SubMenu.d.ts +4 -1
  42. package/dist/GlobalNavigationBar/desktop/SubMenu.js +102 -19
  43. package/dist/GlobalNavigationBar/desktop/SubMenu.js.map +1 -1
  44. package/dist/GlobalNavigationBar/desktop/UserMenu.d.ts +1 -0
  45. package/dist/GlobalNavigationBar/mobile/MobileMenu.d.ts +1 -0
  46. package/dist/InputFields/DatepickerField.cjs +1 -1
  47. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  48. package/dist/InputFields/DatepickerField.d.ts +18 -1
  49. package/dist/InputFields/DatepickerField.js +1 -1
  50. package/dist/InputFields/DatepickerField.js.map +1 -1
  51. package/dist/InputFields/DatepickerFieldHeader.cjs +2 -4
  52. package/dist/InputFields/DatepickerFieldHeader.cjs.map +1 -1
  53. package/dist/InputFields/DatepickerFieldHeader.d.ts +1 -0
  54. package/dist/InputFields/DatepickerFieldHeader.js +2 -4
  55. package/dist/InputFields/DatepickerFieldHeader.js.map +1 -1
  56. package/dist/InputFields/Label.cjs.map +1 -1
  57. package/dist/InputFields/Label.d.ts +1 -1
  58. package/dist/InputFields/Label.js.map +1 -1
  59. package/dist/InputFields/NumberField.cjs.map +1 -1
  60. package/dist/InputFields/NumberField.d.ts +15 -0
  61. package/dist/InputFields/NumberField.js.map +1 -1
  62. package/dist/InputFields/PasswordField.cjs.map +1 -1
  63. package/dist/InputFields/PasswordField.d.ts +15 -1
  64. package/dist/InputFields/PasswordField.js.map +1 -1
  65. package/dist/InputFields/QuickSearch.cjs.map +1 -1
  66. package/dist/InputFields/QuickSearch.d.ts +1 -1
  67. package/dist/InputFields/QuickSearch.js.map +1 -1
  68. package/dist/InputFields/RadioButton.cjs.map +1 -1
  69. package/dist/InputFields/RadioButton.d.ts +16 -3
  70. package/dist/InputFields/RadioButton.js.map +1 -1
  71. package/dist/InputFields/SearchBar.cjs.map +1 -1
  72. package/dist/InputFields/SearchBar.d.ts +2 -2
  73. package/dist/InputFields/SearchBar.js.map +1 -1
  74. package/dist/InputFields/TextField.cjs.map +1 -1
  75. package/dist/InputFields/TextField.d.ts +20 -1
  76. package/dist/InputFields/TextField.js.map +1 -1
  77. package/dist/InputFields/index.cjs.map +1 -1
  78. package/dist/InputFields/index.d.ts +10 -8
  79. package/dist/InputFields/index.js.map +1 -1
  80. package/dist/InputFields/types.cjs.map +1 -1
  81. package/dist/InputFields/types.d.ts +0 -19
  82. package/dist/InputFields/types.js.map +1 -1
  83. package/dist/LoadingIndicator/LoadingIndicator.d.ts +1 -0
  84. package/dist/MiniProductCard/MiniProductCard.d.ts +1 -0
  85. package/dist/Modals/ModalContent.cjs +1 -1
  86. package/dist/Modals/ModalContent.cjs.map +1 -1
  87. package/dist/Modals/ModalContent.js +1 -1
  88. package/dist/Modals/ModalContent.js.map +1 -1
  89. package/dist/Modals/ModalDialog.cjs +1 -1
  90. package/dist/Modals/ModalDialog.cjs.map +1 -1
  91. package/dist/Modals/ModalDialog.js +1 -1
  92. package/dist/Modals/ModalDialog.js.map +1 -1
  93. package/dist/Paginator/Paginator.cjs.map +1 -1
  94. package/dist/Paginator/Paginator.d.ts +1 -0
  95. package/dist/Paginator/Paginator.js.map +1 -1
  96. package/dist/Panel/Panel.cjs +4 -4
  97. package/dist/Panel/Panel.cjs.map +1 -1
  98. package/dist/Panel/Panel.js +5 -5
  99. package/dist/Panel/Panel.js.map +1 -1
  100. package/dist/SideMenu/SideMenuBody.d.ts +1 -0
  101. package/dist/SideMenu/SideMenuFooter.d.ts +1 -0
  102. package/dist/SideMenu/SideMenuHeader.d.ts +1 -0
  103. package/dist/SideMenu/types.d.ts +1 -0
  104. package/dist/Switcher/MobileCustomMenuContent.cjs +3 -0
  105. package/dist/Switcher/MobileCustomMenuContent.cjs.map +1 -1
  106. package/dist/Switcher/MobileCustomMenuContent.d.ts +1 -0
  107. package/dist/Switcher/MobileCustomMenuContent.js +3 -0
  108. package/dist/Switcher/MobileCustomMenuContent.js.map +1 -1
  109. package/dist/Switcher/SwitcherMenuItem.d.ts +1 -0
  110. package/dist/Table/Table.cjs +1 -1
  111. package/dist/Table/Table.js +1 -1
  112. package/dist/Table/TableFooter.cjs.map +1 -1
  113. package/dist/Table/TableFooter.js.map +1 -1
  114. package/dist/Table/TableTypes.d.ts +1 -0
  115. package/dist/Tabs/TabLink.cjs +52 -51
  116. package/dist/Tabs/TabLink.cjs.map +1 -1
  117. package/dist/Tabs/TabLink.d.ts +13 -14
  118. package/dist/Tabs/TabLink.js +52 -51
  119. package/dist/Tabs/TabLink.js.map +1 -1
  120. package/dist/Tile/TileCommonItems.cjs +3 -3
  121. package/dist/Tile/TileCommonItems.cjs.map +1 -1
  122. package/dist/Tile/TileCommonItems.d.ts +1 -0
  123. package/dist/Tile/TileCommonItems.js +3 -3
  124. package/dist/Tile/TileCommonItems.js.map +1 -1
  125. package/dist/Toggles/TogglerTypes.d.ts +1 -0
  126. package/dist/Tooltips/TooltipOverflow.cjs +1 -1
  127. package/dist/Tooltips/TooltipOverflow.cjs.map +1 -1
  128. package/dist/Tooltips/TooltipOverflow.js +1 -1
  129. package/dist/Tooltips/TooltipOverflow.js.map +1 -1
  130. package/dist/Tooltips/TooltipTypes.d.ts +1 -0
  131. package/dist/Tooltips/TooltipWrapper.d.ts +1 -0
  132. package/dist/assets/index.cjs.map +1 -1
  133. package/dist/assets/index.js.map +1 -1
  134. package/dist/common/ActionWithin.cjs +1 -1
  135. package/dist/common/ActionWithin.js +1 -1
  136. package/dist/common/FocusVisible.cjs +1 -1
  137. package/dist/common/FocusVisible.js +1 -1
  138. package/dist/icons/contenticons/AedNoShockAdvised.cjs +41 -0
  139. package/dist/icons/contenticons/AedNoShockAdvised.cjs.map +1 -0
  140. package/dist/icons/contenticons/AedNoShockAdvised.d.ts +3 -0
  141. package/dist/icons/contenticons/AedNoShockAdvised.js +30 -0
  142. package/dist/icons/contenticons/AedNoShockAdvised.js.map +1 -0
  143. package/dist/icons/contenticons/AedShockAdvised.cjs +41 -0
  144. package/dist/icons/contenticons/AedShockAdvised.cjs.map +1 -0
  145. package/dist/icons/contenticons/AedShockAdvised.d.ts +3 -0
  146. package/dist/icons/contenticons/AedShockAdvised.js +30 -0
  147. package/dist/icons/contenticons/AedShockAdvised.js.map +1 -0
  148. package/dist/icons/contenticons/{NoShockAdvised.cjs → Data.cjs} +5 -5
  149. package/dist/icons/contenticons/Data.cjs.map +1 -0
  150. package/dist/icons/contenticons/Data.d.ts +3 -0
  151. package/dist/icons/contenticons/{NoShockAdvised.js → Data.js} +3 -3
  152. package/dist/icons/contenticons/Data.js.map +1 -0
  153. package/dist/icons/contenticons/DecisionFlow.cjs +41 -0
  154. package/dist/icons/contenticons/DecisionFlow.cjs.map +1 -0
  155. package/dist/icons/contenticons/DecisionFlow.d.ts +3 -0
  156. package/dist/icons/contenticons/DecisionFlow.js +30 -0
  157. package/dist/icons/contenticons/DecisionFlow.js.map +1 -0
  158. package/dist/icons/contenticons/Metronome.cjs +41 -0
  159. package/dist/icons/contenticons/Metronome.cjs.map +1 -0
  160. package/dist/icons/contenticons/Metronome.d.ts +3 -0
  161. package/dist/icons/contenticons/Metronome.js +30 -0
  162. package/dist/icons/contenticons/Metronome.js.map +1 -0
  163. package/dist/icons/contenticons/ShockAutomated.cjs +41 -0
  164. package/dist/icons/contenticons/ShockAutomated.cjs.map +1 -0
  165. package/dist/icons/contenticons/{NoShockAdvised.d.ts → ShockAutomated.d.ts} +1 -1
  166. package/dist/icons/contenticons/ShockAutomated.js +30 -0
  167. package/dist/icons/contenticons/ShockAutomated.js.map +1 -0
  168. package/dist/icons/contenticons/ShockNotAdvised.cjs +41 -0
  169. package/dist/icons/contenticons/ShockNotAdvised.cjs.map +1 -0
  170. package/dist/icons/contenticons/ShockNotAdvised.d.ts +3 -0
  171. package/dist/icons/contenticons/ShockNotAdvised.js +30 -0
  172. package/dist/icons/contenticons/ShockNotAdvised.js.map +1 -0
  173. package/dist/icons/contenticons/Stock.cjs +41 -0
  174. package/dist/icons/contenticons/Stock.cjs.map +1 -0
  175. package/dist/icons/contenticons/Stock.d.ts +3 -0
  176. package/dist/icons/contenticons/Stock.js +30 -0
  177. package/dist/icons/contenticons/Stock.js.map +1 -0
  178. package/dist/icons/contenticons/Visibility.cjs +41 -0
  179. package/dist/icons/contenticons/Visibility.cjs.map +1 -0
  180. package/dist/icons/contenticons/Visibility.d.ts +3 -0
  181. package/dist/icons/contenticons/Visibility.js +30 -0
  182. package/dist/icons/contenticons/Visibility.js.map +1 -0
  183. package/dist/icons/contenticons/index.cjs +92 -4
  184. package/dist/icons/contenticons/index.cjs.map +1 -1
  185. package/dist/icons/contenticons/index.d.ts +9 -1
  186. package/dist/icons/contenticons/index.js +9 -1
  187. package/dist/icons/contenticons/index.js.map +1 -1
  188. package/dist/icons/systemicons/Adult.cjs +41 -0
  189. package/dist/icons/systemicons/Adult.cjs.map +1 -0
  190. package/dist/icons/systemicons/Adult.d.ts +3 -0
  191. package/dist/icons/systemicons/Adult.js +30 -0
  192. package/dist/icons/systemicons/Adult.js.map +1 -0
  193. package/dist/icons/systemicons/AedPads.cjs +41 -0
  194. package/dist/icons/systemicons/AedPads.cjs.map +1 -0
  195. package/dist/icons/systemicons/AedPads.d.ts +3 -0
  196. package/dist/icons/systemicons/AedPads.js +30 -0
  197. package/dist/icons/systemicons/AedPads.js.map +1 -0
  198. package/dist/icons/systemicons/AedPadsCorrect.cjs +41 -0
  199. package/dist/icons/systemicons/AedPadsCorrect.cjs.map +1 -0
  200. package/dist/icons/systemicons/AedPadsCorrect.d.ts +3 -0
  201. package/dist/icons/systemicons/AedPadsCorrect.js +30 -0
  202. package/dist/icons/systemicons/AedPadsCorrect.js.map +1 -0
  203. package/dist/icons/systemicons/AedPadsError.cjs +41 -0
  204. package/dist/icons/systemicons/AedPadsError.cjs.map +1 -0
  205. package/dist/icons/systemicons/AedPadsError.d.ts +3 -0
  206. package/dist/icons/systemicons/AedPadsError.js +30 -0
  207. package/dist/icons/systemicons/AedPadsError.js.map +1 -0
  208. package/dist/icons/systemicons/Archive.cjs +41 -0
  209. package/dist/icons/systemicons/Archive.cjs.map +1 -0
  210. package/dist/icons/systemicons/Archive.d.ts +3 -0
  211. package/dist/icons/systemicons/Archive.js +30 -0
  212. package/dist/icons/systemicons/Archive.js.map +1 -0
  213. package/dist/icons/systemicons/ArrowCollapse.cjs +41 -0
  214. package/dist/icons/systemicons/ArrowCollapse.cjs.map +1 -0
  215. package/dist/icons/systemicons/ArrowCollapse.d.ts +3 -0
  216. package/dist/icons/systemicons/ArrowCollapse.js +30 -0
  217. package/dist/icons/systemicons/ArrowCollapse.js.map +1 -0
  218. package/dist/icons/systemicons/ArrowExpand.cjs +41 -0
  219. package/dist/icons/systemicons/ArrowExpand.cjs.map +1 -0
  220. package/dist/icons/systemicons/ArrowExpand.d.ts +3 -0
  221. package/dist/icons/systemicons/ArrowExpand.js +30 -0
  222. package/dist/icons/systemicons/ArrowExpand.js.map +1 -0
  223. package/dist/icons/systemicons/Child.cjs +41 -0
  224. package/dist/icons/systemicons/Child.cjs.map +1 -0
  225. package/dist/icons/systemicons/Child.d.ts +3 -0
  226. package/dist/icons/systemicons/Child.js +30 -0
  227. package/dist/icons/systemicons/Child.js.map +1 -0
  228. package/dist/icons/systemicons/Copy.cjs +41 -0
  229. package/dist/icons/systemicons/Copy.cjs.map +1 -0
  230. package/dist/icons/systemicons/Copy.d.ts +3 -0
  231. package/dist/icons/systemicons/Copy.js +30 -0
  232. package/dist/icons/systemicons/Copy.js.map +1 -0
  233. package/dist/icons/systemicons/DecisionFlow.cjs +41 -0
  234. package/dist/icons/systemicons/DecisionFlow.cjs.map +1 -0
  235. package/dist/icons/systemicons/DecisionFlow.d.ts +3 -0
  236. package/dist/icons/systemicons/DecisionFlow.js +30 -0
  237. package/dist/icons/systemicons/DecisionFlow.js.map +1 -0
  238. package/dist/icons/systemicons/HeartShock.cjs +41 -0
  239. package/dist/icons/systemicons/HeartShock.cjs.map +1 -0
  240. package/dist/icons/systemicons/HeartShock.d.ts +3 -0
  241. package/dist/icons/systemicons/HeartShock.js +30 -0
  242. package/dist/icons/systemicons/HeartShock.js.map +1 -0
  243. package/dist/icons/systemicons/Infant.cjs +41 -0
  244. package/dist/icons/systemicons/Infant.cjs.map +1 -0
  245. package/dist/icons/systemicons/Infant.d.ts +3 -0
  246. package/dist/icons/systemicons/Infant.js +30 -0
  247. package/dist/icons/systemicons/Infant.js.map +1 -0
  248. package/dist/icons/systemicons/LegendStrokeDashed.cjs +41 -0
  249. package/dist/icons/systemicons/LegendStrokeDashed.cjs.map +1 -0
  250. package/dist/icons/systemicons/LegendStrokeDashed.d.ts +3 -0
  251. package/dist/icons/systemicons/LegendStrokeDashed.js +30 -0
  252. package/dist/icons/systemicons/LegendStrokeDashed.js.map +1 -0
  253. package/dist/icons/systemicons/LegendStrokeSolid.cjs +41 -0
  254. package/dist/icons/systemicons/LegendStrokeSolid.cjs.map +1 -0
  255. package/dist/icons/systemicons/LegendStrokeSolid.d.ts +3 -0
  256. package/dist/icons/systemicons/LegendStrokeSolid.js +30 -0
  257. package/dist/icons/systemicons/LegendStrokeSolid.js.map +1 -0
  258. package/dist/icons/systemicons/LoadingMedium.cjs.map +1 -1
  259. package/dist/icons/systemicons/LoadingMedium.js.map +1 -1
  260. package/dist/icons/systemicons/LoadingSmall.cjs.map +1 -1
  261. package/dist/icons/systemicons/LoadingSmall.js.map +1 -1
  262. package/dist/icons/systemicons/Metronome.cjs +41 -0
  263. package/dist/icons/systemicons/Metronome.cjs.map +1 -0
  264. package/dist/icons/systemicons/Metronome.d.ts +3 -0
  265. package/dist/icons/systemicons/Metronome.js +30 -0
  266. package/dist/icons/systemicons/Metronome.js.map +1 -0
  267. package/dist/icons/systemicons/Pin.cjs +41 -0
  268. package/dist/icons/systemicons/Pin.cjs.map +1 -0
  269. package/dist/icons/systemicons/Pin.d.ts +3 -0
  270. package/dist/icons/systemicons/Pin.js +30 -0
  271. package/dist/icons/systemicons/Pin.js.map +1 -0
  272. package/dist/icons/systemicons/Shock.cjs +41 -0
  273. package/dist/icons/systemicons/Shock.cjs.map +1 -0
  274. package/dist/icons/systemicons/Shock.d.ts +3 -0
  275. package/dist/icons/systemicons/Shock.js +30 -0
  276. package/dist/icons/systemicons/Shock.js.map +1 -0
  277. package/dist/icons/systemicons/ShockAdvised.cjs +41 -0
  278. package/dist/icons/systemicons/ShockAdvised.cjs.map +1 -0
  279. package/dist/icons/systemicons/ShockAdvised.d.ts +3 -0
  280. package/dist/icons/systemicons/ShockAdvised.js +30 -0
  281. package/dist/icons/systemicons/ShockAdvised.js.map +1 -0
  282. package/dist/icons/systemicons/ShockAutomated.cjs +41 -0
  283. package/dist/icons/systemicons/ShockAutomated.cjs.map +1 -0
  284. package/dist/icons/systemicons/ShockAutomated.d.ts +3 -0
  285. package/dist/icons/systemicons/ShockAutomated.js +30 -0
  286. package/dist/icons/systemicons/ShockAutomated.js.map +1 -0
  287. package/dist/icons/systemicons/ShockNotAdvised.cjs +41 -0
  288. package/dist/icons/systemicons/ShockNotAdvised.cjs.map +1 -0
  289. package/dist/icons/systemicons/ShockNotAdvised.d.ts +3 -0
  290. package/dist/icons/systemicons/ShockNotAdvised.js +30 -0
  291. package/dist/icons/systemicons/ShockNotAdvised.js.map +1 -0
  292. package/dist/icons/systemicons/Translation.cjs +41 -0
  293. package/dist/icons/systemicons/Translation.cjs.map +1 -0
  294. package/dist/icons/systemicons/Translation.d.ts +3 -0
  295. package/dist/icons/systemicons/Translation.js +30 -0
  296. package/dist/icons/systemicons/Translation.js.map +1 -0
  297. package/dist/icons/systemicons/ZoomOut.cjs +41 -0
  298. package/dist/icons/systemicons/ZoomOut.cjs.map +1 -0
  299. package/dist/icons/systemicons/ZoomOut.d.ts +3 -0
  300. package/dist/icons/systemicons/ZoomOut.js +30 -0
  301. package/dist/icons/systemicons/ZoomOut.js.map +1 -0
  302. package/dist/icons/systemicons/index.cjs +250 -8
  303. package/dist/icons/systemicons/index.cjs.map +1 -1
  304. package/dist/icons/systemicons/index.d.ts +23 -1
  305. package/dist/icons/systemicons/index.js +23 -1
  306. package/dist/icons/systemicons/index.js.map +1 -1
  307. package/package.json +9 -10
  308. package/dist/icons/contenticons/NoShockAdvised.cjs.map +0 -1
  309. package/dist/icons/contenticons/NoShockAdvised.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MainMenu.cjs","names":["NavContainer","styled","div","BREAKPOINTS","MEDIUM","NavItemDiv","LARGE","NavButton","button","COLORS","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","Menu","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","React","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","forceUpdate","activeItem","setActiveItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","x","onMouseEnter","existingRefForId","find","useEffect","window","addEventListener","removeEventListener","length","onFocus","renderItem","item","index","type","icon","to","exact","disabled","external","action","label","note","pinned","rest","defaultOnMouseDownHandler","NavLink","e","existingRef","onClick","onKeyDown","key","code","position","checkIfContainsItem","state","map","slice"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { NavItem } from '../../NavItem';\nimport {SystemIcons} from '../../icons';\nimport { COLORS, BREAKPOINTS } from '../../styles';\nimport { Menu } from './ExtendedMainMenu';\nimport { SubMenu } from './SubMenu';\nimport { IconButton } from '../../Button';\nimport { defaultOnMouseDownHandler } from '../../common';\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\nimport { NavItemDiv } from '../../NavItem/NavItem';\nimport { checkIfContainsItem } from '../utils';\n\nconst NavContainer = styled.div`\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n \n padding: 0 16px;\n\n ${BREAKPOINTS.MEDIUM} {\n display: flex;\n }\n \n ${NavItemDiv} {\n cursor: pointer;\n }\n ${BREAKPOINTS.LARGE} {\n padding: 0 32px;\n }\n\n a {\n text-decoration: none;\n }\n`;\n\nconst NavButton = styled.button`\n background: ${COLORS.white};\n border: 0;\n`;\n\ninterface ExtendedMenuWrapperProps {\n floatRight: boolean;\n}\n\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\n display: flex;\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\n\n position: absolute;\n flex-direction: column;\n left: 290px;\n top: 22px;\n\n height: 0;\n width: 0;\n\n &:focus-within,\n &:hover,\n &.open {\n background: ${COLORS.white};\n }\n`;\n\nconst ExtendedSection = styled.div`\n position: relative;\n`;\n\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\n ${Menu} {\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\n }\n\n button {\n padding-left: 0px;\n }\n`;\n\nconst ExtendedMenuOption = 'extendedOption';\n\ntype Props = {\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\n};\n\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\n const [, forceUpdate] = React.useState({});\n const [activeItem, setActiveItemId] = React.useState<string>('');\n\n const widthOfItem = 120;\n const recalculateNumberOfItemsAllowed = () => {\n if (rightSideRef?.current && mainMenuRef?.current) {\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\n if (number !== numberOfItemsAllowed) {\n setNumberOfItemsAllowed(number);\n }\n }\n };\n\n const onMouseLeave = (event: any, id: string) => {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\n //just trigger rerendering\n forceUpdate({});\n };\n\n const onMouseEnter = (event: any, id: string) => {\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\n if (existingRefForId == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n // Bind the event listener\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\n return () => {\n // Unbind the event listener on clean up\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\n };\n }, []);\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n }, [items.length]);\n\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n //no open dropdowns if top level was entered\n dropdownMenusOpenedArray.current = [];\n forceUpdate({});\n }\n\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\n if (index > numberOfItemsAllowed - 2) return null;\n if (item.type != 'desktopgroup') {\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\n return item?.disabled ? (\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\n {item?.label}\n </NavItem>\n ) : (\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\n {item?.label}\n </NavItem>\n );\n } else {\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\n const onClick = () => {\n if (existingRef == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if(event.key == 'Enter' || event.code == 'Space')\n {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n }\n }\n\n return (\n <div style={{ position: 'relative' }} onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')} onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\n <NavItem onFocus={onFocus} onKeyDown={onKeyDown} tabIndex={0} className={(existingRef != null || checkIfContainsItem(item, activeItem) ) ? 'active' : ''} key={item.label} to={null} onClick={onClick}>\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\n </NavItem>\n <SubMenu\n activeItemId={activeItem}\n nestPath={[item.id]}\n onItemStateChanged={(item, state) => {\n if (state) {\n setActiveItemId(item);\n } else if(item == activeItem)\n setActiveItemId('');\n }}\n item={item as MenuNavigationItemTypeDesktopGroup}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n index={index + 1}\n topLevel={true}\n />\n </div>\n );\n }\n };\n\n return (\n <NavContainer className=\"GlobalNavigationMainMenu\" ref={mainMenuRef}>\n {items?.map(renderItem)}\n {items.length + 1 > numberOfItemsAllowed && (\n <ExtendedSection onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)} onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\n <IconButton ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\n <SystemIcons.MoreHorizontal size=\"24px\"/>\n </IconButton>\n <SubMenu\n activeItemId={activeItem}\n onItemStateChanged={(item, state) => {\n if (state)\n setActiveItemId(item);\n else if(item == activeItem)\n setActiveItemId('');\n }}\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\n topLevel={true}\n index={0}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n />\n </ExtendedSection>\n )}\n </NavContainer>\n );\n};\n\nexport default MainMenu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MainMenu.cjs","names":["NavContainer","styled","div","BREAKPOINTS","MEDIUM","NavItemDiv","LARGE","NavButton","button","COLORS","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","Menu","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","React","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","subMenuRefs","setAllSubMenuRefs","extendedMenuOptionRef","createRef","useEffect","map","x","type","undefined","forceUpdate","activeItem","setActiveItemId","focusedItemId","setFocusedItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","onMouseEnter","existingRefForId","find","window","addEventListener","removeEventListener","length","onFocus","onKeyDownTop","key","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","defaultOnMouseDownHandler","NavLink","e","existingRef","onClick","onKeyDown","code","containsActiveItem","checkIfContainsItem","position","Boolean","state","extended","extendedSectionKeyHandler","stopPropagation","slice","console","log"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { NavItem } from '../../NavItem';\nimport {SystemIcons} from '../../icons';\nimport { COLORS, BREAKPOINTS } from '../../styles';\nimport { Menu } from './ExtendedMainMenu';\nimport { SubMenu } from './SubMenu';\nimport { IconButton } from '../../Button';\nimport { defaultOnMouseDownHandler } from '../../common';\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\nimport { NavItemDiv } from '../../NavItem/NavItem';\nimport { checkIfContainsItem } from '../utils';\n\nconst NavContainer = styled.div`\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n \n padding: 0 16px;\n\n ${BREAKPOINTS.MEDIUM} {\n display: flex;\n }\n \n ${NavItemDiv} {\n cursor: pointer;\n }\n ${BREAKPOINTS.LARGE} {\n padding: 0 32px;\n }\n\n a {\n text-decoration: none;\n }\n`;\n\nconst NavButton = styled.button`\n background: ${COLORS.white};\n border: 0;\n`;\n\ninterface ExtendedMenuWrapperProps {\n floatRight: boolean;\n}\n\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\n display: flex;\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\n\n position: absolute;\n flex-direction: column;\n left: 290px;\n top: 22px;\n\n height: 0;\n width: 0;\n\n &:focus-within,\n &:hover,\n &.open {\n background: ${COLORS.white};\n }\n`;\n\nconst ExtendedSection = styled.div`\n position: relative;\n`;\n\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\n ${Menu} {\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\n }\n\n button {\n padding-left: 0px;\n }\n`;\n\nconst ExtendedMenuOption = 'extendedOption';\n\ntype Props = {\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\n};\n\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\n const extendedMenuOptionRef = React.createRef<HTMLUListElement>();\n\n React.useEffect(() => {\n setAllSubMenuRefs(items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\n }, [items]);\n\n const [, forceUpdate] = React.useState({});\n const [activeItem, setActiveItemId] = React.useState<string>('');\n const [focusedItemId, setFocusedItemId] = React.useState<string>('');\n\n const widthOfItem = 120;\n const recalculateNumberOfItemsAllowed = () => {\n if (rightSideRef?.current && mainMenuRef?.current) {\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\n if (number !== numberOfItemsAllowed) {\n setNumberOfItemsAllowed(number);\n }\n }\n };\n\n const onMouseLeave = (event: any, id: string) => {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\n //just trigger rerendering\n forceUpdate({});\n };\n\n const onMouseEnter = (event: any, id: string) => {\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\n if (existingRefForId == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n // Bind the event listener\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\n return () => {\n // Unbind the event listener on clean up\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\n };\n }, []);\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n }, [items.length]);\n\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n //no open dropdowns if top level was entered\n dropdownMenusOpenedArray.current = [];\n forceUpdate({});\n };\n\n const onKeyDownTop = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n dropdownMenusOpenedArray.current = [];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\n if (index > numberOfItemsAllowed - 2) return null;\n if (item.type != 'desktopgroup') {\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\n return item?.disabled ? (\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\n {item?.label}\n </NavItem>\n ) : (\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\n {item?.label}\n </NavItem>\n );\n } else {\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\n const onClick = () => {\n if (existingRef == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key == 'Enter' || event.code == 'Space') {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n } \n };\n\n const containsActiveItem = checkIfContainsItem(item, activeItem);\n return (\n <div\n style={{ position: 'relative' }}\n onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')}\n onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\n <NavItem\n id={item.id + '_parentOption'}\n aria-expanded={Boolean(existingRef)}\n aria-activedescendant={containsActiveItem ? activeItem : ''}\n aria-controls={item.id}\n role=\"listbox\"\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n tabIndex={0}\n className={existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : ''}\n key={item.label}\n to={null}\n onClick={onClick}>\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\n </NavItem>\n <SubMenu\n ariaLabelledBy={item.id + '_parentOption'}\n ref={subMenuRefs[index]}\n onItemFocused={setFocusedItemId}\n focusedItemId={focusedItemId}\n activeItemId={activeItem}\n nestPath={[item.id]}\n onItemStateChanged={(item, state) => {\n if (state) {\n setActiveItemId(item);\n } else if (item == activeItem) setActiveItemId('');\n }}\n item={item as MenuNavigationItemTypeDesktopGroup}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n index={index + 1}\n topLevel={true}\n />\n </div>\n );\n }\n };\n\n\n const extended = dropdownMenusOpenedArray.current.find((x) => x == ExtendedMenuOption);\n const extendedSectionKeyHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key == 'Enter' || event.code == 'Space') {\n event.stopPropagation();\n\n dropdownMenusOpenedArray.current = [ExtendedMenuOption];\n forceUpdate({});\n }\n };\n\n return (\n <NavContainer role=\"navigation\" className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} onKeyDown={onKeyDownTop}>\n {items?.map(renderItem)}\n {items.length + 1 > numberOfItemsAllowed && (\n <ExtendedSection\n onKeyDown={(event) => extendedSectionKeyHandler(event)}\n onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)}\n onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\n <IconButton\n id={ExtendedMenuOption + '_parentOption'}\n aria-expanded={Boolean(extended)}\n aria-activedescendant={checkIfContainsItem({ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }, activeItem) ? activeItem : ''}\n aria-controls={ExtendedMenuOption}\n role=\"listbox\"\n \n ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\n <SystemIcons.MoreHorizontal size=\"24px\"/>\n </IconButton>\n <SubMenu\n ariaLabelledBy={ExtendedMenuOption + '_parentOption'}\n activeItemId={activeItem}\n onItemFocused={setFocusedItemId}\n focusedItemId={focusedItemId}\n ref={extendedMenuOptionRef}\n onItemStateChanged={(item, state) => {\n console.log(item);\n console.log(state);\n if (state) setActiveItemId(item);\n else if (item == activeItem) setActiveItemId('');\n }}\n nestPath={[ExtendedMenuOption]}\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\n topLevel={true}\n index={0}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n />\n </ExtendedSection>\n )}\n </NavContainer>\n );\n};\n\nexport default MainMenu;\n"],"mappings":"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"}
@@ -45,13 +45,27 @@ var MainMenu = function MainMenu(_ref) {
45
45
  _React$useState2 = _slicedToArray(_React$useState, 2),
46
46
  numberOfItemsAllowed = _React$useState2[0],
47
47
  setNumberOfItemsAllowed = _React$useState2[1];
48
- var _React$useState3 = React.useState({}),
48
+ var _React$useState3 = React.useState([]),
49
49
  _React$useState4 = _slicedToArray(_React$useState3, 2),
50
- forceUpdate = _React$useState4[1];
51
- var _React$useState5 = React.useState(''),
50
+ subMenuRefs = _React$useState4[0],
51
+ setAllSubMenuRefs = _React$useState4[1];
52
+ var extendedMenuOptionRef = /*#__PURE__*/React.createRef();
53
+ React.useEffect(function () {
54
+ setAllSubMenuRefs(items.map(function (x) {
55
+ return x.type == 'desktopgroup' ? /*#__PURE__*/React.createRef() : undefined;
56
+ }));
57
+ }, [items]);
58
+ var _React$useState5 = React.useState({}),
52
59
  _React$useState6 = _slicedToArray(_React$useState5, 2),
53
- activeItem = _React$useState6[0],
54
- setActiveItemId = _React$useState6[1];
60
+ forceUpdate = _React$useState6[1];
61
+ var _React$useState7 = React.useState(''),
62
+ _React$useState8 = _slicedToArray(_React$useState7, 2),
63
+ activeItem = _React$useState8[0],
64
+ setActiveItemId = _React$useState8[1];
65
+ var _React$useState9 = React.useState(''),
66
+ _React$useState10 = _slicedToArray(_React$useState9, 2),
67
+ focusedItemId = _React$useState10[0],
68
+ setFocusedItemId = _React$useState10[1];
55
69
  var widthOfItem = 120;
56
70
  var recalculateNumberOfItemsAllowed = function recalculateNumberOfItemsAllowed() {
57
71
  if (rightSideRef !== null && rightSideRef !== void 0 && rightSideRef.current && mainMenuRef !== null && mainMenuRef !== void 0 && mainMenuRef.current) {
@@ -96,6 +110,13 @@ var MainMenu = function MainMenu(_ref) {
96
110
  dropdownMenusOpenedArray.current = [];
97
111
  forceUpdate({});
98
112
  };
113
+ var onKeyDownTop = function onKeyDownTop(event) {
114
+ if (event.key === 'Escape' || event.key === 'Esc') {
115
+ dropdownMenusOpenedArray.current = [];
116
+ //just trigger rerendering
117
+ forceUpdate({});
118
+ }
119
+ };
99
120
  var renderItem = function renderItem(item, index) {
100
121
  if (index > numberOfItemsAllowed - 2) return null;
101
122
  if (item.type != 'desktopgroup') {
@@ -144,6 +165,7 @@ var MainMenu = function MainMenu(_ref) {
144
165
  forceUpdate({});
145
166
  }
146
167
  };
168
+ var containsActiveItem = checkIfContainsItem(item, activeItem);
147
169
  return /*#__PURE__*/_jsxs("div", {
148
170
  style: {
149
171
  position: 'relative'
@@ -157,6 +179,11 @@ var MainMenu = function MainMenu(_ref) {
157
179
  return _onMouseLeave(event, (_item$id2 = item.id) !== null && _item$id2 !== void 0 ? _item$id2 : '');
158
180
  },
159
181
  children: [/*#__PURE__*/_jsxs(NavItem, {
182
+ id: item.id + '_parentOption',
183
+ "aria-expanded": Boolean(existingRef),
184
+ "aria-activedescendant": containsActiveItem ? activeItem : '',
185
+ "aria-controls": item.id,
186
+ role: "listbox",
160
187
  onFocus: onFocus,
161
188
  onKeyDown: onKeyDown,
162
189
  tabIndex: 0,
@@ -167,6 +194,10 @@ var MainMenu = function MainMenu(_ref) {
167
194
  size: "24px"
168
195
  })]
169
196
  }, item.label), /*#__PURE__*/_jsx(SubMenu, {
197
+ ariaLabelledBy: item.id + '_parentOption',
198
+ ref: subMenuRefs[index],
199
+ onItemFocused: setFocusedItemId,
200
+ focusedItemId: focusedItemId,
170
201
  activeItemId: activeItem,
171
202
  nestPath: [item.id],
172
203
  onItemStateChanged: function onItemStateChanged(item, state) {
@@ -182,10 +213,25 @@ var MainMenu = function MainMenu(_ref) {
182
213
  });
183
214
  }
184
215
  };
216
+ var extended = dropdownMenusOpenedArray.current.find(function (x) {
217
+ return x == ExtendedMenuOption;
218
+ });
219
+ var extendedSectionKeyHandler = function extendedSectionKeyHandler(event) {
220
+ if (event.key == 'Enter' || event.code == 'Space') {
221
+ event.stopPropagation();
222
+ dropdownMenusOpenedArray.current = [ExtendedMenuOption];
223
+ forceUpdate({});
224
+ }
225
+ };
185
226
  return /*#__PURE__*/_jsxs(NavContainer, {
227
+ role: "navigation",
186
228
  className: "GlobalNavigationMainMenu",
187
229
  ref: mainMenuRef,
230
+ onKeyDown: onKeyDownTop,
188
231
  children: [items === null || items === void 0 ? void 0 : items.map(renderItem), items.length + 1 > numberOfItemsAllowed && /*#__PURE__*/_jsxs(ExtendedSection, {
232
+ onKeyDown: function onKeyDown(event) {
233
+ return extendedSectionKeyHandler(event);
234
+ },
189
235
  onMouseEnter: function onMouseEnter(event) {
190
236
  return _onMouseEnter(event, ExtendedMenuOption);
191
237
  },
@@ -193,6 +239,14 @@ var MainMenu = function MainMenu(_ref) {
193
239
  return _onMouseLeave(event, ExtendedMenuOption);
194
240
  },
195
241
  children: [/*#__PURE__*/_jsx(IconButton, {
242
+ id: ExtendedMenuOption + '_parentOption',
243
+ "aria-expanded": Boolean(extended),
244
+ "aria-activedescendant": checkIfContainsItem({
245
+ items: items.slice(numberOfItemsAllowed - 1),
246
+ id: ExtendedMenuOption
247
+ }, activeItem) ? activeItem : '',
248
+ "aria-controls": ExtendedMenuOption,
249
+ role: "listbox",
196
250
  ref: menuButtonRef,
197
251
  variant: 'secondary',
198
252
  shape: 'circular',
@@ -201,10 +255,17 @@ var MainMenu = function MainMenu(_ref) {
201
255
  size: "24px"
202
256
  })
203
257
  }), /*#__PURE__*/_jsx(SubMenu, {
258
+ ariaLabelledBy: ExtendedMenuOption + '_parentOption',
204
259
  activeItemId: activeItem,
260
+ onItemFocused: setFocusedItemId,
261
+ focusedItemId: focusedItemId,
262
+ ref: extendedMenuOptionRef,
205
263
  onItemStateChanged: function onItemStateChanged(item, state) {
264
+ console.log(item);
265
+ console.log(state);
206
266
  if (state) setActiveItemId(item);else if (item == activeItem) setActiveItemId('');
207
267
  },
268
+ nestPath: [ExtendedMenuOption],
208
269
  item: {
209
270
  items: items.slice(numberOfItemsAllowed - 1),
210
271
  id: ExtendedMenuOption
@@ -1 +1 @@
1
- {"version":3,"file":"MainMenu.js","names":["React","NavLink","styled","NavItem","SystemIcons","COLORS","BREAKPOINTS","Menu","SubMenu","IconButton","defaultOnMouseDownHandler","NavItemDiv","checkIfContainsItem","NavContainer","div","MEDIUM","LARGE","NavButton","button","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","forceUpdate","activeItem","setActiveItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","x","onMouseEnter","existingRefForId","find","useEffect","window","addEventListener","removeEventListener","length","onFocus","renderItem","item","index","type","icon","to","exact","disabled","external","action","label","note","pinned","rest","e","existingRef","onClick","onKeyDown","key","code","position","state","map","slice"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { NavItem } from '../../NavItem';\nimport {SystemIcons} from '../../icons';\nimport { COLORS, BREAKPOINTS } from '../../styles';\nimport { Menu } from './ExtendedMainMenu';\nimport { SubMenu } from './SubMenu';\nimport { IconButton } from '../../Button';\nimport { defaultOnMouseDownHandler } from '../../common';\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\nimport { NavItemDiv } from '../../NavItem/NavItem';\nimport { checkIfContainsItem } from '../utils';\n\nconst NavContainer = styled.div`\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n \n padding: 0 16px;\n\n ${BREAKPOINTS.MEDIUM} {\n display: flex;\n }\n \n ${NavItemDiv} {\n cursor: pointer;\n }\n ${BREAKPOINTS.LARGE} {\n padding: 0 32px;\n }\n\n a {\n text-decoration: none;\n }\n`;\n\nconst NavButton = styled.button`\n background: ${COLORS.white};\n border: 0;\n`;\n\ninterface ExtendedMenuWrapperProps {\n floatRight: boolean;\n}\n\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\n display: flex;\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\n\n position: absolute;\n flex-direction: column;\n left: 290px;\n top: 22px;\n\n height: 0;\n width: 0;\n\n &:focus-within,\n &:hover,\n &.open {\n background: ${COLORS.white};\n }\n`;\n\nconst ExtendedSection = styled.div`\n position: relative;\n`;\n\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\n ${Menu} {\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\n }\n\n button {\n padding-left: 0px;\n }\n`;\n\nconst ExtendedMenuOption = 'extendedOption';\n\ntype Props = {\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\n};\n\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\n const [, forceUpdate] = React.useState({});\n const [activeItem, setActiveItemId] = React.useState<string>('');\n\n const widthOfItem = 120;\n const recalculateNumberOfItemsAllowed = () => {\n if (rightSideRef?.current && mainMenuRef?.current) {\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\n if (number !== numberOfItemsAllowed) {\n setNumberOfItemsAllowed(number);\n }\n }\n };\n\n const onMouseLeave = (event: any, id: string) => {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\n //just trigger rerendering\n forceUpdate({});\n };\n\n const onMouseEnter = (event: any, id: string) => {\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\n if (existingRefForId == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n // Bind the event listener\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\n return () => {\n // Unbind the event listener on clean up\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\n };\n }, []);\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n }, [items.length]);\n\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n //no open dropdowns if top level was entered\n dropdownMenusOpenedArray.current = [];\n forceUpdate({});\n }\n\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\n if (index > numberOfItemsAllowed - 2) return null;\n if (item.type != 'desktopgroup') {\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\n return item?.disabled ? (\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\n {item?.label}\n </NavItem>\n ) : (\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\n {item?.label}\n </NavItem>\n );\n } else {\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\n const onClick = () => {\n if (existingRef == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if(event.key == 'Enter' || event.code == 'Space')\n {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n }\n }\n\n return (\n <div style={{ position: 'relative' }} onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')} onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\n <NavItem onFocus={onFocus} onKeyDown={onKeyDown} tabIndex={0} className={(existingRef != null || checkIfContainsItem(item, activeItem) ) ? 'active' : ''} key={item.label} to={null} onClick={onClick}>\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\n </NavItem>\n <SubMenu\n activeItemId={activeItem}\n nestPath={[item.id]}\n onItemStateChanged={(item, state) => {\n if (state) {\n setActiveItemId(item);\n } else if(item == activeItem)\n setActiveItemId('');\n }}\n item={item as MenuNavigationItemTypeDesktopGroup}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n index={index + 1}\n topLevel={true}\n />\n </div>\n );\n }\n };\n\n return (\n <NavContainer className=\"GlobalNavigationMainMenu\" ref={mainMenuRef}>\n {items?.map(renderItem)}\n {items.length + 1 > numberOfItemsAllowed && (\n <ExtendedSection onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)} onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\n <IconButton ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\n <SystemIcons.MoreHorizontal size=\"24px\"/>\n </IconButton>\n <SubMenu\n activeItemId={activeItem}\n onItemStateChanged={(item, state) => {\n if (state)\n setActiveItemId(item);\n else if(item == activeItem)\n setActiveItemId('');\n }}\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\n topLevel={true}\n index={0}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n />\n </ExtendedSection>\n )}\n </NavContainer>\n );\n};\n\nexport default MainMenu;\n"],"mappings":"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"}
1
+ {"version":3,"file":"MainMenu.js","names":["React","NavLink","styled","NavItem","SystemIcons","COLORS","BREAKPOINTS","Menu","SubMenu","IconButton","defaultOnMouseDownHandler","NavItemDiv","checkIfContainsItem","NavContainer","div","MEDIUM","LARGE","NavButton","button","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","SubMenuWrapper","topLevel","ExtendedMenuOption","MainMenu","items","rightSideRef","menuButtonRef","useRef","dropdownMenusOpenedArray","mainMenuRef","useState","numberOfItemsAllowed","setNumberOfItemsAllowed","subMenuRefs","setAllSubMenuRefs","extendedMenuOptionRef","createRef","useEffect","map","x","type","undefined","forceUpdate","activeItem","setActiveItemId","focusedItemId","setFocusedItemId","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","onMouseLeave","event","id","filter","onMouseEnter","existingRefForId","find","window","addEventListener","removeEventListener","length","onFocus","onKeyDownTop","key","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","e","existingRef","onClick","onKeyDown","code","containsActiveItem","position","Boolean","state","extended","extendedSectionKeyHandler","stopPropagation","slice","console","log"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport { NavLink, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { NavItem } from '../../NavItem';\nimport {SystemIcons} from '../../icons';\nimport { COLORS, BREAKPOINTS } from '../../styles';\nimport { Menu } from './ExtendedMainMenu';\nimport { SubMenu } from './SubMenu';\nimport { IconButton } from '../../Button';\nimport { defaultOnMouseDownHandler } from '../../common';\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\nimport { NavItemDiv } from '../../NavItem/NavItem';\nimport { checkIfContainsItem } from '../utils';\n\nconst NavContainer = styled.div`\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n \n padding: 0 16px;\n\n ${BREAKPOINTS.MEDIUM} {\n display: flex;\n }\n \n ${NavItemDiv} {\n cursor: pointer;\n }\n ${BREAKPOINTS.LARGE} {\n padding: 0 32px;\n }\n\n a {\n text-decoration: none;\n }\n`;\n\nconst NavButton = styled.button`\n background: ${COLORS.white};\n border: 0;\n`;\n\ninterface ExtendedMenuWrapperProps {\n floatRight: boolean;\n}\n\nconst ExtendedMenuWrapper = styled.div<ExtendedMenuWrapperProps>`\n display: flex;\n margin-left: ${(props) => (props.floatRight ? 'auto' : 'unset')};\n\n position: absolute;\n flex-direction: column;\n left: 290px;\n top: 22px;\n\n height: 0;\n width: 0;\n\n &:focus-within,\n &:hover,\n &.open {\n background: ${COLORS.white};\n }\n`;\n\nconst ExtendedSection = styled.div`\n position: relative;\n`;\n\nconst SubMenuWrapper = styled.div<{ topLevel: boolean }>`\n ${Menu} {\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\n }\n\n button {\n padding-left: 0px;\n }\n`;\n\nconst ExtendedMenuOption = 'extendedOption';\n\ntype Props = {\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\n};\n\nconst MainMenu = ({ items, rightSideRef }: Props): React.ReactElement<Props> => {\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\n //we have to use refs instead of 'state' here, because when onmouseleave is triggered for multiple nested divs, state update is not being updated in between\n const dropdownMenusOpenedArray = React.useRef<string[]>([]);\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\n const extendedMenuOptionRef = React.createRef<HTMLUListElement>();\n\n React.useEffect(() => {\n setAllSubMenuRefs(items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\n }, [items]);\n\n const [, forceUpdate] = React.useState({});\n const [activeItem, setActiveItemId] = React.useState<string>('');\n const [focusedItemId, setFocusedItemId] = React.useState<string>('');\n\n const widthOfItem = 120;\n const recalculateNumberOfItemsAllowed = () => {\n if (rightSideRef?.current && mainMenuRef?.current) {\n const number = Math.floor((rightSideRef?.current?.offsetLeft - mainMenuRef?.current?.offsetLeft) / widthOfItem);\n if (number !== numberOfItemsAllowed) {\n setNumberOfItemsAllowed(number);\n }\n }\n };\n\n const onMouseLeave = (event: any, id: string) => {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\n //just trigger rerendering\n forceUpdate({});\n };\n\n const onMouseEnter = (event: any, id: string) => {\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\n if (existingRefForId == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n // Bind the event listener\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\n return () => {\n // Unbind the event listener on clean up\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\n };\n }, []);\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n }, [items.length]);\n\n const onFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n //no open dropdowns if top level was entered\n dropdownMenusOpenedArray.current = [];\n forceUpdate({});\n };\n\n const onKeyDownTop = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' || event.key === 'Esc') {\n dropdownMenusOpenedArray.current = [];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n const renderItem = (item: MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup, index: number) => {\n if (index > numberOfItemsAllowed - 2) return null;\n if (item.type != 'desktopgroup') {\n const { icon, to, exact, disabled, external, action, label, note, pinned, ...rest } = item as MenuNavigationItemTypeItem;\n return item?.disabled ? (\n <NavItem as={NavButton} className=\"disabled\" key={item.label} onMouseDown={defaultOnMouseDownHandler}>\n {item?.label}\n </NavItem>\n ) : (\n <NavItem as={NavLink} onFocus={onFocus} to={to || ''} key={label} onMouseDown={defaultOnMouseDownHandler} onClick={(e: React.MouseEvent) => action && action(e)} {...rest}>\n {item?.label}\n </NavItem>\n );\n } else {\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\n const onClick = () => {\n if (existingRef == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key == 'Enter' || event.code == 'Space') {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, item.id];\n //just trigger rerendering\n forceUpdate({});\n } \n };\n\n const containsActiveItem = checkIfContainsItem(item, activeItem);\n return (\n <div\n style={{ position: 'relative' }}\n onMouseEnter={(event) => onMouseEnter(event, item.id ?? '')}\n onMouseLeave={(event) => onMouseLeave(event, item.id ?? '')}>\n <NavItem\n id={item.id + '_parentOption'}\n aria-expanded={Boolean(existingRef)}\n aria-activedescendant={containsActiveItem ? activeItem : ''}\n aria-controls={item.id}\n role=\"listbox\"\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n tabIndex={0}\n className={existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : ''}\n key={item.label}\n to={null}\n onClick={onClick}>\n {item?.label} <SystemIcons.ArrowDropDown size=\"24px\" />\n </NavItem>\n <SubMenu\n ariaLabelledBy={item.id + '_parentOption'}\n ref={subMenuRefs[index]}\n onItemFocused={setFocusedItemId}\n focusedItemId={focusedItemId}\n activeItemId={activeItem}\n nestPath={[item.id]}\n onItemStateChanged={(item, state) => {\n if (state) {\n setActiveItemId(item);\n } else if (item == activeItem) setActiveItemId('');\n }}\n item={item as MenuNavigationItemTypeDesktopGroup}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n index={index + 1}\n topLevel={true}\n />\n </div>\n );\n }\n };\n\n\n const extended = dropdownMenusOpenedArray.current.find((x) => x == ExtendedMenuOption);\n const extendedSectionKeyHandler = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key == 'Enter' || event.code == 'Space') {\n event.stopPropagation();\n\n dropdownMenusOpenedArray.current = [ExtendedMenuOption];\n forceUpdate({});\n }\n };\n\n return (\n <NavContainer role=\"navigation\" className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} onKeyDown={onKeyDownTop}>\n {items?.map(renderItem)}\n {items.length + 1 > numberOfItemsAllowed && (\n <ExtendedSection\n onKeyDown={(event) => extendedSectionKeyHandler(event)}\n onMouseEnter={(event) => onMouseEnter(event, ExtendedMenuOption)}\n onMouseLeave={(event) => onMouseLeave(event, ExtendedMenuOption)}>\n <IconButton\n id={ExtendedMenuOption + '_parentOption'}\n aria-expanded={Boolean(extended)}\n aria-activedescendant={checkIfContainsItem({ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }, activeItem) ? activeItem : ''}\n aria-controls={ExtendedMenuOption}\n role=\"listbox\"\n \n ref={menuButtonRef} variant={'secondary'} shape={'circular'} action={() => {}}>\n <SystemIcons.MoreHorizontal size=\"24px\"/>\n </IconButton>\n <SubMenu\n ariaLabelledBy={ExtendedMenuOption + '_parentOption'}\n activeItemId={activeItem}\n onItemFocused={setFocusedItemId}\n focusedItemId={focusedItemId}\n ref={extendedMenuOptionRef}\n onItemStateChanged={(item, state) => {\n console.log(item);\n console.log(state);\n if (state) setActiveItemId(item);\n else if (item == activeItem) setActiveItemId('');\n }}\n nestPath={[ExtendedMenuOption]}\n item={{ items: items.slice(numberOfItemsAllowed - 1), id: ExtendedMenuOption }}\n topLevel={true}\n index={0}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n />\n </ExtendedSection>\n )}\n </NavContainer>\n );\n};\n\nexport default MainMenu;\n"],"mappings":"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"}
@@ -31,7 +31,7 @@ var SubMenuWrapper = _styledComponents.default.div(_templateObject || (_template
31
31
  return !props.visible ? 'display: none;' : '';
32
32
  });
33
33
  exports.SubMenuWrapper = SubMenuWrapper;
34
- var SubMenu = function SubMenu(_ref) {
34
+ var SubMenu = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
35
35
  var item = _ref.item,
36
36
  index = _ref.index,
37
37
  topLevel = _ref.topLevel,
@@ -39,11 +39,33 @@ var SubMenu = function SubMenu(_ref) {
39
39
  onSubMenuHidden = _ref.onSubMenuHidden,
40
40
  onSubMenuOpened = _ref.onSubMenuOpened,
41
41
  onItemStateChanged = _ref.onItemStateChanged,
42
+ focusedItemId = _ref.focusedItemId,
42
43
  activeItemId = _ref.activeItemId,
43
- nestPath = _ref.nestPath;
44
+ nestPath = _ref.nestPath,
45
+ ariaLabelledBy = _ref.ariaLabelledBy,
46
+ onItemFocused = _ref.onItemFocused;
44
47
  var _React$useState = React.useState({}),
45
48
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
46
49
  forceUpdate = _React$useState2[1];
50
+ var focusedRef = React.useRef({
51
+ index: -1
52
+ });
53
+ var _React$useState3 = React.useState([]),
54
+ _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
55
+ allRefs = _React$useState4[0],
56
+ setAllRefs = _React$useState4[1];
57
+ var _React$useState5 = React.useState([]),
58
+ _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
59
+ subMenuRefs = _React$useState6[0],
60
+ setAllSubMenuRefs = _React$useState6[1];
61
+ React.useEffect(function () {
62
+ setAllRefs(item.items.map(function (x) {
63
+ return x.type == 'desktopgroup' ? /*#__PURE__*/React.createRef() : /*#__PURE__*/React.createRef();
64
+ }));
65
+ setAllSubMenuRefs(item.items.map(function (x) {
66
+ return x.type == 'desktopgroup' ? /*#__PURE__*/React.createRef() : undefined;
67
+ }));
68
+ }, [item]);
47
69
  var existingRef = dropdownMenusOpenedArray.current.find(function (x) {
48
70
  return x == item.id;
49
71
  });
@@ -68,30 +90,77 @@ var SubMenu = function SubMenu(_ref) {
68
90
  forceUpdate({});
69
91
  }
70
92
  };
71
- var _onKeyDown = function onKeyDown(event, entryId) {
72
- if (event.key == 'Enter' || event.code == 'Space') {
73
- dropdownMenusOpenedArray.current = [].concat((0, _toConsumableArray2.default)(dropdownMenusOpenedArray.current), [entryId]);
93
+ var _onKeyDown = function onKeyDown(e) {
94
+ if (e.key === 'ArrowUp' || e.key === 'Up') {
95
+ e.stopPropagation();
96
+ e.preventDefault();
97
+ if (focusedRef.current.index > 0) {
98
+ setNewFocusedElement(focusedRef.current.index - 1);
99
+ }
100
+ } else if (e.key === 'ArrowDown' || e.key === 'Down') {
101
+ e.stopPropagation();
102
+ e.preventDefault();
103
+ if (focusedRef.current.index < allRefs.length - 1) setNewFocusedElement(focusedRef.current.index + 1);
104
+ } else if (e.key == 'Enter' || e.code == 'Space') {
105
+ e.stopPropagation();
106
+ if (focusedRef.current.index < 0) return;
107
+ var focusedItem = item.items[focusedRef.current.index];
108
+ if (focusedItem.type == 'desktopgroup') {
109
+ dropdownMenusOpenedArray.current = [].concat((0, _toConsumableArray2.default)(dropdownMenusOpenedArray.current), [focusedItem.id]);
110
+ forceUpdate({});
111
+ } else {
112
+ var _allRefs$focusedRef$c;
113
+ (_allRefs$focusedRef$c = allRefs[focusedRef.current.index].current) === null || _allRefs$focusedRef$c === void 0 ? void 0 : _allRefs$focusedRef$c.click();
114
+ forceUpdate({});
115
+ }
116
+
74
117
  //just trigger rerendering
75
- forceUpdate({});
76
118
  }
77
119
  };
120
+
121
+ var setNewFocusedElement = function setNewFocusedElement(index) {
122
+ var _oldFocusedElement$cu;
123
+ var newFocusedElement = index >= 0 ? allRefs[index] : null;
124
+ var oldFocusedElement = focusedRef.current.index >= 0 ? allRefs[focusedRef.current.index] : null;
125
+ focusedRef.current.index = index;
126
+ if (oldFocusedElement) oldFocusedElement === null || oldFocusedElement === void 0 ? void 0 : (_oldFocusedElement$cu = oldFocusedElement.current) === null || _oldFocusedElement$cu === void 0 ? void 0 : _oldFocusedElement$cu.classList.remove('dropdown-hover');
127
+ if (newFocusedElement && newFocusedElement !== oldFocusedElement) {
128
+ var _newFocusedElement$cu, _item$items$index$id;
129
+ (_newFocusedElement$cu = newFocusedElement.current) === null || _newFocusedElement$cu === void 0 ? void 0 : _newFocusedElement$cu.classList.add('dropdown-hover');
130
+ console.log(item.items[index].id);
131
+ onItemFocused && onItemFocused((_item$items$index$id = item.items[index].id) !== null && _item$items$index$id !== void 0 ? _item$items$index$id : '');
132
+ } else if (onItemFocused) onItemFocused('');
133
+ };
78
134
  var onFocus = function onFocus(event) {
135
+ event.stopPropagation();
79
136
  dropdownMenusOpenedArray.current = (0, _toConsumableArray2.default)(nestPath !== null && nestPath !== void 0 ? nestPath : []);
137
+ setNewFocusedElement(0);
80
138
  forceUpdate({});
81
139
  };
140
+ var onBlur = function onBlur(event) {
141
+ event.stopPropagation();
142
+ setNewFocusedElement(-1);
143
+ };
82
144
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(SubMenuWrapper, {
83
145
  id: item.id,
84
146
  className: existingRef ? 'open' : '',
85
147
  topLevel: topLevel,
86
148
  visible: Boolean(existingRef),
87
149
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExtendedMainMenu.Menu, {
88
- role: "menu",
89
- "aria-labelledby": "UserMenuButton",
150
+ role: "group",
151
+ ref: ref,
152
+ "aria-labelledby": ariaLabelledBy,
153
+ onBlur: onBlur,
154
+ onFocus: onFocus,
155
+ onKeyDown: function onKeyDown(event) {
156
+ return _onKeyDown(event);
157
+ },
158
+ tabIndex: 0,
90
159
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExtendedMainMenu.MenuSection, {
91
160
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExtendedMainMenu.MenuSectionList, {
92
161
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tabs.default, {
93
162
  size: _types.Size.Medium,
94
- children: item.items.map(function (entry) {
163
+ children: item.items.map(function (entry, index) {
95
164
  var _entry$label2;
96
165
  var isGroup = entry.type == 'desktopgroup';
97
166
  var key = isGroup ? entry.id : entry.type == 'item' ? entry.to : '';
@@ -99,7 +168,7 @@ var SubMenu = function SubMenu(_ref) {
99
168
  return x == entry.id;
100
169
  }));
101
170
  if (isGroup) {
102
- var _entry$label;
171
+ var _entry$items$find$id, _entry$items$find, _entry$label;
103
172
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
104
173
  style: {
105
174
  position: 'relative'
@@ -111,12 +180,17 @@ var SubMenu = function SubMenu(_ref) {
111
180
  return _onMouseLeave(event, entry.id);
112
181
  },
113
182
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuItem.MenuItem, {
114
- tabIndex: 0,
115
- onFocus: onFocus,
116
- onKeyDown: function onKeyDown(event) {
117
- return _onKeyDown(event, entry.id);
118
- },
119
- id: entry.id,
183
+ id: entry.id + '_parentOption',
184
+ "aria-expanded": Boolean(SubItemOpened),
185
+ "aria-activedescendant": (_entry$items$find$id = (_entry$items$find = entry.items.find(function (x) {
186
+ return x.id == focusedItemId;
187
+ })) === null || _entry$items$find === void 0 ? void 0 : _entry$items$find.id) !== null && _entry$items$find$id !== void 0 ? _entry$items$find$id : '',
188
+ tabIndex: -1,
189
+ ref: allRefs[index],
190
+ "aria-controls": entry.id,
191
+ role: "group"
192
+ //id={entry.id} removing this can break something
193
+ ,
120
194
  item: {
121
195
  value: (_entry$label = entry.label) !== null && _entry$label !== void 0 ? _entry$label : ''
122
196
  },
@@ -126,6 +200,10 @@ var SubMenu = function SubMenu(_ref) {
126
200
  active: SubItemOpened || Boolean(activeItemId) && activeItemId != '' && (0, _utils.checkIfContainsItem)(entry, activeItemId),
127
201
  onClickHandler: function onClickHandler() {}
128
202
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(SubMenu, {
203
+ ariaLabelledBy: entry.id + '_parentOption',
204
+ onItemFocused: onItemFocused,
205
+ focusedItemId: focusedItemId,
206
+ ref: subMenuRefs[index],
129
207
  nestPath: [].concat((0, _toConsumableArray2.default)(nestPath !== null && nestPath !== void 0 ? nestPath : []), [entry.id]),
130
208
  onItemStateChanged: onItemStateChanged,
131
209
  activeItemId: activeItemId,
@@ -138,8 +216,10 @@ var SubMenu = function SubMenu(_ref) {
138
216
  }
139
217
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
140
218
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabLink.default, {
219
+ id: entry.id,
220
+ tabIndex: -1,
141
221
  to: isGroup ? '' : key,
142
- onFocus: onFocus,
222
+ ref: allRefs[index],
143
223
  onActiveStateChanged: function onActiveStateChanged(state) {
144
224
  return onItemStateChanged && entry.type == 'item' && onItemStateChanged(entry.to, state);
145
225
  },
@@ -162,7 +242,7 @@ var SubMenu = function SubMenu(_ref) {
162
242
  })
163
243
  })
164
244
  });
165
- };
245
+ });
166
246
  exports.SubMenu = SubMenu;
167
247
  SubMenu.propTypes = {
168
248
  index: _propTypes.default.number.isRequired,
@@ -170,7 +250,10 @@ SubMenu.propTypes = {
170
250
  onSubMenuOpened: _propTypes.default.func,
171
251
  onSubMenuHidden: _propTypes.default.func,
172
252
  onItemStateChanged: _propTypes.default.func,
253
+ onItemFocused: _propTypes.default.func,
254
+ focusedItemId: _propTypes.default.string,
173
255
  activeItemId: _propTypes.default.string,
174
- nestPath: _propTypes.default.arrayOf(_propTypes.default.string)
256
+ nestPath: _propTypes.default.arrayOf(_propTypes.default.string),
257
+ ariaLabelledBy: _propTypes.default.string
175
258
  };
176
259
  //# sourceMappingURL=SubMenu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubMenu.cjs","names":["SubMenuWrapper","styled","div","Menu","props","topLevel","visible","SubMenu","item","index","dropdownMenusOpenedArray","onSubMenuHidden","onSubMenuOpened","onItemStateChanged","activeItemId","nestPath","React","useState","forceUpdate","existingRef","current","find","x","id","onMouseLeave","event","filter","containActiveItem","type","checkIfContainsItem","onMouseEnter","existingRefForId","onKeyDown","entryId","key","code","onFocus","Boolean","Size","Medium","items","map","entry","isGroup","to","SubItemOpened","position","value","label","state","disabled"],"sources":["../../../src/GlobalNavigationBar/desktop/SubMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\n\nimport { Menu, MenuSection, MenuSectionList } from './ExtendedMainMenu';\nimport { MenuNavigationItemTypeDesktopGroup } from '../types';\nimport { Size } from '../../types';\nimport { SystemIcons } from '../../icons';\nimport { checkIfContainsItem } from '../utils';\nimport Tabs from '../../Tabs/Tabs';\nimport TabLink from '../../Tabs/TabLink';\nimport { MenuItem } from '../../MenuItem';\n\nexport type SubMenuProps = {\n item: MenuNavigationItemTypeDesktopGroup;\n index: number;\n topLevel: boolean;\n dropdownMenusOpenedArray: React.MutableRefObject<string[]>;\n onSubMenuOpened?: (item: string) => void;\n onSubMenuHidden?: (item: string) => void;\n onItemStateChanged?: (item: string, state: boolean) => void;\n activeItemId?: string;\n nestPath?: string[];\n};\n\nexport const SubMenuWrapper = styled.div<{ topLevel: boolean, visible: boolean }>`\n ${Menu} {\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\n }\n\n ${props => !props.visible ? 'display: none;' : ''}\n\n button {\n padding-left: 0px;\n }\n`;\n\nexport const SubMenu = ({ item, index, topLevel, dropdownMenusOpenedArray, onSubMenuHidden, onSubMenuOpened, onItemStateChanged, activeItemId, nestPath }: SubMenuProps): React.ReactElement<SubMenuProps> => {\n const [, forceUpdate] = React.useState({});\n\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\n const onMouseLeave = (event: any, id: string) => {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\n //just trigger rerendering\n onSubMenuHidden && onSubMenuHidden(id);\n forceUpdate({});\n };\n let containActiveItem = false;\n if(item.type == 'desktopgroup' && activeItemId)\n containActiveItem = checkIfContainsItem(item, activeItemId);\n\n const onMouseEnter = (event: any, id: string) => {\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\n if (existingRefForId == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\n //just trigger rerendering\n onSubMenuOpened && onSubMenuOpened(id);\n forceUpdate({});\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLButtonElement>, entryId: string) => {\n if(event.key == 'Enter' || event.code == 'Space')\n {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, entryId];\n //just trigger rerendering\n forceUpdate({});\n }\n };\n\n const onFocus = (event: React.FocusEvent<HTMLButtonElement | HTMLAnchorElement>) => {\n dropdownMenusOpenedArray.current = [...(nestPath ?? [])];\n forceUpdate({});\n }\n\n return <SubMenuWrapper id={item.id} className={existingRef ? 'open' : ''} topLevel={topLevel} visible={Boolean(existingRef)}>\n <Menu role=\"menu\" aria-labelledby=\"UserMenuButton\">\n <MenuSection>\n <MenuSectionList>\n <Tabs size={Size.Medium}>\n {item.items.map((entry) => {\n const isGroup = entry.type == 'desktopgroup';\n const key = isGroup ? entry.id : entry.type == 'item' ? entry.to : '';\n const SubItemOpened = Boolean(dropdownMenusOpenedArray.current.find((x) => x == entry.id));\n if (isGroup) {\n return (\n <div style={{ position: 'relative' }} onMouseEnter={(event) => onMouseEnter(event, entry.id)} onMouseLeave={(event) => onMouseLeave(event, entry.id)}>\n <MenuItem\n tabIndex={0}\n onFocus={onFocus}\n onKeyDown={(event) => onKeyDown(event, entry.id)}\n id={entry.id}\n item={{\n value: entry.label ?? '',\n }}\n iconRight={<SystemIcons.ArrowDropRight size=\"24px\" />}\n active={SubItemOpened || (Boolean(activeItemId) && activeItemId != '' && checkIfContainsItem(entry, activeItemId!))}\n onClickHandler={() => {}}\n />\n <SubMenu nestPath={[...(nestPath ?? []), entry.id]} onItemStateChanged={onItemStateChanged} activeItemId={activeItemId} dropdownMenusOpenedArray={dropdownMenusOpenedArray} item={entry as MenuNavigationItemTypeDesktopGroup} index={index + 1} topLevel={false} />\n </div>\n );\n }\n return (\n <>\n <TabLink\n key={key}\n to={isGroup ? '' : key}\n onFocus={onFocus}\n onActiveStateChanged={(state) => onItemStateChanged && entry.type == 'item' && onItemStateChanged(entry.to, state)}\n forceDeactivate={isGroup}\n requiredLine={entry.label ?? ''}\n optionalLine={''}\n endLineIcon={isGroup ? <SystemIcons.ArrowDropRight size=\"24px\" /> : null}\n OptionalLineIcon={''}\n disabled={entry.disabled}\n showNotificationDot={false}\n size={Size.Medium}\n variant=\"positive\"\n />\n </>\n );\n })}\n </Tabs>\n </MenuSectionList>\n </MenuSection>\n </Menu>\n </SubMenuWrapper>;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"SubMenu.cjs","names":["SubMenuWrapper","styled","div","Menu","props","topLevel","visible","SubMenu","React","forwardRef","ref","item","index","dropdownMenusOpenedArray","onSubMenuHidden","onSubMenuOpened","onItemStateChanged","focusedItemId","activeItemId","nestPath","ariaLabelledBy","onItemFocused","useState","forceUpdate","focusedRef","useRef","allRefs","setAllRefs","subMenuRefs","setAllSubMenuRefs","useEffect","items","map","x","type","createRef","undefined","existingRef","current","find","id","onMouseLeave","event","filter","containActiveItem","checkIfContainsItem","onMouseEnter","existingRefForId","onKeyDown","e","key","stopPropagation","preventDefault","setNewFocusedElement","length","code","focusedItem","click","newFocusedElement","oldFocusedElement","classList","remove","add","console","log","onFocus","onBlur","Boolean","Size","Medium","entry","isGroup","to","SubItemOpened","position","value","label","state","disabled"],"sources":["../../../src/GlobalNavigationBar/desktop/SubMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport styled from 'styled-components';\n\nimport { Menu, MenuSection, MenuSectionList } from './ExtendedMainMenu';\nimport { MenuNavigationItemTypeDesktopGroup } from '../types';\nimport { Size } from '../../types';\nimport { SystemIcons } from '../../icons';\nimport { checkIfContainsItem } from '../utils';\nimport Tabs from '../../Tabs/Tabs';\nimport TabLink from '../../Tabs/TabLink';\nimport { MenuItem } from '../../MenuItem';\n\nexport type SubMenuProps = {\n item: MenuNavigationItemTypeDesktopGroup;\n index: number;\n topLevel: boolean;\n dropdownMenusOpenedArray: React.MutableRefObject<string[]>;\n onSubMenuOpened?: (item: string) => void;\n onSubMenuHidden?: (item: string) => void;\n onItemStateChanged?: (item: string, state: boolean) => void;\n onItemFocused?: (item: string) => void;\n focusedItemId?: string;\n activeItemId?: string;\n nestPath?: string[];\n ariaLabelledBy?: string;\n};\n\nexport const SubMenuWrapper = styled.div<{ topLevel: boolean; visible: boolean }>`\n ${Menu} {\n top: ${(props) => (props.topLevel ? '100%' : '0px')};\n left: ${(props) => (props.topLevel ? '0px' : 'calc(100% - 12px)')};\n }\n\n ${(props) => (!props.visible ? 'display: none;' : '')}\n\n button {\n padding-left: 0px;\n }\n`;\n\nexport const SubMenu = React.forwardRef<HTMLUListElement, SubMenuProps>(({\n item,\n index,\n topLevel,\n dropdownMenusOpenedArray,\n onSubMenuHidden,\n onSubMenuOpened,\n onItemStateChanged,\n focusedItemId,\n activeItemId,\n nestPath,\n ariaLabelledBy,\n onItemFocused\n}: SubMenuProps, ref): React.ReactElement<SubMenuProps> => {\n const [, forceUpdate] = React.useState({});\n const focusedRef = React.useRef<{ index: number }>({ index: -1 });\n const [allRefs, setAllRefs] = React.useState<React.RefObject<HTMLButtonElement | HTMLAnchorElement>[]>([]);\n const [subMenuRefs, setAllSubMenuRefs] = React.useState<(React.RefObject<HTMLUListElement> | undefined)[]>([]);\n\n React.useEffect(() => {\n setAllRefs(item.items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLButtonElement>() : React.createRef<HTMLAnchorElement>())));\n setAllSubMenuRefs(item.items.map((x) => (x.type == 'desktopgroup' ? React.createRef<HTMLUListElement>() : undefined)));\n }, [item]);\n\n const existingRef = dropdownMenusOpenedArray.current.find((x) => x == item.id);\n const onMouseLeave = (event: any, id: string) => {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current.filter((x) => x != id)];\n //just trigger rerendering\n onSubMenuHidden && onSubMenuHidden(id);\n forceUpdate({});\n };\n let containActiveItem = false;\n if (item.type == 'desktopgroup' && activeItemId) containActiveItem = checkIfContainsItem(item, activeItemId);\n\n const onMouseEnter = (event: any, id: string) => {\n const existingRefForId = dropdownMenusOpenedArray.current.find((x) => x == id);\n if (existingRefForId == null) {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, id];\n //just trigger rerendering\n onSubMenuOpened && onSubMenuOpened(id);\n forceUpdate({});\n }\n };\n\n const onKeyDown = (e: React.KeyboardEvent<HTMLUListElement>) => {\n \n if (e.key === 'ArrowUp' || e.key === 'Up') {\n e.stopPropagation();\n e.preventDefault();\n if (focusedRef.current.index > 0) {\n setNewFocusedElement(focusedRef.current.index - 1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n e.stopPropagation();\n e.preventDefault();\n if(focusedRef.current.index < allRefs.length - 1)\n setNewFocusedElement(focusedRef.current.index + 1);\n } \n else\n if (e.key == 'Enter' || e.code == 'Space') {\n e.stopPropagation();\n if(focusedRef.current.index < 0)\n return;\n \n const focusedItem = item.items[focusedRef.current.index];\n if(focusedItem.type == 'desktopgroup')\n {\n dropdownMenusOpenedArray.current = [...dropdownMenusOpenedArray.current, focusedItem.id];\n forceUpdate({});\n }\n else\n {\n allRefs[focusedRef.current.index].current?.click();\n forceUpdate({});\n }\n\n //just trigger rerendering\n \n }\n };\n\n const setNewFocusedElement = (index: number) => {\n const newFocusedElement = index >= 0 ? allRefs[index] : null;\n const oldFocusedElement = focusedRef.current.index >= 0 ? allRefs[focusedRef.current.index] : null;\n focusedRef.current.index = index;\n\n if(oldFocusedElement)\n oldFocusedElement?.current?.classList.remove('dropdown-hover');\n\n if (newFocusedElement && newFocusedElement !== oldFocusedElement) {\n newFocusedElement.current?.classList.add('dropdown-hover');\n console.log(item.items[index].id);\n onItemFocused && onItemFocused(item.items[index].id ?? '');\n }\n else if(onItemFocused)\n onItemFocused('');\n };\n\n const onFocus = (event: React.FocusEvent<HTMLUListElement>) => {\n event.stopPropagation();\n dropdownMenusOpenedArray.current = [...(nestPath ?? [])];\n setNewFocusedElement(0);\n forceUpdate({});\n \n };\n\n const onBlur = (event: React.FocusEvent<HTMLUListElement>) => {\n event.stopPropagation();\n setNewFocusedElement(-1);\n };\n\n return (\n <SubMenuWrapper id={item.id} className={existingRef ? 'open' : '' } topLevel={topLevel} visible={Boolean(existingRef)}>\n <Menu role=\"group\" ref={ref} aria-labelledby={ariaLabelledBy} onBlur={onBlur} onFocus={onFocus} onKeyDown={(event) => onKeyDown(event)} tabIndex={0}>\n <MenuSection>\n <MenuSectionList>\n <Tabs size={Size.Medium}>\n {item.items.map((entry, index) => {\n const isGroup = entry.type == 'desktopgroup';\n const key = isGroup ? entry.id : entry.type == 'item' ? entry.to : '';\n const SubItemOpened = Boolean(dropdownMenusOpenedArray.current.find((x) => x == entry.id));\n if (isGroup) {\n return (\n <div style={{ position: 'relative' }} onMouseEnter={(event) => onMouseEnter(event, entry.id)} onMouseLeave={(event) => onMouseLeave(event, entry.id)}>\n <MenuItem\n id={entry.id + '_parentOption'}\n aria-expanded={Boolean(SubItemOpened)}\n aria-activedescendant={entry.items.find(x => x.id == focusedItemId)?.id ?? ''}\n tabIndex={-1}\n ref={allRefs[index] as React.Ref<HTMLButtonElement>}\n \n aria-controls={entry.id}\n role=\"group\"\n //id={entry.id} removing this can break something\n item={{\n value: entry.label ?? '',\n }}\n iconRight={<SystemIcons.ArrowDropRight size=\"24px\" />}\n active={SubItemOpened || (Boolean(activeItemId) && activeItemId != '' && checkIfContainsItem(entry, activeItemId!))}\n onClickHandler={() => {}}\n />\n <SubMenu\n ariaLabelledBy={entry.id + '_parentOption'}\n onItemFocused={onItemFocused}\n focusedItemId={focusedItemId}\n ref={subMenuRefs[index]}\n nestPath={[...(nestPath ?? []), entry.id]}\n onItemStateChanged={onItemStateChanged}\n activeItemId={activeItemId}\n dropdownMenusOpenedArray={dropdownMenusOpenedArray}\n item={entry as MenuNavigationItemTypeDesktopGroup}\n index={index + 1}\n topLevel={false}\n />\n </div>\n );\n }\n return (\n <>\n <TabLink\n id={entry.id}\n tabIndex={-1}\n key={key}\n to={isGroup ? '' : key}\n ref={allRefs[index] as React.Ref<HTMLAnchorElement>}\n onActiveStateChanged={(state) => onItemStateChanged && entry.type == 'item' && onItemStateChanged(entry.to, state)}\n forceDeactivate={isGroup}\n requiredLine={entry.label ?? ''}\n optionalLine={''}\n endLineIcon={isGroup ? <SystemIcons.ArrowDropRight size=\"24px\" /> : null}\n OptionalLineIcon={''}\n disabled={entry.disabled}\n showNotificationDot={false}\n size={Size.Medium}\n variant=\"positive\"\n />\n </>\n );\n })}\n </Tabs>\n </MenuSectionList>\n </MenuSection>\n </Menu>\n </SubMenuWrapper>\n );\n});\n"],"mappings":"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"}
@@ -8,11 +8,14 @@ export type SubMenuProps = {
8
8
  onSubMenuOpened?: (item: string) => void;
9
9
  onSubMenuHidden?: (item: string) => void;
10
10
  onItemStateChanged?: (item: string, state: boolean) => void;
11
+ onItemFocused?: (item: string) => void;
12
+ focusedItemId?: string;
11
13
  activeItemId?: string;
12
14
  nestPath?: string[];
15
+ ariaLabelledBy?: string;
13
16
  };
14
17
  export declare const SubMenuWrapper: import("styled-components").StyledComponent<"div", any, {
15
18
  topLevel: boolean;
16
19
  visible: boolean;
17
20
  }, never>;
18
- export declare const SubMenu: ({ item, index, topLevel, dropdownMenusOpenedArray, onSubMenuHidden, onSubMenuOpened, onItemStateChanged, activeItemId, nestPath }: SubMenuProps) => React.ReactElement<SubMenuProps>;
21
+ export declare const SubMenu: React.ForwardRefExoticComponent<SubMenuProps & React.RefAttributes<HTMLUListElement>>;