@elliemae/ds-left-navigation 3.4.3-rc.0 → 3.4.4-next.0

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 (181) hide show
  1. package/dist/cjs/LeftNavigation.js +9 -5
  2. package/dist/cjs/LeftNavigation.js.map +2 -2
  3. package/dist/cjs/LeftNavigationContext.js +4 -1
  4. package/dist/cjs/LeftNavigationContext.js.map +1 -1
  5. package/dist/cjs/common/getItemBackgroundStyle.js +14 -3
  6. package/dist/cjs/common/getItemBackgroundStyle.js.map +1 -1
  7. package/dist/cjs/common/getLeftBorderStyle.js +14 -3
  8. package/dist/cjs/common/getLeftBorderStyle.js.map +1 -1
  9. package/dist/cjs/common/getScrollbarStyle.js +4 -1
  10. package/dist/cjs/common/getScrollbarStyle.js.map +1 -1
  11. package/dist/cjs/common/index.js +4 -1
  12. package/dist/cjs/common/index.js.map +1 -1
  13. package/dist/cjs/configs/index.js +4 -1
  14. package/dist/cjs/configs/index.js.map +2 -2
  15. package/dist/cjs/configs/useLeftNavConfig.js +58 -40
  16. package/dist/cjs/configs/useLeftNavConfig.js.map +2 -2
  17. package/dist/cjs/configs/useLeftNavItems.js +4 -1
  18. package/dist/cjs/configs/useLeftNavItems.js.map +1 -1
  19. package/dist/cjs/configs/useLeftNavSmoothExpand.js +11 -5
  20. package/dist/cjs/configs/useLeftNavSmoothExpand.js.map +2 -2
  21. package/dist/cjs/exported-related/ChevronItem/index.js +6 -3
  22. package/dist/cjs/exported-related/ChevronItem/index.js.map +1 -1
  23. package/dist/cjs/exported-related/Icon/index.js +6 -3
  24. package/dist/cjs/exported-related/Icon/index.js.map +2 -2
  25. package/dist/cjs/exported-related/ItemRenderer/index.js +70 -52
  26. package/dist/cjs/exported-related/ItemRenderer/index.js.map +2 -2
  27. package/dist/cjs/exported-related/ItemRenderer/styled.js +4 -1
  28. package/dist/cjs/exported-related/ItemRenderer/styled.js.map +2 -2
  29. package/dist/cjs/exported-related/ItemRenderer/usePropsWithDefaults.js +4 -1
  30. package/dist/cjs/exported-related/ItemRenderer/usePropsWithDefaults.js.map +1 -1
  31. package/dist/cjs/exported-related/Notifications/index.js +51 -35
  32. package/dist/cjs/exported-related/Notifications/index.js.map +2 -2
  33. package/dist/cjs/exported-related/OpenWindowItem/index.js +6 -3
  34. package/dist/cjs/exported-related/OpenWindowItem/index.js.map +2 -2
  35. package/dist/cjs/exported-related/constants.js +4 -1
  36. package/dist/cjs/exported-related/constants.js.map +1 -1
  37. package/dist/cjs/exported-related/index.js +4 -1
  38. package/dist/cjs/exported-related/index.js.map +1 -1
  39. package/dist/cjs/hooks/index.js +4 -1
  40. package/dist/cjs/hooks/index.js.map +1 -1
  41. package/dist/cjs/hooks/useExpandableOnClickHandler.js +29 -17
  42. package/dist/cjs/hooks/useExpandableOnClickHandler.js.map +2 -2
  43. package/dist/cjs/hooks/useKeyboardNavigation.js +64 -52
  44. package/dist/cjs/hooks/useKeyboardNavigation.js.map +2 -2
  45. package/dist/cjs/hooks/useOpenableOnClickHandler.js +36 -21
  46. package/dist/cjs/hooks/useOpenableOnClickHandler.js.map +2 -2
  47. package/dist/cjs/hooks/useSelectFirstBodyItem.js +4 -1
  48. package/dist/cjs/hooks/useSelectFirstBodyItem.js.map +1 -1
  49. package/dist/cjs/index.d.js +4 -1
  50. package/dist/cjs/index.d.js.map +1 -1
  51. package/dist/cjs/index.js +4 -1
  52. package/dist/cjs/index.js.map +1 -1
  53. package/dist/cjs/outOfTheBox/ItemControlledDrilldown/index.js +53 -37
  54. package/dist/cjs/outOfTheBox/ItemControlledDrilldown/index.js.map +2 -2
  55. package/dist/cjs/outOfTheBox/ItemControlledDrilldown/styled.js +4 -1
  56. package/dist/cjs/outOfTheBox/ItemControlledDrilldown/styled.js.map +2 -2
  57. package/dist/cjs/outOfTheBox/ItemHeader/index.js +83 -63
  58. package/dist/cjs/outOfTheBox/ItemHeader/index.js.map +2 -2
  59. package/dist/cjs/outOfTheBox/ItemHeader/styled.js +4 -1
  60. package/dist/cjs/outOfTheBox/ItemHeader/styled.js.map +2 -2
  61. package/dist/cjs/outOfTheBox/ItemLink/index.js +46 -31
  62. package/dist/cjs/outOfTheBox/ItemLink/index.js.map +2 -2
  63. package/dist/cjs/outOfTheBox/ItemLink/styled.js +4 -1
  64. package/dist/cjs/outOfTheBox/ItemLink/styled.js.map +2 -2
  65. package/dist/cjs/outOfTheBox/ItemSection/index.js +44 -27
  66. package/dist/cjs/outOfTheBox/ItemSection/index.js.map +2 -2
  67. package/dist/cjs/outOfTheBox/ItemSection/styled.js +4 -1
  68. package/dist/cjs/outOfTheBox/ItemSection/styled.js.map +1 -1
  69. package/dist/cjs/outOfTheBox/ItemSeparator/index.js +11 -7
  70. package/dist/cjs/outOfTheBox/ItemSeparator/index.js.map +1 -1
  71. package/dist/cjs/outOfTheBox/ItemSubmenu/index.js +85 -65
  72. package/dist/cjs/outOfTheBox/ItemSubmenu/index.js.map +2 -2
  73. package/dist/cjs/outOfTheBox/ItemSubmenu/styled.js +4 -1
  74. package/dist/cjs/outOfTheBox/ItemSubmenu/styled.js.map +2 -2
  75. package/dist/cjs/outOfTheBox/ItemTextLabel/index.js +25 -16
  76. package/dist/cjs/outOfTheBox/ItemTextLabel/index.js.map +1 -1
  77. package/dist/cjs/outOfTheBox/ItemTextLabel/styled.js +4 -1
  78. package/dist/cjs/outOfTheBox/ItemTextLabel/styled.js.map +2 -2
  79. package/dist/cjs/outOfTheBox/ItemUncontrolledDrilldown/index.js +52 -36
  80. package/dist/cjs/outOfTheBox/ItemUncontrolledDrilldown/index.js.map +2 -2
  81. package/dist/cjs/outOfTheBox/ItemUncontrolledDrilldown/styled.js +4 -1
  82. package/dist/cjs/outOfTheBox/ItemUncontrolledDrilldown/styled.js.map +2 -2
  83. package/dist/cjs/outOfTheBox/ItemWithDate/index.js +44 -28
  84. package/dist/cjs/outOfTheBox/ItemWithDate/index.js.map +2 -2
  85. package/dist/cjs/outOfTheBox/ItemWithDate/styled.js +4 -1
  86. package/dist/cjs/outOfTheBox/ItemWithDate/styled.js.map +2 -2
  87. package/dist/cjs/outOfTheBox/index.js +4 -1
  88. package/dist/cjs/outOfTheBox/index.js.map +1 -1
  89. package/dist/cjs/parts/LeftNavContent/index.js +57 -31
  90. package/dist/cjs/parts/LeftNavContent/index.js.map +2 -2
  91. package/dist/cjs/parts/LeftNavContent/styled.js +4 -1
  92. package/dist/cjs/parts/LeftNavContent/styled.js.map +1 -1
  93. package/dist/cjs/parts/LeftNavFooterItem/index.js +69 -54
  94. package/dist/cjs/parts/LeftNavFooterItem/index.js.map +2 -2
  95. package/dist/cjs/parts/LeftNavFooterItem/styled.js +4 -1
  96. package/dist/cjs/parts/LeftNavFooterItem/styled.js.map +1 -1
  97. package/dist/cjs/parts/LeftNavLoading/index.js +14 -9
  98. package/dist/cjs/parts/LeftNavLoading/index.js.map +2 -2
  99. package/dist/cjs/parts/OutOfTheBoxMapItem.js +7 -3
  100. package/dist/cjs/parts/OutOfTheBoxMapItem.js.map +2 -2
  101. package/dist/cjs/prop-types.js +7 -2
  102. package/dist/cjs/prop-types.js.map +1 -1
  103. package/dist/esm/LeftNavigation.js +5 -4
  104. package/dist/esm/LeftNavigation.js.map +1 -1
  105. package/dist/esm/LeftNavigationContext.js.map +1 -1
  106. package/dist/esm/common/getItemBackgroundStyle.js +10 -2
  107. package/dist/esm/common/getItemBackgroundStyle.js.map +1 -1
  108. package/dist/esm/common/getLeftBorderStyle.js +10 -2
  109. package/dist/esm/common/getLeftBorderStyle.js.map +1 -1
  110. package/dist/esm/common/getScrollbarStyle.js.map +1 -1
  111. package/dist/esm/common/index.js.map +1 -1
  112. package/dist/esm/configs/index.js.map +2 -2
  113. package/dist/esm/configs/useLeftNavConfig.js +54 -39
  114. package/dist/esm/configs/useLeftNavConfig.js.map +2 -2
  115. package/dist/esm/configs/useLeftNavItems.js.map +1 -1
  116. package/dist/esm/configs/useLeftNavSmoothExpand.js +7 -4
  117. package/dist/esm/configs/useLeftNavSmoothExpand.js.map +2 -2
  118. package/dist/esm/exported-related/ChevronItem/index.js +2 -2
  119. package/dist/esm/exported-related/ChevronItem/index.js.map +1 -1
  120. package/dist/esm/exported-related/Icon/index.js +2 -2
  121. package/dist/esm/exported-related/Icon/index.js.map +2 -2
  122. package/dist/esm/exported-related/ItemRenderer/index.js +66 -51
  123. package/dist/esm/exported-related/ItemRenderer/index.js.map +1 -1
  124. package/dist/esm/exported-related/ItemRenderer/styled.js.map +1 -1
  125. package/dist/esm/exported-related/ItemRenderer/usePropsWithDefaults.js.map +1 -1
  126. package/dist/esm/exported-related/Notifications/index.js +47 -34
  127. package/dist/esm/exported-related/Notifications/index.js.map +1 -1
  128. package/dist/esm/exported-related/OpenWindowItem/index.js +2 -2
  129. package/dist/esm/exported-related/OpenWindowItem/index.js.map +1 -1
  130. package/dist/esm/exported-related/constants.js.map +1 -1
  131. package/dist/esm/exported-related/index.js.map +1 -1
  132. package/dist/esm/hooks/index.js.map +1 -1
  133. package/dist/esm/hooks/useExpandableOnClickHandler.js +25 -16
  134. package/dist/esm/hooks/useExpandableOnClickHandler.js.map +1 -1
  135. package/dist/esm/hooks/useKeyboardNavigation.js +60 -51
  136. package/dist/esm/hooks/useKeyboardNavigation.js.map +1 -1
  137. package/dist/esm/hooks/useOpenableOnClickHandler.js +32 -20
  138. package/dist/esm/hooks/useOpenableOnClickHandler.js.map +1 -1
  139. package/dist/esm/hooks/useSelectFirstBodyItem.js.map +1 -1
  140. package/dist/esm/index.d.js.map +1 -1
  141. package/dist/esm/index.js.map +2 -2
  142. package/dist/esm/outOfTheBox/ItemControlledDrilldown/index.js +49 -36
  143. package/dist/esm/outOfTheBox/ItemControlledDrilldown/index.js.map +1 -1
  144. package/dist/esm/outOfTheBox/ItemControlledDrilldown/styled.js.map +1 -1
  145. package/dist/esm/outOfTheBox/ItemHeader/index.js +79 -62
  146. package/dist/esm/outOfTheBox/ItemHeader/index.js.map +2 -2
  147. package/dist/esm/outOfTheBox/ItemHeader/styled.js.map +1 -1
  148. package/dist/esm/outOfTheBox/ItemLink/index.js +42 -30
  149. package/dist/esm/outOfTheBox/ItemLink/index.js.map +1 -1
  150. package/dist/esm/outOfTheBox/ItemLink/styled.js.map +1 -1
  151. package/dist/esm/outOfTheBox/ItemSection/index.js +40 -26
  152. package/dist/esm/outOfTheBox/ItemSection/index.js.map +1 -1
  153. package/dist/esm/outOfTheBox/ItemSection/styled.js.map +1 -1
  154. package/dist/esm/outOfTheBox/ItemSeparator/index.js +7 -6
  155. package/dist/esm/outOfTheBox/ItemSeparator/index.js.map +1 -1
  156. package/dist/esm/outOfTheBox/ItemSubmenu/index.js +81 -64
  157. package/dist/esm/outOfTheBox/ItemSubmenu/index.js.map +2 -2
  158. package/dist/esm/outOfTheBox/ItemSubmenu/styled.js.map +1 -1
  159. package/dist/esm/outOfTheBox/ItemTextLabel/index.js +21 -15
  160. package/dist/esm/outOfTheBox/ItemTextLabel/index.js.map +1 -1
  161. package/dist/esm/outOfTheBox/ItemTextLabel/styled.js.map +1 -1
  162. package/dist/esm/outOfTheBox/ItemUncontrolledDrilldown/index.js +48 -35
  163. package/dist/esm/outOfTheBox/ItemUncontrolledDrilldown/index.js.map +1 -1
  164. package/dist/esm/outOfTheBox/ItemUncontrolledDrilldown/styled.js.map +1 -1
  165. package/dist/esm/outOfTheBox/ItemWithDate/index.js +40 -27
  166. package/dist/esm/outOfTheBox/ItemWithDate/index.js.map +1 -1
  167. package/dist/esm/outOfTheBox/ItemWithDate/styled.js.map +1 -1
  168. package/dist/esm/outOfTheBox/index.js.map +1 -1
  169. package/dist/esm/parts/LeftNavContent/index.js +53 -30
  170. package/dist/esm/parts/LeftNavContent/index.js.map +2 -2
  171. package/dist/esm/parts/LeftNavContent/styled.js.map +1 -1
  172. package/dist/esm/parts/LeftNavFooterItem/index.js +65 -53
  173. package/dist/esm/parts/LeftNavFooterItem/index.js.map +1 -1
  174. package/dist/esm/parts/LeftNavFooterItem/styled.js.map +1 -1
  175. package/dist/esm/parts/LeftNavLoading/index.js +10 -8
  176. package/dist/esm/parts/LeftNavLoading/index.js.map +1 -1
  177. package/dist/esm/parts/OutOfTheBoxMapItem.js +3 -2
  178. package/dist/esm/parts/OutOfTheBoxMapItem.js.map +2 -2
  179. package/dist/esm/prop-types.js +3 -1
  180. package/dist/esm/prop-types.js.map +1 -1
  181. package/package.json +8 -8
