@laerdal/life-react-components 2.2.1-dev.14 → 2.2.1-dev.15

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 (251) hide show
  1. package/dist/Accordion/AccordionItem.cjs +17 -8
  2. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  3. package/dist/Accordion/AccordionItem.d.ts +0 -2
  4. package/dist/Accordion/AccordionItem.js +18 -9
  5. package/dist/Accordion/AccordionItem.js.map +1 -1
  6. package/dist/Accordion/AccordionMenu.cjs +2 -6
  7. package/dist/Accordion/AccordionMenu.cjs.map +1 -1
  8. package/dist/Accordion/AccordionMenu.d.ts +0 -3
  9. package/dist/Accordion/AccordionMenu.js +2 -6
  10. package/dist/Accordion/AccordionMenu.js.map +1 -1
  11. package/dist/Accordion/styles.cjs +11 -7
  12. package/dist/Accordion/styles.cjs.map +1 -1
  13. package/dist/Accordion/styles.d.ts +4 -1
  14. package/dist/Accordion/styles.js +9 -6
  15. package/dist/Accordion/styles.js.map +1 -1
  16. package/dist/AuthPage/AuthPage.js +1 -1
  17. package/dist/Banners/Banner.cjs.map +1 -1
  18. package/dist/Banners/Banner.js.map +1 -1
  19. package/dist/Button/Button.cjs +1 -1
  20. package/dist/Button/Button.cjs.map +1 -1
  21. package/dist/Button/Button.js +2 -2
  22. package/dist/Button/Button.js.map +1 -1
  23. package/dist/Button/Iconbutton.cjs +61 -68
  24. package/dist/Button/Iconbutton.cjs.map +1 -1
  25. package/dist/Button/Iconbutton.d.ts +1 -3
  26. package/dist/Button/Iconbutton.js +61 -68
  27. package/dist/Button/Iconbutton.js.map +1 -1
  28. package/dist/Card/HorizontalCard/HorizontalCard.cjs +9 -12
  29. package/dist/Card/HorizontalCard/HorizontalCard.cjs.map +1 -1
  30. package/dist/Card/HorizontalCard/HorizontalCard.d.ts +0 -2
  31. package/dist/Card/HorizontalCard/HorizontalCard.js +8 -9
  32. package/dist/Card/HorizontalCard/HorizontalCard.js.map +1 -1
  33. package/dist/Card/HorizontalCard/HorizontalCardActions.cjs +0 -1
  34. package/dist/Card/HorizontalCard/HorizontalCardActions.cjs.map +1 -1
  35. package/dist/Card/HorizontalCard/HorizontalCardActions.js +0 -1
  36. package/dist/Card/HorizontalCard/HorizontalCardActions.js.map +1 -1
  37. package/dist/Card/HorizontalCard/HorizontalCardBody.cjs +9 -13
  38. package/dist/Card/HorizontalCard/HorizontalCardBody.cjs.map +1 -1
  39. package/dist/Card/HorizontalCard/HorizontalCardBody.d.ts +0 -4
  40. package/dist/Card/HorizontalCard/HorizontalCardBody.js +8 -8
  41. package/dist/Card/HorizontalCard/HorizontalCardBody.js.map +1 -1
  42. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.cjs +5 -7
  43. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.cjs.map +1 -1
  44. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.d.ts +0 -2
  45. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js +5 -5
  46. package/dist/Card/HorizontalCard/HorizontalCardThumbnail.js.map +1 -1
  47. package/dist/Card/HorizontalCard/index.cjs +12 -33
  48. package/dist/Card/HorizontalCard/index.cjs.map +1 -1
  49. package/dist/Card/HorizontalCard/index.d.ts +1 -3
  50. package/dist/Card/HorizontalCard/index.js +1 -3
  51. package/dist/Card/HorizontalCard/index.js.map +1 -1
  52. package/dist/Card/HorizontalCard/types.cjs.map +1 -1
  53. package/dist/Card/HorizontalCard/types.d.ts +2 -2
  54. package/dist/Card/HorizontalCard/types.js.map +1 -1
  55. package/dist/ChipsInput/ChipInputField.cjs +1 -1
  56. package/dist/ChipsInput/ChipInputField.cjs.map +1 -1
  57. package/dist/ChipsInput/ChipInputField.js +1 -1
  58. package/dist/ChipsInput/ChipInputField.js.map +1 -1
  59. package/dist/Dropdown/BasicDropdown.cjs +19 -6
  60. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  61. package/dist/Dropdown/BasicDropdown.d.ts +1 -0
  62. package/dist/Dropdown/BasicDropdown.js +20 -7
  63. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  64. package/dist/Dropdown/CommonStyling.cjs +7 -4
  65. package/dist/Dropdown/CommonStyling.cjs.map +1 -1
  66. package/dist/Dropdown/CommonStyling.d.ts +3 -1
  67. package/dist/Dropdown/CommonStyling.js +7 -4
  68. package/dist/Dropdown/CommonStyling.js.map +1 -1
  69. package/dist/Dropdown/DropdownButton.cjs +0 -1
  70. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  71. package/dist/Dropdown/DropdownButton.js +0 -1
  72. package/dist/Dropdown/DropdownButton.js.map +1 -1
  73. package/dist/Dropdown/DropdownButtonTypes.cjs.map +1 -1
  74. package/dist/Dropdown/DropdownButtonTypes.d.ts +0 -2
  75. package/dist/Dropdown/DropdownButtonTypes.js.map +1 -1
  76. package/dist/Dropdown/DropdownContent.cjs +1 -1
  77. package/dist/Dropdown/DropdownContent.js +1 -1
  78. package/dist/Dropdown/DropdownFilter.cjs +13 -2
  79. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  80. package/dist/Dropdown/DropdownFilter.js +13 -2
  81. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  82. package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs.map +1 -1
  83. package/dist/Footer/Components/FooterNewsletterAndSocialSection.js.map +1 -1
  84. package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs +3 -1
  85. package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs.map +1 -1
  86. package/dist/GlobalNavigationBar/GlobalNavigationBar.js +4 -2
  87. package/dist/GlobalNavigationBar/GlobalNavigationBar.js.map +1 -1
  88. package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
  89. package/dist/GlobalNavigationBar/Logo.js.map +1 -1
  90. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs +6 -1
  91. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs.map +1 -1
  92. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.d.ts +4 -0
  93. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js +5 -4
  94. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js.map +1 -1
  95. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +147 -56
  96. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
  97. package/dist/GlobalNavigationBar/desktop/MainMenu.d.ts +2 -2
  98. package/dist/GlobalNavigationBar/desktop/MainMenu.js +147 -56
  99. package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
  100. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs +176 -0
  101. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs.map +1 -0
  102. package/dist/GlobalNavigationBar/desktop/SubMenu.d.ts +18 -0
  103. package/dist/GlobalNavigationBar/desktop/SubMenu.js +166 -0
  104. package/dist/GlobalNavigationBar/desktop/SubMenu.js.map +1 -0
  105. package/dist/GlobalNavigationBar/mobile/MobileMenu.cjs.map +1 -1
  106. package/dist/GlobalNavigationBar/mobile/MobileMenu.js.map +1 -1
  107. package/dist/GlobalNavigationBar/types.cjs.map +1 -1
  108. package/dist/GlobalNavigationBar/types.d.ts +12 -2
  109. package/dist/GlobalNavigationBar/types.js.map +1 -1
  110. package/dist/GlobalNavigationBar/utils.cjs +17 -0
  111. package/dist/GlobalNavigationBar/utils.cjs.map +1 -0
  112. package/dist/GlobalNavigationBar/utils.d.ts +2 -0
  113. package/dist/GlobalNavigationBar/utils.js +10 -0
  114. package/dist/GlobalNavigationBar/utils.js.map +1 -0
  115. package/dist/Image/ImageWithFallbacks.js +1 -1
  116. package/dist/InputFields/DatepickerField.cjs +50 -31
  117. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  118. package/dist/InputFields/DatepickerField.js +51 -32
  119. package/dist/InputFields/DatepickerField.js.map +1 -1
  120. package/dist/InputFields/DatepickerFieldHeader.cjs.map +1 -1
  121. package/dist/InputFields/DatepickerFieldHeader.js +1 -1
  122. package/dist/InputFields/DatepickerFieldHeader.js.map +1 -1
  123. package/dist/InputFields/Label.cjs +12 -8
  124. package/dist/InputFields/Label.cjs.map +1 -1
  125. package/dist/InputFields/Label.js +12 -8
  126. package/dist/InputFields/Label.js.map +1 -1
  127. package/dist/InputFields/NumberField.cjs +29 -12
  128. package/dist/InputFields/NumberField.cjs.map +1 -1
  129. package/dist/InputFields/NumberField.js +32 -15
  130. package/dist/InputFields/NumberField.js.map +1 -1
  131. package/dist/InputFields/PasswordField.cjs +50 -44
  132. package/dist/InputFields/PasswordField.cjs.map +1 -1
  133. package/dist/InputFields/PasswordField.js +51 -45
  134. package/dist/InputFields/PasswordField.js.map +1 -1
  135. package/dist/InputFields/SearchBar.cjs +2 -1
  136. package/dist/InputFields/SearchBar.cjs.map +1 -1
  137. package/dist/InputFields/SearchBar.js +3 -2
  138. package/dist/InputFields/SearchBar.js.map +1 -1
  139. package/dist/InputFields/TextField.cjs +11 -1
  140. package/dist/InputFields/TextField.cjs.map +1 -1
  141. package/dist/InputFields/TextField.js +12 -2
  142. package/dist/InputFields/TextField.js.map +1 -1
  143. package/dist/InputFields/Textarea.cjs +3 -8
  144. package/dist/InputFields/Textarea.cjs.map +1 -1
  145. package/dist/InputFields/Textarea.d.ts +7 -3
  146. package/dist/InputFields/Textarea.js +6 -12
  147. package/dist/InputFields/Textarea.js.map +1 -1
  148. package/dist/InputFields/components/SearchField.cjs +1 -1
  149. package/dist/InputFields/components/SearchField.cjs.map +1 -1
  150. package/dist/InputFields/components/SearchField.js +1 -1
  151. package/dist/InputFields/components/SearchField.js.map +1 -1
  152. package/dist/InputFields/styling.cjs +11 -11
  153. package/dist/InputFields/styling.cjs.map +1 -1
  154. package/dist/InputFields/styling.d.ts +2 -3
  155. package/dist/InputFields/styling.js +11 -10
  156. package/dist/InputFields/styling.js.map +1 -1
  157. package/dist/InputFields/types.cjs.map +1 -1
  158. package/dist/InputFields/types.d.ts +8 -4
  159. package/dist/InputFields/types.js.map +1 -1
  160. package/dist/LinearProgress/LinearProgress.js +1 -1
  161. package/dist/Modals/ModalContent.cjs +2 -9
  162. package/dist/Modals/ModalContent.cjs.map +1 -1
  163. package/dist/Modals/ModalContent.d.ts +0 -1
  164. package/dist/Modals/ModalContent.js +2 -9
  165. package/dist/Modals/ModalContent.js.map +1 -1
  166. package/dist/Modals/ModalTypes.cjs.map +1 -1
  167. package/dist/Modals/ModalTypes.d.ts +1 -1
  168. package/dist/Modals/ModalTypes.js.map +1 -1
  169. package/dist/NavItem/NavItem.cjs +2 -1
  170. package/dist/NavItem/NavItem.cjs.map +1 -1
  171. package/dist/NavItem/NavItem.d.ts +1 -0
  172. package/dist/NavItem/NavItem.js +1 -1
  173. package/dist/NavItem/NavItem.js.map +1 -1
  174. package/dist/NavItem/NestedNavItem.cjs +38 -0
  175. package/dist/NavItem/NestedNavItem.cjs.map +1 -0
  176. package/dist/NavItem/NestedNavItem.d.ts +13 -0
  177. package/dist/NavItem/NestedNavItem.js +28 -0
  178. package/dist/NavItem/NestedNavItem.js.map +1 -0
  179. package/dist/Paginator/Paginator.cjs.map +1 -1
  180. package/dist/Paginator/Paginator.js.map +1 -1
  181. package/dist/Table/Table.cjs +1 -2
  182. package/dist/Table/Table.cjs.map +1 -1
  183. package/dist/Table/Table.js +1 -2
  184. package/dist/Table/Table.js.map +1 -1
  185. package/dist/Table/TableFooter.cjs.map +1 -1
  186. package/dist/Table/TableFooter.js +1 -1
  187. package/dist/Table/TableFooter.js.map +1 -1
  188. package/dist/Table/TableStyles.cjs +4 -4
  189. package/dist/Table/TableStyles.cjs.map +1 -1
  190. package/dist/Table/TableStyles.js +4 -4
  191. package/dist/Table/TableStyles.js.map +1 -1
  192. package/dist/Table/TableTypes.cjs.map +1 -1
  193. package/dist/Table/TableTypes.d.ts +1 -2
  194. package/dist/Table/TableTypes.js.map +1 -1
  195. package/dist/Tabs/HorizontalTabs.cjs +12 -10
  196. package/dist/Tabs/HorizontalTabs.cjs.map +1 -1
  197. package/dist/Tabs/HorizontalTabs.d.ts +1 -2
  198. package/dist/Tabs/HorizontalTabs.js +14 -13
  199. package/dist/Tabs/HorizontalTabs.js.map +1 -1
  200. package/dist/Tabs/TabLink.cjs +39 -14
  201. package/dist/Tabs/TabLink.cjs.map +1 -1
  202. package/dist/Tabs/TabLink.d.ts +6 -1
  203. package/dist/Tabs/TabLink.js +39 -14
  204. package/dist/Tabs/TabLink.js.map +1 -1
  205. package/dist/Tabs/VerticalTabs.cjs +2 -0
  206. package/dist/Tabs/VerticalTabs.cjs.map +1 -1
  207. package/dist/Tabs/VerticalTabs.d.ts +1 -0
  208. package/dist/Tabs/VerticalTabs.js +2 -0
  209. package/dist/Tabs/VerticalTabs.js.map +1 -1
  210. package/dist/Tile/TileCommonItems.cjs +2 -4
  211. package/dist/Tile/TileCommonItems.cjs.map +1 -1
  212. package/dist/Tile/TileCommonItems.js +2 -4
  213. package/dist/Tile/TileCommonItems.js.map +1 -1
  214. package/dist/Tile/TileHeader.cjs +10 -18
  215. package/dist/Tile/TileHeader.cjs.map +1 -1
  216. package/dist/Tile/TileHeader.js +10 -18
  217. package/dist/Tile/TileHeader.js.map +1 -1
  218. package/dist/Tile/TileTypes.cjs.map +1 -1
  219. package/dist/Tile/TileTypes.d.ts +2 -5
  220. package/dist/Tile/TileTypes.js.map +1 -1
  221. package/dist/Toggles/ToggleSwitch.cjs +1 -11
  222. package/dist/Toggles/ToggleSwitch.cjs.map +1 -1
  223. package/dist/Toggles/ToggleSwitch.js +2 -12
  224. package/dist/Toggles/ToggleSwitch.js.map +1 -1
  225. package/dist/Toggles/TogglerStyles.cjs +1 -1
  226. package/dist/Toggles/TogglerStyles.cjs.map +1 -1
  227. package/dist/Toggles/TogglerStyles.js +1 -1
  228. package/dist/Toggles/TogglerStyles.js.map +1 -1
  229. package/dist/Tooltips/TooltipOverflow.cjs +117 -0
  230. package/dist/Tooltips/TooltipOverflow.cjs.map +1 -0
  231. package/dist/Tooltips/TooltipOverflow.d.ts +10 -0
  232. package/dist/Tooltips/TooltipOverflow.js +107 -0
  233. package/dist/Tooltips/TooltipOverflow.js.map +1 -0
  234. package/dist/Tooltips/TooltipStyles.cjs +5 -2
  235. package/dist/Tooltips/TooltipStyles.cjs.map +1 -1
  236. package/dist/Tooltips/TooltipStyles.d.ts +1 -0
  237. package/dist/Tooltips/TooltipStyles.js +5 -2
  238. package/dist/Tooltips/TooltipStyles.js.map +1 -1
  239. package/dist/Tooltips/TooltipWrapper.cjs +3 -4
  240. package/dist/Tooltips/TooltipWrapper.cjs.map +1 -1
  241. package/dist/Tooltips/TooltipWrapper.js +1 -2
  242. package/dist/Tooltips/TooltipWrapper.js.map +1 -1
  243. package/dist/assets/index.cjs.map +1 -1
  244. package/dist/assets/index.js.map +1 -1
  245. package/dist/common/ActionWithin.cjs +1 -1
  246. package/dist/common/ActionWithin.js +1 -1
  247. package/dist/common/FocusVisible.cjs +1 -1
  248. package/dist/common/FocusVisible.js +1 -1
  249. package/dist/icons/systemicons/SystemIcons.cjs.map +1 -1
  250. package/dist/icons/systemicons/SystemIcons.js.map +1 -1
  251. package/package.json +2 -1
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -17,36 +18,50 @@ var _styledComponents = _interopRequireDefault(require("styled-components"));
17
18
  var _NavItem = require("../../NavItem");
