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

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 (267) hide show
  1. package/dist/Banners/Banner.cjs.map +1 -1
  2. package/dist/Banners/Banner.js.map +1 -1
  3. package/dist/Button/Iconbutton.cjs.map +1 -1
  4. package/dist/Button/Iconbutton.d.ts +1 -1
  5. package/dist/Button/Iconbutton.js.map +1 -1
  6. package/dist/Card/HorizontalCard/types.cjs.map +1 -1
  7. package/dist/Card/HorizontalCard/types.d.ts +1 -1
  8. package/dist/Card/HorizontalCard/types.js.map +1 -1
  9. package/dist/Dropdown/BasicDropdown.cjs +17 -5
  10. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  11. package/dist/Dropdown/BasicDropdown.d.ts +1 -0
  12. package/dist/Dropdown/BasicDropdown.js +17 -5
  13. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  14. package/dist/Dropdown/CommonStyling.cjs +6 -3
  15. package/dist/Dropdown/CommonStyling.cjs.map +1 -1
  16. package/dist/Dropdown/CommonStyling.d.ts +3 -1
  17. package/dist/Dropdown/CommonStyling.js +6 -3
  18. package/dist/Dropdown/CommonStyling.js.map +1 -1
  19. package/dist/Dropdown/DropdownContent.cjs +1 -1
  20. package/dist/Dropdown/DropdownContent.js +1 -1
  21. package/dist/Dropdown/DropdownFilter.cjs +11 -1
  22. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  23. package/dist/Dropdown/DropdownFilter.js +11 -1
  24. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  25. package/dist/Footer/Components/FooterNewsletterAndSocialSection.cjs.map +1 -1
  26. package/dist/Footer/Components/FooterNewsletterAndSocialSection.js.map +1 -1
  27. package/dist/Footer/SiteFooter.cjs +30 -19
  28. package/dist/Footer/SiteFooter.cjs.map +1 -1
  29. package/dist/Footer/SiteFooter.d.ts +3 -1
  30. package/dist/Footer/SiteFooter.js +31 -19
  31. package/dist/Footer/SiteFooter.js.map +1 -1
  32. package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs +3 -1
  33. package/dist/GlobalNavigationBar/GlobalNavigationBar.cjs.map +1 -1
  34. package/dist/GlobalNavigationBar/GlobalNavigationBar.js +3 -1
  35. package/dist/GlobalNavigationBar/GlobalNavigationBar.js.map +1 -1
  36. package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
  37. package/dist/GlobalNavigationBar/Logo.js.map +1 -1
  38. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs +6 -1
  39. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs.map +1 -1
  40. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.d.ts +4 -0
  41. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js +5 -4
  42. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js.map +1 -1
  43. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +146 -56
  44. package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
  45. package/dist/GlobalNavigationBar/desktop/MainMenu.d.ts +2 -2
  46. package/dist/GlobalNavigationBar/desktop/MainMenu.js +146 -56
  47. package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
  48. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs +176 -0
  49. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs.map +1 -0
  50. package/dist/GlobalNavigationBar/desktop/SubMenu.d.ts +18 -0
  51. package/dist/GlobalNavigationBar/desktop/SubMenu.js +166 -0
  52. package/dist/GlobalNavigationBar/desktop/SubMenu.js.map +1 -0
  53. package/dist/GlobalNavigationBar/types.cjs.map +1 -1
  54. package/dist/GlobalNavigationBar/types.d.ts +12 -2
  55. package/dist/GlobalNavigationBar/types.js.map +1 -1
  56. package/dist/GlobalNavigationBar/utils.cjs +17 -0
  57. package/dist/GlobalNavigationBar/utils.cjs.map +1 -0
  58. package/dist/GlobalNavigationBar/utils.d.ts +2 -0
  59. package/dist/GlobalNavigationBar/utils.js +10 -0
  60. package/dist/GlobalNavigationBar/utils.js.map +1 -0
  61. package/dist/InputFields/DatepickerField.cjs +18 -5
  62. package/dist/InputFields/DatepickerField.cjs.map +1 -1
  63. package/dist/InputFields/DatepickerField.js +18 -5
  64. package/dist/InputFields/DatepickerField.js.map +1 -1
  65. package/dist/InputFields/DatepickerFieldHeader.cjs.map +1 -1
  66. package/dist/InputFields/DatepickerFieldHeader.js.map +1 -1
  67. package/dist/InputFields/NumberField.cjs +14 -4
  68. package/dist/InputFields/NumberField.cjs.map +1 -1
  69. package/dist/InputFields/NumberField.js +14 -4
  70. package/dist/InputFields/NumberField.js.map +1 -1
  71. package/dist/InputFields/TextField.cjs +11 -1
  72. package/dist/InputFields/TextField.cjs.map +1 -1
  73. package/dist/InputFields/TextField.js +11 -1
  74. package/dist/InputFields/TextField.js.map +1 -1
  75. package/dist/InputFields/styling.cjs +7 -3
  76. package/dist/InputFields/styling.cjs.map +1 -1
  77. package/dist/InputFields/styling.d.ts +1 -0
  78. package/dist/InputFields/styling.js +7 -3
  79. package/dist/InputFields/styling.js.map +1 -1
  80. package/dist/Layouts/index.cjs +4 -6
  81. package/dist/Layouts/index.cjs.map +1 -1
  82. package/dist/Layouts/index.d.ts +0 -1
  83. package/dist/Layouts/index.js +3 -4
  84. package/dist/Layouts/index.js.map +1 -1
  85. package/dist/NavItem/NavItem.cjs +2 -1
  86. package/dist/NavItem/NavItem.cjs.map +1 -1
  87. package/dist/NavItem/NavItem.d.ts +1 -0
  88. package/dist/NavItem/NavItem.js +1 -1
  89. package/dist/NavItem/NavItem.js.map +1 -1
  90. package/dist/{icons/contenticons/Visibility.cjs → NavItem/NestedNavItem.cjs} +25 -28
  91. package/dist/NavItem/NestedNavItem.cjs.map +1 -0
  92. package/dist/NavItem/NestedNavItem.d.ts +13 -0
  93. package/dist/NavItem/NestedNavItem.js +28 -0
  94. package/dist/NavItem/NestedNavItem.js.map +1 -0
  95. package/dist/Paginator/Paginator.cjs.map +1 -1
  96. package/dist/Paginator/Paginator.js.map +1 -1
  97. package/dist/Table/Table.cjs +1 -1
  98. package/dist/Table/Table.js +1 -1
  99. package/dist/Table/TableFooter.cjs.map +1 -1
  100. package/dist/Table/TableFooter.js.map +1 -1
  101. package/dist/Tabs/TabLink.cjs +39 -14
  102. package/dist/Tabs/TabLink.cjs.map +1 -1
  103. package/dist/Tabs/TabLink.d.ts +6 -1
  104. package/dist/Tabs/TabLink.js +39 -14
  105. package/dist/Tabs/TabLink.js.map +1 -1
  106. package/dist/Tabs/VerticalTabs.cjs +2 -0
  107. package/dist/Tabs/VerticalTabs.cjs.map +1 -1
  108. package/dist/Tabs/VerticalTabs.d.ts +1 -0
  109. package/dist/Tabs/VerticalTabs.js +2 -0
  110. package/dist/Tabs/VerticalTabs.js.map +1 -1
  111. package/dist/Tooltips/TooltipOverflow.cjs +117 -0
  112. package/dist/Tooltips/TooltipOverflow.cjs.map +1 -0
  113. package/dist/Tooltips/TooltipOverflow.d.ts +10 -0
  114. package/dist/Tooltips/TooltipOverflow.js +107 -0
  115. package/dist/Tooltips/TooltipOverflow.js.map +1 -0
  116. package/dist/Tooltips/TooltipStyles.cjs +5 -2
  117. package/dist/Tooltips/TooltipStyles.cjs.map +1 -1
  118. package/dist/Tooltips/TooltipStyles.d.ts +1 -0
  119. package/dist/Tooltips/TooltipStyles.js +5 -2
  120. package/dist/Tooltips/TooltipStyles.js.map +1 -1
  121. package/dist/assets/index.cjs.map +1 -1
  122. package/dist/assets/index.js.map +1 -1
  123. package/dist/common/ActionWithin.cjs +1 -1
  124. package/dist/common/ActionWithin.js +1 -1
  125. package/dist/common/FocusVisible.cjs +1 -1
  126. package/dist/common/FocusVisible.js +1 -1
  127. package/dist/icons/contenticons/{Metronome.cjs → NoShockAdvised.cjs} +5 -5
  128. package/dist/icons/contenticons/NoShockAdvised.cjs.map +1 -0
  129. package/dist/icons/contenticons/{ShockAutomated.d.ts → NoShockAdvised.d.ts} +1 -1
  130. package/dist/icons/contenticons/{ShockAutomated.js → NoShockAdvised.js} +3 -3
  131. package/dist/icons/contenticons/NoShockAdvised.js.map +1 -0
  132. package/dist/icons/contenticons/index.cjs +4 -4
  133. package/dist/icons/contenticons/index.cjs.map +1 -1
  134. package/dist/icons/contenticons/index.d.ts +1 -1
  135. package/dist/icons/contenticons/index.js +1 -1
  136. package/dist/icons/contenticons/index.js.map +1 -1
  137. package/dist/icons/systemicons/LoadingMedium.cjs.map +1 -1
  138. package/dist/icons/systemicons/LoadingMedium.js.map +1 -1
  139. package/dist/icons/systemicons/LoadingSmall.cjs.map +1 -1
  140. package/dist/icons/systemicons/LoadingSmall.js.map +1 -1
  141. package/package.json +3 -2
  142. package/dist/icons/contenticons/AedNoShockAdvised.cjs +0 -41
  143. package/dist/icons/contenticons/AedNoShockAdvised.cjs.map +0 -1
  144. package/dist/icons/contenticons/AedNoShockAdvised.d.ts +0 -3
  145. package/dist/icons/contenticons/AedNoShockAdvised.js +0 -30
  146. package/dist/icons/contenticons/AedNoShockAdvised.js.map +0 -1
  147. package/dist/icons/contenticons/AedShockAdvised.cjs +0 -41
  148. package/dist/icons/contenticons/AedShockAdvised.cjs.map +0 -1
  149. package/dist/icons/contenticons/AedShockAdvised.d.ts +0 -3
  150. package/dist/icons/contenticons/AedShockAdvised.js +0 -30
  151. package/dist/icons/contenticons/AedShockAdvised.js.map +0 -1
  152. package/dist/icons/contenticons/Data.cjs +0 -41
  153. package/dist/icons/contenticons/Data.cjs.map +0 -1
  154. package/dist/icons/contenticons/Data.d.ts +0 -3
  155. package/dist/icons/contenticons/Data.js +0 -30
  156. package/dist/icons/contenticons/Data.js.map +0 -1
  157. package/dist/icons/contenticons/DecisionFlow.cjs +0 -41
  158. package/dist/icons/contenticons/DecisionFlow.cjs.map +0 -1
  159. package/dist/icons/contenticons/DecisionFlow.d.ts +0 -3
  160. package/dist/icons/contenticons/DecisionFlow.js +0 -30
  161. package/dist/icons/contenticons/DecisionFlow.js.map +0 -1
  162. package/dist/icons/contenticons/Metronome.cjs.map +0 -1
  163. package/dist/icons/contenticons/Metronome.d.ts +0 -3
  164. package/dist/icons/contenticons/Metronome.js +0 -30
  165. package/dist/icons/contenticons/Metronome.js.map +0 -1
  166. package/dist/icons/contenticons/ShockAutomated.cjs +0 -41
  167. package/dist/icons/contenticons/ShockAutomated.cjs.map +0 -1
  168. package/dist/icons/contenticons/ShockAutomated.js.map +0 -1
  169. package/dist/icons/contenticons/ShockNotAdvised.cjs +0 -41
  170. package/dist/icons/contenticons/ShockNotAdvised.cjs.map +0 -1
  171. package/dist/icons/contenticons/ShockNotAdvised.d.ts +0 -3
  172. package/dist/icons/contenticons/ShockNotAdvised.js +0 -30
  173. package/dist/icons/contenticons/ShockNotAdvised.js.map +0 -1
  174. package/dist/icons/contenticons/Visibility.cjs.map +0 -1
  175. package/dist/icons/contenticons/Visibility.d.ts +0 -3
  176. package/dist/icons/contenticons/Visibility.js +0 -30
  177. package/dist/icons/contenticons/Visibility.js.map +0 -1
  178. package/dist/icons/systemicons/Adult.cjs +0 -41
  179. package/dist/icons/systemicons/Adult.cjs.map +0 -1
  180. package/dist/icons/systemicons/Adult.d.ts +0 -3
  181. package/dist/icons/systemicons/Adult.js +0 -30
  182. package/dist/icons/systemicons/Adult.js.map +0 -1
  183. package/dist/icons/systemicons/AedPads.cjs +0 -41
  184. package/dist/icons/systemicons/AedPads.cjs.map +0 -1
  185. package/dist/icons/systemicons/AedPads.d.ts +0 -3
  186. package/dist/icons/systemicons/AedPads.js +0 -30
  187. package/dist/icons/systemicons/AedPads.js.map +0 -1
  188. package/dist/icons/systemicons/AedPadsCorrect.cjs +0 -41
  189. package/dist/icons/systemicons/AedPadsCorrect.cjs.map +0 -1
  190. package/dist/icons/systemicons/AedPadsCorrect.d.ts +0 -3
  191. package/dist/icons/systemicons/AedPadsCorrect.js +0 -30
  192. package/dist/icons/systemicons/AedPadsCorrect.js.map +0 -1
  193. package/dist/icons/systemicons/AedPadsError.cjs +0 -41
  194. package/dist/icons/systemicons/AedPadsError.cjs.map +0 -1
  195. package/dist/icons/systemicons/AedPadsError.d.ts +0 -3
  196. package/dist/icons/systemicons/AedPadsError.js +0 -30
  197. package/dist/icons/systemicons/AedPadsError.js.map +0 -1
  198. package/dist/icons/systemicons/Archive.cjs +0 -41
  199. package/dist/icons/systemicons/Archive.cjs.map +0 -1
  200. package/dist/icons/systemicons/Archive.d.ts +0 -3
  201. package/dist/icons/systemicons/Archive.js +0 -30
  202. package/dist/icons/systemicons/Archive.js.map +0 -1
  203. package/dist/icons/systemicons/ArrowCollapse.cjs +0 -41
  204. package/dist/icons/systemicons/ArrowCollapse.cjs.map +0 -1
  205. package/dist/icons/systemicons/ArrowCollapse.d.ts +0 -3
  206. package/dist/icons/systemicons/ArrowCollapse.js +0 -30
  207. package/dist/icons/systemicons/ArrowCollapse.js.map +0 -1
  208. package/dist/icons/systemicons/ArrowExpand.cjs +0 -41
  209. package/dist/icons/systemicons/ArrowExpand.cjs.map +0 -1
  210. package/dist/icons/systemicons/ArrowExpand.d.ts +0 -3
  211. package/dist/icons/systemicons/ArrowExpand.js +0 -30
  212. package/dist/icons/systemicons/ArrowExpand.js.map +0 -1
  213. package/dist/icons/systemicons/Child.cjs +0 -41
  214. package/dist/icons/systemicons/Child.cjs.map +0 -1
  215. package/dist/icons/systemicons/Child.d.ts +0 -3
  216. package/dist/icons/systemicons/Child.js +0 -30
  217. package/dist/icons/systemicons/Child.js.map +0 -1
  218. package/dist/icons/systemicons/Copy.cjs +0 -41
  219. package/dist/icons/systemicons/Copy.cjs.map +0 -1
  220. package/dist/icons/systemicons/Copy.d.ts +0 -3
  221. package/dist/icons/systemicons/Copy.js +0 -30
  222. package/dist/icons/systemicons/Copy.js.map +0 -1
  223. package/dist/icons/systemicons/DecisionFlow.cjs +0 -41
  224. package/dist/icons/systemicons/DecisionFlow.cjs.map +0 -1
  225. package/dist/icons/systemicons/DecisionFlow.d.ts +0 -3
  226. package/dist/icons/systemicons/DecisionFlow.js +0 -30
  227. package/dist/icons/systemicons/DecisionFlow.js.map +0 -1
  228. package/dist/icons/systemicons/HeartShock.cjs +0 -41
  229. package/dist/icons/systemicons/HeartShock.cjs.map +0 -1
  230. package/dist/icons/systemicons/HeartShock.d.ts +0 -3
  231. package/dist/icons/systemicons/HeartShock.js +0 -30
  232. package/dist/icons/systemicons/HeartShock.js.map +0 -1
  233. package/dist/icons/systemicons/Infant.cjs +0 -41
  234. package/dist/icons/systemicons/Infant.cjs.map +0 -1
  235. package/dist/icons/systemicons/Infant.d.ts +0 -3
  236. package/dist/icons/systemicons/Infant.js +0 -30
  237. package/dist/icons/systemicons/Infant.js.map +0 -1
  238. package/dist/icons/systemicons/Metronome.cjs +0 -41
  239. package/dist/icons/systemicons/Metronome.cjs.map +0 -1
  240. package/dist/icons/systemicons/Metronome.d.ts +0 -3
  241. package/dist/icons/systemicons/Metronome.js +0 -30
  242. package/dist/icons/systemicons/Metronome.js.map +0 -1
  243. package/dist/icons/systemicons/Shock.cjs +0 -41
  244. package/dist/icons/systemicons/Shock.cjs.map +0 -1
  245. package/dist/icons/systemicons/Shock.d.ts +0 -3
  246. package/dist/icons/systemicons/Shock.js +0 -30
  247. package/dist/icons/systemicons/Shock.js.map +0 -1
  248. package/dist/icons/systemicons/ShockAdvised.cjs +0 -41
  249. package/dist/icons/systemicons/ShockAdvised.cjs.map +0 -1
  250. package/dist/icons/systemicons/ShockAdvised.d.ts +0 -3
  251. package/dist/icons/systemicons/ShockAdvised.js +0 -30
  252. package/dist/icons/systemicons/ShockAdvised.js.map +0 -1
  253. package/dist/icons/systemicons/ShockAutomated.cjs +0 -41
  254. package/dist/icons/systemicons/ShockAutomated.cjs.map +0 -1
  255. package/dist/icons/systemicons/ShockAutomated.d.ts +0 -3
  256. package/dist/icons/systemicons/ShockAutomated.js +0 -30
  257. package/dist/icons/systemicons/ShockAutomated.js.map +0 -1
  258. package/dist/icons/systemicons/ShockNotAdvised.cjs +0 -41
  259. package/dist/icons/systemicons/ShockNotAdvised.cjs.map +0 -1
  260. package/dist/icons/systemicons/ShockNotAdvised.d.ts +0 -3
  261. package/dist/icons/systemicons/ShockNotAdvised.js +0 -30
  262. package/dist/icons/systemicons/ShockNotAdvised.js.map +0 -1
  263. package/dist/icons/systemicons/Translation.cjs +0 -41
  264. package/dist/icons/systemicons/Translation.cjs.map +0 -1
  265. package/dist/icons/systemicons/Translation.d.ts +0 -3
  266. package/dist/icons/systemicons/Translation.js +0 -30
  267. package/dist/icons/systemicons/Translation.js.map +0 -1
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import { MenuNavigationItemTypeDesktopGroup } from '../types';
3
+ export type SubMenuProps = {
4
+ item: MenuNavigationItemTypeDesktopGroup;
5
+ index: number;
6
+ topLevel: boolean;
7
+ dropdownMenusOpenedArray: React.MutableRefObject<string[]>;
8
+ onSubMenuOpened?: (item: string) => void;
9
+ onSubMenuHidden?: (item: string) => void;
10
+ onItemStateChanged?: (item: string, state: boolean) => void;
11
+ activeItemId?: string;
12
+ nestPath?: string[];
13
+ };
14
+ export declare const SubMenuWrapper: import("styled-components").StyledComponent<"div", any, {
15
+ topLevel: boolean;
16
+ visible: boolean;
17
+ }, never>;
18
+ export declare const SubMenu: ({ item, index, topLevel, dropdownMenusOpenedArray, onSubMenuHidden, onSubMenuOpened, onItemStateChanged, activeItemId, nestPath }: SubMenuProps) => React.ReactElement<SubMenuProps>;
@@ -0,0 +1,166 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/esm/taggedTemplateLiteral";
4
+ import _pt from "prop-types";
5
+ var _templateObject;
6
+ import * as React from 'react';
7
+ import styled from 'styled-components';
8
+ import { Menu, MenuSection, MenuSectionList } from './ExtendedMainMenu';
9
+ import { Size } from '../../types';
10
+ import { SystemIcons } from '../../icons';
11
+ import { checkIfContainsItem } from '../utils';
12
+ import Tabs from '../../Tabs/Tabs';
13
+ import TabLink from '../../Tabs/TabLink';
14
+ import { MenuItem } from '../../MenuItem';
15
+ import { jsx as _jsx } from "react/jsx-runtime";
16
+ import { jsxs as _jsxs } from "react/jsx-runtime";
17
+ import { Fragment as _Fragment } from "react/jsx-runtime";
18
+ export var SubMenuWrapper = styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n ", " {\n top: ", ";\n left: ", ";\n }\n\n ", "\n\n button {\n padding-left: 0px;\n }\n"])), Menu, function (props) {
19
+ return props.topLevel ? '100%' : '0px';
20
+ }, function (props) {
21
+ return props.topLevel ? '0px' : 'calc(100% - 12px)';
22
+ }, function (props) {
23
+ return !props.visible ? 'display: none;' : '';
24
+ });
25
+ export var SubMenu = function SubMenu(_ref) {
26
+ var item = _ref.item,
27
+ index = _ref.index,
28
+ topLevel = _ref.topLevel,
29
+ dropdownMenusOpenedArray = _ref.dropdownMenusOpenedArray,
30
+ onSubMenuHidden = _ref.onSubMenuHidden,
31
+ onSubMenuOpened = _ref.onSubMenuOpened,
32
+ onItemStateChanged = _ref.onItemStateChanged,
33
+ activeItemId = _ref.activeItemId,
34
+ nestPath = _ref.nestPath;
35
+ var _React$useState = React.useState({}),
36
+ _React$useState2 = _slicedToArray(_React$useState, 2),
37
+ forceUpdate = _React$useState2[1];
38
+ var existingRef = dropdownMenusOpenedArray.current.find(function (x) {
39
+ return x == item.id;
40
+ });
41
+ var _onMouseLeave = function onMouseLeave(event, id) {
42
+ dropdownMenusOpenedArray.current = _toConsumableArray(dropdownMenusOpenedArray.current.filter(function (x) {
43
+ return x != id;
44
+ }));
45
+ //just trigger rerendering
46
+ onSubMenuHidden && onSubMenuHidden(id);
47
+ forceUpdate({});
48
+ };
49
+ var containActiveItem = false;
50
+ if (item.type == 'desktopgroup' && activeItemId) containActiveItem = checkIfContainsItem(item, activeItemId);
51
+ var _onMouseEnter = function onMouseEnter(event, id) {
52
+ var existingRefForId = dropdownMenusOpenedArray.current.find(function (x) {
53
+ return x == id;
54
+ });
55
+ if (existingRefForId == null) {
56
+ dropdownMenusOpenedArray.current = [].concat(_toConsumableArray(dropdownMenusOpenedArray.current), [id]);
57
+ //just trigger rerendering
58
+ onSubMenuOpened && onSubMenuOpened(id);
59
+ forceUpdate({});
60
+ }
61
+ };
62
+ var _onKeyDown = function onKeyDown(event, entryId) {
63
+ if (event.key == 'Enter' || event.code == 'Space') {
64
+ dropdownMenusOpenedArray.current = [].concat(_toConsumableArray(dropdownMenusOpenedArray.current), [entryId]);
65
+ //just trigger rerendering
66
+ forceUpdate({});
67
+ }
68
+ };
69
+ var onFocus = function onFocus(event) {
70
+ dropdownMenusOpenedArray.current = _toConsumableArray(nestPath !== null && nestPath !== void 0 ? nestPath : []);
71
+ forceUpdate({});
72
+ };
73
+ return /*#__PURE__*/_jsx(SubMenuWrapper, {
74
+ id: item.id,
75
+ className: existingRef ? 'open' : '',
76
+ topLevel: topLevel,
77
+ visible: Boolean(existingRef),
78
+ children: /*#__PURE__*/_jsx(Menu, {
79
+ role: "menu",
80
+ "aria-labelledby": "UserMenuButton",
81
+ children: /*#__PURE__*/_jsx(MenuSection, {
82
+ children: /*#__PURE__*/_jsx(MenuSectionList, {
83
+ children: /*#__PURE__*/_jsx(Tabs, {
84
+ size: Size.Medium,
85
+ children: item.items.map(function (entry) {
86
+ var _entry$label2;
87
+ var isGroup = entry.type == 'desktopgroup';
88
+ var key = isGroup ? entry.id : entry.type == 'item' ? entry.to : '';
89
+ var SubItemOpened = Boolean(dropdownMenusOpenedArray.current.find(function (x) {
90
+ return x == entry.id;
91
+ }));
92
+ if (isGroup) {
93
+ var _entry$label;
94
+ return /*#__PURE__*/_jsxs("div", {
95
+ style: {
96
+ position: 'relative'
97
+ },
98
+ onMouseEnter: function onMouseEnter(event) {
99
+ return _onMouseEnter(event, entry.id);
100
+ },
101
+ onMouseLeave: function onMouseLeave(event) {
102
+ return _onMouseLeave(event, entry.id);
103
+ },
104
+ children: [/*#__PURE__*/_jsx(MenuItem, {
105
+ tabIndex: 0,
106
+ onFocus: onFocus,
107
+ onKeyDown: function onKeyDown(event) {
108
+ return _onKeyDown(event, entry.id);
109
+ },
110
+ id: entry.id,
111
+ item: {
112
+ value: (_entry$label = entry.label) !== null && _entry$label !== void 0 ? _entry$label : ''
113
+ },
114
+ iconRight: /*#__PURE__*/_jsx(SystemIcons.ArrowDropRight, {
115
+ size: "24px"
116
+ }),
117
+ active: SubItemOpened || Boolean(activeItemId) && activeItemId != '' && checkIfContainsItem(entry, activeItemId),
118
+ onClickHandler: function onClickHandler() {}
119
+ }), /*#__PURE__*/_jsx(SubMenu, {
120
+ nestPath: [].concat(_toConsumableArray(nestPath !== null && nestPath !== void 0 ? nestPath : []), [entry.id]),
121
+ onItemStateChanged: onItemStateChanged,
122
+ activeItemId: activeItemId,
123
+ dropdownMenusOpenedArray: dropdownMenusOpenedArray,
124
+ item: entry,
125
+ index: index + 1,
126
+ topLevel: false
127
+ })]
128
+ });
129
+ }
130
+ return /*#__PURE__*/_jsx(_Fragment, {
131
+ children: /*#__PURE__*/_jsx(TabLink, {
132
+ to: isGroup ? '' : key,
133
+ onFocus: onFocus,
134
+ onActiveStateChanged: function onActiveStateChanged(state) {
135
+ return onItemStateChanged && entry.type == 'item' && onItemStateChanged(entry.to, state);
136
+ },
137
+ forceDeactivate: isGroup,
138
+ requiredLine: (_entry$label2 = entry.label) !== null && _entry$label2 !== void 0 ? _entry$label2 : '',
139
+ optionalLine: '',
140
+ endLineIcon: isGroup ? /*#__PURE__*/_jsx(SystemIcons.ArrowDropRight, {
141
+ size: "24px"
142
+ }) : null,
143
+ OptionalLineIcon: '',
144
+ disabled: entry.disabled,
145
+ showNotificationDot: false,
146
+ size: Size.Medium,
147
+ variant: "positive"
148
+ }, key)
149
+ });
150
+ })
151
+ })
152
+ })
153
+ })
154
+ })
155
+ });
156
+ };
157
+ SubMenu.propTypes = {
158
+ index: _pt.number.isRequired,
159
+ topLevel: _pt.bool.isRequired,
160
+ onSubMenuOpened: _pt.func,
161
+ onSubMenuHidden: _pt.func,
162
+ onItemStateChanged: _pt.func,
163
+ activeItemId: _pt.string,
164
+ nestPath: _pt.arrayOf(_pt.string)
165
+ };
166
+ //# sourceMappingURL=SubMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubMenu.js","names":["React","styled","Menu","MenuSection","MenuSectionList","Size","SystemIcons","checkIfContainsItem","Tabs","TabLink","MenuItem","SubMenuWrapper","div","props","topLevel","visible","SubMenu","item","index","dropdownMenusOpenedArray","onSubMenuHidden","onSubMenuOpened","onItemStateChanged","activeItemId","nestPath","useState","forceUpdate","existingRef","current","find","x","id","onMouseLeave","event","filter","containActiveItem","type","onMouseEnter","existingRefForId","onKeyDown","entryId","key","code","onFocus","Boolean","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":";;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,SAASC,IAAI,EAAEC,WAAW,EAAEC,eAAe,QAAQ,oBAAoB;AAEvE,SAASC,IAAI,QAAQ,aAAa;AAClC,SAASC,WAAW,QAAQ,aAAa;AACzC,SAASC,mBAAmB,QAAQ,UAAU;AAC9C,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,OAAO,MAAM,oBAAoB;AACxC,SAASC,QAAQ,QAAQ,gBAAgB;AAAC;AAAA;AAAA;AAc1C,OAAO,IAAMC,cAAc,GAAGV,MAAM,CAACW,GAAG,6KACpCV,IAAI,EACG,UAACW,KAAK;EAAA,OAAMA,KAAK,CAACC,QAAQ,GAAG,MAAM,GAAG,KAAK;AAAA,CAAC,EAC3C,UAACD,KAAK;EAAA,OAAMA,KAAK,CAACC,QAAQ,GAAG,KAAK,GAAG,mBAAmB;AAAA,CAAC,EAGjE,UAAAD,KAAK;EAAA,OAAI,CAACA,KAAK,CAACE,OAAO,GAAG,gBAAgB,GAAG,EAAE;AAAA,EAKlD;AAED,OAAO,IAAMC,OAAO,GAAG,SAAVA,OAAO,OAA0L;EAAA,IAApLC,IAAI,QAAJA,IAAI;IAAEC,KAAK,QAALA,KAAK;IAAEJ,QAAQ,QAARA,QAAQ;IAAEK,wBAAwB,QAAxBA,wBAAwB;IAAEC,eAAe,QAAfA,eAAe;IAAEC,eAAe,QAAfA,eAAe;IAAEC,kBAAkB,QAAlBA,kBAAkB;IAAEC,YAAY,QAAZA,YAAY;IAAEC,QAAQ,QAARA,QAAQ;EACrJ,sBAAwBxB,KAAK,CAACyB,QAAQ,CAAC,CAAC,CAAC,CAAC;IAAA;IAAjCC,WAAW;EAEpB,IAAMC,WAAW,GAAGR,wBAAwB,CAACS,OAAO,CAACC,IAAI,CAAC,UAACC,CAAC;IAAA,OAAKA,CAAC,IAAIb,IAAI,CAACc,EAAE;EAAA,EAAC;EAC9E,IAAMC,aAAY,GAAG,SAAfA,YAAY,CAAIC,KAAU,EAAEF,EAAU,EAAK;IAC/CZ,wBAAwB,CAACS,OAAO,sBAAOT,wBAAwB,CAACS,OAAO,CAACM,MAAM,CAAC,UAACJ,CAAC;MAAA,OAAKA,CAAC,IAAIC,EAAE;IAAA,EAAC,CAAC;IAC/F;IACAX,eAAe,IAAIA,eAAe,CAACW,EAAE,CAAC;IACtCL,WAAW,CAAC,CAAC,CAAC,CAAC;EACjB,CAAC;EACD,IAAIS,iBAAiB,GAAG,KAAK;EAC7B,IAAGlB,IAAI,CAACmB,IAAI,IAAI,cAAc,IAAIb,YAAY,EAC5CY,iBAAiB,GAAG5B,mBAAmB,CAACU,IAAI,EAAEM,YAAY,CAAC;EAE7D,IAAMc,aAAY,GAAG,SAAfA,YAAY,CAAIJ,KAAU,EAAEF,EAAU,EAAK;IAC/C,IAAMO,gBAAgB,GAAGnB,wBAAwB,CAACS,OAAO,CAACC,IAAI,CAAC,UAACC,CAAC;MAAA,OAAKA,CAAC,IAAIC,EAAE;IAAA,EAAC;IAC9E,IAAIO,gBAAgB,IAAI,IAAI,EAAE;MAC5BnB,wBAAwB,CAACS,OAAO,gCAAOT,wBAAwB,CAACS,OAAO,IAAEG,EAAE,EAAC;MAC5E;MACAV,eAAe,IAAIA,eAAe,CAACU,EAAE,CAAC;MACtCL,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB;EACF,CAAC;EAED,IAAMa,UAAS,GAAG,SAAZA,SAAS,CAAIN,KAA6C,EAAEO,OAAe,EAAK;IACpF,IAAGP,KAAK,CAACQ,GAAG,IAAI,OAAO,IAAIR,KAAK,CAACS,IAAI,IAAI,OAAO,EAChD;MACEvB,wBAAwB,CAACS,OAAO,gCAAOT,wBAAwB,CAACS,OAAO,IAAEY,OAAO,EAAC;MACjF;MACAd,WAAW,CAAC,CAAC,CAAC,CAAC;IACjB;EACF,CAAC;EAED,IAAMiB,OAAO,GAAG,SAAVA,OAAO,CAAIV,KAA8D,EAAK;IAClFd,wBAAwB,CAACS,OAAO,sBAAQJ,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,EAAE,CAAE;IACxDE,WAAW,CAAC,CAAC,CAAC,CAAC;EACjB,CAAC;EAED,oBAAO,KAAC,cAAc;IAAC,EAAE,EAAET,IAAI,CAACc,EAAG;IAAC,SAAS,EAAEJ,WAAW,GAAG,MAAM,GAAG,EAAG;IAAC,QAAQ,EAAEb,QAAS;IAAC,OAAO,EAAE8B,OAAO,CAACjB,WAAW,CAAE;IAAA,uBACxH,KAAC,IAAI;MAAC,IAAI,EAAC,MAAM;MAAC,mBAAgB,gBAAgB;MAAA,uBAChD,KAAC,WAAW;QAAA,uBACV,KAAC,eAAe;UAAA,uBACd,KAAC,IAAI;YAAC,IAAI,EAAEtB,IAAI,CAACwC,MAAO;YAAA,UACrB5B,IAAI,CAAC6B,KAAK,CAACC,GAAG,CAAC,UAACC,KAAK,EAAK;cAAA;cACzB,IAAMC,OAAO,GAAGD,KAAK,CAACZ,IAAI,IAAI,cAAc;cAC5C,IAAMK,GAAG,GAAGQ,OAAO,GAAGD,KAAK,CAACjB,EAAE,GAAGiB,KAAK,CAACZ,IAAI,IAAI,MAAM,GAAGY,KAAK,CAACE,EAAE,GAAG,EAAE;cACrE,IAAMC,aAAa,GAAGP,OAAO,CAACzB,wBAAwB,CAACS,OAAO,CAACC,IAAI,CAAC,UAACC,CAAC;gBAAA,OAAKA,CAAC,IAAIkB,KAAK,CAACjB,EAAE;cAAA,EAAC,CAAC;cAC1F,IAAIkB,OAAO,EAAE;gBAAA;gBACX,oBACE;kBAAK,KAAK,EAAE;oBAAEG,QAAQ,EAAE;kBAAW,CAAE;kBAAC,YAAY,EAAE,sBAACnB,KAAK;oBAAA,OAAKI,aAAY,CAACJ,KAAK,EAAEe,KAAK,CAACjB,EAAE,CAAC;kBAAA,CAAC;kBAAC,YAAY,EAAE,sBAACE,KAAK;oBAAA,OAAKD,aAAY,CAACC,KAAK,EAAEe,KAAK,CAACjB,EAAE,CAAC;kBAAA,CAAC;kBAAA,wBACnJ,KAAC,QAAQ;oBACP,QAAQ,EAAE,CAAE;oBACZ,OAAO,EAAEY,OAAQ;oBACjB,SAAS,EAAE,mBAACV,KAAK;sBAAA,OAAKM,UAAS,CAACN,KAAK,EAAEe,KAAK,CAACjB,EAAE,CAAC;oBAAA,CAAC;oBACjD,EAAE,EAAEiB,KAAK,CAACjB,EAAG;oBACb,IAAI,EAAE;sBACJsB,KAAK,kBAAEL,KAAK,CAACM,KAAK,uDAAI;oBACxB,CAAE;oBACF,SAAS,eAAE,KAAC,WAAW,CAAC,cAAc;sBAAC,IAAI,EAAC;oBAAM,EAAI;oBACtD,MAAM,EAAEH,aAAa,IAAKP,OAAO,CAACrB,YAAY,CAAC,IAAIA,YAAY,IAAI,EAAE,IAAIhB,mBAAmB,CAACyC,KAAK,EAAEzB,YAAY,CAAI;oBACpH,cAAc,EAAE,0BAAM,CAAC;kBAAE,EACzB,eACF,KAAC,OAAO;oBAAC,QAAQ,+BAAOC,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,EAAE,IAAGwB,KAAK,CAACjB,EAAE,EAAE;oBAAC,kBAAkB,EAAET,kBAAmB;oBAAC,YAAY,EAAEC,YAAa;oBAAC,wBAAwB,EAAEJ,wBAAyB;oBAAC,IAAI,EAAE6B,KAA4C;oBAAC,KAAK,EAAE9B,KAAK,GAAG,CAAE;oBAAC,QAAQ,EAAE;kBAAM,EAAG;gBAAA,EAChQ;cAEV;cACA,oBACE;gBAAA,uBACE,KAAC,OAAO;kBAEN,EAAE,EAAE+B,OAAO,GAAG,EAAE,GAAGR,GAAI;kBACvB,OAAO,EAAEE,OAAQ;kBACjB,oBAAoB,EAAE,8BAACY,KAAK;oBAAA,OAAKjC,kBAAkB,IAAI0B,KAAK,CAACZ,IAAI,IAAI,MAAM,IAAId,kBAAkB,CAAC0B,KAAK,CAACE,EAAE,EAAEK,KAAK,CAAC;kBAAA,CAAC;kBACnH,eAAe,EAAEN,OAAQ;kBACzB,YAAY,mBAAED,KAAK,CAACM,KAAK,yDAAI,EAAG;kBAChC,YAAY,EAAE,EAAG;kBACjB,WAAW,EAAEL,OAAO,gBAAG,KAAC,WAAW,CAAC,cAAc;oBAAC,IAAI,EAAC;kBAAM,EAAG,GAAG,IAAK;kBACzE,gBAAgB,EAAE,EAAG;kBACrB,QAAQ,EAAED,KAAK,CAACQ,QAAS;kBACzB,mBAAmB,EAAE,KAAM;kBAC3B,IAAI,EAAEnD,IAAI,CAACwC,MAAO;kBAClB,OAAO,EAAC;gBAAU,GAZbJ,GAAG;cAaR,EACD;YAEP,CAAC;UAAC;QACG;MACS;IACN;EACT,EACQ;AACrB,CAAC;AAAC;EAlHAvB,KAAK;EACLJ,QAAQ;EAERO,eAAe;EACfD,eAAe;EACfE,kBAAkB;EAClBC,YAAY;EACZC,QAAQ;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","names":[],"sources":["../../src/GlobalNavigationBar/types.tsx"],"sourcesContent":["import React from 'react';\nimport { HyperlinkProps } from '../HyperLink/HyperLink';\nimport { IconButtonProps } from '../Button/Iconbutton';\nimport { ProfileButtonProps } from '../ProfileButton/ProfileButton';\nimport { NavLinkProps } from 'react-router-dom';\nimport {ButtonProps} from \"../Button/Button\";\nimport {TooltipProps} from \"../Tooltips/TooltipTypes\";\n\nexport interface MenuHyperLinkProps extends Pick<HyperlinkProps, 'id' | 'href' | 'onClick' | 'target'> {\n label: string;\n icon?: React.ReactElement;\n}\n\nexport interface MenuButton extends Omit<ButtonProps, 'onClick' | 'children' | 'size'> {\n label: string;\n action: () => void;\n\n tooltip?: TooltipProps;\n}\n\nexport interface MenuGroupFooter {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuGroupHeader {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuAccountInfo {\n firstName: string;\n lastName: string;\n email: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface ProfileMenu {\n label?: string;\n\n user: MenuAccountInfo;\n\n sections: MenuNavigationSection[];\n\n signOut?: MenuButton;\n}\n\nexport interface MenuIconSubMenuButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'submenu';\n icon: React.ReactNode;\n menu: MenuNavigationItemTypeGroup | MenuNavigationCustomSubMenu;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuIconButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'action';\n icon: React.ReactNode;\n action: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuProfileButton extends Omit<ProfileButtonProps, 'type' | 'onClick' | 'initials' | 'hideOnLowWidth' | 'icon' | 'portraitSrc'> {\n type: 'profile';\n action?: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuSwitcherButton\n extends Omit<\n IconButtonProps,\n | 'id'\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'switcher';\n placement?: 'left' | 'right';\n action?: (button?: EventTarget) => boolean | void;\n}\n\nexport type DesktopMenuButtonTypes = MenuIconButton | MenuProfileButton | MenuSwitcherButton;\nexport type MobileMenuButtonTypes = MenuIconSubMenuButton | MenuIconButton | MenuProfileButton | MenuSwitcherButton;\n\nexport interface MobileNavigationMenuProps {\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n\n header?: MenuGroupHeader;\n\n items?: (MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup)[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport interface DesktopNavigationMenuProps {\n buttons?: DesktopMenuButtonTypes[];\n items: MenuNavigationItemTypeItem[];\n action?: MenuButton;\n reverseRightSideOrder?: boolean;\n}\n\n// @ts-ignore\nexport interface MenuNavigationGroup<T = MenuNavigationItem | MenuNavigationSection | MenuNavigationGroup> {\n label: string;\n note?: string;\n\n buttons?: MobileMenuButtonTypes[];\n header?: MenuGroupHeader;\n\n items: T[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport type MenuNavigationItem = {\n icon?: React.ReactNode;\n to: string;\n exact?: boolean;\n disabled?: boolean;\n external?: boolean;\n action?: (e: React.MouseEvent) => void;\n label: string;\n note?: string;\n pinned?: boolean;\n} & Omit<NavLinkProps, 'onClick' | 'to' | 'exact' | 'onMouseDown'>;\n\nexport interface MenuNavigationSection<T = MenuNavigationItem> {\n divider?: boolean;\n pinned?: boolean;\n label?: string;\n items: T[];\n}\n\nexport type MenuNavigationItemTypeItem = MenuNavigationItem & {\n type?: 'item';\n};\n\nexport type MenuNavigationItemTypeGroup = MenuNavigationGroup<MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup | MenuNavigationItemTypeSection> & {\n type: 'group';\n icon?: React.ReactNode;\n pinned?: boolean;\n disabled?: boolean;\n};\n\nexport type MenuNavigationItemTypeSection = MenuNavigationSection<MenuNavigationItemTypeItem> & {\n type: 'section';\n};\n\nexport type MenuNavigationCustomSubMenu = {\n type: 'custom';\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n custom: () => React.ReactNode;\n};\n"],"mappings":""}
1
+ {"version":3,"file":"types.cjs","names":[],"sources":["../../src/GlobalNavigationBar/types.tsx"],"sourcesContent":["import React from 'react';\nimport { HyperlinkProps } from '../HyperLink/HyperLink';\nimport { IconButtonProps } from '../Button/Iconbutton';\nimport { ProfileButtonProps } from '../ProfileButton/ProfileButton';\nimport { NavLinkProps } from 'react-router-dom';\nimport {ButtonProps} from \"../Button/Button\";\nimport {TooltipProps} from \"../Tooltips/TooltipTypes\";\n\nexport interface MenuHyperLinkProps extends Pick<HyperlinkProps, 'id' | 'href' | 'onClick' | 'target'> {\n label: string;\n icon?: React.ReactElement;\n}\n\nexport interface MenuButton extends Omit<ButtonProps, 'onClick' | 'children' | 'size'> {\n label: string;\n action: () => void;\n\n tooltip?: TooltipProps;\n}\n\nexport interface MenuGroupFooter {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuGroupHeader {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuAccountInfo {\n firstName: string;\n lastName: string;\n email: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface ProfileMenu {\n label?: string;\n\n user: MenuAccountInfo;\n\n sections: MenuNavigationSection[];\n\n signOut?: MenuButton;\n}\n\nexport interface MenuIconSubMenuButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'submenu';\n icon: React.ReactNode;\n menu: MenuNavigationItemTypeGroup | MenuNavigationCustomSubMenu;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuIconButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'action';\n icon: React.ReactNode;\n action: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuProfileButton extends Omit<ProfileButtonProps, 'type' | 'onClick' | 'initials' | 'hideOnLowWidth' | 'icon' | 'portraitSrc'> {\n type: 'profile';\n action?: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuSwitcherButton\n extends Omit<\n IconButtonProps,\n | 'id'\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'switcher';\n placement?: 'left' | 'right';\n action?: (button?: EventTarget) => boolean | void;\n}\n\nexport type DesktopMenuButtonTypes = MenuIconButton | MenuProfileButton | MenuSwitcherButton;\nexport type MobileMenuButtonTypes = MenuIconSubMenuButton | MenuIconButton | MenuProfileButton | MenuSwitcherButton;\n\nexport interface MobileNavigationMenuProps {\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n\n header?: MenuGroupHeader;\n\n items?: (MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup)[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport interface DesktopNavigationMenuProps {\n buttons?: DesktopMenuButtonTypes[];\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n action?: MenuButton;\n reverseRightSideOrder?: boolean;\n}\n\n// @ts-ignore\nexport interface MenuNavigationGroup<T = MenuNavigationItemTypeDesktopGroup | MenuNavigationItem | MenuNavigationSection | MenuNavigationGroup> {\n label: string;\n note?: string;\n\n buttons?: MobileMenuButtonTypes[];\n header?: MenuGroupHeader;\n\n items: T[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport type MenuNavigationItem = {\n icon?: React.ReactNode;\n to: string;\n exact?: boolean;\n disabled?: boolean;\n external?: boolean;\n action?: (e: React.MouseEvent) => void;\n label: string;\n note?: string;\n pinned?: boolean;\n subItems?: MenuNavigationItem[];\n} & Omit<NavLinkProps, 'onClick' | 'to' | 'exact' | 'onMouseDown'>;\n\nexport interface MenuNavigationSection<T = MenuNavigationItem> {\n divider?: boolean;\n pinned?: boolean;\n label?: string;\n items: T[];\n}\n\nexport type MenuNavigationItemTypeItem = MenuNavigationItem & {\n type?: 'item';\n};\n\nexport type MenuNavigationItemTypeDesktopGroup = {\n id: string;\n label?: string;\n disabled?: boolean;\n pinned?: boolean;\n type?: 'desktopgroup';\n expanded?: boolean;\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n}\n\nexport type MenuNavigationItemTypeGroup = MenuNavigationGroup<MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup | MenuNavigationItemTypeSection> & {\n type: 'group';\n icon?: React.ReactNode;\n pinned?: boolean;\n disabled?: boolean;\n};\n\nexport type MenuNavigationItemTypeSection = MenuNavigationSection<MenuNavigationItemTypeItem> & {\n type: 'section';\n};\n\nexport type MenuNavigationCustomSubMenu = {\n type: 'custom';\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n custom: () => React.ReactNode;\n};\n"],"mappings":""}
@@ -70,11 +70,11 @@ export interface MobileNavigationMenuProps {
70
70
  }