@@ -1,5 +1,6 @@
1
1
  import * as React from "react";
2
- import React2, { useContext, useMemo, useCallback } from "react";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ import { useContext, useMemo, useCallback } from "react";
3
4
  import Grid from "@elliemae/ds-grid";
4
5
  import { StyledItemWrapper, StyledItem } from "./styled";
5
6
  import { LeftNavContext } from "../../LeftNavigationContext";
@@ -34,13 +35,16 @@ const ItemRenderer = (props) => {
34
35
  visibleItemsRefs
35
36
  } = ctx;
36
37
  const opened = dsId === openedItem;
37
- const handleOnClick = useCallback((e) => {
38
- if (onClick)
39
- onClick();
40
- onItemClick(item, e);
41
- if (selectable)
42
- setSelectedItem(item.dsId);
43
- }, [onItemClick, item, setSelectedItem, selectable, onClick]);
38
+ const handleOnClick = useCallback(
39
+ (e) => {
40
+ if (onClick)
41
+ onClick();
42
+ onItemClick(item, e);
43
+ if (selectable)
44
+ setSelectedItem(item.dsId);
45
+ },
46
+ [onItemClick, item, setSelectedItem, selectable, onClick]
47
+ );
44
48
  const handleFocus = useCallback(() => {
45
49
  if (focuseable)
46
50
  setFocusedItem(dsId);
@@ -54,49 +58,60 @@ const ItemRenderer = (props) => {
54
58
  if (!expandedForAnimation && !CollapsedComponent) {
55
59
  return null;
56
60
  }
57
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(StyledItemWrapper, {
58
- shadowStyle: shadowStyle(opened, item.type),
59
- "data-testid": "leftnav-item-wrapper"
60
- }, /* @__PURE__ */ React2.createElement(StyledItem, {
61
- ref: visibleItemsRefs.current[dsId],
62
- pt: paddingTop,
63
- pl: indent === void 0 ? "xxxs" : `${indent}px`,
64
- minHeight,
65
- shadowStyle: shadowStyle(opened, item.type),
66
- alignItems: "flex-start",
67
- cols,
68
- onClick: !opened ? handleOnClick : () => null,
69
- onKeyDown,
70
- selectable,
71
- selected: isSelected,
72
- selectedParent: selectedParent === dsId,
73
- opened,
74
- onFocus: handleFocus,
75
- "data-testid": "leftnav-item-container",
76
- tabIndex: focuseable ? 0 : -1,
77
- "aria-describedby": ariaDescribedBy,
78
- "aria-expanded": ariaExpanded,
79
- role: ariaRole,
80
- "data-selected": isSelected,
81
- "data-selectedparent": selectedParent === dsId,
82
- "aria-label": ariaLabel,
83
- "aria-hidden": !focuseable,
84
- "aria-live": ariaLive
85
- }, !expandedForAnimation ? /* @__PURE__ */ React2.createElement(Grid, {
86
- "data-testid": "leftnav-leftcomponent",
87
- justifyContent: "center"
88
- }, /* @__PURE__ */ React2.createElement(CollapsedComponent, {
89
- item,
90
- ctx
91
- })) : children), hasBorderBottom && /* @__PURE__ */ React2.createElement("div", {
92
- style: {
93
- marginLeft: opened ? "16px" : "0px",
94
- marginRight: borderBottomMr,
95
- height: "1px",
96
- width: `calc(100% - ${borderBottomMr} - ${opened ? "16px" : "0px"})`,
97
- backgroundColor: "#E0E3E8"
98
- }
99
- })), subitems);
61
+ return /* @__PURE__ */ jsxs(Fragment, {
62
+ children: [
63
+ /* @__PURE__ */ jsxs(StyledItemWrapper, {
64
+ shadowStyle: shadowStyle(opened, item.type),
65
+ "data-testid": "leftnav-item-wrapper",
66
+ children: [
67
+ /* @__PURE__ */ jsx(StyledItem, {
68
+ ref: visibleItemsRefs.current[dsId],
69
+ pt: paddingTop,
70
+ pl: indent === void 0 ? "xxxs" : `${indent}px`,
71
+ minHeight,
72
+ shadowStyle: shadowStyle(opened, item.type),
73
+ alignItems: "flex-start",
74
+ cols,
75
+ onClick: !opened ? handleOnClick : () => null,
76
+ onKeyDown,
77
+ selectable,
78
+ selected: isSelected,
79
+ selectedParent: selectedParent === dsId,
80
+ opened,
81
+ onFocus: handleFocus,
82
+ "data-testid": "leftnav-item-container",
83
+ tabIndex: focuseable ? 0 : -1,
84
+ "aria-describedby": ariaDescribedBy,
85
+ "aria-expanded": ariaExpanded,
86
+ role: ariaRole,
87
+ "data-selected": isSelected,
88
+ "data-selectedparent": selectedParent === dsId,
89
+ "aria-label": ariaLabel,
90
+ "aria-hidden": !focuseable,
91
+ "aria-live": ariaLive,
92
+ children: !expandedForAnimation ? /* @__PURE__ */ jsx(Grid, {
93
+ "data-testid": "leftnav-leftcomponent",
94
+ justifyContent: "center",
95
+ children: /* @__PURE__ */ jsx(CollapsedComponent, {
96
+ item,
97
+ ctx
98
+ })
99
+ }) : children
100
+ }),
101
+ hasBorderBottom && /* @__PURE__ */ jsx("div", {
102
+ style: {
103
+ marginLeft: opened ? "16px" : "0px",
104
+ marginRight: borderBottomMr,
105
+ height: "1px",
106
+ width: `calc(100% - ${borderBottomMr} - ${opened ? "16px" : "0px"})`,
107
+ backgroundColor: "#E0E3E8"
108
+ }
109
+ })
110
+ ]
111
+ }),
112
+ subitems
113
+ ]
114
+ });
100
115
  };
101
116
  export {
102
117
  ItemRenderer
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/ItemRenderer/index.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { useContext, useMemo, useCallback } from 'react';\nimport Grid from '@elliemae/ds-grid';\nimport { StyledItemWrapper, StyledItem } from './styled';\n\nimport { ItemRendererT } from '../../index.d';\nimport { LeftNavContext } from '../../LeftNavigationContext';\nimport { usePropsWithDefaults } from './usePropsWithDefaults';\nimport { useKeyboardNavigation } from '../../hooks';\n\nexport const ItemRenderer = (props: ItemRendererT): JSX.Element => {\n const propsWithDefault = usePropsWithDefaults(props);\n const {\n item,\n item: {\n dsId,\n itemOpts: { selectable, focuseable, indent, ariaLabel, ariaRole, ariaLive, ariaExpanded, ariaDescribedBy },\n CollapsedComponent,\n },\n subitems,\n minHeight,\n paddingTop,\n onClick,\n shadowStyle,\n hasBorderBottom,\n borderBottomMr,\n children,\n } = propsWithDefault;\n\n const ctx = useContext(LeftNavContext);\n const {\n leftNavProps: { onItemClick, openedItem },\n expandedForAnimation,\n selectedParent,\n selectedItem,\n setSelectedItem,\n setFocusedItem,\n visibleItemsRefs,\n } = ctx;\n\n const opened = dsId === openedItem;\n\n const handleOnClick = useCallback(\n (e) => {\n if (onClick) onClick(); // used by uncontrolled drilldowns\n onItemClick(item, e);\n if (selectable) setSelectedItem(item.dsId);\n },\n [onItemClick, item, setSelectedItem, selectable, onClick],\n );\n\n const handleFocus = useCallback(() => {\n if (focuseable) setFocusedItem(dsId);\n }, [dsId, setFocusedItem, focuseable]);\n\n const onKeyDown = useKeyboardNavigation({\n item,\n onClick: handleOnClick,\n });\n\n const cols = useMemo(() => (expandedForAnimation ? ['auto', '1fr', 'auto'] : ['38px']), [expandedForAnimation]);\n const isSelected = useMemo(() => selectedItem === dsId, [selectedItem, dsId]);\n\n if (!expandedForAnimation && !CollapsedComponent) {\n return null;\n }\n\n return (\n <>\n <StyledItemWrapper shadowStyle={shadowStyle(opened, item.type)} data-testid=\"leftnav-item-wrapper\">\n <StyledItem\n ref={visibleItemsRefs.current[dsId]}\n pt={paddingTop}\n pl={indent === undefined ? 'xxxs' : `${indent}px`}\n minHeight={minHeight}\n shadowStyle={shadowStyle(opened, item.type)}\n alignItems=\"flex-start\"\n cols={cols}\n onClick={!opened ? handleOnClick : () => null}\n onKeyDown={onKeyDown}\n selectable={selectable}\n selected={isSelected}\n selectedParent={selectedParent === dsId}\n opened={opened}\n onFocus={handleFocus}\n data-testid=\"leftnav-item-container\"\n tabIndex={focuseable ? 0 : -1}\n aria-describedby={ariaDescribedBy}\n aria-expanded={ariaExpanded}\n role={ariaRole}\n data-selected={isSelected}\n data-selectedparent={selectedParent === dsId}\n aria-label={ariaLabel}\n aria-hidden={!focuseable}\n aria-live={ariaLive}\n >\n {!expandedForAnimation ? (\n <Grid data-testid=\"leftnav-leftcomponent\" justifyContent=\"center\">\n <CollapsedComponent item={item} ctx={ctx} />\n </Grid>\n ) : (\n children\n )}\n </StyledItem>\n {hasBorderBottom && (\n <div\n style={{\n marginLeft: opened ? '16px' : '0px',\n marginRight: borderBottomMr,\n height: '1px',\n width: `calc(100% - ${borderBottomMr} - ${opened ? '16px' : '0px'})`,\n backgroundColor: '#E0E3E8',\n }}\n />\n )}\n </StyledItemWrapper>\n {subitems}\n </>\n );\n};\n"],
5
- "mappings": "AAAA;ACEA;AACA;AACA;AAGA;AACA;AACA;AAEO,MAAM,eAAe,CAAC,UAAsC;AACjE,QAAM,mBAAmB,qBAAqB,KAAK;AACnD,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA,UAAU,EAAE,YAAY,YAAY,QAAQ,WAAW,UAAU,UAAU,cAAc;AAAA,MACzF;AAAA;AAAA,IAEF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,MAAM,WAAW,cAAc;AACrC,QAAM;AAAA,IACJ,cAAc,EAAE,aAAa;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE;AAEJ,QAAM,SAAS,SAAS;AAExB,QAAM,gBAAgB,YACpB,CAAC,MAAM;AACL,QAAI;AAAS,cAAQ;AACrB,gBAAY,MAAM,CAAC;AACnB,QAAI;AAAY,sBAAgB,KAAK,IAAI;AAAA,EAC3C,GACA,CAAC,aAAa,MAAM,iBAAiB,YAAY,OAAO,CAC1D;AAEA,QAAM,cAAc,YAAY,MAAM;AACpC,QAAI;AAAY,qBAAe,IAAI;AAAA,EACrC,GAAG,CAAC,MAAM,gBAAgB,UAAU,CAAC;AAErC,QAAM,YAAY,sBAAsB;AAAA,IACtC;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAED,QAAM,OAAO,QAAQ,MAAO,uBAAuB,CAAC,QAAQ,OAAO,MAAM,IAAI,CAAC,MAAM,GAAI,CAAC,oBAAoB,CAAC;AAC9G,QAAM,aAAa,QAAQ,MAAM,iBAAiB,MAAM,CAAC,cAAc,IAAI,CAAC;AAE5E,MAAI,CAAC,wBAAwB,CAAC,oBAAoB;AAChD,WAAO;AAAA,EACT;AAEA,SACE,4DACE,qCAAC;AAAA,IAAkB,aAAa,YAAY,QAAQ,KAAK,IAAI;AAAA,IAAG,eAAY;AAAA,KAC1E,qCAAC;AAAA,IACC,KAAK,iBAAiB,QAAQ;AAAA,IAC9B,IAAI;AAAA,IACJ,IAAI,WAAW,SAAY,SAAS,GAAG;AAAA,IACvC;AAAA,IACA,aAAa,YAAY,QAAQ,KAAK,IAAI;AAAA,IAC1C,YAAW;AAAA,IACX;AAAA,IACA,SAAS,CAAC,SAAS,gBAAgB,MAAM;AAAA,IACzC;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV,gBAAgB,mBAAmB;AAAA,IACnC;AAAA,IACA,SAAS;AAAA,IACT,eAAY;AAAA,IACZ,UAAU,aAAa,IAAI;AAAA,IAC3B,oBAAkB;AAAA,IAClB,iBAAe;AAAA,IACf,MAAM;AAAA,IACN,iBAAe;AAAA,IACf,uBAAqB,mBAAmB;AAAA,IACxC,cAAY;AAAA,IACZ,eAAa,CAAC;AAAA,IACd,aAAW;AAAA,KAEV,CAAC,uBACA,qCAAC;AAAA,IAAK,eAAY;AAAA,IAAwB,gBAAe;AAAA,KACvD,qCAAC;AAAA,IAAmB;AAAA,IAAY;AAAA,GAAU,CAC5C,IAEA,QAEJ,GACC,mBACC,qCAAC;AAAA,IACC,OAAO;AAAA,MACL,YAAY,SAAS,SAAS;AAAA,MAC9B,aAAa;AAAA,MACb,QAAQ;AAAA,MACR,OAAO,eAAe,oBAAoB,SAAS,SAAS;AAAA,MAC5D,iBAAiB;AAAA,IACnB;AAAA,GACF,CAEJ,GACC,QACH;AAEJ;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AAEA,SAAgB,YAAY,SAAS,mBAAmB;AACxD,OAAO,UAAU;AACjB,SAAS,mBAAmB,kBAAkB;AAG9C,SAAS,sBAAsB;AAC/B,SAAS,4BAA4B;AACrC,SAAS,6BAA6B;AAE/B,MAAM,eAAe,CAAC,UAAsC;AACjE,QAAM,mBAAmB,qBAAqB,KAAK;AACnD,QAAM;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ;AAAA,MACA,UAAU,EAAE,YAAY,YAAY,QAAQ,WAAW,UAAU,UAAU,cAAc,gBAAgB;AAAA,MACzG;AAAA,IACF;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,MAAM,WAAW,cAAc;AACrC,QAAM;AAAA,IACJ,cAAc,EAAE,aAAa,WAAW;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI;AAEJ,QAAM,SAAS,SAAS;AAExB,QAAM,gBAAgB;AAAA,IACpB,CAAC,MAAM;AACL,UAAI;AAAS,gBAAQ;AACrB,kBAAY,MAAM,CAAC;AACnB,UAAI;AAAY,wBAAgB,KAAK,IAAI;AAAA,IAC3C;AAAA,IACA,CAAC,aAAa,MAAM,iBAAiB,YAAY,OAAO;AAAA,EAC1D;AAEA,QAAM,cAAc,YAAY,MAAM;AACpC,QAAI;AAAY,qBAAe,IAAI;AAAA,EACrC,GAAG,CAAC,MAAM,gBAAgB,UAAU,CAAC;AAErC,QAAM,YAAY,sBAAsB;AAAA,IACtC;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAED,QAAM,OAAO,QAAQ,MAAO,uBAAuB,CAAC,QAAQ,OAAO,MAAM,IAAI,CAAC,MAAM,GAAI,CAAC,oBAAoB,CAAC;AAC9G,QAAM,aAAa,QAAQ,MAAM,iBAAiB,MAAM,CAAC,cAAc,IAAI,CAAC;AAE5E,MAAI,CAAC,wBAAwB,CAAC,oBAAoB;AAChD,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IACE;AAAA,2BAAC;AAAA,QAAkB,aAAa,YAAY,QAAQ,KAAK,IAAI;AAAA,QAAG,eAAY;AAAA,QAC1E;AAAA,8BAAC;AAAA,YACC,KAAK,iBAAiB,QAAQ;AAAA,YAC9B,IAAI;AAAA,YACJ,IAAI,WAAW,SAAY,SAAS,GAAG;AAAA,YACvC;AAAA,YACA,aAAa,YAAY,QAAQ,KAAK,IAAI;AAAA,YAC1C,YAAW;AAAA,YACX;AAAA,YACA,SAAS,CAAC,SAAS,gBAAgB,MAAM;AAAA,YACzC;AAAA,YACA;AAAA,YACA,UAAU;AAAA,YACV,gBAAgB,mBAAmB;AAAA,YACnC;AAAA,YACA,SAAS;AAAA,YACT,eAAY;AAAA,YACZ,UAAU,aAAa,IAAI;AAAA,YAC3B,oBAAkB;AAAA,YAClB,iBAAe;AAAA,YACf,MAAM;AAAA,YACN,iBAAe;AAAA,YACf,uBAAqB,mBAAmB;AAAA,YACxC,cAAY;AAAA,YACZ,eAAa,CAAC;AAAA,YACd,aAAW;AAAA,YAEV,WAAC,uBACA,oBAAC;AAAA,cAAK,eAAY;AAAA,cAAwB,gBAAe;AAAA,cACvD,8BAAC;AAAA,gBAAmB;AAAA,gBAAY;AAAA,eAAU;AAAA,aAC5C,IAEA;AAAA,WAEJ;AAAA,UACC,mBACC,oBAAC;AAAA,YACC,OAAO;AAAA,cACL,YAAY,SAAS,SAAS;AAAA,cAC9B,aAAa;AAAA,cACb,QAAQ;AAAA,cACR,OAAO,eAAe,oBAAoB,SAAS,SAAS;AAAA,cAC5D,iBAAiB;AAAA,YACnB;AAAA,WACF;AAAA;AAAA,OAEJ;AAAA,MACC;AAAA;AAAA,GACH;AAEJ;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/ItemRenderer/styled.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable indent */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport Grid from '@elliemae/ds-grid';\nimport { styled } from '@elliemae/ds-system';\n\ninterface ItemProps {\n selected: boolean;\n selectable: boolean;\n opened: boolean;\n theme: any;\n shadowStyle: (theme: any) => string;\n}\n\nexport const borderOutside = (color, weight = 2): string => `&:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: ${weight}px solid ${color};\n pointer-events: none;\n}`;\n\nexport const StyledItemWrapper = styled(Grid)<{\n shadowStyle: (theme: any) => string;\n}>`\n position: relative;\n ${(props) => props.shadowStyle(props.theme)}\n`;\n\nconst getItemBackground = ({ selectable, opened, selected, theme }: ItemProps) => {\n if (!selectable) return 'white';\n if (selected && !opened) return theme.colors.brand[200];\n return theme.colors.neutral['000'];\n};\n\nconst getItemHoverBackground = ({ selectable, opened, selected, theme }: ItemProps) => {\n if (!selectable) return 'white';\n if (selected && !opened) return theme.colors.brand[200];\n return theme.colors.brand['200'];\n};\n\nexport const StyledItem = styled(Grid)<{ minHeight: string } & ItemProps>`\n cursor: ${(props) => (props.selectable && !props.opened ? 'pointer' : 'auto')};\n min-height: ${(props) => props.minHeight};\n\n background: ${getItemBackground};\n\n ${(props) => (props.selected && !props.opened ? borderOutside(props.theme.colors.brand[500], 1) : '')}\n\n :hover {\n background: ${getItemHoverBackground};\n }\n\n :active {\n background: ${({ selectable, theme }) => (selectable ? theme.colors.brand[200] : 'white')};\n }\n\n ${(props) => props.shadowStyle(props.theme)};\n\n outline: none;\n\n ${(props) =>\n props.tabIndex !== -1\n ? `:focus {\n ${borderOutside(props.theme.colors.brand[700])}\n }`\n : ''}\n`;\n"],
5
- "mappings": "AAAA;ACEA;AACA;AAUO,MAAM,gBAAgB,CAAC,OAAO,SAAS,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOhD,kBAAkB;AAAA;AAAA;AAIvB,MAAM,oBAAoB,OAAO,IAAI;AAAA;AAAA,IAIxC,CAAC,UAAU,MAAM,YAAY,MAAM,KAAK;AAAA;AAG5C,MAAM,oBAAoB,CAAC,EAAE,YAAY,QAAQ,UAAU,YAAuB;AAChF,MAAI,CAAC;AAAY,WAAO;AACxB,MAAI,YAAY,CAAC;AAAQ,WAAO,MAAM,OAAO,MAAM;AACnD,SAAO,MAAM,OAAO,QAAQ;AAC9B;AAEA,MAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,UAAU,YAAuB;AACrF,MAAI,CAAC;AAAY,WAAO;AACxB,MAAI,YAAY,CAAC;AAAQ,WAAO,MAAM,OAAO,MAAM;AACnD,SAAO,MAAM,OAAO,MAAM;AAC5B;AAEO,MAAM,aAAa,OAAO,IAAI;AAAA,YACzB,CAAC,UAAW,MAAM,cAAc,CAAC,MAAM,SAAS,YAAY;AAAA,gBACxD,CAAC,UAAU,MAAM;AAAA;AAAA,gBAEjB;AAAA;AAAA,IAEZ,CAAC,UAAW,MAAM,YAAY,CAAC,MAAM,SAAS,cAAc,MAAM,MAAM,OAAO,MAAM,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA,kBAGlF;AAAA;AAAA;AAAA;AAAA,kBAIA,CAAC,EAAE,YAAY,YAAa,aAAa,MAAM,OAAO,MAAM,OAAO;AAAA;AAAA;AAAA,IAGjF,CAAC,UAAU,MAAM,YAAY,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,IAIxC,CAAC,UACD,MAAM,aAAa,KACf;AAAA,MACF,cAAc,MAAM,MAAM,OAAO,MAAM,IAAI;AAAA,aAEzC;AAAA;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACEvB,OAAO,UAAU;AACjB,SAAS,cAAc;AAUhB,MAAM,gBAAgB,CAAC,OAAO,SAAS,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOhD,kBAAkB;AAAA;AAAA;AAIvB,MAAM,oBAAoB,OAAO,IAAI;AAAA;AAAA,IAIxC,CAAC,UAAU,MAAM,YAAY,MAAM,KAAK;AAAA;AAG5C,MAAM,oBAAoB,CAAC,EAAE,YAAY,QAAQ,UAAU,MAAM,MAAiB;AAChF,MAAI,CAAC;AAAY,WAAO;AACxB,MAAI,YAAY,CAAC;AAAQ,WAAO,MAAM,OAAO,MAAM;AACnD,SAAO,MAAM,OAAO,QAAQ;AAC9B;AAEA,MAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,UAAU,MAAM,MAAiB;AACrF,MAAI,CAAC;AAAY,WAAO;AACxB,MAAI,YAAY,CAAC;AAAQ,WAAO,MAAM,OAAO,MAAM;AACnD,SAAO,MAAM,OAAO,MAAM;AAC5B;AAEO,MAAM,aAAa,OAAO,IAAI;AAAA,YACzB,CAAC,UAAW,MAAM,cAAc,CAAC,MAAM,SAAS,YAAY;AAAA,gBACxD,CAAC,UAAU,MAAM;AAAA;AAAA,gBAEjB;AAAA;AAAA,IAEZ,CAAC,UAAW,MAAM,YAAY,CAAC,MAAM,SAAS,cAAc,MAAM,MAAM,OAAO,MAAM,MAAM,CAAC,IAAI;AAAA;AAAA;AAAA,kBAGlF;AAAA;AAAA;AAAA;AAAA,kBAIA,CAAC,EAAE,YAAY,MAAM,MAAO,aAAa,MAAM,OAAO,MAAM,OAAO;AAAA;AAAA;AAAA,IAGjF,CAAC,UAAU,MAAM,YAAY,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA,IAIxC,CAAC,UACD,MAAM,aAAa,KACf;AAAA,MACF,cAAc,MAAM,MAAM,OAAO,MAAM,IAAI;AAAA,aAEzC;AAAA;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/ItemRenderer/usePropsWithDefaults.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useMemo } from 'react';\nimport { itemOptsT, ItemRendererT } from '../../index.d';\n\nconst itemDefaultProps: itemOptsT = {\n label: '',\n labelOverflow: 'truncate',\n selectable: true,\n focuseable: true,\n openable: false,\n closable: false,\n ariaLabel: '',\n ariaRole: 'menuitem',\n ariaLive: 'off',\n ariaExpanded: undefined,\n ariaDescribedBy: undefined,\n};\n\nconst itemWithoutShadows = ['ds-left-nav-item-header', 'ds-left-nav-item-link', 'ds-left-nav-item-submenu'];\n\n// Make use Item props with defaults\nexport const usePropsWithDefaults = (props: ItemRendererT): ItemRendererT => {\n const propsWithDefault = useMemo(() => {\n const itemWithDefaults = {\n CollapsedComponent: () => null,\n ...props.item,\n itemOpts: { ...itemDefaultProps, ...props.item.itemOpts },\n };\n return {\n minHeight: '48px',\n paddingTop: '12px',\n subitems: [],\n shadowStyle: (opened: boolean, type: string) => (theme: any) =>\n `box-shadow: ${\n opened || !itemWithoutShadows.includes(type) ? 'inset 4px 0 0 0 #52A6EC' : 'inset 4px 0 0 0 white'\n }`,\n hasBorderBottom: false,\n borderBottomMr: '0px',\n ...props,\n item: itemWithDefaults,\n };\n }, [props]);\n\n return propsWithDefault;\n};\n"],
5
- "mappings": "AAAA;ACAA;AAGA,MAAM,mBAA8B;AAAA,EAClC,OAAO;AAAA,EACP,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,iBAAiB;AACnB;AAEA,MAAM,qBAAqB,CAAC,2BAA2B,yBAAyB,0BAA0B;AAGnG,MAAM,uBAAuB,CAAC,UAAwC;AAC3E,QAAM,mBAAmB,QAAQ,MAAM;AACrC,UAAM,mBAAmB;AAAA,MACvB,oBAAoB,MAAM;AAAA,MAC1B,GAAG,MAAM;AAAA,MACT,UAAU,EAAE,GAAG,kBAAkB,GAAG,MAAM,KAAK,SAAS;AAAA,IAC1D;AACA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,MACX,aAAa,CAAC,QAAiB,SAAiB,CAAC,UAC/C,eACE,UAAU,CAAC,mBAAmB,SAAS,IAAI,IAAI,4BAA4B;AAAA,MAE/E,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,GAAG;AAAA,MACH,MAAM;AAAA,IACR;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO;AACT;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,eAAe;AAGxB,MAAM,mBAA8B;AAAA,EAClC,OAAO;AAAA,EACP,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,iBAAiB;AACnB;AAEA,MAAM,qBAAqB,CAAC,2BAA2B,yBAAyB,0BAA0B;AAGnG,MAAM,uBAAuB,CAAC,UAAwC;AAC3E,QAAM,mBAAmB,QAAQ,MAAM;AACrC,UAAM,mBAAmB;AAAA,MACvB,oBAAoB,MAAM;AAAA,MAC1B,GAAG,MAAM;AAAA,MACT,UAAU,EAAE,GAAG,kBAAkB,GAAG,MAAM,KAAK,SAAS;AAAA,IAC1D;AACA,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,MACX,aAAa,CAAC,QAAiB,SAAiB,CAAC,UAC/C,eACE,UAAU,CAAC,mBAAmB,SAAS,IAAI,IAAI,4BAA4B;AAAA,MAE/E,iBAAiB;AAAA,MACjB,gBAAgB;AAAA,MAChB,GAAG;AAAA,MACH,MAAM;AAAA,IACR;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import React2 from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import {
4
4
  AlertsSmallFill,
5
5
  Notifications as InternalNotifications,
@@ -17,39 +17,52 @@ const Notifications = ({
17
17
  exceptions = false,
18
18
  alerts = false,
19
19
  messages = false
20
- }) => /* @__PURE__ */ React2.createElement(StyledIcon, null, /* @__PURE__ */ React2.createElement(InternalNotifications, {
21
- size: "m",
22
- color: ["brand-primary", 800],
23
- "data-testid": "left-nav-notifications-icon"
24
- }), (exceptions || alerts || messages) && /* @__PURE__ */ React2.createElement(Grid, {
25
- cols: ["1fr", "1fr", "1fr"],
26
- gutter: "xxxs",
27
- mt: "2px"
28
- }, /* @__PURE__ */ React2.createElement(Grid, {
29
- width: "6px",
30
- height: "6px",
31
- "data-testid": "left-nav-exceptions-icon"
32
- }, exceptions && /* @__PURE__ */ React2.createElement(ExceptionsSmallFill, {
33
- width: "6px",
34
- height: "6px",
35
- color: ["warning", 900]
36
- })), /* @__PURE__ */ React2.createElement(Grid, {
37
- width: "6px",
38
- height: "6px",
39
- "data-testid": "left-nav-alerts-icon"
40
- }, alerts && /* @__PURE__ */ React2.createElement(AlertsSmallFill, {
41
- width: "6px",
42
- height: "6px",
43
- color: ["danger", 900]
44
- })), /* @__PURE__ */ React2.createElement(Grid, {
45
- width: "6px",
46
- height: "6px",
47
- "data-testid": "left-nav-messages-icon"
48
- }, messages && /* @__PURE__ */ React2.createElement(MessagesSmallFill, {
49
- width: "6px",
50
- height: "6px",
51
- color: ["success", 900]
52
- }))));
20
+ }) => /* @__PURE__ */ jsxs(StyledIcon, {
21
+ children: [
22
+ /* @__PURE__ */ jsx(InternalNotifications, {
23
+ size: "m",
24
+ color: ["brand-primary", 800],
25
+ "data-testid": "left-nav-notifications-icon"
26
+ }),
27
+ (exceptions || alerts || messages) && /* @__PURE__ */ jsxs(Grid, {
28
+ cols: ["1fr", "1fr", "1fr"],
29
+ gutter: "xxxs",
30
+ mt: "2px",
31
+ children: [
32
+ /* @__PURE__ */ jsx(Grid, {
33
+ width: "6px",
34
+ height: "6px",
35
+ "data-testid": "left-nav-exceptions-icon",
36
+ children: exceptions && /* @__PURE__ */ jsx(ExceptionsSmallFill, {
37
+ width: "6px",
38
+ height: "6px",
39
+ color: ["warning", 900]
40
+ })
41
+ }),
42
+ /* @__PURE__ */ jsx(Grid, {
43
+ width: "6px",
44
+ height: "6px",
45
+ "data-testid": "left-nav-alerts-icon",
46
+ children: alerts && /* @__PURE__ */ jsx(AlertsSmallFill, {
47
+ width: "6px",
48
+ height: "6px",
49
+ color: ["danger", 900]
50
+ })
51
+ }),
52
+ /* @__PURE__ */ jsx(Grid, {
53
+ width: "6px",
54
+ height: "6px",
55
+ "data-testid": "left-nav-messages-icon",
56
+ children: messages && /* @__PURE__ */ jsx(MessagesSmallFill, {
57
+ width: "6px",
58
+ height: "6px",
59
+ color: ["success", 900]
60
+ })
61
+ })
62
+ ]
63
+ })
64
+ ]
65
+ });
53
66
  var Notifications_default = Notifications;
54
67
  export {
55
68
  Notifications,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/Notifications/index.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport {\n AlertsSmallFill,\n Notifications as InternalNotifications,\n ExceptionsSmallFill,\n MessagesSmallFill,\n} from '@elliemae/ds-icons';\nimport { styled } from '@elliemae/ds-system';\nimport Grid from '@elliemae/ds-grid';\n\nconst StyledIcon = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\ntype NotificationsProps = {\n exceptions?: boolean;\n alerts?: boolean;\n messages?: boolean;\n};\n\nexport const Notifications = ({\n exceptions = false,\n alerts = false,\n messages = false,\n}: NotificationsProps): JSX.Element => (\n <StyledIcon>\n <InternalNotifications size=\"m\" color={['brand-primary', 800]} data-testid=\"left-nav-notifications-icon\" />\n {(exceptions || alerts || messages) && (\n <Grid cols={['1fr', '1fr', '1fr']} gutter=\"xxxs\" mt=\"2px\">\n <Grid width=\"6px\" height=\"6px\" data-testid=\"left-nav-exceptions-icon\">\n {exceptions && <ExceptionsSmallFill width=\"6px\" height=\"6px\" color={['warning', 900]} />}\n </Grid>\n <Grid width=\"6px\" height=\"6px\" data-testid=\"left-nav-alerts-icon\">\n {alerts && <AlertsSmallFill width=\"6px\" height=\"6px\" color={['danger', 900]} />}\n </Grid>\n <Grid width=\"6px\" height=\"6px\" data-testid=\"left-nav-messages-icon\">\n {messages && <MessagesSmallFill width=\"6px\" height=\"6px\" color={['success', 900]} />}\n </Grid>\n </Grid>\n )}\n </StyledIcon>\n);\n\nexport default Notifications;\n"],
5
- "mappings": "AAAA;ACAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAEA,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA;AAYnB,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AAAA,MAEX,qCAAC,kBACC,qCAAC;AAAA,EAAsB,MAAK;AAAA,EAAI,OAAO,CAAC,iBAAiB,GAAG;AAAA,EAAG,eAAY;AAAA,CAA8B,GACvG,eAAc,UAAU,aACxB,qCAAC;AAAA,EAAK,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,EAAG,QAAO;AAAA,EAAO,IAAG;AAAA,GAClD,qCAAC;AAAA,EAAK,OAAM;AAAA,EAAM,QAAO;AAAA,EAAM,eAAY;AAAA,GACxC,cAAc,qCAAC;AAAA,EAAoB,OAAM;AAAA,EAAM,QAAO;AAAA,EAAM,OAAO,CAAC,WAAW,GAAG;AAAA,CAAG,CACxF,GACA,qCAAC;AAAA,EAAK,OAAM;AAAA,EAAM,QAAO;AAAA,EAAM,eAAY;AAAA,GACxC,UAAU,qCAAC;AAAA,EAAgB,OAAM;AAAA,EAAM,QAAO;AAAA,EAAM,OAAO,CAAC,UAAU,GAAG;AAAA,CAAG,CAC/E,GACA,qCAAC;AAAA,EAAK,OAAM;AAAA,EAAM,QAAO;AAAA,EAAM,eAAY;AAAA,GACxC,YAAY,qCAAC;AAAA,EAAkB,OAAM;AAAA,EAAM,QAAO;AAAA,EAAM,OAAO,CAAC,WAAW,GAAG;AAAA,CAAG,CACpF,CACF,CAEJ;AAGF,IAAO,wBAAQ;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AACA;AAAA,EACE;AAAA,EACA,iBAAiB;AAAA,EACjB;AAAA,EACA;AAAA,OACK;AACP,SAAS,cAAc;AACvB,OAAO,UAAU;AAEjB,MAAM,aAAa,OAAO;AAAA;AAAA;AAAA;AAAA;AAYnB,MAAM,gBAAgB,CAAC;AAAA,EAC5B,aAAa;AAAA,EACb,SAAS;AAAA,EACT,WAAW;AACb,MACE,qBAAC;AAAA,EACC;AAAA,wBAAC;AAAA,MAAsB,MAAK;AAAA,MAAI,OAAO,CAAC,iBAAiB,GAAG;AAAA,MAAG,eAAY;AAAA,KAA8B;AAAA,KACvG,cAAc,UAAU,aACxB,qBAAC;AAAA,MAAK,MAAM,CAAC,OAAO,OAAO,KAAK;AAAA,MAAG,QAAO;AAAA,MAAO,IAAG;AAAA,MAClD;AAAA,4BAAC;AAAA,UAAK,OAAM;AAAA,UAAM,QAAO;AAAA,UAAM,eAAY;AAAA,UACxC,wBAAc,oBAAC;AAAA,YAAoB,OAAM;AAAA,YAAM,QAAO;AAAA,YAAM,OAAO,CAAC,WAAW,GAAG;AAAA,WAAG;AAAA,SACxF;AAAA,QACA,oBAAC;AAAA,UAAK,OAAM;AAAA,UAAM,QAAO;AAAA,UAAM,eAAY;AAAA,UACxC,oBAAU,oBAAC;AAAA,YAAgB,OAAM;AAAA,YAAM,QAAO;AAAA,YAAM,OAAO,CAAC,UAAU,GAAG;AAAA,WAAG;AAAA,SAC/E;AAAA,QACA,oBAAC;AAAA,UAAK,OAAM;AAAA,UAAM,QAAO;AAAA,UAAM,eAAY;AAAA,UACxC,sBAAY,oBAAC;AAAA,YAAkB,OAAM;AAAA,YAAM,QAAO;AAAA,YAAM,OAAO,CAAC,WAAW,GAAG;AAAA,WAAG;AAAA,SACpF;AAAA;AAAA,KACF;AAAA;AAAA,CAEJ;AAGF,IAAO,wBAAQ;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import React2 from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
3
  import { styled } from "@elliemae/ds-system";
4
4
  import { OpenWindow as OpenWindowIcon } from "@elliemae/ds-icons";
5
5
  const StyledOpenWindow = styled(OpenWindowIcon)`
@@ -8,7 +8,7 @@ const StyledOpenWindow = styled(OpenWindowIcon)`
8
8
  outline: 1px solid ${(props) => props.theme.colors.brand[800]};
9
9
  }
10
10
  `;
11
- const OpenWindow = (props) => /* @__PURE__ */ React2.createElement(StyledOpenWindow, {
11
+ const OpenWindow = (props) => /* @__PURE__ */ jsx(StyledOpenWindow, {
12
12
  size: "s",
13
13
  color: ["brand-primary", 800],
14
14
  ...props
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/exported-related/OpenWindowItem/index.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\nimport { styled } from '@elliemae/ds-system';\nimport { OpenWindow as OpenWindowIcon } from '@elliemae/ds-icons';\n\nconst StyledOpenWindow = styled(OpenWindowIcon)`\n cursor: pointer;\n :focus {\n outline: 1px solid ${(props) => props.theme.colors.brand[800]};\n }\n`;\n\nexport const OpenWindow = (props: unknown): JSX.Element => (\n <StyledOpenWindow size=\"s\" color={['brand-primary', 800]} {...props} />\n);\n\nexport default OpenWindow;\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AAEA,MAAM,mBAAmB,OAAO,cAAc;AAAA;AAAA;AAAA,yBAGrB,CAAC,UAAU,MAAM,MAAM,OAAO,MAAM;AAAA;AAAA;AAItD,MAAM,aAAa,CAAC,UACzB,qCAAC;AAAA,EAAiB,MAAK;AAAA,EAAI,OAAO,CAAC,iBAAiB,GAAG;AAAA,EAAI,GAAG;AAAA,CAAO;AAGvE,IAAO,yBAAQ;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB;AACA,SAAS,cAAc;AACvB,SAAS,cAAc,sBAAsB;AAE7C,MAAM,mBAAmB,OAAO,cAAc;AAAA;AAAA;AAAA,yBAGrB,CAAC,UAAU,MAAM,MAAM,OAAO,MAAM;AAAA;AAAA;AAItD,MAAM,aAAa,CAAC,UACzB,oBAAC;AAAA,EAAiB,MAAK;AAAA,EAAI,OAAO,CAAC,iBAAiB,GAAG;AAAA,EAAI,GAAG;AAAA,CAAO;AAGvE,IAAO,yBAAQ;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/constants.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export const LABEL_OVERFLOW = {\n WRAP: 'wrap',\n WRAP_ALL: 'wrapAll',\n TRUNCATE: 'truncate',\n};\n\nexport const ITEM_TYPES = {\n LEFT_NAV_ITEM_HEADER: 'ds-left-nav-item-header',\n LEFT_NAV_ITEM_LINK: 'ds-left-nav-item-link',\n LEFT_NAV_ITEM_SUBMENU: 'ds-left-nav-item-submenu',\n LEFT_NAV_ITEM_CONTROLLED_DRILLDOWN: 'ds-left-nav-item-controlled-drilldown',\n LEFT_NAV_ITEM_UNCONTROLLED_DRILLDOWN: 'ds-left-nav-item-uncontrolled-drilldown',\n LEFT_NAV_ITEM_SECTION: 'ds-left-nav-item-section',\n LEFT_NAV_ITEM_SEPARATOR: 'ds-left-nav-item-separator',\n LEFT_NAV_ITEM_TEXT_LABEL: 'ds-left-nav-item-text-label',\n LEFT_NAV_ITEM_WITH_DATE: 'ds-left-nav-item-with-date',\n};\n\nexport const FOOTER_DS_ID = 'ds-left-nav-__internal__-footer';\n\nexport const FOOTER_MENU_CLOSE_DS_ID = 'ds-left-nav-__internal__-footer-menu-close';\n\nexport const CHEVRON_BACK_DS_ID = 'ds-left-nav-__internal__-chevron-back';\n"],
5
- "mappings": "AAAA;ACAO,MAAM,iBAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,aAAa;AAAA,EACxB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,oCAAoC;AAAA,EACpC,sCAAsC;AAAA,EACtC,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,yBAAyB;AAC3B;AAEO,MAAM,eAAe;AAErB,MAAM,0BAA0B;AAEhC,MAAM,qBAAqB;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAhB,MAAM,iBAAiB;AAAA,EAC5B,MAAM;AAAA,EACN,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,aAAa;AAAA,EACxB,sBAAsB;AAAA,EACtB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,oCAAoC;AAAA,EACpC,sCAAsC;AAAA,EACtC,uBAAuB;AAAA,EACvB,yBAAyB;AAAA,EACzB,0BAA0B;AAAA,EAC1B,yBAAyB;AAC3B;AAEO,MAAM,eAAe;AAErB,MAAM,0BAA0B;AAEhC,MAAM,qBAAqB;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/exported-related/index.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './constants';\nexport * from './ItemRenderer';\nexport * from './ChevronItem';\nexport * from './Notifications';\nexport * from './OpenWindowItem';\nexport * from './Icon';\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/index.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './useOpenableOnClickHandler';\nexport * from './useExpandableOnClickHandler';\nexport * from './useKeyboardNavigation';\n"],
5
- "mappings": "AAAA;ACAA;AACA;AACA;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
@@ -11,22 +11,31 @@ const useExpandableOnClickHandler = ({
11
11
  leftNavProps: { expanded },
12
12
  setSelectedItem
13
13
  } = useContext(LeftNavigationContext);
14
- const handleOnExpand = useCallback((e) => {
15
- onExpand(e);
16
- if (selectable)
17
- setSelectedItem(id);
18
- }, [id, onExpand, setSelectedItem, selectable]);
19
- const handleOnOpen = useCallback((e) => {
20
- onOpen(e);
21
- if (selectable)
22
- setSelectedItem(id);
23
- }, [id, onOpen, setSelectedItem, selectable]);
24
- const handleOnClick = useCallback((e) => {
25
- if (!expanded)
26
- handleOnExpand(e);
27
- else
28
- handleOnOpen(e);
29
- }, [expanded, handleOnExpand, handleOnOpen]);
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
+ );
30
39
  return handleOnClick;
31
40
  };
32
41
  export {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useExpandableOnClickHandler.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { useCallback, useContext } from 'react';\nimport LeftNavigationContext from '../LeftNavigationContext';\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): ((\n e: React.MouseEvent<HTMLElement>,\n) => void) => {\n const {\n leftNavProps: { expanded },\n setSelectedItem,\n } = useContext(LeftNavigationContext);\n\n const handleOnExpand = useCallback(\n (e) => {\n onExpand(e);\n if (selectable) setSelectedItem(id);\n },\n [id, onExpand, setSelectedItem, selectable],\n );\n\n const handleOnOpen = useCallback(\n (e) => {\n onOpen(e);\n if (selectable) setSelectedItem(id);\n },\n [id, onOpen, setSelectedItem, selectable],\n );\n\n const handleOnClick = 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;ACAA;AACA;AASO,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AAAA,MAGD;AACZ,QAAM;AAAA,IACJ,cAAc,EAAE;AAAA,IAChB;AAAA,MACE,WAAW,qBAAqB;AAEpC,QAAM,iBAAiB,YACrB,CAAC,MAAM;AACL,aAAS,CAAC;AACV,QAAI;AAAY,sBAAgB,EAAE;AAAA,EACpC,GACA,CAAC,IAAI,UAAU,iBAAiB,UAAU,CAC5C;AAEA,QAAM,eAAe,YACnB,CAAC,MAAM;AACL,WAAO,CAAC;AACR,QAAI;AAAY,sBAAgB,EAAE;AAAA,EACpC,GACA,CAAC,IAAI,QAAQ,iBAAiB,UAAU,CAC1C;AAEA,QAAM,gBAAgB,YACpB,CAAC,MAAM;AACL,QAAI,CAAC;AAAU,qBAAe,CAAC;AAAA;AAC1B,mBAAa,CAAC;AAAA,EACrB,GACA,CAAC,UAAU,gBAAgB,YAAY,CACzC;AAEA,SAAO;AACT;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACAvB,SAAgB,aAAa,kBAAkB;AAC/C,OAAO,2BAA2B;AAS3B,MAAM,8BAA8B,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA,aAAa;AACf,MAEc;AACZ,QAAM;AAAA,IACJ,cAAc,EAAE,SAAS;AAAA,IACzB;AAAA,EACF,IAAI,WAAW,qBAAqB;AAEpC,QAAM,iBAAiB;AAAA,IACrB,CAAC,MAAM;AACL,eAAS,CAAC;AACV,UAAI;AAAY,wBAAgB,EAAE;AAAA,IACpC;AAAA,IACA,CAAC,IAAI,UAAU,iBAAiB,UAAU;AAAA,EAC5C;AAEA,QAAM,eAAe;AAAA,IACnB,CAAC,MAAM;AACL,aAAO,CAAC;AACR,UAAI;AAAY,wBAAgB,EAAE;AAAA,IACpC;AAAA,IACA,CAAC,IAAI,QAAQ,iBAAiB,UAAU;AAAA,EAC1C;AAEA,QAAM,gBAAgB;AAAA,IACpB,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
6
  "names": []
7
7
  }
@@ -21,66 +21,75 @@ const useKeyboardNavigation = ({ item, onClick }) => {
21
21
  itemOpts: { selectable, openable, closable }
22
22
  } = item;
23
23
  const { visibleItems, visibleItemsRefs } = useContext(LeftNavContext);
24
- const currentIndex = useMemo(() => visibleItems.findIndex((visibleItemDsId) => visibleItemDsId === dsId), [dsId, visibleItems]);
24
+ const currentIndex = useMemo(
25
+ () => visibleItems.findIndex((visibleItemDsId) => visibleItemDsId === dsId),
26
+ [dsId, visibleItems]
27
+ );
25
28
  const { setFocusedItem, focusedItem, setSelectedItem } = useContext(LeftNavContext);
26
- const focusAndSelect = useCallback((nextDsId) => {
27
- setFocusedItem(nextDsId);
28
- setSelectedItem(nextDsId);
29
- }, [setFocusedItem, setSelectedItem]);
29
+ const focusAndSelect = useCallback(
30
+ (nextDsId) => {
31
+ setFocusedItem(nextDsId);
32
+ setSelectedItem(nextDsId);
33
+ },
34
+ [setFocusedItem, setSelectedItem]
35
+ );
30
36
  useLayoutEffect(() => {
31
37
  if (dsId === focusedItem)
32
38
  visibleItemsRefs.current[dsId]?.current?.focus();
33
39
  }, [dsId, focusedItem, visibleItemsRefs]);
34
- const onKeyDown = useCallback((e) => {
35
- const { keyCode } = e;
36
- if (keyCode !== KEY_CODES.TAB) {
37
- e.preventDefault();
38
- }
39
- if (keyCode === KEY_CODES.ENTER || keyCode === KEY_CODES.SPACE) {
40
- if (selectable) {
41
- onClick(e);
42
- focusAndSelect(dsId);
43
- } else if (focusedItem === CHEVRON_BACK_DS_ID) {
40
+ const onKeyDown = useCallback(
41
+ (e) => {
42
+ const { keyCode } = e;
43
+ if (keyCode !== KEY_CODES.TAB) {
44
+ e.preventDefault();
45
+ }
46
+ if (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) {
44
59
  onClick(e);
45
- focusAndSelect(dsId);
46
- } else if (focusedItem === FOOTER_MENU_CLOSE_DS_ID) {
60
+ }
61
+ if (closable && keyCode === KEY_CODES.LEFT_ARROW) {
47
62
  onClick(e);
48
63
  setFocusedItem(dsId);
49
64
  }
50
- }
51
- if (openable && keyCode === KEY_CODES.RIGHT_ARROW) {
52
- onClick(e);
53
- }
54
- if (closable && keyCode === KEY_CODES.LEFT_ARROW) {
55
- onClick(e);
56
- setFocusedItem(dsId);
57
- }
58
- if (keyCode === KEY_CODES.DOWN_ARROW) {
59
- const nextDsId = visibleItems[nextIndex(currentIndex, visibleItems.length)];
60
- setFocusedItem(nextDsId);
61
- }
62
- if (keyCode === KEY_CODES.UP_ARROW) {
63
- const prevDsId = visibleItems[prevIndex(currentIndex, visibleItems.length)];
64
- setFocusedItem(prevDsId);
65
- }
66
- if (keyCode === KEY_CODES.HOME) {
67
- setFocusedItem(visibleItems[0]);
68
- }
69
- if (keyCode === KEY_CODES.END) {
70
- setFocusedItem(visibleItems[visibleItems.length - 1]);
71
- }
72
- }, [
73
- openable,
74
- closable,
75
- selectable,
76
- focusedItem,
77
- onClick,
78
- focusAndSelect,
79
- dsId,
80
- setFocusedItem,
81
- visibleItems,
82
- currentIndex
83
- ]);
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
+ );
84
93
  return onKeyDown;
85
94
  };
86
95
  export {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/hooks/useKeyboardNavigation.tsx"],
4
4
  "sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-statements */\n/* eslint-disable max-lines */\n/* eslint-disable complexity */\nimport React, { useCallback, useMemo, useLayoutEffect, useContext } from 'react';\nimport { CHEVRON_BACK_DS_ID, FOOTER_MENU_CLOSE_DS_ID } from '../exported-related/constants';\nimport { GenericItemItemProps } from '../index.d';\nimport LeftNavContext from '../LeftNavigationContext';\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: 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 (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 (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;ACGA;AACA;AAEA;AAEA,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,WAAoB,SAAQ,KAAK;AACnE,MAAM,YAAY,CAAC,OAAe,WAAoB,SAAQ,IAAI,UAAU;AAQrE,MAAM,wBAAwB,CAAC,EAAE,MAAM,cAAsE;AAClH,QAAM;AAAA,IACJ;AAAA,IACA,UAAU,EAAE,YAAY,UAAU;AAAA,MAChC;AAEJ,QAAM,EAAE,cAAc,qBAAqB,WAAW,cAAc;AAEpE,QAAM,eAAe,QACnB,MAAM,aAAa,UAAU,CAAC,oBAAoB,oBAAoB,IAAI,GAC1E,CAAC,MAAM,YAAY,CACrB;AAEA,QAAM,EAAE,gBAAgB,aAAa,oBAAoB,WAAW,cAAc;AAElF,QAAM,iBAAiB,YACrB,CAAC,aAAqB;AACpB,mBAAe,QAAQ;AACvB,oBAAgB,QAAQ;AAAA,EAC1B,GACA,CAAC,gBAAgB,eAAe,CAClC;AAEA,kBAAgB,MAAM;AACpB,QAAI,SAAS;AAAa,uBAAiB,QAAQ,OAAO,SAAS,MAAM;AAAA,EAC3E,GAAG,CAAC,MAAM,aAAa,gBAAgB,CAAC;AAExC,QAAM,YAAwC,YAC5C,CAAC,MAAM;AACL,UAAM,EAAE,YAAY;AAGpB,QAAI,YAAY,UAAU,KAAK;AAC7B,QAAE,eAAe;AAAA,IACnB;AAEA,QAAI,YAAY,UAAU,SAAS,YAAY,UAAU,OAAO;AAC9D,UAAI,YAAY;AACd,gBAAQ,CAAC;AACT,uBAAe,IAAI;AAAA,MACrB,WAAW,gBAAgB,oBAAoB;AAC7C,gBAAQ,CAAC;AACT,uBAAe,IAAI;AAAA,MACrB,WAAW,gBAAgB,yBAAyB;AAClD,gBAAQ,CAAC;AACT,uBAAe,IAAI;AAAA,MACrB;AAAA,IACF;AAEA,QAAI,YAAY,YAAY,UAAU,aAAa;AACjD,cAAQ,CAAC;AAAA,IACX;AAEA,QAAI,YAAY,YAAY,UAAU,YAAY;AAChD,cAAQ,CAAC;AACT,qBAAe,IAAI;AAAA,IACrB;AAEA,QAAI,YAAY,UAAU,YAAY;AACpC,YAAM,WAAW,aAAa,UAAU,cAAc,aAAa,MAAM;AACzE,qBAAe,QAAQ;AAAA,IACzB;AAEA,QAAI,YAAY,UAAU,UAAU;AAClC,YAAM,WAAW,aAAa,UAAU,cAAc,aAAa,MAAM;AACzE,qBAAe,QAAQ;AAAA,IACzB;AAEA,QAAI,YAAY,UAAU,MAAM;AAC9B,qBAAe,aAAa,EAAE;AAAA,IAChC;AAEA,QAAI,YAAY,UAAU,KAAK;AAC7B,qBAAe,aAAa,aAAa,SAAS,EAAE;AAAA,IACtD;AAAA,EACF,GACA;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CACF;AAEA,SAAO;AACT;",
5
+ "mappings": "AAAA,YAAY,WAAW;ACGvB,SAAgB,aAAa,SAAS,iBAAiB,kBAAkB;AACzE,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,OAAO,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,YAAY,UAAU,SAAS,YAAY,UAAU,OAAO;AAC9D,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,YAAY,YAAY,UAAU,YAAY;AAChD,gBAAQ,CAAC;AACT,uBAAe,IAAI;AAAA,MACrB;AAEA,UAAI,YAAY,UAAU,YAAY;AACpC,cAAM,WAAW,aAAa,UAAU,cAAc,aAAa,MAAM;AACzE,uBAAe,QAAQ;AAAA,MACzB;AAEA,UAAI,YAAY,UAAU,UAAU;AAClC,cAAM,WAAW,aAAa,UAAU,cAAc,aAAa,MAAM;AACzE,uBAAe,QAAQ;AAAA,MACzB;AAEA,UAAI,YAAY,UAAU,MAAM;AAC9B,uBAAe,aAAa,EAAE;AAAA,MAChC;AAEA,UAAI,YAAY,UAAU,KAAK;AAC7B,uBAAe,aAAa,aAAa,SAAS,EAAE;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
6
  "names": []
7
7
  }