18
19
  var _SystemIcons = require("../../icons/systemicons/SystemIcons");
19
20
  var _styles = require("../../styles");
20
- var _ExtendedMainMenu = _interopRequireDefault(require("./ExtendedMainMenu"));
21
+ var _ExtendedMainMenu = require("./ExtendedMainMenu");
22
+ var _SubMenu = require("./SubMenu");
21
23
  var _Button = require("../../Button");
22
24
  var _common = require("../../common");
25
+ var _icons = require("../../icons");
26
+ var _NavItem2 = require("../../NavItem/NavItem");
27
+ var _utils = require("../utils");
23
28
  var _jsxRuntime = require("react/jsx-runtime");
24
29
  var _excluded = ["icon", "to", "exact", "disabled", "external", "action", "label", "note", "pinned"];
25
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
26
31
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
27
32
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
28
33
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
34
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
- var NavContainer = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n\n ", " {\n display: flex;\n }\n\n a {\n text-decoration: none;\n }\n"])), _styles.BREAKPOINTS.LARGE);
35
+ var NavContainer = _styledComponents.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n\n ", " {\n display: flex;\n }\n\n ", " {\n cursor: pointer;\n }\n\n a {\n text-decoration: none;\n }\n"])), _styles.BREAKPOINTS.LARGE, _NavItem2.NavItemDiv);
31
36
  var NavButton = _styledComponents.default.button(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n background: ", ";\n border: 0;\n"])), _styles.COLORS.white);
32
37
  var ExtendedMenuWrapper = _styledComponents.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n margin-left: ", ";\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: ", ";\n }\n"])), function (props) {