71
71
  export interface DesktopNavigationMenuProps {
72
72
  buttons?: DesktopMenuButtonTypes[];
73
- items: MenuNavigationItemTypeItem[];
73
+ items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];
74
74
  action?: MenuButton;
75
75
  reverseRightSideOrder?: boolean;
76
76
  }
77
- export interface MenuNavigationGroup<T = MenuNavigationItem | MenuNavigationSection | MenuNavigationGroup> {
77
+ export interface MenuNavigationGroup<T = MenuNavigationItemTypeDesktopGroup | MenuNavigationItem | MenuNavigationSection | MenuNavigationGroup> {
78
78
  label: string;
79
79
  note?: string;
80
80
  buttons?: MobileMenuButtonTypes[];
@@ -93,6 +93,7 @@ export type MenuNavigationItem = {
93
93
  label: string;
94
94
  note?: string;
95
95
  pinned?: boolean;
96
+ subItems?: MenuNavigationItem[];
96
97
  } & Omit<NavLinkProps, 'onClick' | 'to' | 'exact' | 'onMouseDown'>;
97
98
  export interface MenuNavigationSection<T = MenuNavigationItem> {
98
99
  divider?: boolean;
@@ -103,6 +104,15 @@ export interface MenuNavigationSection<T = MenuNavigationItem> {
103
104
  export type MenuNavigationItemTypeItem = MenuNavigationItem & {
104
105
  type?: 'item';
105
106
  };
107
+ export type MenuNavigationItemTypeDesktopGroup = {
108
+ id: string;
109
+ label?: string;
110
+ disabled?: boolean;
111
+ pinned?: boolean;
112
+ type?: 'desktopgroup';
113
+ expanded?: boolean;
114
+ items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];
115
+ };
106
116
  export type MenuNavigationItemTypeGroup = MenuNavigationGroup<MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup | MenuNavigationItemTypeSection> & {
107
117
  type: 'group';
108
118
  icon?: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../src/GlobalNavigationBar/types.tsx"],"sourcesContent":["import React from 'react';\nimport { HyperlinkProps } from '../HyperLink/HyperLink';\nimport { IconButtonProps } from '../Button/Iconbutton';\nimport { ProfileButtonProps } from '../ProfileButton/ProfileButton';\nimport { NavLinkProps } from 'react-router-dom';\nimport {ButtonProps} from \"../Button/Button\";\nimport {TooltipProps} from \"../Tooltips/TooltipTypes\";\n\nexport interface MenuHyperLinkProps extends Pick<HyperlinkProps, 'id' | 'href' | 'onClick' | 'target'> {\n label: string;\n icon?: React.ReactElement;\n}\n\nexport interface MenuButton extends Omit<ButtonProps, 'onClick' | 'children' | 'size'> {\n label: string;\n action: () => void;\n\n tooltip?: TooltipProps;\n}\n\nexport interface MenuGroupFooter {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuGroupHeader {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuAccountInfo {\n firstName: string;\n lastName: string;\n email: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface ProfileMenu {\n label?: string;\n\n user: MenuAccountInfo;\n\n sections: MenuNavigationSection[];\n\n signOut?: MenuButton;\n}\n\nexport interface MenuIconSubMenuButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'submenu';\n icon: React.ReactNode;\n menu: MenuNavigationItemTypeGroup | MenuNavigationCustomSubMenu;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuIconButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'action';\n icon: React.ReactNode;\n action: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuProfileButton extends Omit<ProfileButtonProps, 'type' | 'onClick' | 'initials' | 'hideOnLowWidth' | 'icon' | 'portraitSrc'> {\n type: 'profile';\n action?: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuSwitcherButton\n extends Omit<\n IconButtonProps,\n | 'id'\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'switcher';\n placement?: 'left' | 'right';\n action?: (button?: EventTarget) => boolean | void;\n}\n\nexport type DesktopMenuButtonTypes = MenuIconButton | MenuProfileButton | MenuSwitcherButton;\nexport type MobileMenuButtonTypes = MenuIconSubMenuButton | MenuIconButton | MenuProfileButton | MenuSwitcherButton;\n\nexport interface MobileNavigationMenuProps {\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n\n header?: MenuGroupHeader;\n\n items?: (MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup)[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport interface DesktopNavigationMenuProps {\n buttons?: DesktopMenuButtonTypes[];\n items: MenuNavigationItemTypeItem[];\n action?: MenuButton;\n reverseRightSideOrder?: boolean;\n}\n\n// @ts-ignore\nexport interface MenuNavigationGroup<T = MenuNavigationItem | MenuNavigationSection | MenuNavigationGroup> {\n label: string;\n note?: string;\n\n buttons?: MobileMenuButtonTypes[];\n header?: MenuGroupHeader;\n\n items: T[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport type MenuNavigationItem = {\n icon?: React.ReactNode;\n to: string;\n exact?: boolean;\n disabled?: boolean;\n external?: boolean;\n action?: (e: React.MouseEvent) => void;\n label: string;\n note?: string;\n pinned?: boolean;\n} & Omit<NavLinkProps, 'onClick' | 'to' | 'exact' | 'onMouseDown'>;\n\nexport interface MenuNavigationSection<T = MenuNavigationItem> {\n divider?: boolean;\n pinned?: boolean;\n label?: string;\n items: T[];\n}\n\nexport type MenuNavigationItemTypeItem = MenuNavigationItem & {\n type?: 'item';\n};\n\nexport type MenuNavigationItemTypeGroup = MenuNavigationGroup<MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup | MenuNavigationItemTypeSection> & {\n type: 'group';\n icon?: React.ReactNode;\n pinned?: boolean;\n disabled?: boolean;\n};\n\nexport type MenuNavigationItemTypeSection = MenuNavigationSection<MenuNavigationItemTypeItem> & {\n type: 'section';\n};\n\nexport type MenuNavigationCustomSubMenu = {\n type: 'custom';\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n custom: () => React.ReactNode;\n};\n"],"mappings":""}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/GlobalNavigationBar/types.tsx"],"sourcesContent":["import React from 'react';\nimport { HyperlinkProps } from '../HyperLink/HyperLink';\nimport { IconButtonProps } from '../Button/Iconbutton';\nimport { ProfileButtonProps } from '../ProfileButton/ProfileButton';\nimport { NavLinkProps } from 'react-router-dom';\nimport {ButtonProps} from \"../Button/Button\";\nimport {TooltipProps} from \"../Tooltips/TooltipTypes\";\n\nexport interface MenuHyperLinkProps extends Pick<HyperlinkProps, 'id' | 'href' | 'onClick' | 'target'> {\n label: string;\n icon?: React.ReactElement;\n}\n\nexport interface MenuButton extends Omit<ButtonProps, 'onClick' | 'children' | 'size'> {\n label: string;\n action: () => void;\n\n tooltip?: TooltipProps;\n}\n\nexport interface MenuGroupFooter {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuGroupHeader {\n header: string;\n note?: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface MenuAccountInfo {\n firstName: string;\n lastName: string;\n email: string;\n link?: MenuHyperLinkProps;\n}\n\nexport interface ProfileMenu {\n label?: string;\n\n user: MenuAccountInfo;\n\n sections: MenuNavigationSection[];\n\n signOut?: MenuButton;\n}\n\nexport interface MenuIconSubMenuButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'submenu';\n icon: React.ReactNode;\n menu: MenuNavigationItemTypeGroup | MenuNavigationCustomSubMenu;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuIconButton\n extends Omit<\n IconButtonProps,\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'action';\n icon: React.ReactNode;\n action: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuProfileButton extends Omit<ProfileButtonProps, 'type' | 'onClick' | 'initials' | 'hideOnLowWidth' | 'icon' | 'portraitSrc'> {\n type: 'profile';\n action?: (button?: EventTarget) => boolean | void;\n placement?: 'left' | 'right';\n}\n\nexport interface MenuSwitcherButton\n extends Omit<\n IconButtonProps,\n | 'id'\n | 'type'\n | 'action'\n | 'shape'\n | 'variant'\n | 'hideOnLowWidth'\n | 'flatEdge'\n | 'isInMobileMenu'\n | 'useTransparentBackground'\n | 'shouldNotInteract'\n | 'iconColor'\n | 'unsetIconSize'\n | 'borderRadius'\n | 'focusBackgroundColor'\n | 'children'\n | 'invertFocus'\n > {\n type: 'switcher';\n placement?: 'left' | 'right';\n action?: (button?: EventTarget) => boolean | void;\n}\n\nexport type DesktopMenuButtonTypes = MenuIconButton | MenuProfileButton | MenuSwitcherButton;\nexport type MobileMenuButtonTypes = MenuIconSubMenuButton | MenuIconButton | MenuProfileButton | MenuSwitcherButton;\n\nexport interface MobileNavigationMenuProps {\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n\n header?: MenuGroupHeader;\n\n items?: (MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup)[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport interface DesktopNavigationMenuProps {\n buttons?: DesktopMenuButtonTypes[];\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n action?: MenuButton;\n reverseRightSideOrder?: boolean;\n}\n\n// @ts-ignore\nexport interface MenuNavigationGroup<T = MenuNavigationItemTypeDesktopGroup | MenuNavigationItem | MenuNavigationSection | MenuNavigationGroup> {\n label: string;\n note?: string;\n\n buttons?: MobileMenuButtonTypes[];\n header?: MenuGroupHeader;\n\n items: T[];\n\n footer?: MenuGroupFooter;\n action?: MenuButton;\n}\n\nexport type MenuNavigationItem = {\n icon?: React.ReactNode;\n to: string;\n exact?: boolean;\n disabled?: boolean;\n external?: boolean;\n action?: (e: React.MouseEvent) => void;\n label: string;\n note?: string;\n pinned?: boolean;\n subItems?: MenuNavigationItem[];\n} & Omit<NavLinkProps, 'onClick' | 'to' | 'exact' | 'onMouseDown'>;\n\nexport interface MenuNavigationSection<T = MenuNavigationItem> {\n divider?: boolean;\n pinned?: boolean;\n label?: string;\n items: T[];\n}\n\nexport type MenuNavigationItemTypeItem = MenuNavigationItem & {\n type?: 'item';\n};\n\nexport type MenuNavigationItemTypeDesktopGroup = {\n id: string;\n label?: string;\n disabled?: boolean;\n pinned?: boolean;\n type?: 'desktopgroup';\n expanded?: boolean;\n items: (MenuNavigationItemTypeItem | MenuNavigationItemTypeDesktopGroup)[];\n}\n\nexport type MenuNavigationItemTypeGroup = MenuNavigationGroup<MenuNavigationItemTypeItem | MenuNavigationItemTypeGroup | MenuNavigationItemTypeSection> & {\n type: 'group';\n icon?: React.ReactNode;\n pinned?: boolean;\n disabled?: boolean;\n};\n\nexport type MenuNavigationItemTypeSection = MenuNavigationSection<MenuNavigationItemTypeItem> & {\n type: 'section';\n};\n\nexport type MenuNavigationCustomSubMenu = {\n type: 'custom';\n label?: string;\n buttons?: MobileMenuButtonTypes[];\n custom: () => React.ReactNode;\n};\n"],"mappings":""}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.checkIfContainsItem = void 0;
7
+ var checkIfContainsItem = function checkIfContainsItem(item, activeId) {
8
+ if (item.id == activeId) return true;
9
+ if (item.items.findIndex(function (x) {
10
+ return x.type == 'item' && x.to == activeId;
11
+ }) >= 0) return true;
12
+ return item.items.some(function (x) {
13
+ return x.type == 'desktopgroup' && checkIfContainsItem(x, activeId);
14
+ });
15
+ };
16
+ exports.checkIfContainsItem = checkIfContainsItem;
17
+ //# sourceMappingURL=utils.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.cjs","names":["checkIfContainsItem","item","activeId","id","items","findIndex","x","type","to","some"],"sources":["../../src/GlobalNavigationBar/utils.tsx"],"sourcesContent":["import { MenuNavigationItemTypeDesktopGroup } from './types';\n\nexport const checkIfContainsItem = (item: MenuNavigationItemTypeDesktopGroup, activeId: string) : boolean => {\n if(item.id == activeId)\n return true;\n if(item.items.findIndex(x => x.type == 'item' && x.to == activeId) >= 0)\n return true;\n return item.items.some(x => x.type == 'desktopgroup' && checkIfContainsItem(x, activeId));\n}"],"mappings":";;;;;;AAEO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAIC,IAAwC,EAAEC,QAAgB,EAAe;EACzG,IAAGD,IAAI,CAACE,EAAE,IAAID,QAAQ,EAClB,OAAO,IAAI;EACf,IAAGD,IAAI,CAACG,KAAK,CAACC,SAAS,CAAC,UAAAC,CAAC;IAAA,OAAIA,CAAC,CAACC,IAAI,IAAI,MAAM,IAAID,CAAC,CAACE,EAAE,IAAIN,QAAQ;EAAA,EAAC,IAAI,CAAC,EACnE,OAAO,IAAI;EACf,OAAOD,IAAI,CAACG,KAAK,CAACK,IAAI,CAAC,UAAAH,CAAC;IAAA,OAAIA,CAAC,CAACC,IAAI,IAAI,cAAc,IAAIP,mBAAmB,CAACM,CAAC,EAAEJ,QAAQ,CAAC;EAAA,EAAC;AAC7F,CAAC;AAAA"}
@@ -0,0 +1,2 @@
1
+ import { MenuNavigationItemTypeDesktopGroup } from './types';
2
+ export declare const checkIfContainsItem: (item: MenuNavigationItemTypeDesktopGroup, activeId: string) => boolean;
@@ -0,0 +1,10 @@
1
+ export var checkIfContainsItem = function checkIfContainsItem(item, activeId) {
2
+ if (item.id == activeId) return true;
3
+ if (item.items.findIndex(function (x) {
4
+ return x.type == 'item' && x.to == activeId;
5
+ }) >= 0) return true;
6
+ return item.items.some(function (x) {
7
+ return x.type == 'desktopgroup' && checkIfContainsItem(x, activeId);
8
+ });
9
+ };
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["checkIfContainsItem","item","activeId","id","items","findIndex","x","type","to","some"],"sources":["../../src/GlobalNavigationBar/utils.tsx"],"sourcesContent":["import { MenuNavigationItemTypeDesktopGroup } from './types';\n\nexport const checkIfContainsItem = (item: MenuNavigationItemTypeDesktopGroup, activeId: string) : boolean => {\n if(item.id == activeId)\n return true;\n if(item.items.findIndex(x => x.type == 'item' && x.to == activeId) >= 0)\n return true;\n return item.items.some(x => x.type == 'desktopgroup' && checkIfContainsItem(x, activeId));\n}"],"mappings":"AAEA,OAAO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAmB,CAAIC,IAAwC,EAAEC,QAAgB,EAAe;EACzG,IAAGD,IAAI,CAACE,EAAE,IAAID,QAAQ,EAClB,OAAO,IAAI;EACf,IAAGD,IAAI,CAACG,KAAK,CAACC,SAAS,CAAC,UAAAC,CAAC;IAAA,OAAIA,CAAC,CAACC,IAAI,IAAI,MAAM,IAAID,CAAC,CAACE,EAAE,IAAIN,QAAQ;EAAA,EAAC,IAAI,CAAC,EACnE,OAAO,IAAI;EACf,OAAOD,IAAI,CAACG,KAAK,CAACK,IAAI,CAAC,UAAAH,CAAC;IAAA,OAAIA,CAAC,CAACC,IAAI,IAAI,cAAc,IAAIP,mBAAmB,CAACM,CAAC,EAAEJ,QAAQ,CAAC;EAAA,EAAC;AAC7F,CAAC"}
@@ -20,6 +20,7 @@ var _colors = _interopRequireDefault(require("../styles/colors"));
20
20
  var _icons = require("../icons");
