@elliemae/ds-legacy-left-navigation 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/dist/cjs/LeftNavigation.js +51 -0
  2. package/dist/cjs/LeftNavigation.js.map +7 -0
  3. package/dist/cjs/LeftNavigationContext.js +70 -0
  4. package/dist/cjs/LeftNavigationContext.js.map +7 -0
  5. package/dist/cjs/common/getItemBackgroundStyle.js +57 -0
  6. package/dist/cjs/common/getItemBackgroundStyle.js.map +7 -0
  7. package/dist/cjs/common/getLeftBorderStyle.js +59 -0
  8. package/dist/cjs/common/getLeftBorderStyle.js.map +7 -0
  9. package/dist/cjs/common/getScrollbarStyle.js +59 -0
  10. package/dist/cjs/common/getScrollbarStyle.js.map +7 -0
  11. package/dist/cjs/common/index.js +32 -0
  12. package/dist/cjs/common/index.js.map +7 -0
  13. package/dist/cjs/configs/index.js +39 -0
  14. package/dist/cjs/configs/index.js.map +7 -0
  15. package/dist/cjs/configs/useLeftNavConfig.js +127 -0
  16. package/dist/cjs/configs/useLeftNavConfig.js.map +7 -0
  17. package/dist/cjs/configs/useLeftNavItems.js +85 -0
  18. package/dist/cjs/configs/useLeftNavItems.js.map +7 -0
  19. package/dist/cjs/configs/useLeftNavSmoothExpand.js +57 -0
  20. package/dist/cjs/configs/useLeftNavSmoothExpand.js.map +7 -0
  21. package/dist/cjs/constants/constants.js +68 -0
  22. package/dist/cjs/constants/constants.js.map +7 -0
  23. package/dist/cjs/constants/index.js +30 -0
  24. package/dist/cjs/constants/index.js.map +7 -0
  25. package/dist/cjs/exported-related/ChevronItem/index.js +40 -0
  26. package/dist/cjs/exported-related/ChevronItem/index.js.map +7 -0
  27. package/dist/cjs/exported-related/Icon/index.js +50 -0
  28. package/dist/cjs/exported-related/Icon/index.js.map +7 -0
  29. package/dist/cjs/exported-related/ItemRenderer/index.js +133 -0
  30. package/dist/cjs/exported-related/ItemRenderer/index.js.map +7 -0
  31. package/dist/cjs/exported-related/ItemRenderer/styled.js +107 -0
  32. package/dist/cjs/exported-related/ItemRenderer/styled.js.map +7 -0
  33. package/dist/cjs/exported-related/ItemRenderer/usePropsWithDefaults.js +69 -0
  34. package/dist/cjs/exported-related/ItemRenderer/usePropsWithDefaults.js.map +7 -0
  35. package/dist/cjs/exported-related/Notifications/index.js +62 -0
  36. package/dist/cjs/exported-related/Notifications/index.js.map +7 -0
  37. package/dist/cjs/exported-related/OpenWindowItem/index.js +47 -0
  38. package/dist/cjs/exported-related/OpenWindowItem/index.js.map +7 -0
  39. package/dist/cjs/exported-related/constants.js +71 -0
  40. package/dist/cjs/exported-related/constants.js.map +7 -0
  41. package/dist/cjs/exported-related/index.js +35 -0
  42. package/dist/cjs/exported-related/index.js.map +7 -0
  43. package/dist/cjs/hooks/index.js +32 -0
  44. package/dist/cjs/hooks/index.js.map +7 -0
  45. package/dist/cjs/hooks/useExpandableOnClickHandler.js +74 -0
  46. package/dist/cjs/hooks/useExpandableOnClickHandler.js.map +7 -0
  47. package/dist/cjs/hooks/useKeyboardNavigation.js +128 -0
  48. package/dist/cjs/hooks/useKeyboardNavigation.js.map +7 -0
  49. package/dist/cjs/hooks/useOpenableOnClickHandler.js +82 -0
  50. package/dist/cjs/hooks/useOpenableOnClickHandler.js.map +7 -0
  51. package/dist/cjs/hooks/useSelectFirstBodyItem.js +53 -0
  52. package/dist/cjs/hooks/useSelectFirstBodyItem.js.map +7 -0
  53. package/dist/cjs/index.js +46 -0
  54. package/dist/cjs/index.js.map +7 -0
  55. package/dist/cjs/outOfTheBox/ItemControlledDrilldown/index.js +147 -0
  56. package/dist/cjs/outOfTheBox/ItemControlledDrilldown/index.js.map +7 -0
  57. package/dist/cjs/outOfTheBox/ItemHeader/index.js +169 -0
  58. package/dist/cjs/outOfTheBox/ItemHeader/index.js.map +7 -0
  59. package/dist/cjs/outOfTheBox/ItemLink/index.js +102 -0
  60. package/dist/cjs/outOfTheBox/ItemLink/index.js.map +7 -0
  61. package/dist/cjs/outOfTheBox/ItemSection/index.js +83 -0
  62. package/dist/cjs/outOfTheBox/ItemSection/index.js.map +7 -0
  63. package/dist/cjs/outOfTheBox/ItemSeparator/index.js +68 -0
  64. package/dist/cjs/outOfTheBox/ItemSeparator/index.js.map +7 -0
  65. package/dist/cjs/outOfTheBox/ItemSkeleton/index.js +78 -0
  66. package/dist/cjs/outOfTheBox/ItemSkeleton/index.js.map +7 -0
  67. package/dist/cjs/outOfTheBox/ItemSubmenu/index.js +173 -0
  68. package/dist/cjs/outOfTheBox/ItemSubmenu/index.js.map +7 -0
  69. package/dist/cjs/outOfTheBox/ItemTextLabel/index.js +79 -0
  70. package/dist/cjs/outOfTheBox/ItemTextLabel/index.js.map +7 -0
  71. package/dist/cjs/outOfTheBox/ItemUncontrolledDrilldown/index.js +162 -0
  72. package/dist/cjs/outOfTheBox/ItemUncontrolledDrilldown/index.js.map +7 -0
  73. package/dist/cjs/outOfTheBox/ItemWithDate/index.js +101 -0
  74. package/dist/cjs/outOfTheBox/ItemWithDate/index.js.map +7 -0
  75. package/dist/cjs/outOfTheBox/index.js +83 -0
  76. package/dist/cjs/outOfTheBox/index.js.map +7 -0
  77. package/dist/cjs/outOfTheBox/styled.js +126 -0
  78. package/dist/cjs/outOfTheBox/styled.js.map +7 -0
  79. package/dist/cjs/package.json +4 -0
  80. package/dist/cjs/parts/LeftNavContent/index.js +158 -0
  81. package/dist/cjs/parts/LeftNavContent/index.js.map +7 -0
  82. package/dist/cjs/parts/LeftNavContent/styled.js +107 -0
  83. package/dist/cjs/parts/LeftNavContent/styled.js.map +7 -0
  84. package/dist/cjs/parts/LeftNavFooterItem/index.js +138 -0
  85. package/dist/cjs/parts/LeftNavFooterItem/index.js.map +7 -0
  86. package/dist/cjs/parts/LeftNavFooterItem/styled.js +102 -0
  87. package/dist/cjs/parts/LeftNavFooterItem/styled.js.map +7 -0
  88. package/dist/cjs/parts/LeftNavLoading/index.js +55 -0
  89. package/dist/cjs/parts/LeftNavLoading/index.js.map +7 -0
  90. package/dist/cjs/parts/OutOfTheBoxMapItem.js +59 -0
  91. package/dist/cjs/parts/OutOfTheBoxMapItem.js.map +7 -0
  92. package/dist/cjs/react-desc-prop-types.js +74 -0
  93. package/dist/cjs/react-desc-prop-types.js.map +7 -0
  94. package/dist/cjs/typescript-testing/typescript-left-navigation-valid.js +186 -0
  95. package/dist/cjs/typescript-testing/typescript-left-navigation-valid.js.map +7 -0
  96. package/dist/esm/LeftNavigation.js +21 -0
  97. package/dist/esm/LeftNavigation.js.map +7 -0
  98. package/dist/esm/LeftNavigationContext.js +40 -0
  99. package/dist/esm/LeftNavigationContext.js.map +7 -0
  100. package/dist/esm/common/getItemBackgroundStyle.js +27 -0
  101. package/dist/esm/common/getItemBackgroundStyle.js.map +7 -0
  102. package/dist/esm/common/getLeftBorderStyle.js +29 -0
  103. package/dist/esm/common/getLeftBorderStyle.js.map +7 -0
  104. package/dist/esm/common/getScrollbarStyle.js +29 -0
  105. package/dist/esm/common/getScrollbarStyle.js.map +7 -0
  106. package/dist/esm/common/index.js +5 -0
  107. package/dist/esm/common/index.js.map +7 -0
  108. package/dist/esm/configs/index.js +9 -0
  109. package/dist/esm/configs/index.js.map +7 -0
  110. package/dist/esm/configs/useLeftNavConfig.js +97 -0
  111. package/dist/esm/configs/useLeftNavConfig.js.map +7 -0
  112. package/dist/esm/configs/useLeftNavItems.js +55 -0
  113. package/dist/esm/configs/useLeftNavItems.js.map +7 -0
  114. package/dist/esm/configs/useLeftNavSmoothExpand.js +27 -0
  115. package/dist/esm/configs/useLeftNavSmoothExpand.js.map +7 -0
  116. package/dist/esm/constants/constants.js +38 -0
  117. package/dist/esm/constants/constants.js.map +7 -0
  118. package/dist/esm/constants/index.js +3 -0
  119. package/dist/esm/constants/index.js.map +7 -0
  120. package/dist/esm/exported-related/ChevronItem/index.js +10 -0
  121. package/dist/esm/exported-related/ChevronItem/index.js.map +7 -0
  122. package/dist/esm/exported-related/Icon/index.js +20 -0
  123. package/dist/esm/exported-related/Icon/index.js.map +7 -0
  124. package/dist/esm/exported-related/ItemRenderer/index.js +103 -0
  125. package/dist/esm/exported-related/ItemRenderer/index.js.map +7 -0
  126. package/dist/esm/exported-related/ItemRenderer/styled.js +77 -0
  127. package/dist/esm/exported-related/ItemRenderer/styled.js.map +7 -0
  128. package/dist/esm/exported-related/ItemRenderer/usePropsWithDefaults.js +39 -0
  129. package/dist/esm/exported-related/ItemRenderer/usePropsWithDefaults.js.map +7 -0
  130. package/dist/esm/exported-related/Notifications/index.js +37 -0
  131. package/dist/esm/exported-related/Notifications/index.js.map +7 -0
  132. package/dist/esm/exported-related/OpenWindowItem/index.js +17 -0
  133. package/dist/esm/exported-related/OpenWindowItem/index.js.map +7 -0
  134. package/dist/esm/exported-related/constants.js +41 -0
  135. package/dist/esm/exported-related/constants.js.map +7 -0
  136. package/dist/esm/exported-related/index.js +8 -0
  137. package/dist/esm/exported-related/index.js.map +7 -0
  138. package/dist/esm/hooks/index.js +5 -0
  139. package/dist/esm/hooks/index.js.map +7 -0
  140. package/dist/esm/hooks/useExpandableOnClickHandler.js +44 -0
  141. package/dist/esm/hooks/useExpandableOnClickHandler.js.map +7 -0
  142. package/dist/esm/hooks/useKeyboardNavigation.js +98 -0
  143. package/dist/esm/hooks/useKeyboardNavigation.js.map +7 -0
  144. package/dist/esm/hooks/useOpenableOnClickHandler.js +52 -0
  145. package/dist/esm/hooks/useOpenableOnClickHandler.js.map +7 -0
  146. package/dist/esm/hooks/useSelectFirstBodyItem.js +23 -0
  147. package/dist/esm/hooks/useSelectFirstBodyItem.js.map +7 -0
  148. package/dist/esm/index.js +15 -0
  149. package/dist/esm/index.js.map +7 -0
  150. package/dist/esm/outOfTheBox/ItemControlledDrilldown/index.js +117 -0
  151. package/dist/esm/outOfTheBox/ItemControlledDrilldown/index.js.map +7 -0
  152. package/dist/esm/outOfTheBox/ItemHeader/index.js +145 -0
  153. package/dist/esm/outOfTheBox/ItemHeader/index.js.map +7 -0
  154. package/dist/esm/outOfTheBox/ItemLink/index.js +72 -0
  155. package/dist/esm/outOfTheBox/ItemLink/index.js.map +7 -0
  156. package/dist/esm/outOfTheBox/ItemSection/index.js +59 -0
  157. package/dist/esm/outOfTheBox/ItemSection/index.js.map +7 -0
  158. package/dist/esm/outOfTheBox/ItemSeparator/index.js +38 -0
  159. package/dist/esm/outOfTheBox/ItemSeparator/index.js.map +7 -0
  160. package/dist/esm/outOfTheBox/ItemSkeleton/index.js +48 -0
  161. package/dist/esm/outOfTheBox/ItemSkeleton/index.js.map +7 -0
  162. package/dist/esm/outOfTheBox/ItemSubmenu/index.js +149 -0
  163. package/dist/esm/outOfTheBox/ItemSubmenu/index.js.map +7 -0
  164. package/dist/esm/outOfTheBox/ItemTextLabel/index.js +49 -0
  165. package/dist/esm/outOfTheBox/ItemTextLabel/index.js.map +7 -0
  166. package/dist/esm/outOfTheBox/ItemUncontrolledDrilldown/index.js +132 -0
  167. package/dist/esm/outOfTheBox/ItemUncontrolledDrilldown/index.js.map +7 -0
  168. package/dist/esm/outOfTheBox/ItemWithDate/index.js +71 -0
  169. package/dist/esm/outOfTheBox/ItemWithDate/index.js.map +7 -0
  170. package/dist/esm/outOfTheBox/index.js +52 -0
  171. package/dist/esm/outOfTheBox/index.js.map +7 -0
  172. package/dist/esm/outOfTheBox/styled.js +96 -0
  173. package/dist/esm/outOfTheBox/styled.js.map +7 -0
  174. package/dist/esm/package.json +4 -0
  175. package/dist/esm/parts/LeftNavContent/index.js +135 -0
  176. package/dist/esm/parts/LeftNavContent/index.js.map +7 -0
  177. package/dist/esm/parts/LeftNavContent/styled.js +77 -0
  178. package/dist/esm/parts/LeftNavContent/styled.js.map +7 -0
  179. package/dist/esm/parts/LeftNavFooterItem/index.js +114 -0
  180. package/dist/esm/parts/LeftNavFooterItem/index.js.map +7 -0
  181. package/dist/esm/parts/LeftNavFooterItem/styled.js +72 -0
  182. package/dist/esm/parts/LeftNavFooterItem/styled.js.map +7 -0
  183. package/dist/esm/parts/LeftNavLoading/index.js +25 -0
  184. package/dist/esm/parts/LeftNavLoading/index.js.map +7 -0
  185. package/dist/esm/parts/OutOfTheBoxMapItem.js +29 -0
  186. package/dist/esm/parts/OutOfTheBoxMapItem.js.map +7 -0
  187. package/dist/esm/react-desc-prop-types.js +44 -0
  188. package/dist/esm/react-desc-prop-types.js.map +7 -0
  189. package/dist/esm/typescript-testing/typescript-left-navigation-valid.js +163 -0
  190. package/dist/esm/typescript-testing/typescript-left-navigation-valid.js.map +7 -0
  191. package/dist/types/LeftNavigation.d.ts +9 -0
  192. package/dist/types/LeftNavigationContext.d.ts +21 -0
  193. package/dist/types/common/getItemBackgroundStyle.d.ts +6 -0
  194. package/dist/types/common/getLeftBorderStyle.d.ts +6 -0
  195. package/dist/types/common/getScrollbarStyle.d.ts +1 -0
  196. package/dist/types/common/index.d.ts +3 -0
  197. package/dist/types/configs/index.d.ts +3 -0
  198. package/dist/types/configs/useLeftNavConfig.d.ts +17 -0
  199. package/dist/types/configs/useLeftNavItems.d.ts +12 -0
  200. package/dist/types/configs/useLeftNavSmoothExpand.d.ts +10 -0
  201. package/dist/types/constants/constants.d.ts +32 -0
  202. package/dist/types/constants/index.d.ts +1 -0
  203. package/dist/types/exported-related/ChevronItem/index.d.ts +4 -0
  204. package/dist/types/exported-related/Icon/index.d.ts +6 -0
  205. package/dist/types/exported-related/ItemRenderer/index.d.ts +3 -0
  206. package/dist/types/exported-related/ItemRenderer/styled.d.ts +20 -0
  207. package/dist/types/exported-related/ItemRenderer/usePropsWithDefaults.d.ts +2 -0
  208. package/dist/types/exported-related/Notifications/index.d.ts +8 -0
  209. package/dist/types/exported-related/OpenWindowItem/index.d.ts +4 -0
  210. package/dist/types/exported-related/constants.d.ts +31 -0
  211. package/dist/types/exported-related/index.d.ts +6 -0
  212. package/dist/types/hooks/index.d.ts +3 -0
  213. package/dist/types/hooks/useExpandableOnClickHandler.d.ts +9 -0
  214. package/dist/types/hooks/useKeyboardNavigation.d.ts +8 -0
  215. package/dist/types/hooks/useOpenableOnClickHandler.d.ts +10 -0
  216. package/dist/types/hooks/useSelectFirstBodyItem.d.ts +3 -0
  217. package/dist/types/index.d.ts +6 -0
  218. package/dist/types/outOfTheBox/ItemControlledDrilldown/index.d.ts +3 -0
  219. package/dist/types/outOfTheBox/ItemHeader/index.d.ts +3 -0
  220. package/dist/types/outOfTheBox/ItemLink/index.d.ts +3 -0
  221. package/dist/types/outOfTheBox/ItemSection/index.d.ts +3 -0
  222. package/dist/types/outOfTheBox/ItemSeparator/index.d.ts +3 -0
  223. package/dist/types/outOfTheBox/ItemSkeleton/index.d.ts +8 -0
  224. package/dist/types/outOfTheBox/ItemSubmenu/index.d.ts +3 -0
  225. package/dist/types/outOfTheBox/ItemTextLabel/index.d.ts +3 -0
  226. package/dist/types/outOfTheBox/ItemUncontrolledDrilldown/index.d.ts +3 -0
  227. package/dist/types/outOfTheBox/ItemWithDate/index.d.ts +3 -0
  228. package/dist/types/outOfTheBox/index.d.ts +14 -0
  229. package/dist/types/outOfTheBox/styled.d.ts +24 -0
  230. package/dist/types/parts/LeftNavContent/index.d.ts +3 -0
  231. package/dist/types/parts/LeftNavContent/styled.d.ts +23 -0
  232. package/dist/types/parts/LeftNavFooterItem/index.d.ts +9 -0
  233. package/dist/types/parts/LeftNavFooterItem/styled.d.ts +14 -0
  234. package/dist/types/parts/LeftNavLoading/index.d.ts +4 -0
  235. package/dist/types/parts/OutOfTheBoxMapItem.d.ts +3 -0
  236. package/dist/types/react-desc-prop-types.d.ts +101 -0
  237. package/dist/types/tests/LeftNavigation.collapsed.test.d.ts +1 -0
  238. package/dist/types/tests/LeftNavigation.expanded.test.d.ts +1 -0
  239. package/dist/types/tests/LeftNavigation.opened.test.d.ts +1 -0
  240. package/dist/types/tests/a11y/axe-collapsed.test.d.ts +1 -0
  241. package/dist/types/tests/a11y/axe-expanded.test.d.ts +1 -0
  242. package/dist/types/tests/a11y/axe-opened.test.d.ts +1 -0
  243. package/dist/types/tests/events/LeftNavigation.events.keyboard.test.d.ts +1 -0
  244. package/dist/types/tests/events/LeftNavigation.events.subitems.test.d.ts +1 -0
  245. package/dist/types/tests/events/LeftNavigation.events.test.d.ts +1 -0
  246. package/dist/types/tests/events/LeftNavigation.focus.events.test.d.ts +1 -0
  247. package/dist/types/typescript-testing/typescript-left-navigation-valid.d.ts +1 -0
  248. package/package.json +269 -0