33
38
  return props.floatRight ? 'auto' : 'unset';
34
39
  }, _styles.COLORS.white);
35
40
  var ExtendedSection = _styledComponents.default.div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n"])));
41
+ var SubMenuWrapper = _styledComponents.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n ", " {\n top: ", ";\n left: ", ";\n }\n\n button {\n padding-left: 0px;\n }\n"])), _ExtendedMainMenu.Menu, function (props) {
42
+ return props.topLevel ? '100%' : '0px';
43
+ }, function (props) {
44
+ return props.topLevel ? '0px' : 'calc(100% - 12px)';
45
+ });
46
+ var ExtendedMenuOption = 'extendedOption';
36
47
  var MainMenu = function MainMenu(_ref) {
37
48
  var items = _ref.items,
38
49
  rightSideRef = _ref.rightSideRef;
39
- var _React$useState = React.useState(false),
40
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
41
- showExtendedMenu = _React$useState2[0],
42
- setShowExtendedMenu = _React$useState2[1];
43
- var extendedMenuRef = React.useRef(null);
44
50
  var menuButtonRef = React.useRef(null);
51
+ //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
52
+ var dropdownMenusOpenedArray = React.useRef([]);
45
53
  var mainMenuRef = React.useRef(null);
46
- var _React$useState3 = React.useState(1),
54
+ var _React$useState = React.useState(1),
55
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
56
+ numberOfItemsAllowed = _React$useState2[0],
57
+ setNumberOfItemsAllowed = _React$useState2[1];
58
+ var _React$useState3 = React.useState({}),
47
59
  _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
48
- numberOfItemsAllowed = _React$useState4[0],
49
- setNumberOfItemsAllowed = _React$useState4[1];
60
+ forceUpdate = _React$useState4[1];
61
+ var _React$useState5 = React.useState(''),
62
+ _React$useState6 = (0, _slicedToArray2.default)(_React$useState5, 2),
63
+ activeItem = _React$useState6[0],
64
+ setActiveItemId = _React$useState6[1];
50
65
  var widthOfItem = 120;
51
66
  var recalculateNumberOfItemsAllowed = function recalculateNumberOfItemsAllowed() {
52
67
  if (rightSideRef !== null && rightSideRef !== void 0 && rightSideRef.current && mainMenuRef !== null && mainMenuRef !== void 0 && mainMenuRef.current) {
@@ -57,80 +72,156 @@ var MainMenu = function MainMenu(_ref) {
57
72
  }
58
73
  }
59
74
  };
60
- var handleClickExtendedMenuAction = function handleClickExtendedMenuAction() {
61
- setShowExtendedMenu(false);
75
+ var _onMouseLeave = function onMouseLeave(event, id) {
76
+ dropdownMenusOpenedArray.current = (0, _toConsumableArray2.default)(dropdownMenusOpenedArray.current.filter(function (x) {
77
+ return x != id;
78
+ }));
79
+ //just trigger rerendering
80
+ forceUpdate({});
62
81
  };
63
- var handleClickOutside = function handleClickOutside(e) {
64
- var _extendedMenuRef$curr, _menuButtonRef$curren;
65
- if (!(extendedMenuRef !== null && extendedMenuRef !== void 0 && (_extendedMenuRef$curr = extendedMenuRef.current) !== null && _extendedMenuRef$curr !== void 0 && _extendedMenuRef$curr.contains(e.target)) && !(menuButtonRef !== null && menuButtonRef !== void 0 && (_menuButtonRef$curren = menuButtonRef.current) !== null && _menuButtonRef$curren !== void 0 && _menuButtonRef$curren.contains(e.target))) {
66
- setShowExtendedMenu(false);
82
+ var _onMouseEnter = function onMouseEnter(event, id) {
83
+ var existingRefForId = dropdownMenusOpenedArray.current.find(function (x) {
84
+ return x == id;
85
+ });
86
+ if (existingRefForId == null) {
87
+ dropdownMenusOpenedArray.current = [].concat((0, _toConsumableArray2.default)(dropdownMenusOpenedArray.current), [id]);
88
+ //just trigger rerendering
89
+ forceUpdate({});
67
90
  }
68
91
  };
69
92
  React.useEffect(function () {
70
93
  recalculateNumberOfItemsAllowed();
71
94
  // Bind the event listener
72
- document.addEventListener('click', handleClickOutside);
73
95
  window.addEventListener('resize', recalculateNumberOfItemsAllowed);
74
96
  return function () {
75
97
  // Unbind the event listener on clean up
76
- document.removeEventListener('click', handleClickOutside);
77
98
  window.removeEventListener('resize', recalculateNumberOfItemsAllowed);
78
99
  };
79
100
  }, []);
80
101
  React.useEffect(function () {
81
102
  recalculateNumberOfItemsAllowed();
82
103
  }, [items.length]);
104
+ var onFocus = function onFocus(event) {
105
+ //no open dropdowns if top level was entered
106
+ dropdownMenusOpenedArray.current = [];
107
+ forceUpdate({});
108
+ };
83
109
  var renderItem = function renderItem(item, index) {
84
110
  if (index > numberOfItemsAllowed - 2) return null;
85
- var icon = item.icon,
86
- to = item.to,
87
- exact = item.exact,
88
- disabled = item.disabled,
89
- external = item.external,
90
- action = item.action,
91
- label = item.label,
92
- note = item.note,
93
- pinned = item.pinned,
94
- rest = (0, _objectWithoutProperties2.default)(item, _excluded);
95
- return item !== null && item !== void 0 && item.disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_NavItem.NavItem, {
96
- as: NavButton,
97
- className: "disabled",
98
- onMouseDown: _common.defaultOnMouseDownHandler,
99
- children: item === null || item === void 0 ? void 0 : item.label
100
- }, item.label) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_NavItem.NavItem, _objectSpread(_objectSpread({
101
- as: _reactRouterDom.NavLink,
102
- to: item.to || '',
103
- onMouseDown: _common.defaultOnMouseDownHandler,
104
- onClick: function onClick(e) {
105
- return item.action && item.action(e);
106
- }
107
- }, rest), {}, {
108
- children: item === null || item === void 0 ? void 0 : item.label
109
- }), item.label);
111
+ if (item.type != 'desktopgroup') {
112
+ var _ref2 = item,
113
+ icon = _ref2.icon,
114
+ to = _ref2.to,
115
+ exact = _ref2.exact,
116
+ disabled = _ref2.disabled,
117
+ external = _ref2.external,
118
+ action = _ref2.action,
119
+ label = _ref2.label,
120
+ note = _ref2.note,
121
+ pinned = _ref2.pinned,
122
+ rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
123
+ return item !== null && item !== void 0 && item.disabled ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_NavItem.NavItem, {
124
+ as: NavButton,
125
+ className: "disabled",
126
+ onMouseDown: _common.defaultOnMouseDownHandler,
127
+ children: item === null || item === void 0 ? void 0 : item.label
128
+ }, item.label) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_NavItem.NavItem, _objectSpread(_objectSpread({
129
+ as: _reactRouterDom.NavLink,
130
+ onFocus: onFocus,
131
+ to: to || '',
132
+ onMouseDown: _common.defaultOnMouseDownHandler,
133
+ onClick: function onClick(e) {
134
+ return action && action(e);
135
+ }
136
+ }, rest), {}, {
137
+ children: item === null || item === void 0 ? void 0 : item.label
138
+ }), label);
139
+ } else {
140
+ var existingRef = dropdownMenusOpenedArray.current.find(function (x) {
141
+ return x == item.id;
142
+ });
143
+ var onClick = function onClick() {
144
+ if (existingRef == null) {
145
+ dropdownMenusOpenedArray.current = [].concat((0, _toConsumableArray2.default)(dropdownMenusOpenedArray.current), [item.id]);
146
+ //just trigger rerendering
147
+ forceUpdate({});
148
+ }
149
+ };
150
+ var onKeyDown = function onKeyDown(event) {
151
+ if (event.key == 'Enter' || event.code == 'Space') {
152
+ dropdownMenusOpenedArray.current = [].concat((0, _toConsumableArray2.default)(dropdownMenusOpenedArray.current), [item.id]);
153
+ //just trigger rerendering
154
+ forceUpdate({});
155
+ }
156
+ };
157
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
158
+ style: {
159
+ position: 'relative'
160
+ },
161
+ onMouseEnter: function onMouseEnter(event) {
162
+ var _item$id;
163
+ return _onMouseEnter(event, (_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : '');
164
+ },
165
+ onMouseLeave: function onMouseLeave(event) {
166
+ var _item$id2;
167
+ return _onMouseLeave(event, (_item$id2 = item.id) !== null && _item$id2 !== void 0 ? _item$id2 : '');
168
+ },
169
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_NavItem.NavItem, {
170
+ onFocus: onFocus,
171
+ onKeyDown: onKeyDown,
172
+ tabIndex: 0,
173
+ className: existingRef != null || (0, _utils.checkIfContainsItem)(item, activeItem) ? 'active' : '',
174
+ to: null,
175
+ onClick: onClick,
176
+ children: [item === null || item === void 0 ? void 0 : item.label, " ", /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.SystemIcons.ArrowDropDown, {
177
+ size: "24px"
178
+ })]
179
+ }, item.label), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SubMenu.SubMenu, {
180
+ activeItemId: activeItem,
181
+ nestPath: [item.id],
182
+ onItemStateChanged: function onItemStateChanged(item, state) {
183
+ if (state) {
184
+ setActiveItemId(item);
185
+ } else if (item == activeItem) setActiveItemId('');
186
+ },
187
+ item: item,
188
+ dropdownMenusOpenedArray: dropdownMenusOpenedArray,
189
+ index: index + 1,
190
+ topLevel: true
191
+ })]
192
+ });
193
+ }
110
194
  };
111
195
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(NavContainer, {
112
196
  className: "GlobalNavigationMainMenu",
113
197
  ref: mainMenuRef,
114
- open: showExtendedMenu,
115
198
  children: [items === null || items === void 0 ? void 0 : items.map(renderItem), items.length + 1 > numberOfItemsAllowed && /*#__PURE__*/(0, _jsxRuntime.jsxs)(ExtendedSection, {
199
+ onMouseEnter: function onMouseEnter(event) {
200
+ return _onMouseEnter(event, ExtendedMenuOption);
201
+ },
202
+ onMouseLeave: function onMouseLeave(event) {
203
+ return _onMouseLeave(event, ExtendedMenuOption);
204
+ },
116
205
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.IconButton, {
117
206
  ref: menuButtonRef,
118
207
  variant: 'secondary',
119
208
  shape: 'circular',
120
- action: function action() {
121
- setShowExtendedMenu(!showExtendedMenu);
122
- },
209
+ action: function action() {},
123
210
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SystemIcons.MoreHorizontal, {
124
211
  size: "24px"
125
212
  })
126
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ExtendedMenuWrapper, {
127
- ref: extendedMenuRef,
128
- className: showExtendedMenu ? 'open' : '',
129
- floatRight: false,
130
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ExtendedMainMenu.default, {
131
- clickMenuAction: handleClickExtendedMenuAction,
132
- navigationOptions: items.slice(numberOfItemsAllowed - 1)
133
- })
213
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_SubMenu.SubMenu, {
214
+ activeItemId: activeItem,
215
+ onItemStateChanged: function onItemStateChanged(item, state) {
216
+ if (state) setActiveItemId(item);else if (item == activeItem) setActiveItemId('');
217
+ },
218
+ item: {
219
+ items: items.slice(numberOfItemsAllowed - 1),
220
+ id: ExtendedMenuOption
221
+ },
222
+ topLevel: true,
223
+ index: 0,
224
+ dropdownMenusOpenedArray: dropdownMenusOpenedArray
134
225
  })]
135
226
  })]
136
227
  });
@@ -1 +1 @@
1
- {"version":3,"file":"MainMenu.cjs","names":["NavContainer","styled","div","BREAKPOINTS","LARGE","NavButton","button","COLORS","white","ExtendedMenuWrapper","props","floatRight","ExtendedSection","MainMenu","items","rightSideRef","React","useState","showExtendedMenu","setShowExtendedMenu","extendedMenuRef","useRef","menuButtonRef","mainMenuRef","numberOfItemsAllowed","setNumberOfItemsAllowed","widthOfItem","recalculateNumberOfItemsAllowed","current","number","Math","floor","offsetLeft","handleClickExtendedMenuAction","handleClickOutside","e","contains","target","useEffect","document","addEventListener","window","removeEventListener","length","renderItem","item","index","icon","to","exact","disabled","external","action","label","note","pinned","rest","defaultOnMouseDownHandler","NavLink","map","slice"],"sources":["../../../src/GlobalNavigationBar/desktop/MainMenu.tsx"],"sourcesContent":["import * as React from 'react';\nimport {NavLink} from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport {NavItem} from '../../NavItem';\nimport {MoreHorizontal} from '../../icons/systemicons/SystemIcons';\nimport {COLORS, BREAKPOINTS} from '../../styles';\nimport ExtendedMainMenu from './ExtendedMainMenu';\nimport {IconButton} from '../../Button';\nimport {defaultOnMouseDownHandler} from '../../common';\nimport {MenuNavigationItemTypeItem} from '../types';\n\nconst NavContainer = styled.div<{ open: boolean }>`\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n\n ${BREAKPOINTS.LARGE} {\n display: flex;\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\ntype Props = {\n items: MenuNavigationItemTypeItem[];\n rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;\n};\n\nconst MainMenu = ({items, rightSideRef}: Props): React.ReactElement<Props> => {\n const [showExtendedMenu, setShowExtendedMenu] = React.useState(false);\n const extendedMenuRef = React.useRef<any>(null);\n const menuButtonRef = React.useRef<HTMLButtonElement>(null);\n const mainMenuRef: React.RefObject<HTMLDivElement> | null | undefined = React.useRef(null);\n const [numberOfItemsAllowed, setNumberOfItemsAllowed] = React.useState<number>(1);\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 handleClickExtendedMenuAction = () => {\n setShowExtendedMenu(false);\n };\n\n const handleClickOutside = (e: any) => {\n if (!extendedMenuRef?.current?.contains(e.target) && !menuButtonRef?.current?.contains(e.target)) {\n setShowExtendedMenu(false);\n }\n };\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n // Bind the event listener\n document.addEventListener('click', handleClickOutside);\n window.addEventListener('resize', recalculateNumberOfItemsAllowed);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener('click', handleClickOutside);\n window.removeEventListener('resize', recalculateNumberOfItemsAllowed);\n };\n }, []);\n\n React.useEffect(() => {\n recalculateNumberOfItemsAllowed();\n }, [items.length])\n\n const renderItem = (item: MenuNavigationItemTypeItem, index: number) => {\n\n if (index > numberOfItemsAllowed - 2) return null\n\n const {icon, to, exact, disabled, external, action, label, note, pinned, ...rest} = item;\n\n return item?.disabled\n ? <NavItem as={NavButton}\n className=\"disabled\"\n key={item.label}\n onMouseDown={defaultOnMouseDownHandler}>\n {item?.label}\n </NavItem>\n : <NavItem as={NavLink}\n to={item.to || ''}\n key={item.label}\n onMouseDown={defaultOnMouseDownHandler}\n onClick={(e: React.MouseEvent) => item.action && item.action(e)}\n {...rest}>\n {item?.label}\n </NavItem>\n }\n\n return (\n <NavContainer className=\"GlobalNavigationMainMenu\" ref={mainMenuRef} open={showExtendedMenu}>\n {items?.map(renderItem)}\n {items.length + 1 > numberOfItemsAllowed && (\n <ExtendedSection>\n <IconButton\n ref={menuButtonRef}\n variant={'secondary'}\n shape={'circular'}\n action={() => {\n setShowExtendedMenu(!showExtendedMenu)\n }}>\n <MoreHorizontal size=\"24px\"/>\n </IconButton>\n <ExtendedMenuWrapper ref={extendedMenuRef} className={showExtendedMenu ? 'open' : ''} floatRight={false}>\n <ExtendedMainMenu clickMenuAction={handleClickExtendedMenuAction}\n navigationOptions={items.slice(numberOfItemsAllowed - 1)}/>\n </ExtendedMenuWrapper>\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","LARGE","NavItemDiv","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';\n\nimport { NavItem } from '../../NavItem';\nimport { MoreHorizontal } from '../../icons/systemicons/SystemIcons';\nimport { COLORS, BREAKPOINTS } from '../../styles';\nimport ExtendedMainMenu, { Menu, MenuSection, MenuSectionList } from './ExtendedMainMenu';\nimport { SubMenu } from './SubMenu';\nimport { IconButton } from '../../Button';\nimport { defaultOnMouseDownHandler } from '../../common';\nimport { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';\nimport { DropdownContent } from '../../Dropdown';\nimport { VerticalTabEntry, VerticalTabs } from '../../Tabs';\nimport { Size } from '../../types';\nimport { SystemIcons } from '../../icons';\nimport Tabs from '../../Tabs/Tabs';\nimport TabLink from '../../Tabs/TabLink';\nimport { MenuItem } from '../../MenuItem';\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 ${BREAKPOINTS.LARGE} {\n display: flex;\n }\n\n ${NavItemDiv} {\n cursor: pointer;\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 <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,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { MenuNavigationItemTypeItem } from '../types';
2
+ import { MenuNavigationItemTypeDesktopGroup, MenuNavigationItemTypeItem } from '../types';
3
3
  type Props = {
4
- items: MenuNavigationItemTypeItem[];
4
+ items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];
5
5
  rightSideRef?: React.RefObject<HTMLDivElement> | null | undefined;
6
6
  };
7
7
  declare const MainMenu: ({ items, rightSideRef }: Props) => React.ReactElement<Props>;
@@ -1,10 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
4
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
5
  import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
5
6
  import _pt from "prop-types";
6
7
  var _excluded = ["icon", "to", "exact", "disabled", "external", "action", "label", "note", "pinned"];
7
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
8
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
8
9
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
10
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
10
11
  import * as React from 'react';
@@ -13,31 +14,45 @@ import styled from 'styled-components';
13
14
  import { NavItem } from '../../NavItem';
14
15
  import { MoreHorizontal } from '../../icons/systemicons/SystemIcons';
15
16
  import { COLORS, BREAKPOINTS } from '../../styles';
16
- import ExtendedMainMenu from './ExtendedMainMenu';
17
+ import { Menu } from './ExtendedMainMenu';
18
+ import { SubMenu } from './SubMenu';
17
19
  import { IconButton } from '../../Button';
18
20
  import { defaultOnMouseDownHandler } from '../../common';
21
+ import { SystemIcons } from '../../icons';
22
+ import { NavItemDiv } from '../../NavItem/NavItem';
23
+ import { checkIfContainsItem } from '../utils';
19
24
  import { jsx as _jsx } from "react/jsx-runtime";
20
25
  import { jsxs as _jsxs } from "react/jsx-runtime";
21
- var NavContainer = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n\n ", " {\n display: flex;\n }\n\n a {\n text-decoration: none;\n }\n"])), BREAKPOINTS.LARGE);
26
+ var NavContainer = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: none;\n flex-grow: 1;\n justify-content: flex-start;\n align-items: center;\n\n ", " {\n display: flex;\n }\n\n ", " {\n cursor: pointer;\n }\n\n a {\n text-decoration: none;\n }\n"])), BREAKPOINTS.LARGE, NavItemDiv);
22
27
  var NavButton = styled.button(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n background: ", ";\n border: 0;\n"])), COLORS.white);
23
28
  var ExtendedMenuWrapper = styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n display: flex;\n margin-left: ", ";\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: ", ";\n }\n"])), function (props) {
24
29
  return props.floatRight ? 'auto' : 'unset';
25
30
  }, COLORS.white);
26
31
  var ExtendedSection = styled.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n position: relative;\n"])));
32
+ var SubMenuWrapper = styled.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n ", " {\n top: ", ";\n left: ", ";\n }\n\n button {\n padding-left: 0px;\n }\n"])), Menu, function (props) {
33
+ return props.topLevel ? '100%' : '0px';
34
+ }, function (props) {
35
+ return props.topLevel ? '0px' : 'calc(100% - 12px)';
36
+ });
37
+ var ExtendedMenuOption = 'extendedOption';
27
38
  var MainMenu = function MainMenu(_ref) {
28
39
  var items = _ref.items,
29
40
  rightSideRef = _ref.rightSideRef;
30
- var _React$useState = React.useState(false),
31
- _React$useState2 = _slicedToArray(_React$useState, 2),
32
- showExtendedMenu = _React$useState2[0],
33
- setShowExtendedMenu = _React$useState2[1];
34
- var extendedMenuRef = React.useRef(null);
35
41
  var menuButtonRef = React.useRef(null);
42
+ //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
43
+ var dropdownMenusOpenedArray = React.useRef([]);
36
44
  var mainMenuRef = React.useRef(null);
37
- var _React$useState3 = React.useState(1),
45
+ var _React$useState = React.useState(1),
46
+ _React$useState2 = _slicedToArray(_React$useState, 2),
47
+ numberOfItemsAllowed = _React$useState2[0],
48
+ setNumberOfItemsAllowed = _React$useState2[1];
49
+ var _React$useState3 = React.useState({}),
38
50
  _React$useState4 = _slicedToArray(_React$useState3, 2),
39
- numberOfItemsAllowed = _React$useState4[0],
40
- setNumberOfItemsAllowed = _React$useState4[1];
51
+ forceUpdate = _React$useState4[1];
52
+ var _React$useState5 = React.useState(''),
53
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
54
+ activeItem = _React$useState6[0],
55
+ setActiveItemId = _React$useState6[1];
41
56
  var widthOfItem = 120;
42
57
  var recalculateNumberOfItemsAllowed = function recalculateNumberOfItemsAllowed() {
43
58
  if (rightSideRef !== null && rightSideRef !== void 0 && rightSideRef.current && mainMenuRef !== null && mainMenuRef !== void 0 && mainMenuRef.current) {
@@ -48,80 +63,156 @@ var MainMenu = function MainMenu(_ref) {
48
63
  }
49
64
  }
50
65
  };
51
- var handleClickExtendedMenuAction = function handleClickExtendedMenuAction() {
52
- setShowExtendedMenu(false);
66
+ var _onMouseLeave = function onMouseLeave(event, id) {
67
+ dropdownMenusOpenedArray.current = _toConsumableArray(dropdownMenusOpenedArray.current.filter(function (x) {
68
+ return x != id;
69
+ }));
70
+ //just trigger rerendering
71
+ forceUpdate({});
53
72
  };
54
- var handleClickOutside = function handleClickOutside(e) {
55
- var _extendedMenuRef$curr, _menuButtonRef$curren;
56
- if (!(extendedMenuRef !== null && extendedMenuRef !== void 0 && (_extendedMenuRef$curr = extendedMenuRef.current) !== null && _extendedMenuRef$curr !== void 0 && _extendedMenuRef$curr.contains(e.target)) && !(menuButtonRef !== null && menuButtonRef !== void 0 && (_menuButtonRef$curren = menuButtonRef.current) !== null && _menuButtonRef$curren !== void 0 && _menuButtonRef$curren.contains(e.target))) {
57
- setShowExtendedMenu(false);
73
+ var _onMouseEnter = function onMouseEnter(event, id) {
74
+ var existingRefForId = dropdownMenusOpenedArray.current.find(function (x) {
75
+ return x == id;
76
+ });
77
+ if (existingRefForId == null) {
78
+ dropdownMenusOpenedArray.current = [].concat(_toConsumableArray(dropdownMenusOpenedArray.current), [id]);
79
+ //just trigger rerendering
80
+ forceUpdate({});
58
81
  }
59
82
  };
60
83
  React.useEffect(function () {
61
84
  recalculateNumberOfItemsAllowed();
62
85
  // Bind the event listener
63
- document.addEventListener('click', handleClickOutside);
64
86
  window.addEventListener('resize', recalculateNumberOfItemsAllowed);
65
87
  return function () {
66
88
  // Unbind the event listener on clean up
67
- document.removeEventListener('click', handleClickOutside);
68
89
  window.removeEventListener('resize', recalculateNumberOfItemsAllowed);
69
90
  };
70
91
  }, []);
71
92
  React.useEffect(function () {
72
93
  recalculateNumberOfItemsAllowed();
73
94
  }, [items.length]);
95
+ var onFocus = function onFocus(event) {
96
+ //no open dropdowns if top level was entered
97
+ dropdownMenusOpenedArray.current = [];
98
+ forceUpdate({});
99
+ };
74
100
  var renderItem = function renderItem(item, index) {
75
101
  if (index > numberOfItemsAllowed - 2) return null;
76
- var icon = item.icon,
77
- to = item.to,
78
- exact = item.exact,
79
- disabled = item.disabled,
80
- external = item.external,
81
- action = item.action,
82
- label = item.label,
83
- note = item.note,
84
- pinned = item.pinned,
85
- rest = _objectWithoutProperties(item, _excluded);
86
- return item !== null && item !== void 0 && item.disabled ? /*#__PURE__*/_jsx(NavItem, {
87
- as: NavButton,
88
- className: "disabled",
89
- onMouseDown: defaultOnMouseDownHandler,
90
- children: item === null || item === void 0 ? void 0 : item.label
91
- }, item.label) : /*#__PURE__*/_jsx(NavItem, _objectSpread(_objectSpread({
92
- as: NavLink,
93
- to: item.to || '',
94
- onMouseDown: defaultOnMouseDownHandler,
95
- onClick: function onClick(e) {
96
- return item.action && item.action(e);
97
- }
98
- }, rest), {}, {
99
- children: item === null || item === void 0 ? void 0 : item.label
100
- }), item.label);
102
+ if (item.type != 'desktopgroup') {
103
+ var _ref2 = item,
104
+ icon = _ref2.icon,
105
+ to = _ref2.to,
106
+ exact = _ref2.exact,
107
+ disabled = _ref2.disabled,
108
+ external = _ref2.external,
109
+ action = _ref2.action,
110
+ label = _ref2.label,
111
+ note = _ref2.note,
112
+ pinned = _ref2.pinned,
113
+ rest = _objectWithoutProperties(_ref2, _excluded);
114
+ return item !== null && item !== void 0 && item.disabled ? /*#__PURE__*/_jsx(NavItem, {
115
+ as: NavButton,
116
+ className: "disabled",
117
+ onMouseDown: defaultOnMouseDownHandler,
118
+ children: item === null || item === void 0 ? void 0 : item.label
119
+ }, item.label) : /*#__PURE__*/_jsx(NavItem, _objectSpread(_objectSpread({
120
+ as: NavLink,
121
+ onFocus: onFocus,
122
+ to: to || '',
123
+ onMouseDown: defaultOnMouseDownHandler,
124
+ onClick: function onClick(e) {
125
+ return action && action(e);
126
+ }
127
+ }, rest), {}, {
128
+ children: item === null || item === void 0 ? void 0 : item.label
129
+ }), label);
130
+ } else {
131
+ var existingRef = dropdownMenusOpenedArray.current.find(function (x) {
132
+ return x == item.id;
133
+ });
134
+ var onClick = function onClick() {
135
+ if (existingRef == null) {
136
+ dropdownMenusOpenedArray.current = [].concat(_toConsumableArray(dropdownMenusOpenedArray.current), [item.id]);
137
+ //just trigger rerendering
138
+ forceUpdate({});
139
+ }
140
+ };
141
+ var onKeyDown = function onKeyDown(event) {
142
+ if (event.key == 'Enter' || event.code == 'Space') {
143
+ dropdownMenusOpenedArray.current = [].concat(_toConsumableArray(dropdownMenusOpenedArray.current), [item.id]);
144
+ //just trigger rerendering
145
+ forceUpdate({});
146
+ }
147
+ };
148
+ return /*#__PURE__*/_jsxs("div", {
149
+ style: {
150
+ position: 'relative'
151
+ },
152
+ onMouseEnter: function onMouseEnter(event) {
153
+ var _item$id;
154
+ return _onMouseEnter(event, (_item$id = item.id) !== null && _item$id !== void 0 ? _item$id : '');
155
+ },
156
+ onMouseLeave: function onMouseLeave(event) {
157
+ var _item$id2;
158
+ return _onMouseLeave(event, (_item$id2 = item.id) !== null && _item$id2 !== void 0 ? _item$id2 : '');
159
+ },
160
+ children: [/*#__PURE__*/_jsxs(NavItem, {
161
+ onFocus: onFocus,
162
+ onKeyDown: onKeyDown,
163
+ tabIndex: 0,
164
+ className: existingRef != null || checkIfContainsItem(item, activeItem) ? 'active' : '',
165
+ to: null,
166
+ onClick: onClick,
167
+ children: [item === null || item === void 0 ? void 0 : item.label, " ", /*#__PURE__*/_jsx(SystemIcons.ArrowDropDown, {
168
+ size: "24px"
169
+ })]
170
+ }, item.label), /*#__PURE__*/_jsx(SubMenu, {
171
+ activeItemId: activeItem,
172
+ nestPath: [item.id],
173
+ onItemStateChanged: function onItemStateChanged(item, state) {
174
+ if (state) {
175
+ setActiveItemId(item);
176
+ } else if (item == activeItem) setActiveItemId('');
177
+ },
178
+ item: item,
179
+ dropdownMenusOpenedArray: dropdownMenusOpenedArray,
180
+ index: index + 1,
181
+ topLevel: true
182
+ })]
183
+ });
184
+ }
101
185
  };
102
186
  return /*#__PURE__*/_jsxs(NavContainer, {
103
187
  className: "GlobalNavigationMainMenu",
104
188
  ref: mainMenuRef,
105
- open: showExtendedMenu,
106
189
  children: [items === null || items === void 0 ? void 0 : items.map(renderItem), items.length + 1 > numberOfItemsAllowed && /*#__PURE__*/_jsxs(ExtendedSection, {
190
+ onMouseEnter: function onMouseEnter(event) {
191
+ return _onMouseEnter(event, ExtendedMenuOption);
192
+ },
193
+ onMouseLeave: function onMouseLeave(event) {
194
+ return _onMouseLeave(event, ExtendedMenuOption);
195
+ },
107
196
  children: [/*#__PURE__*/_jsx(IconButton, {
108
197
  ref: menuButtonRef,
109
198
  variant: 'secondary',
110
199
  shape: 'circular',
111
- action: function action() {
112
- setShowExtendedMenu(!showExtendedMenu);
113
- },
200
+ action: function action() {},
114
201
  children: /*#__PURE__*/_jsx(MoreHorizontal, {
115
202
  size: "24px"
116
203
  })
117
- }), /*#__PURE__*/_jsx(ExtendedMenuWrapper, {
118
- ref: extendedMenuRef,
119
- className: showExtendedMenu ? 'open' : '',
120
- floatRight: false,
121
- children: /*#__PURE__*/_jsx(ExtendedMainMenu, {
122
- clickMenuAction: handleClickExtendedMenuAction,
123
- navigationOptions: items.slice(numberOfItemsAllowed - 1)
124
- })
204
+ }), /*#__PURE__*/_jsx(SubMenu, {
205
+ activeItemId: activeItem,
206
+ onItemStateChanged: function onItemStateChanged(item, state) {
207
+ if (state) setActiveItemId(item);else if (item == activeItem) setActiveItemId('');
208
+ },
209
+ item: {
210
+ items: items.slice(numberOfItemsAllowed - 1),
211
+ id: ExtendedMenuOption
212
+ },
213
+ topLevel: true,
214
+ index: 0,
215
+ dropdownMenusOpenedArray: dropdownMenusOpenedArray
125
216
  })]
126
217
  })]
127
218
  });