21
21
  var _DatepickerFieldHeader = require("./DatepickerFieldHeader");
22
22
  var _styles = require("../styles");
23
+ var _TooltipOverflow = _interopRequireDefault(require("../Tooltips/TooltipOverflow"));
23
24
  var _styling = require("./styling");
24
25
  require("react-datepicker/dist/react-datepicker.css");
25
26
  var _common = require("../common");
@@ -86,12 +87,14 @@ var DatepickerField = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
86
87
  _React$useState8 = (0, _slicedToArray2.default)(_React$useState7, 2),
87
88
  open = _React$useState8[0],
88
89
  setOpen = _React$useState8[1];
89
-
90
+ var getFormattedValue = function getFormattedValue() {
91
+ return (0, _dayjs.default)(value).format(dateFormat ? dateFormat : 'MMMM Do, YYYY');
92
+ };
90
93
  /**
91
94
  * Format the date in a specific way.
92
95
  */
93
96
  _react.default.useEffect(function () {
94
- if (value) inputRef.current.value = (0, _dayjs.default)(value).format(dateFormat ? dateFormat : 'MMMM Do, YYYY');
97
+ if (value) inputRef.current.value = getFormattedValue();
95
98
  }, [value]);
96
99
  _react.default.useEffect(function () {
97
100
  if (yearPickerMode) {
@@ -140,6 +143,7 @@ var DatepickerField = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
140
143
  onBlur && onBlur(e);
141
144
  }
142
145
  };
146
+ var iconSize = 24;
143
147
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
144
148
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DatePickerContainer, {
145
149
  "data-testId": dataTestId,
@@ -185,10 +189,10 @@ var DatepickerField = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
185
189
  setYearPickerMode: setYearPickerMode
186
190
  }), null);