@@ -0,0 +1,44 @@
1
+ import * as React from "react";
2
+ import { useCallback, useContext } from "react";
3
+ import LeftNavigationContext from "../LeftNavigationContext.js";
4
+ const useExpandableOnClickHandler = ({
5
+ id,
6
+ onExpand,
7
+ onOpen,
8
+ selectable = true
9
+ }) => {
10
+ const {
11
+ leftNavProps: { expanded },
12
+ setSelectedItem
13
+ } = useContext(LeftNavigationContext);
14
+ const handleOnExpand = useCallback(
15
+ (e) => {
16
+ onExpand(e);
17
+ if (selectable)
18
+ setSelectedItem(id);
19
+ },
20
+ [id, onExpand, setSelectedItem, selectable]
21
+ );
22
+ const handleOnOpen = useCallback(
23
+ (e) => {
24
+ onOpen(e);
25
+ if (selectable)
26
+ setSelectedItem(id);
27
+ },
28
+ [id, onOpen, setSelectedItem, selectable]
29
+ );
30
+ const handleOnClick = useCallback(
31
+ (e) => {
32
+ if (!expanded)
33
+ handleOnExpand(e);
34
+ else
35
+ handleOnOpen(e);
36
+ },
37
+ [expanded, handleOnExpand, handleOnOpen]
38
+ );
39
+ return handleOnClick;
40
+ };
41
+ export {
42
+ useExpandableOnClickHandler
43
+ };
44
+ //# sourceMappingURL=useExpandableOnClickHandler.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useExpandableOnClickHandler.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import type React from 'react';\nimport { useCallback, useContext } from 'react';\nimport LeftNavigationContext from '../LeftNavigationContext.js';\n\ntype UseExpandableOnClickHandlerProps = {\n id: string;\n onExpand: React.MouseEventHandler & React.KeyboardEventHandler;\n onOpen: React.MouseEventHandler & React.KeyboardEventHandler;\n selectable?: boolean;\n};\n\nexport const useExpandableOnClickHandler = ({\n id,\n onExpand,\n onOpen,\n selectable = true,\n}: UseExpandableOnClickHandlerProps): ((e: React.MouseEvent<HTMLElement>) => void) => {\n const {\n leftNavProps: { expanded },\n setSelectedItem,\n } = useContext(LeftNavigationContext);\n\n const handleOnExpand: React.MouseEventHandler = useCallback(\n (e) => {\n onExpand(e);\n if (selectable) setSelectedItem(id);\n },\n [id, onExpand, setSelectedItem, selectable],\n );\n\n const handleOnOpen: React.MouseEventHandler = useCallback(\n (e) => {\n onOpen(e);\n if (selectable) setSelectedItem(id);\n },\n [id, onOpen, setSelectedItem, selectable],\n );\n\n const handleOnClick: React.MouseEventHandler = useCallback(\n (e) => {\n if (!expanded) handleOnExpand(e);\n else handleOnOpen(e);\n },\n [expanded, handleOnExpand, handleOnOpen],\n );\n\n return handleOnClick;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,aAAa,kBAAkB;AACxC,OAAO,2BAA2B;AAS3B,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AACf,MAAsF;AACpF,QAAM;AAAA,IACJ,cAAc,EAAE,SAAS;AAAA,IACzB;AAAA,EACF,IAAI,WAAW,qBAAqB;AAEpC,QAAM,iBAA0C;AAAA,IAC9C,CAAC,MAAM;AACL,eAAS,CAAC;AACV,UAAI;AAAY,wBAAgB,EAAE;AAAA,IACpC;AAAA,IACA,CAAC,IAAI,UAAU,iBAAiB,UAAU;AAAA,EAC5C;AAEA,QAAM,eAAwC;AAAA,IAC5C,CAAC,MAAM;AACL,aAAO,CAAC;AACR,UAAI;AAAY,wBAAgB,EAAE;AAAA,IACpC;AAAA,IACA,CAAC,IAAI,QAAQ,iBAAiB,UAAU;AAAA,EAC1C;AAEA,QAAM,gBAAyC;AAAA,IAC7C,CAAC,MAAM;AACL,UAAI,CAAC;AAAU,uBAAe,CAAC;AAAA;AAC1B,qBAAa,CAAC;AAAA,IACrB;AAAA,IACA,CAAC,UAAU,gBAAgB,YAAY;AAAA,EACzC;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,98 @@
1
+ import * as React from "react";
2
+ import { useCallback, useMemo, useLayoutEffect, useContext } from "react";
3
+ import { CHEVRON_BACK_DS_ID, FOOTER_MENU_CLOSE_DS_ID } from "../exported-related/constants.js";
4
+ import LeftNavContext from "../LeftNavigationContext.js";
5
+ const KEY_CODES = {
6
+ TAB: 9,
7
+ ENTER: 13,
8
+ SPACE: 32,
9
+ LEFT_ARROW: 37,
10
+ UP_ARROW: 38,
11
+ RIGHT_ARROW: 39,
12
+ DOWN_ARROW: 40,
13
+ END: 35,
14
+ HOME: 36
15
+ };
16
+ const nextIndex = (index, length) => (index + 1) % length;
17
+ const prevIndex = (index, length) => (index - 1 + length) % length;
18
+ const useKeyboardNavigation = ({ item, onClick }) => {
19
+ const {
20
+ dsId,
21
+ itemOpts: { selectable, openable, closable }
22
+ } = item;
23
+ const { visibleItems, visibleItemsRefs } = useContext(LeftNavContext);
24
+ const currentIndex = useMemo(
25
+ () => visibleItems.findIndex((visibleItemDsId) => visibleItemDsId === dsId),
26
+ [dsId, visibleItems]
27
+ );
28
+ const { setFocusedItem, focusedItem, setSelectedItem } = useContext(LeftNavContext);
29
+ const focusAndSelect = useCallback(
30
+ (nextDsId) => {
31
+ setFocusedItem(nextDsId);
32
+ setSelectedItem(nextDsId);
33
+ },
34
+ [setFocusedItem, setSelectedItem]
35
+ );
36
+ useLayoutEffect(() => {
37
+ if (dsId === focusedItem)
38
+ visibleItemsRefs.current[dsId]?.current?.focus();
39
+ }, [dsId, focusedItem, visibleItemsRefs]);
40
+ const onKeyDown = useCallback(
41
+ (e) => {
42
+ const { keyCode } = e;
43
+ if (keyCode !== KEY_CODES.TAB) {
44
+ e.preventDefault();
45
+ }
46
+ if (dsId && (keyCode === KEY_CODES.ENTER || keyCode === KEY_CODES.SPACE)) {
47
+ if (selectable) {
48
+ onClick(e);
49
+ focusAndSelect(dsId);
50
+ } else if (focusedItem === CHEVRON_BACK_DS_ID) {
51
+ onClick(e);
52
+ focusAndSelect(dsId);
53
+ } else if (focusedItem === FOOTER_MENU_CLOSE_DS_ID) {
54
+ onClick(e);
55
+ setFocusedItem(dsId);
56
+ }
57
+ }
58
+ if (openable && keyCode === KEY_CODES.RIGHT_ARROW) {
59
+ onClick(e);
60
+ }
61
+ if (dsId && closable && keyCode === KEY_CODES.LEFT_ARROW) {
62
+ onClick(e);
63
+ setFocusedItem(dsId);
64
+ }
65
+ if (keyCode === KEY_CODES.DOWN_ARROW) {
66
+ const nextDsId = visibleItems[nextIndex(currentIndex, visibleItems.length)];
67
+ setFocusedItem(nextDsId);
68
+ }
69
+ if (keyCode === KEY_CODES.UP_ARROW) {
70
+ const prevDsId = visibleItems[prevIndex(currentIndex, visibleItems.length)];
71
+ setFocusedItem(prevDsId);
72
+ }
73
+ if (keyCode === KEY_CODES.HOME) {
74
+ setFocusedItem(visibleItems[0]);
75
+ }
76
+ if (keyCode === KEY_CODES.END) {
77
+ setFocusedItem(visibleItems[visibleItems.length - 1]);
78
+ }
79
+ },
80
+ [
81
+ openable,
82
+ closable,
83
+ selectable,
84
+ focusedItem,
85
+ onClick,
86
+ focusAndSelect,
87
+ dsId,
88
+ setFocusedItem,
89
+ visibleItems,
90
+ currentIndex
91
+ ]
92
+ );
93
+ return onKeyDown;
94
+ };
95
+ export {
96
+ useKeyboardNavigation
97
+ };
98
+ //# sourceMappingURL=useKeyboardNavigation.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useKeyboardNavigation.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport type React from 'react';\nimport { useCallback, useMemo, useLayoutEffect, useContext } from 'react';\nimport { CHEVRON_BACK_DS_ID, FOOTER_MENU_CLOSE_DS_ID } from '../exported-related/constants.js';\nimport type { DSLeftNavigationT } from '../react-desc-prop-types.js';\nimport LeftNavContext from '../LeftNavigationContext.js';\n\nconst KEY_CODES = {\n TAB: 9,\n ENTER: 13,\n SPACE: 32,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40,\n END: 35,\n HOME: 36,\n};\n\nconst nextIndex = (index: number, length: number) => (index + 1) % length;\nconst prevIndex = (index: number, length: number) => (index - 1 + length) % length;\n\ntype UseKeyboardNavigationProps = {\n item: DSLeftNavigationT.GenericItemItemProps;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onClick: (e: any) => void;\n};\n\nexport const useKeyboardNavigation = ({ item, onClick }: UseKeyboardNavigationProps): React.KeyboardEventHandler => {\n const {\n dsId,\n itemOpts: { selectable, openable, closable },\n } = item;\n\n const { visibleItems, visibleItemsRefs } = useContext(LeftNavContext);\n\n const currentIndex = useMemo(\n () => visibleItems.findIndex((visibleItemDsId) => visibleItemDsId === dsId),\n [dsId, visibleItems],\n );\n\n const { setFocusedItem, focusedItem, setSelectedItem } = useContext(LeftNavContext);\n\n const focusAndSelect = useCallback(\n (nextDsId: string) => {\n setFocusedItem(nextDsId);\n setSelectedItem(nextDsId);\n },\n [setFocusedItem, setSelectedItem],\n );\n\n useLayoutEffect(() => {\n if (dsId === focusedItem) visibleItemsRefs.current[dsId]?.current?.focus();\n }, [dsId, focusedItem, visibleItemsRefs]);\n\n const onKeyDown: React.KeyboardEventHandler = useCallback(\n (e) => {\n const { keyCode } = e;\n\n // Prevent default behaviour when not tab\n if (keyCode !== KEY_CODES.TAB) {\n e.preventDefault();\n }\n\n if (dsId && (keyCode === KEY_CODES.ENTER || keyCode === KEY_CODES.SPACE)) {\n if (selectable) {\n onClick(e);\n focusAndSelect(dsId);\n } else if (focusedItem === CHEVRON_BACK_DS_ID) {\n onClick(e);\n focusAndSelect(dsId);\n } else if (focusedItem === FOOTER_MENU_CLOSE_DS_ID) {\n onClick(e);\n setFocusedItem(dsId);\n }\n }\n\n if (openable && keyCode === KEY_CODES.RIGHT_ARROW) {\n onClick(e);\n }\n\n if (dsId && closable && keyCode === KEY_CODES.LEFT_ARROW) {\n onClick(e);\n setFocusedItem(dsId);\n }\n\n if (keyCode === KEY_CODES.DOWN_ARROW) {\n const nextDsId = visibleItems[nextIndex(currentIndex, visibleItems.length)];\n setFocusedItem(nextDsId);\n }\n\n if (keyCode === KEY_CODES.UP_ARROW) {\n const prevDsId = visibleItems[prevIndex(currentIndex, visibleItems.length)];\n setFocusedItem(prevDsId);\n }\n\n if (keyCode === KEY_CODES.HOME) {\n setFocusedItem(visibleItems[0]);\n }\n\n if (keyCode === KEY_CODES.END) {\n setFocusedItem(visibleItems[visibleItems.length - 1]);\n }\n },\n [\n openable,\n closable,\n selectable,\n focusedItem,\n onClick,\n focusAndSelect,\n dsId,\n setFocusedItem,\n visibleItems,\n currentIndex,\n ],\n );\n\n return onKeyDown;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACIvB,SAAS,aAAa,SAAS,iBAAiB,kBAAkB;AAClE,SAAS,oBAAoB,+BAA+B;AAE5D,OAAO,oBAAoB;AAE3B,MAAM,YAAY;AAAA,EAChB,KAAK;AAAA,EACL,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,MAAM;AACR;AAEA,MAAM,YAAY,CAAC,OAAe,YAAoB,QAAQ,KAAK;AACnE,MAAM,YAAY,CAAC,OAAe,YAAoB,QAAQ,IAAI,UAAU;AAQrE,MAAM,wBAAwB,CAAC,EAAE,MAAM,QAAQ,MAA8D;AAClH,QAAM;AAAA,IACJ;AAAA,IACA,UAAU,EAAE,YAAY,UAAU,SAAS;AAAA,EAC7C,IAAI;AAEJ,QAAM,EAAE,cAAc,iBAAiB,IAAI,WAAW,cAAc;AAEpE,QAAM,eAAe;AAAA,IACnB,MAAM,aAAa,UAAU,CAAC,oBAAoB,oBAAoB,IAAI;AAAA,IAC1E,CAAC,MAAM,YAAY;AAAA,EACrB;AAEA,QAAM,EAAE,gBAAgB,aAAa,gBAAgB,IAAI,WAAW,cAAc;AAElF,QAAM,iBAAiB;AAAA,IACrB,CAAC,aAAqB;AACpB,qBAAe,QAAQ;AACvB,sBAAgB,QAAQ;AAAA,IAC1B;AAAA,IACA,CAAC,gBAAgB,eAAe;AAAA,EAClC;AAEA,kBAAgB,MAAM;AACpB,QAAI,SAAS;AAAa,uBAAiB,QAAQ,IAAI,GAAG,SAAS,MAAM;AAAA,EAC3E,GAAG,CAAC,MAAM,aAAa,gBAAgB,CAAC;AAExC,QAAM,YAAwC;AAAA,IAC5C,CAAC,MAAM;AACL,YAAM,EAAE,QAAQ,IAAI;AAGpB,UAAI,YAAY,UAAU,KAAK;AAC7B,UAAE,eAAe;AAAA,MACnB;AAEA,UAAI,SAAS,YAAY,UAAU,SAAS,YAAY,UAAU,QAAQ;AACxE,YAAI,YAAY;AACd,kBAAQ,CAAC;AACT,yBAAe,IAAI;AAAA,QACrB,WAAW,gBAAgB,oBAAoB;AAC7C,kBAAQ,CAAC;AACT,yBAAe,IAAI;AAAA,QACrB,WAAW,gBAAgB,yBAAyB;AAClD,kBAAQ,CAAC;AACT,yBAAe,IAAI;AAAA,QACrB;AAAA,MACF;AAEA,UAAI,YAAY,YAAY,UAAU,aAAa;AACjD,gBAAQ,CAAC;AAAA,MACX;AAEA,UAAI,QAAQ,YAAY,YAAY,UAAU,YAAY;AACxD,gBAAQ,CAAC;AACT,uBAAe,IAAI;AAAA,MACrB;AAEA,UAAI,YAAY,UAAU,YAAY;AACpC,cAAM,WAAW,aAAa,UAAU,cAAc,aAAa,MAAM,CAAC;AAC1E,uBAAe,QAAQ;AAAA,MACzB;AAEA,UAAI,YAAY,UAAU,UAAU;AAClC,cAAM,WAAW,aAAa,UAAU,cAAc,aAAa,MAAM,CAAC;AAC1E,uBAAe,QAAQ;AAAA,MACzB;AAEA,UAAI,YAAY,UAAU,MAAM;AAC9B,uBAAe,aAAa,CAAC,CAAC;AAAA,MAChC;AAEA,UAAI,YAAY,UAAU,KAAK;AAC7B,uBAAe,aAAa,aAAa,SAAS,CAAC,CAAC;AAAA,MACtD;AAAA,IACF;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,52 @@
1
+ import * as React from "react";
2
+ import { useCallback, useContext } from "react";
3
+ import LeftNavigationContext from "../LeftNavigationContext.js";
4
+ const useOpenableOnClickHandler = ({
5
+ id,
6
+ opened,
7
+ onExpand,
8
+ onOpen,
9
+ onClose
10
+ }) => {
11
+ const {
12
+ leftNavProps: { expanded },
13
+ setSelectedItem
14
+ } = useContext(LeftNavigationContext);
15
+ const handleOnExpand = useCallback(
16
+ (e) => {
17
+ onExpand(e);
18
+ setSelectedItem(id);
19
+ },
20
+ [id, onExpand, setSelectedItem]
21
+ );
22
+ const handleOnOpen = useCallback(
23
+ (e) => {
24
+ onOpen(e);
25
+ setSelectedItem(id);
26
+ },
27
+ [id, onOpen, setSelectedItem]
28
+ );
29
+ const handleOnClose = useCallback(
30
+ (e) => {
31
+ onClose(e);
32
+ setSelectedItem(id);
33
+ },
34
+ [id, onClose, setSelectedItem]
35
+ );
36
+ const handleOnClick = useCallback(
37
+ (e) => {
38
+ if (!expanded)
39
+ handleOnExpand(e);
40
+ else if (!opened)
41
+ handleOnOpen(e);
42
+ else
43
+ handleOnClose(e);
44
+ },
45
+ [expanded, opened, handleOnExpand, handleOnOpen, handleOnClose]
46
+ );
47
+ return handleOnClick;
48
+ };
49
+ export {
50
+ useOpenableOnClickHandler
51
+ };
52
+ //# sourceMappingURL=useOpenableOnClickHandler.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useOpenableOnClickHandler.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useCallback, useContext } from 'react';\nimport LeftNavigationContext from '../LeftNavigationContext.js';\n\ntype UseOpenableOnClickHandlerProps = {\n id: string;\n onExpand: React.MouseEventHandler & React.KeyboardEventHandler;\n onOpen: React.MouseEventHandler & React.KeyboardEventHandler;\n onClose: React.MouseEventHandler & React.KeyboardEventHandler;\n opened: boolean;\n};\n\nexport const useOpenableOnClickHandler = ({\n id,\n opened,\n onExpand,\n onOpen,\n onClose,\n}: UseOpenableOnClickHandlerProps): ((e: React.MouseEvent<HTMLElement>) => void) => {\n const {\n leftNavProps: { expanded },\n setSelectedItem,\n } = useContext(LeftNavigationContext);\n\n const handleOnExpand: React.MouseEventHandler = useCallback(\n (e) => {\n onExpand(e);\n setSelectedItem(id);\n },\n [id, onExpand, setSelectedItem],\n );\n\n const handleOnOpen: React.MouseEventHandler = useCallback(\n (e) => {\n onOpen(e);\n setSelectedItem(id);\n },\n [id, onOpen, setSelectedItem],\n );\n\n const handleOnClose: React.MouseEventHandler = useCallback(\n (e) => {\n onClose(e);\n setSelectedItem(id);\n },\n [id, onClose, setSelectedItem],\n );\n\n const handleOnClick: React.MouseEventHandler = useCallback(\n (e) => {\n if (!expanded) handleOnExpand(e);\n else if (!opened) handleOnOpen(e);\n else handleOnClose(e);\n },\n [expanded, opened, handleOnExpand, handleOnOpen, handleOnClose],\n );\n\n return handleOnClick;\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,aAAa,kBAAkB;AACxC,OAAO,2BAA2B;AAU3B,MAAM,4BAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAoF;AAClF,QAAM;AAAA,IACJ,cAAc,EAAE,SAAS;AAAA,IACzB;AAAA,EACF,IAAI,WAAW,qBAAqB;AAEpC,QAAM,iBAA0C;AAAA,IAC9C,CAAC,MAAM;AACL,eAAS,CAAC;AACV,sBAAgB,EAAE;AAAA,IACpB;AAAA,IACA,CAAC,IAAI,UAAU,eAAe;AAAA,EAChC;AAEA,QAAM,eAAwC;AAAA,IAC5C,CAAC,MAAM;AACL,aAAO,CAAC;AACR,sBAAgB,EAAE;AAAA,IACpB;AAAA,IACA,CAAC,IAAI,QAAQ,eAAe;AAAA,EAC9B;AAEA,QAAM,gBAAyC;AAAA,IAC7C,CAAC,MAAM;AACL,cAAQ,CAAC;AACT,sBAAgB,EAAE;AAAA,IACpB;AAAA,IACA,CAAC,IAAI,SAAS,eAAe;AAAA,EAC/B;AAEA,QAAM,gBAAyC;AAAA,IAC7C,CAAC,MAAM;AACL,UAAI,CAAC;AAAU,uBAAe,CAAC;AAAA,eACtB,CAAC;AAAQ,qBAAa,CAAC;AAAA;AAC3B,sBAAc,CAAC;AAAA,IACtB;AAAA,IACA,CAAC,UAAU,QAAQ,gBAAgB,cAAc,aAAa;AAAA,EAChE;AAEA,SAAO;AACT;",
6
+ "names": []
7
+ }
@@ -0,0 +1,23 @@
1
+ import * as React from "react";
2
+ import { useEffect } from "react";
3
+ import { ITEM_TYPES } from "../exported-related/constants.js";
4
+ const { LEFT_NAV_ITEM_SEPARATOR, LEFT_NAV_ITEM_SECTION } = ITEM_TYPES;
5
+ const isSelectableOutOfTheBox = (elem) => typeof elem.type === "string" && elem.type !== LEFT_NAV_ITEM_SEPARATOR && elem.type !== LEFT_NAV_ITEM_SECTION;
6
+ const isSelectableCustom = (elem) => elem.itemOpts.selectable;
7
+ const isItemInsideTheTree = (item, itemID) => item.dsId === itemID || !!item?.itemOpts?.items?.some((it) => isItemInsideTheTree(it, itemID));
8
+ const useSelectFirstBodyItem = (items, openedItem, selectedItem, setSelectedItem, disableDefaultSelection) => {
9
+ useEffect(() => {
10
+ if (!disableDefaultSelection && items && items.length && openedItem) {
11
+ const index = items.findIndex((elem) => isSelectableOutOfTheBox(elem) || isSelectableCustom(elem));
12
+ const isItemInside = items.some((it) => isItemInsideTheTree(it, selectedItem));
13
+ if (isItemInside)
14
+ setSelectedItem(selectedItem);
15
+ else if (index !== -1)
16
+ setSelectedItem(items[index].dsId ?? "");
17
+ }
18
+ }, [openedItem, setSelectedItem, disableDefaultSelection]);
19
+ };
20
+ export {
21
+ useSelectFirstBodyItem
22
+ };
23
+ //# sourceMappingURL=useSelectFirstBodyItem.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useSelectFirstBodyItem.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-params */\nimport type React from 'react';\nimport { useEffect } from 'react';\nimport type { DSLeftNavigationT } from '../react-desc-prop-types.js';\nimport { ITEM_TYPES } from '../exported-related/constants.js';\n\nconst { LEFT_NAV_ITEM_SEPARATOR, LEFT_NAV_ITEM_SECTION } = ITEM_TYPES;\n\nconst isSelectableOutOfTheBox = (elem: DSLeftNavigationT.GenericItemItemProps) =>\n typeof elem.type === 'string' && elem.type !== LEFT_NAV_ITEM_SEPARATOR && elem.type !== LEFT_NAV_ITEM_SECTION;\nconst isSelectableCustom = (elem: DSLeftNavigationT.GenericItemItemProps) => elem.itemOpts.selectable;\n\nconst isItemInsideTheTree = (item: DSLeftNavigationT.GenericItemItemProps, itemID: string | null): boolean =>\n item.dsId === itemID || !!item?.itemOpts?.items?.some((it) => isItemInsideTheTree(it, itemID));\n\nexport const useSelectFirstBodyItem = (\n items: DSLeftNavigationT.GenericItemItemProps[],\n openedItem: string | null,\n selectedItem: string | null,\n setSelectedItem: React.Dispatch<React.SetStateAction<string | null>>,\n disableDefaultSelection: boolean | undefined,\n): void => {\n useEffect(() => {\n if (!disableDefaultSelection && items && items.length && openedItem) {\n const index = items.findIndex((elem) => isSelectableOutOfTheBox(elem) || isSelectableCustom(elem));\n const isItemInside = items.some((it) => isItemInsideTheTree(it, selectedItem));\n if (isItemInside) setSelectedItem(selectedItem);\n else if (index !== -1) setSelectedItem(items[index].dsId ?? '');\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [openedItem, setSelectedItem, disableDefaultSelection]);\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACEvB,SAAS,iBAAiB;AAE1B,SAAS,kBAAkB;AAE3B,MAAM,EAAE,yBAAyB,sBAAsB,IAAI;AAE3D,MAAM,0BAA0B,CAAC,SAC/B,OAAO,KAAK,SAAS,YAAY,KAAK,SAAS,2BAA2B,KAAK,SAAS;AAC1F,MAAM,qBAAqB,CAAC,SAAiD,KAAK,SAAS;AAE3F,MAAM,sBAAsB,CAAC,MAA8C,WACzE,KAAK,SAAS,UAAU,CAAC,CAAC,MAAM,UAAU,OAAO,KAAK,CAAC,OAAO,oBAAoB,IAAI,MAAM,CAAC;AAExF,MAAM,yBAAyB,CACpC,OACA,YACA,cACA,iBACA,4BACS;AACT,YAAU,MAAM;AACd,QAAI,CAAC,2BAA2B,SAAS,MAAM,UAAU,YAAY;AACnE,YAAM,QAAQ,MAAM,UAAU,CAAC,SAAS,wBAAwB,IAAI,KAAK,mBAAmB,IAAI,CAAC;AACjG,YAAM,eAAe,MAAM,KAAK,CAAC,OAAO,oBAAoB,IAAI,YAAY,CAAC;AAC7E,UAAI;AAAc,wBAAgB,YAAY;AAAA,eACrC,UAAU;AAAI,wBAAgB,MAAM,KAAK,EAAE,QAAQ,EAAE;AAAA,IAChE;AAAA,EAEF,GAAG,CAAC,YAAY,iBAAiB,uBAAuB,CAAC;AAC3D;",
6
+ "names": []
7
+ }
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { LeftNavigation } from "./LeftNavigation.js";
3
+ var src_default = LeftNavigation;
4
+ import { LeftNavItemPropsSchema, LeftNavItemOptionsSchema } from "./react-desc-prop-types.js";
5
+ import { LeftNavigation as LeftNavigation2, LeftNavigationWithSchema } from "./LeftNavigation.js";
6
+ export * from "./exported-related/index.js";
7
+ export * from "./constants/index.js";
8
+ export {
9
+ LeftNavItemOptionsSchema,
10
+ LeftNavItemPropsSchema,
11
+ LeftNavigation2 as LeftNavigation,
12
+ LeftNavigationWithSchema,
13
+ src_default as default
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../src/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { LeftNavigation } from './LeftNavigation.js';\n\nexport default LeftNavigation;\nexport { LeftNavItemPropsSchema, LeftNavItemOptionsSchema, type DSLeftNavigationT } from './react-desc-prop-types.js';\nexport { LeftNavigation, LeftNavigationWithSchema } from './LeftNavigation.js';\nexport * from './exported-related/index.js';\nexport * from './constants/index.js';\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,sBAAsB;AAE/B,IAAO,cAAQ;AACf,SAAS,wBAAwB,gCAAwD;AACzF,SAAS,kBAAAA,iBAAgB,gCAAgC;AACzD,cAAc;AACd,cAAc;",
6
+ "names": ["LeftNavigation"]
7
+ }
@@ -0,0 +1,117 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
4
+ import { SimpleTruncatedTooltipText } from "@elliemae/ds-legacy-truncated-tooltip-text";
5
+ import { ArrowheadDown, ArrowheadRight } from "@elliemae/ds-legacy-icons";
6
+ import { ItemRenderer, ITEM_TYPES } from "../../exported-related/index.js";
7
+ import { StyledLabel, StyledDate, StyledArrowContainer, StyledRightContainer } from "../styled.js";
8
+ import { ItemSeparator } from "../ItemSeparator/index.js";
9
+ import { ItemWithDate } from "../ItemWithDate/index.js";
10
+ import { ItemTextLabel } from "../ItemTextLabel/index.js";
11
+ const outOfTheBoxSubitemsComponents = {
12
+ [ITEM_TYPES.LEFT_NAV_ITEM_SEPARATOR]: ItemSeparator,
13
+ [ITEM_TYPES.LEFT_NAV_ITEM_WITH_DATE]: ItemWithDate,
14
+ [ITEM_TYPES.LEFT_NAV_ITEM_TEXT_LABEL]: ItemTextLabel
15
+ };
16
+ const OutOfTheBoxMapSubitem = (props) => {
17
+ const {
18
+ item,
19
+ item: { type, Component },
20
+ ctx
21
+ } = props;
22
+ if (typeof type === "string" && !!outOfTheBoxSubitemsComponents[type]) {
23
+ const OutOfTheBoxComponent = outOfTheBoxSubitemsComponents[type];
24
+ const currentIndent = item.itemOpts?.indent ?? 0;
25
+ const newItem = {
26
+ ...item,
27
+ itemOpts: { ...item.itemOpts, indent: currentIndent + 44 }
28
+ };
29
+ return /* @__PURE__ */ jsx(OutOfTheBoxComponent, { item: newItem, ctx });
30
+ }
31
+ if (!Component)
32
+ return null;
33
+ return /* @__PURE__ */ jsx(Component, { item, ctx });
34
+ };
35
+ const ItemControlledDrilldown = (props) => {
36
+ const {
37
+ item,
38
+ item: {
39
+ itemOpts: {
40
+ label,
41
+ RightComponent,
42
+ labelRightSection,
43
+ labelOverflow: itemLabelOverflow,
44
+ labelBold,
45
+ labelColor,
46
+ isOpened,
47
+ items,
48
+ labelDataTestId
49
+ }
50
+ },
51
+ ctx,
52
+ ctx: {
53
+ leftNavProps: { labelOverflow: leftNavLabelOverflow }
54
+ }
55
+ } = props;
56
+ const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
57
+ const arrowIcon = useMemo(() => {
58
+ const Component = isOpened ? ArrowheadDown : ArrowheadRight;
59
+ return /* @__PURE__ */ jsx(Component, { width: "24px", height: "18px", color: ["brand-primary", "800"] });
60
+ }, [isOpened]);
61
+ const subitems = useMemo(() => {
62
+ if (!isOpened || !items)
63
+ return [];
64
+ return items.map((subitem) => /* @__PURE__ */ jsx(OutOfTheBoxMapSubitem, { item: subitem, ctx }, subitem.dsId));
65
+ }, [isOpened, items, ctx]);
66
+ return /* @__PURE__ */ jsxs(
67
+ ItemRenderer,
68
+ {
69
+ item: {
70
+ ...item,
71
+ itemOpts: {
72
+ ariaExpanded: isOpened,
73
+ ariaRole: "menuitem",
74
+ ...item.itemOpts,
75
+ openable: !isOpened,
76
+ closable: isOpened
77
+ },
78
+ CollapsedComponent: null
79
+ },
80
+ subitems,
81
+ minHeight: "32px",
82
+ paddingTop: "8px",
83
+ children: [
84
+ /* @__PURE__ */ jsx(StyledArrowContainer, { pl: "xxs", mt: "-2px", children: arrowIcon }),
85
+ /* @__PURE__ */ jsx(
86
+ StyledLabel,
87
+ {
88
+ pb: "xxxs",
89
+ "data-testid": labelDataTestId || "leftnav-list-item-label",
90
+ labelOverflow,
91
+ labelBold,
92
+ labelColor,
93
+ children: labelOverflow === "truncate" ? /* @__PURE__ */ jsx(SimpleTruncatedTooltipText, { value: label, placement: "bottom-start" }) : label
94
+ }
95
+ ),
96
+ /* @__PURE__ */ jsxs(
97
+ StyledRightContainer,
98
+ {
99
+ pr: "xxs2",
100
+ cols: ["auto", "auto"],
101
+ alignItems: "center",
102
+ gutter: "xxs",
103
+ "data-testid": "leftnav-right-component",
104
+ children: [
105
+ /* @__PURE__ */ jsx(StyledDate, { ml: "xxs", "data-testid": "leftnav-list-item-date", children: labelRightSection }),
106
+ RightComponent && /* @__PURE__ */ jsx(RightComponent, { ctx, item })
107
+ ]
108
+ }
109
+ )
110
+ ]
111
+ }
112
+ );
113
+ };
114
+ export {
115
+ ItemControlledDrilldown
116
+ };
117
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemControlledDrilldown/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useMemo } from 'react';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-legacy-truncated-tooltip-text';\nimport { ArrowheadDown, ArrowheadRight } from '@elliemae/ds-legacy-icons';\nimport { ItemRenderer, ITEM_TYPES } from '../../exported-related/index.js';\nimport { StyledLabel, StyledDate, StyledArrowContainer, StyledRightContainer } from '../styled.js';\nimport { ItemSeparator } from '../ItemSeparator/index.js';\nimport { ItemWithDate } from '../ItemWithDate/index.js';\nimport { ItemTextLabel } from '../ItemTextLabel/index.js';\nimport type { DSLeftNavigationT } from '../../react-desc-prop-types.js';\n\nconst outOfTheBoxSubitemsComponents: Record<string, React.ComponentType<DSLeftNavigationT.ComponentProps>> = {\n [ITEM_TYPES.LEFT_NAV_ITEM_SEPARATOR]: ItemSeparator,\n [ITEM_TYPES.LEFT_NAV_ITEM_WITH_DATE]: ItemWithDate,\n [ITEM_TYPES.LEFT_NAV_ITEM_TEXT_LABEL]: ItemTextLabel,\n};\n\nconst OutOfTheBoxMapSubitem: React.ComponentType<DSLeftNavigationT.ComponentProps> = (props) => {\n const {\n item,\n item: { type, Component },\n ctx,\n } = props;\n\n if (typeof type === 'string' && !!outOfTheBoxSubitemsComponents[type]) {\n const OutOfTheBoxComponent = outOfTheBoxSubitemsComponents[type];\n const currentIndent = item.itemOpts?.indent ?? 0;\n const newItem = {\n ...item,\n itemOpts: { ...item.itemOpts, indent: currentIndent + 44 },\n };\n return <OutOfTheBoxComponent item={newItem} ctx={ctx} />;\n }\n if (!Component) return null;\n // we expect an error to be threw if Component is not defined and type is not a valid out-of-the-box...\n return <Component item={item} ctx={ctx} />;\n};\n\nexport const ItemControlledDrilldown = (props: DSLeftNavigationT.ComponentProps): JSX.Element => {\n const {\n item,\n item: {\n itemOpts: {\n label,\n RightComponent,\n labelRightSection,\n labelOverflow: itemLabelOverflow,\n labelBold,\n labelColor,\n isOpened,\n items,\n labelDataTestId,\n },\n },\n ctx,\n ctx: {\n leftNavProps: { labelOverflow: leftNavLabelOverflow },\n },\n } = props;\n\n const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;\n\n const arrowIcon = useMemo(() => {\n const Component = isOpened ? ArrowheadDown : ArrowheadRight;\n return <Component width=\"24px\" height=\"18px\" color={['brand-primary', '800']} />;\n }, [isOpened]);\n\n const subitems = useMemo(() => {\n if (!isOpened || !items) return [];\n return items.map((subitem) => <OutOfTheBoxMapSubitem item={subitem} ctx={ctx} key={subitem.dsId} />);\n }, [isOpened, items, ctx]);\n\n return (\n <ItemRenderer\n item={{\n ...item,\n itemOpts: {\n ariaExpanded: isOpened,\n ariaRole: 'menuitem',\n ...item.itemOpts,\n openable: !isOpened,\n closable: isOpened,\n },\n CollapsedComponent: null,\n }}\n subitems={subitems}\n minHeight=\"32px\"\n paddingTop=\"8px\"\n >\n <StyledArrowContainer pl=\"xxs\" mt=\"-2px\">\n {arrowIcon}\n </StyledArrowContainer>\n <StyledLabel\n pb=\"xxxs\"\n data-testid={labelDataTestId || 'leftnav-list-item-label'}\n labelOverflow={labelOverflow}\n labelBold={labelBold}\n labelColor={labelColor}\n >\n {labelOverflow === 'truncate' ? <SimpleTruncatedTooltipText value={label} placement=\"bottom-start\" /> : label}\n </StyledLabel>\n <StyledRightContainer\n pr=\"xxs2\"\n cols={['auto', 'auto']}\n alignItems=\"center\"\n gutter=\"xxs\"\n data-testid=\"leftnav-right-component\"\n >\n <StyledDate ml=\"xxs\" data-testid=\"leftnav-list-item-date\">\n {labelRightSection}\n </StyledDate>\n {RightComponent && <RightComponent ctx={ctx} item={item} />}\n </StyledRightContainer>\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;AC8BZ,cAsEL,YAtEK;AA9BX,SAAgB,eAAe;AAC/B,SAAS,kCAAkC;AAC3C,SAAS,eAAe,sBAAsB;AAC9C,SAAS,cAAc,kBAAkB;AACzC,SAAS,aAAa,YAAY,sBAAsB,4BAA4B;AACpF,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAG9B,MAAM,gCAAuG;AAAA,EAC3G,CAAC,WAAW,uBAAuB,GAAG;AAAA,EACtC,CAAC,WAAW,uBAAuB,GAAG;AAAA,EACtC,CAAC,WAAW,wBAAwB,GAAG;AACzC;AAEA,MAAM,wBAA+E,CAAC,UAAU;AAC9F,QAAM;AAAA,IACJ;AAAA,IACA,MAAM,EAAE,MAAM,UAAU;AAAA,IACxB;AAAA,EACF,IAAI;AAEJ,MAAI,OAAO,SAAS,YAAY,CAAC,CAAC,8BAA8B,IAAI,GAAG;AACrE,UAAM,uBAAuB,8BAA8B,IAAI;AAC/D,UAAM,gBAAgB,KAAK,UAAU,UAAU;AAC/C,UAAM,UAAU;AAAA,MACd,GAAG;AAAA,MACH,UAAU,EAAE,GAAG,KAAK,UAAU,QAAQ,gBAAgB,GAAG;AAAA,IAC3D;AACA,WAAO,oBAAC,wBAAqB,MAAM,SAAS,KAAU;AAAA,EACxD;AACA,MAAI,CAAC;AAAW,WAAO;AAEvB,SAAO,oBAAC,aAAU,MAAY,KAAU;AAC1C;AAEO,MAAM,0BAA0B,CAAC,UAAyD;AAC/F,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ,UAAU;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA,eAAe;AAAA,QACf;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA;AAAA,IACA,KAAK;AAAA,MACH,cAAc,EAAE,eAAe,qBAAqB;AAAA,IACtD;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,qBAAqB;AAE3C,QAAM,YAAY,QAAQ,MAAM;AAC9B,UAAM,YAAY,WAAW,gBAAgB;AAC7C,WAAO,oBAAC,aAAU,OAAM,QAAO,QAAO,QAAO,OAAO,CAAC,iBAAiB,KAAK,GAAG;AAAA,EAChF,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,WAAW,QAAQ,MAAM;AAC7B,QAAI,CAAC,YAAY,CAAC;AAAO,aAAO,CAAC;AACjC,WAAO,MAAM,IAAI,CAAC,YAAY,oBAAC,yBAAsB,MAAM,SAAS,OAAe,QAAQ,IAAM,CAAE;AAAA,EACrG,GAAG,CAAC,UAAU,OAAO,GAAG,CAAC;AAEzB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU;AAAA,UACR,cAAc;AAAA,UACd,UAAU;AAAA,UACV,GAAG,KAAK;AAAA,UACR,UAAU,CAAC;AAAA,UACX,UAAU;AAAA,QACZ;AAAA,QACA,oBAAoB;AAAA,MACtB;AAAA,MACA;AAAA,MACA,WAAU;AAAA,MACV,YAAW;AAAA,MAEX;AAAA,4BAAC,wBAAqB,IAAG,OAAM,IAAG,QAC/B,qBACH;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,eAAa,mBAAmB;AAAA,YAChC;AAAA,YACA;AAAA,YACA;AAAA,YAEC,4BAAkB,aAAa,oBAAC,8BAA2B,OAAO,OAAO,WAAU,gBAAe,IAAK;AAAA;AAAA,QAC1G;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,MAAM,CAAC,QAAQ,MAAM;AAAA,YACrB,YAAW;AAAA,YACX,QAAO;AAAA,YACP,eAAY;AAAA,YAEZ;AAAA,kCAAC,cAAW,IAAG,OAAM,eAAY,0BAC9B,6BACH;AAAA,cACC,kBAAkB,oBAAC,kBAAe,KAAU,MAAY;AAAA;AAAA;AAAA,QAC3D;AAAA;AAAA;AAAA,EACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,145 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useCallback } from "react";
4
+ import { ChevronSmallLeft } from "@elliemae/ds-legacy-icons";
5
+ import { SimpleTruncatedTooltipText } from "@elliemae/ds-legacy-truncated-tooltip-text";
6
+ import { ItemRenderer } from "../../exported-related/index.js";
7
+ import {
8
+ StyledItemLabel,
9
+ StyledBottomContainer,
10
+ StyledLeftContainer,
11
+ StyledRightContainer,
12
+ StyledChevronLeft
13
+ } from "../styled.js";
14
+ import { CHEVRON_BACK_DS_ID } from "../../exported-related/constants.js";
15
+ const notOpenedShadowStyle = (isSelected) => (theme) => `
16
+ box-shadow: inset 4px 0 0 0 ${isSelected ? theme.colors.brand[400] : "transparent"};
17
+
18
+ :hover {
19
+ box-shadow: inset 4px 0 0 0 ${isSelected ? theme.colors.brand[400] : theme.colors.brand[300]};
20
+ }
21
+
22
+ :active {
23
+ box-shadow: inset 4px 0 0 0 ${theme.colors.brand[400]};
24
+ }
25
+ `;
26
+ const ItemHeader = (props) => {
27
+ const {
28
+ item,
29
+ item: {
30
+ dsId,
31
+ itemOpts: { label, RightComponent, BottomComponent, labelDataTestId, labelOverflow: itemLabelOverflow },
32
+ CollapsedComponent = () => null
33
+ },
34
+ ctx,
35
+ ctx: {
36
+ leftNavProps: { openedItem, labelOverflow: leftNavLabelOverflow, onItemClick },
37
+ expandedForAnimation,
38
+ setFocusedItem,
39
+ selectedItem,
40
+ selectedParent
41
+ }
42
+ } = props;
43
+ const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
44
+ const opened = openedItem === dsId;
45
+ const ariaLabel = item.itemOpts.ariaLabel ?? (typeof label === "string" ? `${label}, category` : "category");
46
+ const isSelected = selectedItem === dsId || selectedParent === dsId;
47
+ const shadowStyle = useCallback(
48
+ (opened_) => (theme) => !opened_ ? notOpenedShadowStyle(isSelected)(theme) : `box-shadow: inset 4px 0 0 0 #52A6EC`,
49
+ [isSelected]
50
+ );
51
+ return /* @__PURE__ */ jsxs(
52
+ ItemRenderer,
53
+ {
54
+ item: {
55
+ ...item,
56
+ itemOpts: {
57
+ ariaLabel,
58
+ ariaExpanded: opened,
59
+ ...item.itemOpts,
60
+ openable: expandedForAnimation && !opened,
61
+ closable: expandedForAnimation && opened,
62
+ selectable: !opened
63
+ }
64
+ },
65
+ hasBorderBottom: true,
66
+ borderBottomMr: opened ? "12px" : "0px",
67
+ shadowStyle,
68
+ children: [
69
+ /* @__PURE__ */ jsxs(
70
+ StyledLeftContainer,
71
+ {
72
+ cols: opened ? ["auto", "auto"] : ["38px"],
73
+ gutter: "1px",
74
+ pl: opened ? "xxs" : 0,
75
+ justifyItems: "center",
76
+ "data-testid": "leftnav-leftcomponent",
77
+ children: [
78
+ opened && /* @__PURE__ */ jsx(
79
+ StyledChevronLeft,
80
+ {
81
+ buttonType: "raw",
82
+ onClick: (e) => {
83
+ if (onItemClick)
84
+ onItemClick(item, e);
85
+ },
86
+ "data-testid": "leftnav-leftcomponent-chevron",
87
+ onFocus: (e) => {
88
+ e.stopPropagation();
89
+ setFocusedItem(CHEVRON_BACK_DS_ID);
90
+ },
91
+ "aria-label": `Close ${ariaLabel}`,
92
+ children: /* @__PURE__ */ jsx(ChevronSmallLeft, { size: "m", color: ["brand-primary", "800"] })
93
+ }
94
+ ),
95
+ CollapsedComponent && /* @__PURE__ */ jsx(CollapsedComponent, { item, ctx })
96
+ ]
97
+ }
98
+ ),
99
+ /* @__PURE__ */ jsx(
100
+ StyledItemLabel,
101
+ {
102
+ ml: opened ? "xxs" : "1px",
103
+ mt: "xxxs",
104
+ mb: "15px",
105
+ "data-testid": labelDataTestId || "leftnav-itemlabel",
106
+ labelOverflow,
107
+ children: labelOverflow === "truncate" ? /* @__PURE__ */ jsx(SimpleTruncatedTooltipText, { value: label, placement: "bottom-start" }) : label
108
+ }
109
+ ),
110
+ /* @__PURE__ */ jsx(
111
+ StyledRightContainer,
112
+ {
113
+ pl: "xs",
114
+ pr: opened ? "xxs2" : "xxs",
115
+ onFocus: (e) => {
116
+ setFocusedItem(null);
117
+ e.stopPropagation();
118
+ },
119
+ onKeyDown: (e) => e.stopPropagation(),
120
+ "data-testid": "leftnav-right-component",
121
+ children: RightComponent && /* @__PURE__ */ jsx(RightComponent, { ctx, item })
122
+ }
123
+ ),
124
+ BottomComponent && /* @__PURE__ */ jsx(
125
+ StyledBottomContainer,
126
+ {
127
+ pb: "xxxs",
128
+ pl: "xxs",
129
+ pr: "xxs",
130
+ onFocus: (e) => {
131
+ setFocusedItem(null);
132
+ e.stopPropagation();
133
+ },
134
+ onKeyDown: (e) => e.stopPropagation(),
135
+ children: /* @__PURE__ */ jsx(BottomComponent, { ctx, item })
136
+ }
137
+ )
138
+ ]
139
+ }
140
+ );
141
+ };
142
+ export {
143
+ ItemHeader
144
+ };
145
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemHeader/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport React, { useCallback } from 'react';\nimport { ChevronSmallLeft } from '@elliemae/ds-legacy-icons';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-legacy-truncated-tooltip-text';\nimport type { Theme } from '@elliemae/ds-legacy-system';\nimport { ItemRenderer } from '../../exported-related/index.js';\nimport type { DSLeftNavigationT } from '../../react-desc-prop-types.js';\nimport {\n StyledItemLabel,\n StyledBottomContainer,\n StyledLeftContainer,\n StyledRightContainer,\n StyledChevronLeft,\n} from '../styled.js';\nimport { CHEVRON_BACK_DS_ID } from '../../exported-related/constants.js';\n\nconst notOpenedShadowStyle = (isSelected: boolean) => (theme: Theme) =>\n `\n box-shadow: inset 4px 0 0 0 ${isSelected ? theme.colors.brand[400] : 'transparent'};\n\n :hover {\n box-shadow: inset 4px 0 0 0 ${isSelected ? theme.colors.brand[400] : theme.colors.brand[300]};\n }\n\n :active {\n box-shadow: inset 4px 0 0 0 ${theme.colors.brand[400]};\n }\n`;\n\nexport const ItemHeader = (props: DSLeftNavigationT.ComponentProps): JSX.Element => {\n const {\n item,\n item: {\n dsId,\n itemOpts: { label, RightComponent, BottomComponent, labelDataTestId, labelOverflow: itemLabelOverflow },\n CollapsedComponent = () => null,\n },\n ctx,\n ctx: {\n leftNavProps: { openedItem, labelOverflow: leftNavLabelOverflow, onItemClick },\n expandedForAnimation,\n setFocusedItem,\n selectedItem,\n selectedParent,\n },\n } = props;\n\n const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;\n\n const opened = openedItem === dsId;\n\n const ariaLabel = item.itemOpts.ariaLabel ?? (typeof label === 'string' ? `${label}, category` : 'category');\n\n const isSelected = selectedItem === dsId || selectedParent === dsId;\n\n const shadowStyle = useCallback(\n (opened_: boolean) => (theme: Theme) =>\n !opened_ ? notOpenedShadowStyle(isSelected)(theme) : `box-shadow: inset 4px 0 0 0 #52A6EC`,\n [isSelected],\n );\n\n return (\n <ItemRenderer\n item={{\n ...item,\n itemOpts: {\n ariaLabel,\n ariaExpanded: opened,\n ...item.itemOpts,\n openable: expandedForAnimation && !opened,\n closable: expandedForAnimation && opened,\n selectable: !opened,\n },\n }}\n hasBorderBottom\n borderBottomMr={opened ? '12px' : '0px'}\n shadowStyle={shadowStyle}\n >\n <StyledLeftContainer\n cols={opened ? ['auto', 'auto'] : ['38px']}\n gutter=\"1px\"\n pl={opened ? 'xxs' : 0}\n justifyItems=\"center\"\n data-testid=\"leftnav-leftcomponent\"\n >\n {opened && (\n <StyledChevronLeft\n buttonType=\"raw\"\n onClick={(e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>) => {\n if (onItemClick) onItemClick(item, e as React.MouseEvent<HTMLElement>);\n }}\n data-testid=\"leftnav-leftcomponent-chevron\"\n onFocus={(e: React.FocusEvent) => {\n e.stopPropagation();\n setFocusedItem(CHEVRON_BACK_DS_ID);\n }}\n aria-label={`Close ${ariaLabel}`}\n >\n <ChevronSmallLeft size=\"m\" color={['brand-primary', '800']} />\n </StyledChevronLeft>\n )}\n {CollapsedComponent && <CollapsedComponent item={item} ctx={ctx} />}\n </StyledLeftContainer>\n <StyledItemLabel\n ml={opened ? 'xxs' : '1px'}\n mt=\"xxxs\"\n mb=\"15px\"\n data-testid={labelDataTestId || 'leftnav-itemlabel'}\n labelOverflow={labelOverflow}\n >\n {labelOverflow === 'truncate' ? <SimpleTruncatedTooltipText value={label} placement=\"bottom-start\" /> : label}\n </StyledItemLabel>\n <StyledRightContainer\n pl=\"xs\"\n pr={opened ? 'xxs2' : 'xxs'}\n onFocus={(e: React.FocusEvent) => {\n setFocusedItem(null);\n e.stopPropagation();\n }}\n onKeyDown={(e: React.KeyboardEvent) => e.stopPropagation()}\n data-testid=\"leftnav-right-component\"\n >\n {RightComponent && <RightComponent ctx={ctx} item={item} />}\n </StyledRightContainer>\n {BottomComponent && (\n <StyledBottomContainer\n pb=\"xxxs\"\n pl=\"xxs\"\n pr=\"xxs\"\n onFocus={(e: React.FocusEvent) => {\n setFocusedItem(null);\n e.stopPropagation();\n }}\n onKeyDown={(e: React.KeyboardEvent) => e.stopPropagation()}\n >\n <BottomComponent ctx={ctx} item={item} />\n </StyledBottomContainer>\n )}\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }