@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,72 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useCallback } from "react";
4
+ import { SimpleTruncatedTooltipText } from "@elliemae/ds-legacy-truncated-tooltip-text";
5
+ import { ItemRenderer } from "../../exported-related/index.js";
6
+ import { StyledItemLabel, StyledLeftContainer, StyledRightContainer } from "../styled.js";
7
+ const notOpenedShadowStyle = (isSelected) => (theme) => `
8
+ box-shadow: inset 4px 0 0 0 ${isSelected ? theme.colors.brand[400] : "transparent"};
9
+
10
+ :hover {
11
+ box-shadow: inset 4px 0 0 0 ${isSelected ? theme.colors.brand[400] : theme.colors.brand[300]};
12
+ }
13
+
14
+ :active {
15
+ box-shadow: inset 4px 0 0 0 ${theme.colors.brand[400]};
16
+ }
17
+ `;
18
+ const ItemLink = (props) => {
19
+ const {
20
+ item,
21
+ item: {
22
+ dsId,
23
+ itemOpts: { label, RightComponent, labelDataTestId, labelOverflow: itemLabelOverflow },
24
+ CollapsedComponent = () => null
25
+ },
26
+ ctx,
27
+ ctx: {
28
+ leftNavProps: { labelOverflow: leftNavLabelOverflow },
29
+ selectedItem,
30
+ selectedParent
31
+ }
32
+ } = props;
33
+ const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
34
+ const isSelected = selectedItem === dsId || selectedParent === dsId;
35
+ const shadowStyle = useCallback(
36
+ (opened_) => (theme) => !opened_ ? notOpenedShadowStyle(isSelected)(theme) : `box-shadow: inset 4px 0 0 0 #52A6EC`,
37
+ [isSelected]
38
+ );
39
+ return /* @__PURE__ */ jsxs(
40
+ ItemRenderer,
41
+ {
42
+ item: {
43
+ ...item,
44
+ itemOpts: {
45
+ ariaLabel: typeof label === "string" ? label : "",
46
+ ...item.itemOpts,
47
+ selectable: true
48
+ }
49
+ },
50
+ shadowStyle,
51
+ children: [
52
+ /* @__PURE__ */ jsx(StyledLeftContainer, { cols: ["38px"], gutter: "1px", justifyItems: "center", "data-testid": "leftnav-leftcomponent", children: CollapsedComponent && /* @__PURE__ */ jsx(CollapsedComponent, { item, ctx }) }),
53
+ /* @__PURE__ */ jsx(
54
+ StyledItemLabel,
55
+ {
56
+ ml: "1px",
57
+ mt: "xxxs",
58
+ mb: "15px",
59
+ "data-testid": labelDataTestId || "leftnav-itemlabel",
60
+ labelOverflow,
61
+ children: labelOverflow === "truncate" ? /* @__PURE__ */ jsx(SimpleTruncatedTooltipText, { value: label, placement: "bottom-start" }) : label
62
+ }
63
+ ),
64
+ /* @__PURE__ */ jsx(StyledRightContainer, { mt: "xxxs", pr: "xxs2", "data-testid": "leftnav-right-component", children: RightComponent && /* @__PURE__ */ jsx(RightComponent, { ctx, item }) })
65
+ ]
66
+ }
67
+ );
68
+ };
69
+ export {
70
+ ItemLink
71
+ };
72
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemLink/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable indent */\nimport React, { useCallback } from 'react';\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 { StyledItemLabel, StyledLeftContainer, StyledRightContainer } from '../styled.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 ItemLink = (props: DSLeftNavigationT.ComponentProps): JSX.Element => {\n const {\n item,\n item: {\n dsId,\n itemOpts: { label, RightComponent, labelDataTestId, labelOverflow: itemLabelOverflow },\n CollapsedComponent = () => null,\n },\n ctx,\n ctx: {\n leftNavProps: { labelOverflow: leftNavLabelOverflow },\n selectedItem,\n selectedParent,\n },\n } = props;\n\n const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;\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: typeof label === 'string' ? label : '',\n ...item.itemOpts,\n selectable: true,\n },\n }}\n shadowStyle={shadowStyle}\n >\n <StyledLeftContainer cols={['38px']} gutter=\"1px\" justifyItems=\"center\" data-testid=\"leftnav-leftcomponent\">\n {CollapsedComponent && <CollapsedComponent item={item} ctx={ctx} />}\n </StyledLeftContainer>\n <StyledItemLabel\n ml=\"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 mt=\"xxxs\" pr=\"xxs2\" data-testid=\"leftnav-right-component\">\n {RightComponent && <RightComponent ctx={ctx} item={item} />}\n </StyledRightContainer>\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACgDnB,SAY2B,KAZ3B;AA/CJ,SAAgB,mBAAmB;AACnC,SAAS,kCAAkC;AAE3C,SAAS,oBAAoB;AAE7B,SAAS,iBAAiB,qBAAqB,4BAA4B;AAE3E,MAAM,uBAAuB,CAAC,eAAwB,CAAC,UACrD;AAAA,gCAC8B,aAAa,MAAM,OAAO,MAAM,GAAG,IAAI;AAAA;AAAA;AAAA,kCAGrC,aAAa,MAAM,OAAO,MAAM,GAAG,IAAI,MAAM,OAAO,MAAM,GAAG;AAAA;AAAA;AAAA;AAAA,kCAI7D,MAAM,OAAO,MAAM,GAAG;AAAA;AAAA;AAIjD,MAAM,WAAW,CAAC,UAAyD;AAChF,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA,UAAU,EAAE,OAAO,gBAAgB,iBAAiB,eAAe,kBAAkB;AAAA,MACrF,qBAAqB,MAAM;AAAA,IAC7B;AAAA,IACA;AAAA,IACA,KAAK;AAAA,MACH,cAAc,EAAE,eAAe,qBAAqB;AAAA,MACpD;AAAA,MACA;AAAA,IACF;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,qBAAqB;AAE3C,QAAM,aAAa,iBAAiB,QAAQ,mBAAmB;AAE/D,QAAM,cAAc;AAAA,IAClB,CAAC,YAAqB,CAAC,UACrB,CAAC,UAAU,qBAAqB,UAAU,EAAE,KAAK,IAAI;AAAA,IACvD,CAAC,UAAU;AAAA,EACb;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU;AAAA,UACR,WAAW,OAAO,UAAU,WAAW,QAAQ;AAAA,UAC/C,GAAG,KAAK;AAAA,UACR,YAAY;AAAA,QACd;AAAA,MACF;AAAA,MACA;AAAA,MAEA;AAAA,4BAAC,uBAAoB,MAAM,CAAC,MAAM,GAAG,QAAO,OAAM,cAAa,UAAS,eAAY,yBACjF,gCAAsB,oBAAC,sBAAmB,MAAY,KAAU,GACnE;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,IAAG;AAAA,YACH,IAAG;AAAA,YACH,eAAa,mBAAmB;AAAA,YAChC;AAAA,YAEC,4BAAkB,aAAa,oBAAC,8BAA2B,OAAO,OAAO,WAAU,gBAAe,IAAK;AAAA;AAAA,QAC1G;AAAA,QACA,oBAAC,wBAAqB,IAAG,QAAO,IAAG,QAAO,eAAY,2BACnD,4BAAkB,oBAAC,kBAAe,KAAU,MAAY,GAC3D;AAAA;AAAA;AAAA,EACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,59 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { ItemRenderer } from "../../exported-related/index.js";
4
+ import {
5
+ StyledSectionLabel,
6
+ StyledRightLabel,
7
+ StyledVerticalSeparator,
8
+ StyledRightContainer,
9
+ StyledSectionContainer
10
+ } from "../styled.js";
11
+ const ItemSection = (props) => {
12
+ const {
13
+ item,
14
+ item: {
15
+ itemOpts: { label, LeftComponent, RightComponent, labelRightSection, labelDataTestId }
16
+ },
17
+ ctx,
18
+ ctx: { setFocusedItem }
19
+ } = props;
20
+ return /* @__PURE__ */ jsxs(
21
+ ItemRenderer,
22
+ {
23
+ item: {
24
+ ...item,
25
+ itemOpts: { ...item.itemOpts, selectable: false, focuseable: false },
26
+ CollapsedComponent: null
27
+ },
28
+ minHeight: "32px",
29
+ paddingTop: "8px",
30
+ children: [
31
+ /* @__PURE__ */ jsxs(StyledSectionContainer, { cols: ["min-content", "auto", "min-content", "auto"], pl: "xxs", alignItems: "center", children: [
32
+ LeftComponent ? /* @__PURE__ */ jsx(LeftComponent, { ctx, item }) : /* @__PURE__ */ jsx("div", {}),
33
+ /* @__PURE__ */ jsx(StyledSectionLabel, { "data-testid": labelDataTestId || "leftnav-section-item-label", children: label }),
34
+ /* @__PURE__ */ jsx(StyledVerticalSeparator, {}),
35
+ /* @__PURE__ */ jsx(StyledRightLabel, { children: labelRightSection })
36
+ ] }),
37
+ /* @__PURE__ */ jsx(
38
+ StyledRightContainer,
39
+ {
40
+ ml: "auto",
41
+ onFocus: (e) => {
42
+ setFocusedItem(null);
43
+ e.stopPropagation();
44
+ },
45
+ onKeyDown: (e) => e.stopPropagation(),
46
+ pr: "xxs2",
47
+ alignItems: "center",
48
+ "data-testid": "leftnav-right-component",
49
+ children: RightComponent && /* @__PURE__ */ jsx(RightComponent, { ctx, item })
50
+ }
51
+ )
52
+ ]
53
+ }
54
+ );
55
+ };
56
+ export {
57
+ ItemSection
58
+ };
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemSection/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { ItemRenderer } from '../../exported-related/index.js';\nimport type { DSLeftNavigationT } from '../../react-desc-prop-types.js';\nimport {\n StyledSectionLabel,\n StyledRightLabel,\n StyledVerticalSeparator,\n StyledRightContainer,\n StyledSectionContainer,\n} from '../styled.js';\n\nexport const ItemSection = (props: DSLeftNavigationT.ComponentProps): JSX.Element => {\n const {\n item,\n item: {\n itemOpts: { label, LeftComponent, RightComponent, labelRightSection, labelDataTestId },\n },\n ctx,\n ctx: { setFocusedItem },\n } = props;\n\n return (\n <ItemRenderer\n item={{\n ...item,\n itemOpts: { ...item.itemOpts, selectable: false, focuseable: false },\n CollapsedComponent: null,\n }}\n minHeight=\"32px\"\n paddingTop=\"8px\"\n >\n <StyledSectionContainer cols={['min-content', 'auto', 'min-content', 'auto']} pl=\"xxs\" alignItems=\"center\">\n {LeftComponent ? <LeftComponent ctx={ctx} item={item} /> : <div />}\n <StyledSectionLabel data-testid={labelDataTestId || 'leftnav-section-item-label'}>{label}</StyledSectionLabel>\n <StyledVerticalSeparator />\n <StyledRightLabel>{labelRightSection}</StyledRightLabel>\n </StyledSectionContainer>\n <StyledRightContainer\n ml=\"auto\"\n onFocus={(e: React.FocusEvent) => {\n setFocusedItem(null);\n e.stopPropagation();\n }}\n onKeyDown={(e: React.KeyboardEvent) => e.stopPropagation()}\n pr=\"xxs2\"\n alignItems=\"center\"\n data-testid=\"leftnav-right-component\"\n >\n {RightComponent && <RightComponent ctx={ctx} item={item} />}\n </StyledRightContainer>\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;AC+BjB,SACmB,KADnB;AA9BN,SAAS,oBAAoB;AAE7B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,MAAM,cAAc,CAAC,UAAyD;AACnF,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ,UAAU,EAAE,OAAO,eAAe,gBAAgB,mBAAmB,gBAAgB;AAAA,IACvF;AAAA,IACA;AAAA,IACA,KAAK,EAAE,eAAe;AAAA,EACxB,IAAI;AAEJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU,EAAE,GAAG,KAAK,UAAU,YAAY,OAAO,YAAY,MAAM;AAAA,QACnE,oBAAoB;AAAA,MACtB;AAAA,MACA,WAAU;AAAA,MACV,YAAW;AAAA,MAEX;AAAA,6BAAC,0BAAuB,MAAM,CAAC,eAAe,QAAQ,eAAe,MAAM,GAAG,IAAG,OAAM,YAAW,UAC/F;AAAA,0BAAgB,oBAAC,iBAAc,KAAU,MAAY,IAAK,oBAAC,SAAI;AAAA,UAChE,oBAAC,sBAAmB,eAAa,mBAAmB,8BAA+B,iBAAM;AAAA,UACzF,oBAAC,2BAAwB;AAAA,UACzB,oBAAC,oBAAkB,6BAAkB;AAAA,WACvC;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,IAAG;AAAA,YACH,SAAS,CAAC,MAAwB;AAChC,6BAAe,IAAI;AACnB,gBAAE,gBAAgB;AAAA,YACpB;AAAA,YACA,WAAW,CAAC,MAA2B,EAAE,gBAAgB;AAAA,YACzD,IAAG;AAAA,YACH,YAAW;AAAA,YACX,eAAY;AAAA,YAEX,4BAAkB,oBAAC,kBAAe,KAAU,MAAY;AAAA;AAAA,QAC3D;AAAA;AAAA;AAAA,EACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,38 @@
1
+ import * as React from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { styled } from "@elliemae/ds-legacy-system";
4
+ import { ItemRenderer } from "../../exported-related/index.js";
5
+ import { DSLeftNavigationName, DSLeftNavigationSlots } from "../../constants/index.js";
6
+ const StyledSeparator = styled("div", { name: DSLeftNavigationName, slot: DSLeftNavigationSlots.ITEM_SEPARATOR })`
7
+ height: 1px;
8
+ background-color: ${(props) => props.theme.colors.neutral[100]};
9
+ width: auto;
10
+ margin: ${(props) => props.theme.space.xxxs} 0;
11
+ margin-left: ${(props) => props.theme.space.xxxs};
12
+ grid-column: span 3;
13
+ `;
14
+ const ItemSeparator = (props) => {
15
+ const { item } = props;
16
+ return /* @__PURE__ */ jsx(
17
+ ItemRenderer,
18
+ {
19
+ item: {
20
+ ...item,
21
+ itemOpts: {
22
+ ...item.itemOpts,
23
+ ariaRole: "separator",
24
+ selectable: false,
25
+ focuseable: false
26
+ },
27
+ CollapsedComponent: null
28
+ },
29
+ minHeight: "1px",
30
+ paddingTop: "0px",
31
+ children: /* @__PURE__ */ jsx(StyledSeparator, { "data-testid": "leftnav-separator-subitem" })
32
+ }
33
+ );
34
+ };
35
+ export {
36
+ ItemSeparator
37
+ };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemSeparator/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-legacy-system';\nimport { ItemRenderer } from '../../exported-related/index.js';\nimport { DSLeftNavigationName, DSLeftNavigationSlots } from '../../constants/index.js';\nimport type { DSLeftNavigationT } from '../../react-desc-prop-types.js';\n\nconst StyledSeparator = styled('div', { name: DSLeftNavigationName, slot: DSLeftNavigationSlots.ITEM_SEPARATOR })`\n height: 1px;\n background-color: ${(props) => props.theme.colors.neutral[100]};\n width: auto;\n margin: ${(props) => props.theme.space.xxxs} 0;\n margin-left: ${(props) => props.theme.space.xxxs};\n grid-column: span 3;\n`;\n\nexport const ItemSeparator = (props: DSLeftNavigationT.ComponentProps): JSX.Element => {\n const { item } = props;\n return (\n <ItemRenderer\n item={{\n ...item,\n itemOpts: {\n ...item.itemOpts,\n ariaRole: 'separator',\n selectable: false,\n focuseable: false,\n },\n CollapsedComponent: null,\n }}\n minHeight=\"1px\"\n paddingTop=\"0px\"\n >\n <StyledSeparator data-testid=\"leftnav-separator-subitem\" />\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACgCjB;AA/BN,SAAS,cAAc;AACvB,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB,6BAA6B;AAG5D,MAAM,kBAAkB,OAAO,OAAO,EAAE,MAAM,sBAAsB,MAAM,sBAAsB,eAAe,CAAC;AAAA;AAAA,sBAE1F,CAAC,UAAU,MAAM,MAAM,OAAO,QAAQ,GAAG;AAAA;AAAA,YAEnD,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA,iBACxB,CAAC,UAAU,MAAM,MAAM,MAAM;AAAA;AAAA;AAIvC,MAAM,gBAAgB,CAAC,UAAyD;AACrF,QAAM,EAAE,KAAK,IAAI;AACjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU;AAAA,UACR,GAAG,KAAK;AAAA,UACR,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,YAAY;AAAA,QACd;AAAA,QACA,oBAAoB;AAAA,MACtB;AAAA,MACA,WAAU;AAAA,MACV,YAAW;AAAA,MAEX,8BAAC,mBAAgB,eAAY,6BAA4B;AAAA;AAAA,EAC3D;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,48 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { DSSkeleton } from "@elliemae/ds-legacy-skeleton";
4
+ import { ItemRenderer } from "../../exported-related/index.js";
5
+ import { StyledLeftContainer } from "../styled.js";
6
+ const noShadowStyle = () => () => "box-shadow: none;";
7
+ const CollapsedComponent = () => /* @__PURE__ */ jsx(DSSkeleton, { variant: "circular", w: 24, h: 24 });
8
+ const ItemSkeleton = (props) => {
9
+ const { item, hasBorderBottom } = props;
10
+ const variant = item?.itemOpts?.skeletonVariant ?? "item";
11
+ return /* @__PURE__ */ jsxs(
12
+ ItemRenderer,
13
+ {
14
+ item: {
15
+ ...item,
16
+ itemOpts: item?.itemOpts ? {
17
+ ...item.itemOpts,
18
+ selectable: false,
19
+ focuseable: false,
20
+ ariaRole: "menuitem",
21
+ ariaLabel: "Loading"
22
+ } : {},
23
+ CollapsedComponent: variant === "item" ? CollapsedComponent : null
24
+ },
25
+ minHeight: variant === "item" ? "48px" : "32px",
26
+ shadowStyle: noShadowStyle,
27
+ hasBorderBottom,
28
+ children: [
29
+ /* @__PURE__ */ jsx(
30
+ StyledLeftContainer,
31
+ {
32
+ cols: ["38px"],
33
+ gutter: "1px",
34
+ pl: 0,
35
+ justifyItems: "center",
36
+ "data-testid": "leftnav-leftcomponent",
37
+ children: variant === "item" && /* @__PURE__ */ jsx(CollapsedComponent, {})
38
+ }
39
+ ),
40
+ /* @__PURE__ */ jsx(DSSkeleton, { variant: "rectangular", mt: "2px", mb: "15px", w: "auto", mr: "xs" })
41
+ ]
42
+ }
43
+ );
44
+ };
45
+ export {
46
+ ItemSkeleton
47
+ };
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemSkeleton/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { DSSkeleton } from '@elliemae/ds-legacy-skeleton';\nimport { ItemRenderer } from '../../exported-related/index.js';\nimport type { DSLeftNavigationT } from '../../react-desc-prop-types.js';\nimport { StyledLeftContainer } from '../styled.js';\n\nconst noShadowStyle = () => () => 'box-shadow: none;';\n\nconst CollapsedComponent = () => <DSSkeleton variant=\"circular\" w={24} h={24} />;\n\ninterface SkeletonPropsT {\n item: DSLeftNavigationT.ComponentProps['item'];\n hasBorderBottom?: boolean;\n}\nexport const ItemSkeleton = (props: SkeletonPropsT): JSX.Element => {\n const { item, hasBorderBottom } = props;\n\n const variant = item?.itemOpts?.skeletonVariant ?? 'item';\n\n return (\n <ItemRenderer\n item={{\n ...item,\n itemOpts: item?.itemOpts\n ? {\n ...item.itemOpts,\n selectable: false,\n focuseable: false,\n ariaRole: 'menuitem',\n ariaLabel: 'Loading',\n }\n : {},\n CollapsedComponent: variant === 'item' ? CollapsedComponent : null,\n }}\n minHeight={variant === 'item' ? '48px' : '32px'}\n shadowStyle={noShadowStyle}\n hasBorderBottom={hasBorderBottom}\n >\n <StyledLeftContainer\n cols={['38px']}\n gutter=\"1px\"\n pl={0}\n justifyItems=\"center\"\n data-testid=\"leftnav-leftcomponent\"\n >\n {variant === 'item' && <CollapsedComponent />}\n </StyledLeftContainer>\n <DSSkeleton variant=\"rectangular\" mt=\"2px\" mb=\"15px\" w=\"auto\" mr=\"xs\" />\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACQU,cAY7B,YAZ6B;AAPjC,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAE7B,SAAS,2BAA2B;AAEpC,MAAM,gBAAgB,MAAM,MAAM;AAElC,MAAM,qBAAqB,MAAM,oBAAC,cAAW,SAAQ,YAAW,GAAG,IAAI,GAAG,IAAI;AAMvE,MAAM,eAAe,CAAC,UAAuC;AAClE,QAAM,EAAE,MAAM,gBAAgB,IAAI;AAElC,QAAM,UAAU,MAAM,UAAU,mBAAmB;AAEnD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU,MAAM,WACZ;AAAA,UACE,GAAG,KAAK;AAAA,UACR,YAAY;AAAA,UACZ,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,WAAW;AAAA,QACb,IACA,CAAC;AAAA,QACL,oBAAoB,YAAY,SAAS,qBAAqB;AAAA,MAChE;AAAA,MACA,WAAW,YAAY,SAAS,SAAS;AAAA,MACzC,aAAa;AAAA,MACb;AAAA,MAEA;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,CAAC,MAAM;AAAA,YACb,QAAO;AAAA,YACP,IAAI;AAAA,YACJ,cAAa;AAAA,YACb,eAAY;AAAA,YAEX,sBAAY,UAAU,oBAAC,sBAAmB;AAAA;AAAA,QAC7C;AAAA,QACA,oBAAC,cAAW,SAAQ,eAAc,IAAG,OAAM,IAAG,QAAO,GAAE,QAAO,IAAG,MAAK;AAAA;AAAA;AAAA,EACxE;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,149 @@
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 { CHEVRON_BACK_DS_ID } from "../../exported-related/constants.js";
8
+ import {
9
+ StyledLeftContainer,
10
+ StyledItemLabel,
11
+ StyledBottomContainer,
12
+ StyledRightContainer,
13
+ StyledChevronLeft
14
+ } from "../styled.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 ItemSubmenu = (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
+ selectedItem,
39
+ selectedParent,
40
+ setFocusedItem
41
+ }
42
+ } = props;
43
+ const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
44
+ const opened = openedItem === dsId;
45
+ const isSelected = selectedItem === dsId;
46
+ const shadowStyle = useCallback(
47
+ (opened_) => (theme) => !opened_ ? notOpenedShadowStyle(isSelected || selectedParent === dsId)(theme) : `box-shadow: inset 4px 0 0 0 #52A6EC`,
48
+ [dsId, isSelected, selectedParent]
49
+ );
50
+ const ariaLabel = item.itemOpts.ariaLabel ?? (typeof label === "string" ? `${label}, category` : "category");
51
+ return /* @__PURE__ */ jsxs(
52
+ ItemRenderer,
53
+ {
54
+ item: {
55
+ ...item,
56
+ itemOpts: {
57
+ ...item.itemOpts,
58
+ ariaLabel,
59
+ ariaExpanded: opened,
60
+ openable: expandedForAnimation && !opened,
61
+ closable: expandedForAnimation && opened,
62
+ selectable: !opened
63
+ }
64
+ },
65
+ shadowStyle,
66
+ hasBorderBottom: opened,
67
+ borderBottomMr: "12px",
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
+ tabIndex: 0,
88
+ onFocus: (e) => {
89
+ e.stopPropagation();
90
+ setFocusedItem(CHEVRON_BACK_DS_ID);
91
+ },
92
+ "aria-label": `Close ${ariaLabel}`,
93
+ children: /* @__PURE__ */ jsx(ChevronSmallLeft, { size: "m", color: ["brand-primary", "800"] })
94
+ }
95
+ ),
96
+ CollapsedComponent && /* @__PURE__ */ jsx(CollapsedComponent, { item, ctx })
97
+ ]
98
+ }
99
+ ),
100
+ /* @__PURE__ */ jsx(
101
+ StyledItemLabel,
102
+ {
103
+ ml: opened ? "xxs" : "1px",
104
+ mt: "xxxs",
105
+ mb: "15px",
106
+ "data-testid": labelDataTestId || "leftnav-itemlabel",
107
+ labelOverflow,
108
+ children: labelOverflow === "truncate" ? /* @__PURE__ */ jsx(SimpleTruncatedTooltipText, { value: label, placement: "bottom-start" }) : label
109
+ }
110
+ ),
111
+ /* @__PURE__ */ jsx(
112
+ StyledRightContainer,
113
+ {
114
+ pl: "xs",
115
+ pr: opened ? "xxs2" : "xxs",
116
+ onFocus: (e) => {
117
+ e.stopPropagation();
118
+ setFocusedItem(null);
119
+ },
120
+ onKeyDown: (e) => e.stopPropagation(),
121
+ onClick: (e) => openedItem === dsId && e.stopPropagation(),
122
+ "data-testid": "leftnav-right-component",
123
+ children: RightComponent && /* @__PURE__ */ jsx(RightComponent, { ctx, item })
124
+ }
125
+ ),
126
+ BottomComponent && /* @__PURE__ */ jsx(
127
+ StyledBottomContainer,
128
+ {
129
+ style: { gridColumn: "span 3" },
130
+ pb: "xxxs",
131
+ pl: "xxs",
132
+ pr: "xxs",
133
+ onFocus: (e) => {
134
+ e.stopPropagation();
135
+ setFocusedItem(null);
136
+ },
137
+ onKeyDown: (e) => e.stopPropagation(),
138
+ onClick: (e) => openedItem && e.stopPropagation(),
139
+ children: /* @__PURE__ */ jsx(BottomComponent, { ctx, item })
140
+ }
141
+ )
142
+ ]
143
+ }
144
+ );
145
+ };
146
+ export {
147
+ ItemSubmenu
148
+ };
149
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemSubmenu/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\n/* eslint-disable complexity */\n/* eslint-disable indent */\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 { CHEVRON_BACK_DS_ID } from '../../exported-related/constants.js';\nimport {\n StyledLeftContainer,\n StyledItemLabel,\n StyledBottomContainer,\n StyledRightContainer,\n StyledChevronLeft,\n} from '../styled.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 ItemSubmenu = (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 selectedItem,\n selectedParent,\n setFocusedItem,\n },\n } = props;\n\n const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;\n\n const opened = openedItem === dsId;\n\n const isSelected = selectedItem === dsId;\n\n const shadowStyle = useCallback(\n (opened_: boolean) => (theme: Theme) =>\n !opened_\n ? notOpenedShadowStyle(isSelected || selectedParent === dsId)(theme)\n : `box-shadow: inset 4px 0 0 0 #52A6EC`,\n [dsId, isSelected, selectedParent],\n );\n\n const ariaLabel = item.itemOpts.ariaLabel ?? (typeof label === 'string' ? `${label}, category` : 'category');\n\n return (\n <ItemRenderer\n item={{\n ...item,\n itemOpts: {\n ...item.itemOpts,\n ariaLabel,\n ariaExpanded: opened,\n openable: expandedForAnimation && !opened,\n closable: expandedForAnimation && opened,\n selectable: !opened,\n },\n }}\n shadowStyle={shadowStyle}\n hasBorderBottom={opened}\n borderBottomMr=\"12px\"\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 tabIndex={0}\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 e.stopPropagation();\n setFocusedItem(null);\n }}\n onKeyDown={(e: React.KeyboardEvent) => e.stopPropagation()}\n onClick={(e: React.MouseEvent) => openedItem === dsId && e.stopPropagation()}\n data-testid=\"leftnav-right-component\"\n >\n {RightComponent && <RightComponent ctx={ctx} item={item} />}\n </StyledRightContainer>\n {BottomComponent && (\n <StyledBottomContainer\n style={{ gridColumn: 'span 3' }}\n pb=\"xxxs\"\n pl=\"xxs\"\n pr=\"xxs\"\n onFocus={(e: React.FocusEvent) => {\n e.stopPropagation();\n setFocusedItem(null);\n }}\n onKeyDown={(e: React.KeyboardEvent) => e.stopPropagation()}\n onClick={(e: React.MouseEvent) => openedItem && 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
+ }
@@ -0,0 +1,49 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { SimpleTruncatedTooltipText } from "@elliemae/ds-legacy-truncated-tooltip-text";
4
+ import { ItemRenderer } from "../../exported-related/index.js";
5
+ import { StyledLabel } from "../styled.js";
6
+ const ItemTextLabel = (props) => {
7
+ const {
8
+ item,
9
+ item: {
10
+ itemOpts: { label, labelOverflow: itemLabelOverflow, labelBold, labelColor, labelDataTestId }
11
+ },
12
+ ctx: {
13
+ leftNavProps: { labelOverflow: leftNavLabelOverflow }
14
+ }
15
+ } = props;
16
+ const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
17
+ return /* @__PURE__ */ jsxs(
18
+ ItemRenderer,
19
+ {
20
+ item: {
21
+ ...item,
22
+ CollapsedComponent: null
23
+ },
24
+ minHeight: "32px",
25
+ paddingTop: "8px",
26
+ children: [
27
+ " ",
28
+ /* @__PURE__ */ jsx("div", {}),
29
+ /* @__PURE__ */ jsx(
30
+ StyledLabel,
31
+ {
32
+ "data-testid": labelDataTestId || "leftnav-list-item-label",
33
+ pl: "24px",
34
+ labelOverflow,
35
+ labelBold,
36
+ labelColor,
37
+ mr: "xxs2",
38
+ pb: "xxxs",
39
+ children: labelOverflow === "truncate" ? /* @__PURE__ */ jsx(SimpleTruncatedTooltipText, { value: label, placement: "bottom-start" }) : label
40
+ }
41
+ )
42
+ ]
43
+ }
44
+ );
45
+ };
46
+ export {
47
+ ItemTextLabel
48
+ };
49
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/outOfTheBox/ItemTextLabel/index.tsx"],
4
+ "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-legacy-truncated-tooltip-text';\nimport { ItemRenderer } from '../../exported-related/index.js';\nimport type { DSLeftNavigationT } from '../../react-desc-prop-types.js';\nimport { StyledLabel } from '../styled.js';\n\nexport const ItemTextLabel = (props: DSLeftNavigationT.ComponentProps): JSX.Element => {\n const {\n item,\n item: {\n itemOpts: { label, labelOverflow: itemLabelOverflow, labelBold, labelColor, labelDataTestId },\n },\n ctx: {\n leftNavProps: { labelOverflow: leftNavLabelOverflow },\n },\n } = props;\n\n const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;\n return (\n <ItemRenderer\n item={{\n ...item,\n CollapsedComponent: null,\n }}\n minHeight=\"32px\"\n paddingTop=\"8px\"\n >\n {/* Empty LeftComponent */} <div />\n <StyledLabel\n data-testid={labelDataTestId || 'leftnav-list-item-label'}\n pl=\"24px\"\n labelOverflow={labelOverflow}\n labelBold={labelBold}\n labelColor={labelColor}\n mr=\"xxs2\"\n pb=\"xxxs\"\n >\n {labelOverflow === 'truncate' ? <SimpleTruncatedTooltipText value={label} placement=\"bottom-start\" /> : label}\n </StyledLabel>\n </ItemRenderer>\n );\n};\n"],
5
+ "mappings": "AAAA,YAAY,WAAW;ACmBnB,SAQ8B,KAR9B;AAlBJ,SAAS,kCAAkC;AAC3C,SAAS,oBAAoB;AAE7B,SAAS,mBAAmB;AAErB,MAAM,gBAAgB,CAAC,UAAyD;AACrF,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ,UAAU,EAAE,OAAO,eAAe,mBAAmB,WAAW,YAAY,gBAAgB;AAAA,IAC9F;AAAA,IACA,KAAK;AAAA,MACH,cAAc,EAAE,eAAe,qBAAqB;AAAA,IACtD;AAAA,EACF,IAAI;AAEJ,QAAM,gBAAgB,qBAAqB;AAC3C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,oBAAoB;AAAA,MACtB;AAAA,MACA,WAAU;AAAA,MACV,YAAW;AAAA,MAEgB;AAAA;AAAA,QAAC,oBAAC,SAAI;AAAA,QACjC;AAAA,UAAC;AAAA;AAAA,YACC,eAAa,mBAAmB;AAAA,YAChC,IAAG;AAAA,YACH;AAAA,YACA;AAAA,YACA;AAAA,YACA,IAAG;AAAA,YACH,IAAG;AAAA,YAEF,4BAAkB,aAAa,oBAAC,8BAA2B,OAAO,OAAO,WAAU,gBAAe,IAAK;AAAA;AAAA,QAC1G;AAAA;AAAA;AAAA,EACF;AAEJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,132 @@
1
+ import * as React from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useCallback, useEffect } 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, StyledRightContainer, StyledArrowContainer } 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 ItemUncontrolledDrilldown = (props) => {
36
+ const {
37
+ item,
38
+ item: {
39
+ dsId,
40
+ itemOpts: {
41
+ label,
42
+ RightComponent,
43
+ labelRightSection,
44
+ labelOverflow: itemLabelOverflow,
45
+ labelBold,
46
+ labelColor,
47
+ startOpened,
48
+ items,
49
+ labelDataTestId
50
+ }
51
+ },
52
+ ctx,
53
+ ctx: {
54
+ leftNavProps: { labelOverflow: leftNavLabelOverflow },
55
+ openedDrilldowns,
56
+ setOpenedDrilldowns
57
+ }
58
+ } = props;
59
+ useEffect(() => {
60
+ if (startOpened)
61
+ setOpenedDrilldowns([...openedDrilldowns, dsId]);
62
+ }, []);
63
+ const opened = openedDrilldowns.includes(dsId);
64
+ const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
65
+ const arrowIcon = useMemo(() => {
66
+ const Component = opened ? ArrowheadDown : ArrowheadRight;
67
+ return /* @__PURE__ */ jsx(Component, { width: "24px", height: "18px", color: ["brand-primary", "800"] });
68
+ }, [opened]);
69
+ const subitems = useMemo(() => {
70
+ if (!opened || !items)
71
+ return [];
72
+ return items.map((subitem) => /* @__PURE__ */ jsx(OutOfTheBoxMapSubitem, { item: subitem, ctx }, subitem.dsId));
73
+ }, [ctx, items, opened]);
74
+ const handleOnClick = useCallback(() => {
75
+ if (opened)
76
+ setOpenedDrilldowns(openedDrilldowns.filter((openedDrilldown) => openedDrilldown !== dsId));
77
+ else
78
+ setOpenedDrilldowns([...openedDrilldowns, dsId]);
79
+ }, [opened, setOpenedDrilldowns, openedDrilldowns, dsId]);
80
+ return /* @__PURE__ */ jsxs(
81
+ ItemRenderer,
82
+ {
83
+ item: {
84
+ ...item,
85
+ itemOpts: {
86
+ ariaExpanded: opened,
87
+ ariaRole: "menuitem",
88
+ ...item.itemOpts,
89
+ openable: !opened,
90
+ closable: opened
91
+ },
92
+ CollapsedComponent: null
93
+ },
94
+ subitems,
95
+ minHeight: "32px",
96
+ paddingTop: "8px",
97
+ onClick: handleOnClick,
98
+ children: [
99
+ /* @__PURE__ */ jsx(StyledArrowContainer, { pl: "xxs", mt: "-2px", children: arrowIcon }),
100
+ /* @__PURE__ */ jsx(
101
+ StyledLabel,
102
+ {
103
+ pb: "xxxs",
104
+ "data-testid": labelDataTestId || "leftnav-list-item-label",
105
+ labelOverflow,
106
+ labelBold,
107
+ labelColor,
108
+ children: labelOverflow === "truncate" ? /* @__PURE__ */ jsx(SimpleTruncatedTooltipText, { value: label, placement: "bottom-start" }) : label
109
+ }
110
+ ),
111
+ /* @__PURE__ */ jsxs(
112
+ StyledRightContainer,
113
+ {
114
+ pr: "xxs2",
115
+ cols: ["auto", "auto"],
116
+ alignItems: "center",
117
+ gutter: "xxs",
118
+ "data-testid": "leftnav-right-component",
119
+ children: [
120
+ /* @__PURE__ */ jsx(StyledDate, { ml: "xxs", "data-testid": "leftnav-list-item-date", children: labelRightSection }),
121
+ RightComponent && /* @__PURE__ */ jsx(RightComponent, { ctx, item })
122
+ ]
123
+ }
124
+ )
125
+ ]
126
+ }
127
+ );
128
+ };
129
+ export {
130
+ ItemUncontrolledDrilldown
131
+ };
132
+ //# sourceMappingURL=index.js.map