187
191
  } : undefined,
188
- customInput: /*#__PURE__*/(0, _jsxRuntime.jsx)(_styling.InputWrapper, {
192
+ customInput: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styling.InputWrapper, {
189
193
  disabled: disabled,
190
194
  readOnly: readOnly,
191
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(DatepickerRow, {
195
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(DatepickerRow, {
192
196
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StyledInputFieldStyling, _objectSpread({
193
197
  ref: inputRef,
194
198
  type: "text",
@@ -204,6 +208,7 @@ var DatepickerField = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
204
208
  },
205
209
  autoComplete: autoComplete,
206
210
  placeholder: placeholder,
211
+ extraRightPadding: iconSize,
207
212
  disabled: disabled,
208
213
  readOnly: true,
209
214
  suppressReadOnlyStyles: !readOnly,
@@ -213,7 +218,15 @@ var DatepickerField = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
213
218
  size: "24"
214
219
  })
215
220
  })]
216
- })
221
+ }), !open && /*#__PURE__*/(0, _jsxRuntime.jsx)(_TooltipOverflow.default, {
222
+ input: inputRef,
223
+ withArrow: true,
224
+ maxWidth: "100%",
225
+ size: _types.Size.Small,
226
+ align: "end",
227
+ position: "bottom",
228
+ children: getFormattedValue()
229
+ })]
217
230
  })
218
231
  })
219
232
  }), validationMessage && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_styling.ErrorMessage, {
@@ -1 +1 @@
1
- {"version":3,"file":"DatepickerField.cjs","names":["dayjs","extend","advancedFormat","DatePickerContainer","styled","div","Z_INDEXES","dropdown","props","margin","COLORS","primary_20","focusStyles","neutral_20","neutral_200","yearPicker","ComponentSStyling","ComponentTextStyle","Bold","neutral_600","scrollBarStyling","Size","Small","ComponentMStyling","Regular","white","primary_700","primary_500","neutral_700","neutral_100","IconWrapper","focus","DatepickerRow","StyledInputFieldStyling","InputFieldStyling","neutral_500","primary_300","primary_200","primary_100","primary_800","neutral_300","DatepickerField","React","forwardRef","ref","disabled","readOnly","onChange","invalid","value","validationMessage","dateFormat","autoComplete","placeholder","required","yearsBeforeCurrentDate","yearsAfterCurrentDate","onBlur","id","dataTestId","rest","inputRef","useFocusVisibleRef","datepickerRef","useRef","useState","activeMonthPage","setActiveMonthPage","yearPickerMode","setYearPickerMode","openAt","setOpenAt","open","setOpen","useEffect","current","format","selectedDate","document","getElementsByClassName","dropdownParent","parentElement","scrollTop","offsetTop","offsetHeight","useImperativeHandle","handleCalendarClose","blur","handleCalendarOpen","maxDate","Date","setFullYear","getFullYear","minDate","itemsNumber","Math","round","handleKeyDown","e","key","handleBlur","currentTarget","contains","relatedTarget","newDate","setMonth","en","undefined","params","createElement","DatepickerFieldHeader","customHeaderCount","setSelectionRange","critical_400"],"sources":["../../src/InputFields/DatepickerField.tsx"],"sourcesContent":["/**\n * Import react libraries.\n */\nimport React from 'react';\n\n/**\n * Import third-party libraries.\n */\nimport styled from 'styled-components';\nimport DatePicker, { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\nimport en from 'date-fns/locale/en-GB';\nimport dayjs from 'dayjs';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\n\ndayjs.extend(advancedFormat);\n\n/**\n * Import custom components.\n */\nimport COLORS from '../styles/colors';\nimport {SystemIcons} from '../icons';\nimport {DatepickerFieldHeader} from './DatepickerFieldHeader';\nimport {ComponentTextStyle, focusStyles, scrollBarStyling} from '../styles';\n\n/**\n * Import custom styles.\n */\nimport {ErrorMessage, InputFieldStyling, InputWrapper} from './styling';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport {ComponentMStyling, ComponentSStyling} from '../styles';\nimport {Z_INDEXES} from '../styles';\nimport {useFocusVisibleRef} from '../common';\nimport {Size, Testable} from '../types';\n\n/**\n * Add custom types.\n */\ntype DatepickerFieldProps = Testable & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'size' | 'onBlur'> & {\n value?: Date;\n onChange?: (date: Date) => void;\n onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;\n\n invalid?: boolean;\n dateFormat?: string;\n validationMessage?: string;\n autoComplete?: string;\n placeholder?: string;\n yearPicker?: boolean;\n yearsBeforeCurrentDate?: number;\n yearsAfterCurrentDate?: number;\n margin?: string;\n};\n\n/**\n * Add custom styles.\n */\nconst DatePickerContainer = styled.div<{ yearPicker: boolean; margin: string }>`\n .react-datepicker-popper {\n z-index: ${Z_INDEXES.dropdown};\n }\n\n > div {\n display: block;\n\n ${(props) => (props.margin ? `margin: ${props.margin};` : '')}\n .react-datepicker {\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgb(0 0 0 / 15%);\n border: 1px solid #e5e5e5;\n }\n .react-datepicker__input-container{\n z-index: 0;\n }\n\n .react-datepicker__navigation {\n line-height: normal;\n text-indent: inherit;\n border: none;\n border-radius: 4px;\n height: 32px;\n width: 32px;\n outline: none;\n margin: 0px;\n color: transparent;\n\n &:hover {\n background: ${COLORS.primary_20};\n\n &.react-datepicker__navigation--previous::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M15.1975 4.46474C15.5885 4.85478 15.5893 5.48794 15.1993 5.87895L8.92124 12.1727L15.1993 18.4665C15.5893 18.8575 15.5885 19.4907 15.1975 19.8807C14.8065 20.2708 14.1734 20.27 13.7833 19.879L6.8008 12.879C6.41145 12.4886 6.41145 11.8568 6.8008 11.4665L13.7833 4.46651C14.1734 4.0755 14.8065 4.0747 15.1975 4.46474Z' fill='%23215369' /%3E%3C/svg%3E\");\n }\n\n &.react-datepicker__navigation--next::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M9.24214 19.8807C8.85113 19.4907 8.85034 18.8575 9.24038 18.4665L15.5184 12.1727L9.24037 5.87895C8.85034 5.48794 8.85113 4.85478 9.24214 4.46474C9.63315 4.0747 10.2663 4.07549 10.6564 4.46651L17.6389 11.4665C18.0282 11.8568 18.0282 12.4886 17.6389 12.879L10.6564 19.879C10.2663 20.27 9.63316 20.2708 9.24214 19.8807Z' fill='%23215369' /%3E%3C/svg%3E\");\n }\n }\n\n &:focus {\n ${focusStyles}\n &.react-datepicker__navigation--next::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M9.24214 19.8807C8.85113 19.4907 8.85034 18.8575 9.24038 18.4665L15.5184 12.1727L9.24037 5.87895C8.85034 5.48794 8.85113 4.85478 9.24214 4.46474C9.63315 4.0747 10.2663 4.07549 10.6564 4.46651L17.6389 11.4665C18.0282 11.8568 18.0282 12.4886 17.6389 12.879L10.6564 19.879C10.2663 20.27 9.63316 20.2708 9.24214 19.8807Z' fill='%23163746' /%3E%3C/svg%3E\");\n }\n\n &.react-datepicker__navigation--previous::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M15.1975 4.46474C15.5885 4.85478 15.5893 5.48794 15.1993 5.87895L8.92124 12.1727L15.1993 18.4665C15.5893 18.8575 15.5885 19.4907 15.1975 19.8807C14.8065 20.2708 14.1734 20.27 13.7833 19.879L6.8008 12.879C6.41145 12.4886 6.41145 11.8568 6.8008 11.4665L13.7833 4.46651C14.1734 4.0755 14.8065 4.0747 15.1975 4.46474Z' fill='%23163746' /%3E%3C/svg%3E\");\n }\n }\n\n &::before {\n text-align: center;\n display: inline-block;\n content: '';\n height: 32px;\n width: 32px;\n vertical-align: middle;\n }\n\n &.react-datepicker__navigation--next::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M9.24214 19.8807C8.85113 19.4907 8.85034 18.8575 9.24038 18.4665L15.5184 12.1727L9.24037 5.87895C8.85034 5.48794 8.85113 4.85478 9.24214 4.46474C9.63315 4.0747 10.2663 4.07549 10.6564 4.46651L17.6389 11.4665C18.0282 11.8568 18.0282 12.4886 17.6389 12.879L10.6564 19.879C10.2663 20.27 9.63316 20.2708 9.24214 19.8807Z' fill='%23666666' /%3E%3C/svg%3E\");\n }\n\n &.react-datepicker__navigation--previous::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M15.1975 4.46474C15.5885 4.85478 15.5893 5.48794 15.1993 5.87895L8.92124 12.1727L15.1993 18.4665C15.5893 18.8575 15.5885 19.4907 15.1975 19.8807C14.8065 20.2708 14.1734 20.27 13.7833 19.879L6.8008 12.879C6.41145 12.4886 6.41145 11.8568 6.8008 11.4665L13.7833 4.46651C14.1734 4.0755 14.8065 4.0747 15.1975 4.46474Z' fill='%23666666' /%3E%3C/svg%3E\");\n }\n }\n\n .react-datepicker__month-container,\n .react-datepicker__year--container {\n width: 336px;\n }\n\n .react-datepicker__month {\n margin: 0px;\n }\n\n .react-datepicker__triangle {\n left: 50% !important;\n display: none;\n }\n\n .react-datepicker-popper[data-placement^='bottom'] {\n margin-top: 0;\n }\n\n .react-datepicker-popper[data-placement^='bottom'] .react-datepicker__triangle {\n border-bottom-color: ${COLORS.neutral_20};\n }\n\n .react-datepicker__header {\n border-bottom: 1px solid ${COLORS.neutral_200};\n background: ${COLORS.neutral_20};\n height: ${(props) => (!props.yearPicker ? '96px' : '54px')};\n padding-top: 0px;\n }\n\n .react-datepicker__current-month {\n height: 48px;\n display: inline-flex;\n align-items: center;\n margin-right: 5px;\n\n ${ComponentSStyling(ComponentTextStyle.Bold, COLORS.neutral_600)}\n }\n\n .react-datepicker__year {\n max-height: 300px;\n overflow-y: scroll;\n\n ${scrollBarStyling(Size.Small)}\n }\n\n .react-datepicker__year-wrapper {\n max-width: 100%;\n justify-content: space-around;\n }\n\n .react-datepicker__day-name {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: 48px;\n margin: 0px;\n width: 48px;\n\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n }\n\n .react-datepicker__year-text {\n background: ${COLORS.white};\n border: none;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n margin-top: 20px;\n padding-top: 10px;\n padding-bottom: 10px;\n\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n &.react-datepicker__year-text--disabled {\n display: none;\n }\n\n &.react-datepicker__day--keyboard-selected {\n color: ${COLORS.neutral_600};\n background: ${COLORS.white};\n font-weight: 400;\n border: none;\n }\n\n &:hover {\n color: ${COLORS.primary_700};\n background: ${COLORS.primary_20};\n }\n\n &:focus {\n ${focusStyles}\n }\n\n &.react-datepicker__year-text--selected {\n color: ${COLORS.white} !important;\n background: ${COLORS.primary_500} !important;\n }\n }\n\n .react-datepicker__day {\n background: ${COLORS.white};\n border: none;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: 40px;\n width: 40px;\n margin: 4px;\n\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n &.react-datepicker__day--keyboard-selected {\n color: ${COLORS.neutral_600};\n background: ${COLORS.white};\n font-weight: 400;\n border: none;\n }\n\n &:hover {\n color: ${COLORS.primary_700};\n background: ${COLORS.primary_20};\n }\n\n &:focus {\n ${focusStyles}\n }\n\n &.react-datepicker__day--selected {\n color: ${COLORS.white} !important;\n background: ${COLORS.primary_500} !important;\n }\n\n &.react-datepicker__day--today {\n border-radius: 0.3rem;\n color: ${COLORS.neutral_700};\n background: ${COLORS.neutral_100};\n\n &:hover {\n color: ${COLORS.primary_700};\n background: ${COLORS.primary_20};\n }\n\n &:focus {\n ${focusStyles}\n }\n }\n }\n }\n`;\n\nconst IconWrapper = styled.div`\n pointer-events: none;\n position: absolute;\n left: 16px;\n width: 24px;\n height: 24px;\n z-index: ${+Z_INDEXES.focus + 1};\n`;\n\nconst DatepickerRow = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst StyledInputFieldStyling = styled(InputFieldStyling)`\n padding-left: 48px !important;\n \n &::placeholder {\n color: ${COLORS.neutral_500};\n }\n\n &:focus:not(.focus-visible) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_300};\n }\n\n &:hover {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_200};\n\n ::placeholder {\n color: ${COLORS.primary_700};\n }\n\n cursor: pointer;\n background-color: ${COLORS.primary_20};\n color: ${COLORS.primary_700};\n }\n\n &:active,\n &.open {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_300};\n background-color: ${COLORS.primary_100};\n color: ${COLORS.primary_800};\n\n ::placeholder {\n color: ${COLORS.primary_800};\n }\n }\n \n &:disabled {\n background-color: ${COLORS.white};\n }\n\n & ~ ${IconWrapper}{\n color: ${COLORS.neutral_600};\n }\n\n &:hover ~ ${IconWrapper} {\n color: ${COLORS.primary_700};\n }\n\n &:active ~ ${IconWrapper}, &.open ~ ${IconWrapper} {\n color: ${COLORS.primary_800};\n }\n\n &[tabindex='-1'] ~ ${IconWrapper} {\n color: ${COLORS.neutral_300};\n }\n`;\n\nconst DatepickerField = React.forwardRef(({\n disabled,\n readOnly,\n onChange,\n invalid,\n value,\n validationMessage,\n dateFormat,\n autoComplete,\n placeholder,\n required,\n yearPicker,\n yearsBeforeCurrentDate,\n yearsAfterCurrentDate,\n margin,\n onBlur,\n id,\n dataTestId,\n ...rest\n }: DatepickerFieldProps, ref) => {\n // Globally used variables within the component\n const inputRef = useFocusVisibleRef();\n const datepickerRef = React.useRef<any>(null);\n const [activeMonthPage, setActiveMonthPage] = React.useState<number>(-1);\n const [yearPickerMode, setYearPickerMode] = React.useState<boolean>(false);\n const [openAt, setOpenAt] = React.useState<Date | null>(null);\n // 'open' flag is used only for tracking current state of the dropdown,\n // for explicitly opening/closing the picker we are using 'datepickerRef.current.setOpen'\n const [open, setOpen] = React.useState<boolean>(false);\n\n /**\n * Format the date in a specific way.\n */\n React.useEffect(() => {\n if (value) inputRef.current.value = dayjs(value).format(dateFormat ? dateFormat : 'MMMM Do, YYYY');\n }, [value]);\n\n React.useEffect(() => {\n if (yearPickerMode) {\n //unfortunately, since there are no refs, and year pickers is rendered not by our code, but by 'react-datepicker'\n //we have to touch DOM directly\n const selectedDate = document.getElementsByClassName('react-datepicker__year-text--selected')[0] as HTMLElement;\n const dropdownParent = selectedDate?.parentElement?.parentElement;\n if (selectedDate && dropdownParent) dropdownParent.scrollTop = selectedDate.offsetTop - 2 * selectedDate.offsetHeight;\n }\n }, [yearPickerMode]);\n\n //we have to manually reopen the calendar when needed, to guarantee that datepicker will show selected date after year selection\n //otherwise after year selection datepicker will show January month of the selected year\n React.useEffect(() => {\n if (openAt) {\n datepickerRef.current.setOpen(true);\n //setOpenAt(null);\n }\n }, [openAt]);\n\n React.useImperativeHandle(ref, () => inputRef.current, [inputRef]);\n\n const handleCalendarClose = () => {\n inputRef.current?.blur();\n setOpen(false);\n };\n\n const handleCalendarOpen = () => {\n if (openAt) setOpenAt(null);\n setOpen(true);\n };\n\n let maxDate = new Date(value && new Date(value) > new Date() ? new Date(value) : new Date());\n maxDate.setFullYear(maxDate.getFullYear() + (yearsAfterCurrentDate ?? 50));\n\n //itemsNumber - controls number of year select options generated in the dropdown\n //items related to dates higher than 'maxDate' will be hidden, thus to avoid creating hundreds of invisible divs, we divide by 5\n let minDate = new Date(value && new Date(value) < new Date() ? new Date(value) : new Date());\n const itemsNumber = Math.round((minDate.getFullYear() - (yearsBeforeCurrentDate ?? 15)) / 5);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape' || e.key === 'Esc')\n datepickerRef.current.setOpen(false);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n // @ts-ignore\n if (!e.currentTarget.contains(e.relatedTarget)) {\n onBlur && onBlur(e);\n }\n };\n\n return (\n <>\n {/* Let's render the input itself */}\n <DatePickerContainer data-testId={dataTestId} yearPicker={yearPickerMode} margin={margin || ''} onBlur={handleBlur}>\n <DatePicker\n ref={datepickerRef}\n onCalendarOpen={handleCalendarOpen}\n onCalendarClose={handleCalendarClose}\n onKeyDown={handleKeyDown}\n id={id}\n onClickOutside={() => datepickerRef.current.setOpen(false)}\n\n onChange={(e: any) => {\n if (onChange) {\n if (yearPickerMode) {\n const newDate = new Date();\n newDate.setFullYear(e.getFullYear());\n newDate.setMonth(activeMonthPage);\n setOpenAt(newDate);\n } else onChange(e);\n }\n if (yearPickerMode) setYearPickerMode(false);\n }}\n disabled={disabled || readOnly}\n locale={en}\n showYearPicker={yearPickerMode}\n //we manipulate 'yearItemNumber' and 'maxDate' to guarantee number of year select options shown before and after selected year\n yearItemNumber={yearPickerMode ? itemsNumber : undefined}\n maxDate={yearPickerMode ? maxDate : undefined}\n selected={value}\n openToDate={openAt ?? undefined}\n preventOpenOnFocus={true}\n shouldCloseOnSelect={true}\n renderCustomHeader={\n yearPicker\n ? (params: ReactDatePickerCustomHeaderProps) =>\n React.createElement(\n DatepickerFieldHeader,\n {\n ...params,\n setActiveMonthPage,\n customHeaderCount: 0,\n yearPickerMode: yearPickerMode,\n setYearPickerMode: setYearPickerMode,\n },\n null,\n )\n : undefined\n }\n customInput={\n <InputWrapper disabled={disabled} readOnly={readOnly}>\n <DatepickerRow>\n <StyledInputFieldStyling\n ref={inputRef}\n type=\"text\"\n name=\"datepicker\"\n onKeyDown={(e) => e.key === 'Enter' && datepickerRef.current.setOpen(true)}\n className={(invalid ? 'invalid' : '' + (open ? ' open' : ''))}\n tabIndex={disabled || readOnly ? -1 : 0}\n onFocus={(e) => inputRef.current?.setSelectionRange(0, 0)}\n autoComplete={autoComplete}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={true}\n suppressReadOnlyStyles={!readOnly}\n required={required}\n {...rest}\n />\n <IconWrapper>\n <SystemIcons.Calendar size=\"24\"/>\n </IconWrapper>\n </DatepickerRow>\n </InputWrapper>\n }\n />\n </DatePickerContainer>\n\n {/* If there is an error, let's render the error */}\n {validationMessage && (\n <ErrorMessage>\n <SystemIcons.TechnicalWarning color={COLORS.critical_400}/>\n <span>{validationMessage}</span>\n </ErrorMessage>\n )}\n </>\n );\n});\n\nexport default DatepickerField;\n"],"mappings":"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"}
1
+ {"version":3,"file":"DatepickerField.cjs","names":["dayjs","extend","advancedFormat","DatePickerContainer","styled","div","Z_INDEXES","dropdown","props","margin","COLORS","primary_20","focusStyles","neutral_20","neutral_200","yearPicker","ComponentSStyling","ComponentTextStyle","Bold","neutral_600","scrollBarStyling","Size","Small","ComponentMStyling","Regular","white","primary_700","primary_500","neutral_700","neutral_100","IconWrapper","focus","DatepickerRow","StyledInputFieldStyling","InputFieldStyling","neutral_500","primary_300","primary_200","primary_100","primary_800","neutral_300","DatepickerField","React","forwardRef","ref","disabled","readOnly","onChange","invalid","value","validationMessage","dateFormat","autoComplete","placeholder","required","yearsBeforeCurrentDate","yearsAfterCurrentDate","onBlur","id","dataTestId","rest","inputRef","useFocusVisibleRef","datepickerRef","useRef","useState","activeMonthPage","setActiveMonthPage","yearPickerMode","setYearPickerMode","openAt","setOpenAt","open","setOpen","getFormattedValue","format","useEffect","current","selectedDate","document","getElementsByClassName","dropdownParent","parentElement","scrollTop","offsetTop","offsetHeight","useImperativeHandle","handleCalendarClose","blur","handleCalendarOpen","maxDate","Date","setFullYear","getFullYear","minDate","itemsNumber","Math","round","handleKeyDown","e","key","handleBlur","currentTarget","contains","relatedTarget","iconSize","newDate","setMonth","en","undefined","params","createElement","DatepickerFieldHeader","customHeaderCount","setSelectionRange","critical_400"],"sources":["../../src/InputFields/DatepickerField.tsx"],"sourcesContent":["/**\n * Import react libraries.\n */\nimport React from 'react';\n\n/**\n * Import third-party libraries.\n */\nimport styled from 'styled-components';\nimport DatePicker, { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\nimport en from 'date-fns/locale/en-GB';\nimport dayjs from 'dayjs';\nimport advancedFormat from 'dayjs/plugin/advancedFormat';\n\ndayjs.extend(advancedFormat);\n\n/**\n * Import custom components.\n */\nimport COLORS from '../styles/colors';\nimport {SystemIcons} from '../icons';\nimport {DatepickerFieldHeader} from './DatepickerFieldHeader';\nimport {ComponentTextStyle, focusStyles, scrollBarStyling} from '../styles';\nimport TooltipOverflow from '../Tooltips/TooltipOverflow';\n\n/**\n * Import custom styles.\n */\nimport {ErrorMessage, InputFieldStyling, InputWrapper} from './styling';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport {ComponentMStyling, ComponentSStyling} from '../styles';\nimport {Z_INDEXES} from '../styles';\nimport {useFocusVisibleRef} from '../common';\nimport {Size, Testable} from '../types';\n\n/**\n * Add custom types.\n */\ntype DatepickerFieldProps = Testable & Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'size' | 'onBlur'> & {\n value?: Date;\n onChange?: (date: Date) => void;\n onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;\n\n invalid?: boolean;\n dateFormat?: string;\n validationMessage?: string;\n autoComplete?: string;\n placeholder?: string;\n yearPicker?: boolean;\n yearsBeforeCurrentDate?: number;\n yearsAfterCurrentDate?: number;\n margin?: string;\n};\n\n/**\n * Add custom styles.\n */\nconst DatePickerContainer = styled.div<{ yearPicker: boolean; margin: string }>`\n .react-datepicker-popper {\n z-index: ${Z_INDEXES.dropdown};\n }\n\n > div {\n display: block;\n\n ${(props) => (props.margin ? `margin: ${props.margin};` : '')}\n .react-datepicker {\n box-sizing: border-box;\n box-shadow: 0px 2px 4px rgb(0 0 0 / 15%);\n border: 1px solid #e5e5e5;\n }\n .react-datepicker__input-container{\n z-index: 0;\n }\n\n .react-datepicker__navigation {\n line-height: normal;\n text-indent: inherit;\n border: none;\n border-radius: 4px;\n height: 32px;\n width: 32px;\n outline: none;\n margin: 0px;\n color: transparent;\n\n &:hover {\n background: ${COLORS.primary_20};\n\n &.react-datepicker__navigation--previous::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M15.1975 4.46474C15.5885 4.85478 15.5893 5.48794 15.1993 5.87895L8.92124 12.1727L15.1993 18.4665C15.5893 18.8575 15.5885 19.4907 15.1975 19.8807C14.8065 20.2708 14.1734 20.27 13.7833 19.879L6.8008 12.879C6.41145 12.4886 6.41145 11.8568 6.8008 11.4665L13.7833 4.46651C14.1734 4.0755 14.8065 4.0747 15.1975 4.46474Z' fill='%23215369' /%3E%3C/svg%3E\");\n }\n\n &.react-datepicker__navigation--next::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M9.24214 19.8807C8.85113 19.4907 8.85034 18.8575 9.24038 18.4665L15.5184 12.1727L9.24037 5.87895C8.85034 5.48794 8.85113 4.85478 9.24214 4.46474C9.63315 4.0747 10.2663 4.07549 10.6564 4.46651L17.6389 11.4665C18.0282 11.8568 18.0282 12.4886 17.6389 12.879L10.6564 19.879C10.2663 20.27 9.63316 20.2708 9.24214 19.8807Z' fill='%23215369' /%3E%3C/svg%3E\");\n }\n }\n\n &:focus {\n ${focusStyles}\n &.react-datepicker__navigation--next::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M9.24214 19.8807C8.85113 19.4907 8.85034 18.8575 9.24038 18.4665L15.5184 12.1727L9.24037 5.87895C8.85034 5.48794 8.85113 4.85478 9.24214 4.46474C9.63315 4.0747 10.2663 4.07549 10.6564 4.46651L17.6389 11.4665C18.0282 11.8568 18.0282 12.4886 17.6389 12.879L10.6564 19.879C10.2663 20.27 9.63316 20.2708 9.24214 19.8807Z' fill='%23163746' /%3E%3C/svg%3E\");\n }\n\n &.react-datepicker__navigation--previous::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M15.1975 4.46474C15.5885 4.85478 15.5893 5.48794 15.1993 5.87895L8.92124 12.1727L15.1993 18.4665C15.5893 18.8575 15.5885 19.4907 15.1975 19.8807C14.8065 20.2708 14.1734 20.27 13.7833 19.879L6.8008 12.879C6.41145 12.4886 6.41145 11.8568 6.8008 11.4665L13.7833 4.46651C14.1734 4.0755 14.8065 4.0747 15.1975 4.46474Z' fill='%23163746' /%3E%3C/svg%3E\");\n }\n }\n\n &::before {\n text-align: center;\n display: inline-block;\n content: '';\n height: 32px;\n width: 32px;\n vertical-align: middle;\n }\n\n &.react-datepicker__navigation--next::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M9.24214 19.8807C8.85113 19.4907 8.85034 18.8575 9.24038 18.4665L15.5184 12.1727L9.24037 5.87895C8.85034 5.48794 8.85113 4.85478 9.24214 4.46474C9.63315 4.0747 10.2663 4.07549 10.6564 4.46651L17.6389 11.4665C18.0282 11.8568 18.0282 12.4886 17.6389 12.879L10.6564 19.879C10.2663 20.27 9.63316 20.2708 9.24214 19.8807Z' fill='%23666666' /%3E%3C/svg%3E\");\n }\n\n &.react-datepicker__navigation--previous::before {\n background-image: url(\"data:image/svg+xml,%3Csvg style='width: 32px; height: 32px;' viewBox='0 0 25 25' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fillRule='evenodd' clipRule='evenodd' d='M15.1975 4.46474C15.5885 4.85478 15.5893 5.48794 15.1993 5.87895L8.92124 12.1727L15.1993 18.4665C15.5893 18.8575 15.5885 19.4907 15.1975 19.8807C14.8065 20.2708 14.1734 20.27 13.7833 19.879L6.8008 12.879C6.41145 12.4886 6.41145 11.8568 6.8008 11.4665L13.7833 4.46651C14.1734 4.0755 14.8065 4.0747 15.1975 4.46474Z' fill='%23666666' /%3E%3C/svg%3E\");\n }\n }\n\n .react-datepicker__month-container,\n .react-datepicker__year--container {\n width: 336px;\n }\n\n .react-datepicker__month {\n margin: 0px;\n }\n\n .react-datepicker__triangle {\n left: 50% !important;\n display: none;\n }\n\n .react-datepicker-popper[data-placement^='bottom'] {\n margin-top: 0;\n }\n\n .react-datepicker-popper[data-placement^='bottom'] .react-datepicker__triangle {\n border-bottom-color: ${COLORS.neutral_20};\n }\n\n .react-datepicker__header {\n border-bottom: 1px solid ${COLORS.neutral_200};\n background: ${COLORS.neutral_20};\n height: ${(props) => (!props.yearPicker ? '96px' : '54px')};\n padding-top: 0px;\n }\n\n .react-datepicker__current-month {\n height: 48px;\n display: inline-flex;\n align-items: center;\n margin-right: 5px;\n\n ${ComponentSStyling(ComponentTextStyle.Bold, COLORS.neutral_600)}\n }\n\n .react-datepicker__year {\n max-height: 300px;\n overflow-y: scroll;\n\n ${scrollBarStyling(Size.Small)}\n }\n\n .react-datepicker__year-wrapper {\n max-width: 100%;\n justify-content: space-around;\n }\n\n .react-datepicker__day-name {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: 48px;\n margin: 0px;\n width: 48px;\n\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n }\n\n .react-datepicker__year-text {\n background: ${COLORS.white};\n border: none;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n margin-top: 20px;\n padding-top: 10px;\n padding-bottom: 10px;\n\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n &.react-datepicker__year-text--disabled {\n display: none;\n }\n\n &.react-datepicker__day--keyboard-selected {\n color: ${COLORS.neutral_600};\n background: ${COLORS.white};\n font-weight: 400;\n border: none;\n }\n\n &:hover {\n color: ${COLORS.primary_700};\n background: ${COLORS.primary_20};\n }\n\n &:focus {\n ${focusStyles}\n }\n\n &.react-datepicker__year-text--selected {\n color: ${COLORS.white} !important;\n background: ${COLORS.primary_500} !important;\n }\n }\n\n .react-datepicker__day {\n background: ${COLORS.white};\n border: none;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: 40px;\n width: 40px;\n margin: 4px;\n\n ${ComponentMStyling(ComponentTextStyle.Regular, COLORS.neutral_600)}\n &.react-datepicker__day--keyboard-selected {\n color: ${COLORS.neutral_600};\n background: ${COLORS.white};\n font-weight: 400;\n border: none;\n }\n\n &:hover {\n color: ${COLORS.primary_700};\n background: ${COLORS.primary_20};\n }\n\n &:focus {\n ${focusStyles}\n }\n\n &.react-datepicker__day--selected {\n color: ${COLORS.white} !important;\n background: ${COLORS.primary_500} !important;\n }\n\n &.react-datepicker__day--today {\n border-radius: 0.3rem;\n color: ${COLORS.neutral_700};\n background: ${COLORS.neutral_100};\n\n &:hover {\n color: ${COLORS.primary_700};\n background: ${COLORS.primary_20};\n }\n\n &:focus {\n ${focusStyles}\n }\n }\n }\n }\n`;\n\nconst IconWrapper = styled.div`\n pointer-events: none;\n position: absolute;\n left: 16px;\n width: 24px;\n height: 24px;\n z-index: ${+Z_INDEXES.focus + 1};\n`;\n\nconst DatepickerRow = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nconst StyledInputFieldStyling = styled(InputFieldStyling)`\n padding-left: 48px !important;\n \n &::placeholder {\n color: ${COLORS.neutral_500};\n }\n\n &:focus:not(.focus-visible) {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_300};\n }\n\n &:hover {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_200};\n\n ::placeholder {\n color: ${COLORS.primary_700};\n }\n\n cursor: pointer;\n background-color: ${COLORS.primary_20};\n color: ${COLORS.primary_700};\n }\n\n &:active,\n &.open {\n box-shadow: inset 0px 0px 0px 2px ${COLORS.primary_300};\n background-color: ${COLORS.primary_100};\n color: ${COLORS.primary_800};\n\n ::placeholder {\n color: ${COLORS.primary_800};\n }\n }\n \n &:disabled {\n background-color: ${COLORS.white};\n }\n\n & ~ ${IconWrapper}{\n color: ${COLORS.neutral_600};\n }\n\n &:hover ~ ${IconWrapper} {\n color: ${COLORS.primary_700};\n }\n\n &:active ~ ${IconWrapper}, &.open ~ ${IconWrapper} {\n color: ${COLORS.primary_800};\n }\n\n &[tabindex='-1'] ~ ${IconWrapper} {\n color: ${COLORS.neutral_300};\n }\n`;\n\nconst DatepickerField = React.forwardRef(({\n disabled,\n readOnly,\n onChange,\n invalid,\n value,\n validationMessage,\n dateFormat,\n autoComplete,\n placeholder,\n required,\n yearPicker,\n yearsBeforeCurrentDate,\n yearsAfterCurrentDate,\n margin,\n onBlur,\n id,\n dataTestId,\n ...rest\n }: DatepickerFieldProps, ref) => {\n // Globally used variables within the component\n const inputRef = useFocusVisibleRef();\n const datepickerRef = React.useRef<any>(null);\n const [activeMonthPage, setActiveMonthPage] = React.useState<number>(-1);\n const [yearPickerMode, setYearPickerMode] = React.useState<boolean>(false);\n const [openAt, setOpenAt] = React.useState<Date | null>(null);\n // 'open' flag is used only for tracking current state of the dropdown,\n // for explicitly opening/closing the picker we are using 'datepickerRef.current.setOpen'\n const [open, setOpen] = React.useState<boolean>(false);\n\n const getFormattedValue = () => {\n return dayjs(value).format(dateFormat ? dateFormat : 'MMMM Do, YYYY');\n }\n /**\n * Format the date in a specific way.\n */\n React.useEffect(() => {\n if (value) inputRef.current.value = getFormattedValue();\n }, [value]);\n\n React.useEffect(() => {\n if (yearPickerMode) {\n //unfortunately, since there are no refs, and year pickers is rendered not by our code, but by 'react-datepicker'\n //we have to touch DOM directly\n const selectedDate = document.getElementsByClassName('react-datepicker__year-text--selected')[0] as HTMLElement;\n const dropdownParent = selectedDate?.parentElement?.parentElement;\n if (selectedDate && dropdownParent) dropdownParent.scrollTop = selectedDate.offsetTop - 2 * selectedDate.offsetHeight;\n }\n }, [yearPickerMode]);\n\n //we have to manually reopen the calendar when needed, to guarantee that datepicker will show selected date after year selection\n //otherwise after year selection datepicker will show January month of the selected year\n React.useEffect(() => {\n if (openAt) {\n datepickerRef.current.setOpen(true);\n //setOpenAt(null);\n }\n }, [openAt]);\n\n React.useImperativeHandle(ref, () => inputRef.current, [inputRef]);\n\n const handleCalendarClose = () => {\n inputRef.current?.blur();\n setOpen(false);\n };\n\n const handleCalendarOpen = () => {\n if (openAt) setOpenAt(null);\n setOpen(true);\n };\n\n let maxDate = new Date(value && new Date(value) > new Date() ? new Date(value) : new Date());\n maxDate.setFullYear(maxDate.getFullYear() + (yearsAfterCurrentDate ?? 50));\n\n //itemsNumber - controls number of year select options generated in the dropdown\n //items related to dates higher than 'maxDate' will be hidden, thus to avoid creating hundreds of invisible divs, we divide by 5\n let minDate = new Date(value && new Date(value) < new Date() ? new Date(value) : new Date());\n const itemsNumber = Math.round((minDate.getFullYear() - (yearsBeforeCurrentDate ?? 15)) / 5);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Escape' || e.key === 'Esc')\n datepickerRef.current.setOpen(false);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLDivElement>) => {\n // @ts-ignore\n if (!e.currentTarget.contains(e.relatedTarget)) {\n onBlur && onBlur(e);\n }\n };\n const iconSize = 24;\n\n return (\n <>\n {/* Let's render the input itself */}\n <DatePickerContainer data-testId={dataTestId} yearPicker={yearPickerMode} margin={margin || ''} onBlur={handleBlur}>\n <DatePicker\n ref={datepickerRef}\n onCalendarOpen={handleCalendarOpen}\n onCalendarClose={handleCalendarClose}\n onKeyDown={handleKeyDown}\n id={id}\n onClickOutside={() => datepickerRef.current.setOpen(false)}\n\n onChange={(e: any) => {\n if (onChange) {\n if (yearPickerMode) {\n const newDate = new Date();\n newDate.setFullYear(e.getFullYear());\n newDate.setMonth(activeMonthPage);\n setOpenAt(newDate);\n } else onChange(e);\n }\n if (yearPickerMode) setYearPickerMode(false);\n }}\n disabled={disabled || readOnly}\n locale={en}\n showYearPicker={yearPickerMode}\n //we manipulate 'yearItemNumber' and 'maxDate' to guarantee number of year select options shown before and after selected year\n yearItemNumber={yearPickerMode ? itemsNumber : undefined}\n maxDate={yearPickerMode ? maxDate : undefined}\n selected={value}\n openToDate={openAt ?? undefined}\n preventOpenOnFocus={true}\n shouldCloseOnSelect={true}\n renderCustomHeader={\n yearPicker\n ? (params: ReactDatePickerCustomHeaderProps) =>\n React.createElement(\n DatepickerFieldHeader,\n {\n ...params,\n setActiveMonthPage,\n customHeaderCount: 0,\n yearPickerMode: yearPickerMode,\n setYearPickerMode: setYearPickerMode,\n },\n null,\n )\n : undefined\n }\n customInput={\n <InputWrapper disabled={disabled} readOnly={readOnly}>\n <DatepickerRow>\n <StyledInputFieldStyling\n ref={inputRef}\n type=\"text\"\n name=\"datepicker\"\n onKeyDown={(e) => e.key === 'Enter' && datepickerRef.current.setOpen(true)}\n className={(invalid ? 'invalid' : '' + (open ? ' open' : ''))}\n tabIndex={disabled || readOnly ? -1 : 0}\n onFocus={(e) => inputRef.current?.setSelectionRange(0, 0)}\n autoComplete={autoComplete}\n placeholder={placeholder}\n extraRightPadding={iconSize}\n disabled={disabled}\n readOnly={true}\n suppressReadOnlyStyles={!readOnly}\n required={required}\n {...rest}\n />\n <IconWrapper>\n <SystemIcons.Calendar size=\"24\"/>\n </IconWrapper>\n </DatepickerRow>\n {!open && <TooltipOverflow input={inputRef} withArrow={true} maxWidth=\"100%\" size={Size.Small} align='end' position='bottom'>\n {getFormattedValue()}\n </TooltipOverflow>}\n </InputWrapper>\n }\n />\n </DatePickerContainer>\n\n {/* If there is an error, let's render the error */}\n {validationMessage && (\n <ErrorMessage>\n <SystemIcons.TechnicalWarning color={COLORS.critical_400}/>\n <span>{validationMessage}</span>\n </ErrorMessage>\n )}\n </>\n );\n});\n\nexport default DatepickerField;\n"],"mappings":"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"}