@elliemae/ds-left-navigation 2.0.0-alpha.1 → 2.0.0-alpha.13

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 (120) hide show
  1. package/cjs/LeftNavigation.js +2 -2
  2. package/cjs/LeftNavigationContext.js +1 -5
  3. package/cjs/common/getItemBackgroundStyle.js +1 -12
  4. package/cjs/common/getLeftBorderStyle.js +3 -17
  5. package/cjs/common/getScrollbarStyle.js +1 -24
  6. package/cjs/common/index.js +0 -2
  7. package/cjs/configs/index.js +1 -1
  8. package/cjs/configs/useLeftNavConfig.js +24 -31
  9. package/cjs/configs/useLeftNavItems.js +12 -12
  10. package/cjs/configs/useLeftNavSmoothExpand.js +3 -3
  11. package/cjs/exported-related/ChevronItem/index.js +9 -5
  12. package/cjs/exported-related/Icon/index.js +7 -2
  13. package/cjs/exported-related/ItemRenderer/index.js +17 -14
  14. package/cjs/exported-related/ItemRenderer/styled.js +29 -29
  15. package/cjs/exported-related/ItemRenderer/usePropsWithDefaults.js +12 -4
  16. package/cjs/exported-related/Notifications/index.js +43 -43
  17. package/cjs/exported-related/OpenWindowItem/index.js +9 -5
  18. package/cjs/hooks/useExpandableOnClickHandler.js +7 -6
  19. package/cjs/hooks/useKeyboardNavigation.js +7 -7
  20. package/cjs/hooks/useOpenableOnClickHandler.js +8 -7
  21. package/cjs/hooks/useSelectFirstBodyItem.js +14 -4
  22. package/cjs/index.js +1 -2
  23. package/cjs/outOfTheBox/ItemControlledDrilldown/index.js +32 -31
  24. package/cjs/outOfTheBox/ItemControlledDrilldown/styled.js +9 -6
  25. package/cjs/outOfTheBox/ItemHeader/index.js +35 -26
  26. package/cjs/outOfTheBox/ItemHeader/styled.js +4 -5
  27. package/cjs/outOfTheBox/ItemLink/index.js +26 -32
  28. package/cjs/outOfTheBox/ItemLink/styled.js +1 -1
  29. package/cjs/outOfTheBox/ItemSection/index.js +16 -13
  30. package/cjs/outOfTheBox/ItemSection/styled.js +3 -3
  31. package/cjs/outOfTheBox/ItemSeparator/index.js +10 -10
  32. package/cjs/outOfTheBox/ItemSubmenu/index.js +28 -36
  33. package/cjs/outOfTheBox/ItemSubmenu/styled.js +4 -5
  34. package/cjs/outOfTheBox/ItemTextLabel/index.js +15 -13
  35. package/cjs/outOfTheBox/ItemTextLabel/styled.js +8 -5
  36. package/cjs/outOfTheBox/ItemUncontrolledDrilldown/index.js +29 -29
  37. package/cjs/outOfTheBox/ItemUncontrolledDrilldown/styled.js +9 -6
  38. package/cjs/outOfTheBox/ItemWithDate/index.js +17 -16
  39. package/cjs/outOfTheBox/ItemWithDate/styled.js +9 -6
  40. package/cjs/outOfTheBox/index.js +6 -6
  41. package/cjs/parts/LeftNavContent/index.js +17 -14
  42. package/cjs/parts/LeftNavContent/styled.js +18 -23
  43. package/cjs/parts/LeftNavContentWithScrollbar/index.js +30 -22
  44. package/cjs/parts/LeftNavFooterItem/index.js +13 -21
  45. package/cjs/parts/LeftNavFooterItem/styled.js +9 -10
  46. package/cjs/parts/LeftNavLoading/index.js +14 -11
  47. package/cjs/parts/OutOfTheBoxMapItem.js +9 -4
  48. package/cjs/prop-types.js +2 -1
  49. package/esm/LeftNavigationContext.js +0 -4
  50. package/esm/common/getItemBackgroundStyle.js +1 -12
  51. package/esm/common/getLeftBorderStyle.js +3 -17
  52. package/esm/common/getScrollbarStyle.js +1 -24
  53. package/esm/common/index.js +0 -1
  54. package/esm/configs/useLeftNavConfig.js +14 -21
  55. package/esm/configs/useLeftNavItems.js +11 -11
  56. package/esm/exported-related/ChevronItem/index.js +7 -2
  57. package/esm/exported-related/Icon/index.js +5 -0
  58. package/esm/exported-related/ItemRenderer/index.js +13 -10
  59. package/esm/exported-related/ItemRenderer/styled.js +27 -28
  60. package/esm/exported-related/ItemRenderer/usePropsWithDefaults.js +11 -3
  61. package/esm/exported-related/Notifications/index.js +41 -37
  62. package/esm/exported-related/OpenWindowItem/index.js +7 -2
  63. package/esm/hooks/useExpandableOnClickHandler.js +7 -6
  64. package/esm/hooks/useKeyboardNavigation.js +7 -7
  65. package/esm/hooks/useOpenableOnClickHandler.js +8 -7
  66. package/esm/hooks/useSelectFirstBodyItem.js +14 -4
  67. package/esm/index.js +0 -1
  68. package/esm/outOfTheBox/ItemControlledDrilldown/index.js +17 -14
  69. package/esm/outOfTheBox/ItemControlledDrilldown/styled.js +7 -4
  70. package/esm/outOfTheBox/ItemHeader/index.js +24 -15
  71. package/esm/outOfTheBox/ItemHeader/styled.js +3 -3
  72. package/esm/outOfTheBox/ItemLink/index.js +18 -24
  73. package/esm/outOfTheBox/ItemSection/index.js +11 -8
  74. package/esm/outOfTheBox/ItemSeparator/index.js +6 -6
  75. package/esm/outOfTheBox/ItemSubmenu/index.js +17 -25
  76. package/esm/outOfTheBox/ItemSubmenu/styled.js +3 -3
  77. package/esm/outOfTheBox/ItemTextLabel/index.js +11 -9
  78. package/esm/outOfTheBox/ItemTextLabel/styled.js +7 -4
  79. package/esm/outOfTheBox/ItemUncontrolledDrilldown/index.js +15 -13
  80. package/esm/outOfTheBox/ItemUncontrolledDrilldown/styled.js +7 -4
  81. package/esm/outOfTheBox/ItemWithDate/index.js +9 -8
  82. package/esm/outOfTheBox/ItemWithDate/styled.js +7 -4
  83. package/esm/outOfTheBox/index.js +6 -6
  84. package/esm/parts/LeftNavContent/index.js +5 -2
  85. package/esm/parts/LeftNavContent/styled.js +11 -16
  86. package/esm/parts/LeftNavContentWithScrollbar/index.js +16 -8
  87. package/esm/parts/LeftNavFooterItem/index.js +4 -11
  88. package/esm/parts/LeftNavFooterItem/styled.js +3 -4
  89. package/esm/parts/LeftNavLoading/index.js +13 -10
  90. package/esm/parts/OutOfTheBoxMapItem.js +5 -0
  91. package/esm/prop-types.js +2 -1
  92. package/package.json +12 -16
  93. package/types/LeftNavigation.d.ts +46 -11
  94. package/types/LeftNavigationContext.d.ts +0 -4
  95. package/types/common/index.d.ts +0 -1
  96. package/types/exported-related/ItemRenderer/styled.d.ts +3 -2
  97. package/types/hooks/useKeyboardNavigation.d.ts +1 -1
  98. package/types/hooks/useSelectFirstBodyItem.d.ts +1 -1
  99. package/types/index.d.d.ts +9 -2
  100. package/types/index.d.ts +1 -2
  101. package/types/outOfTheBox/ItemControlledDrilldown/styled.d.ts +2 -2
  102. package/types/outOfTheBox/ItemHeader/styled.d.ts +2 -2
  103. package/types/outOfTheBox/ItemLink/styled.d.ts +1 -1
  104. package/types/outOfTheBox/ItemSection/styled.d.ts +3 -3
  105. package/types/outOfTheBox/ItemSubmenu/styled.d.ts +2 -2
  106. package/types/outOfTheBox/ItemTextLabel/styled.d.ts +1 -1
  107. package/types/outOfTheBox/ItemUncontrolledDrilldown/styled.d.ts +2 -2
  108. package/types/outOfTheBox/ItemWithDate/styled.d.ts +2 -2
  109. package/types/parts/LeftNavContent/styled.d.ts +7 -11
  110. package/types/parts/LeftNavContentWithScrollbar/index.d.ts +1 -0
  111. package/types/parts/LeftNavFooterItem/styled.d.ts +10 -6
  112. package/types/prop-types.d.ts +87 -18
  113. package/cjs/common/getFocusedByKeyboardStyle.js +0 -23
  114. package/cjs/configs/useGlobalKeyListeners.js +0 -31
  115. package/cjs/package.json +0 -4
  116. package/esm/common/getFocusedByKeyboardStyle.js +0 -19
  117. package/esm/configs/useGlobalKeyListeners.js +0 -22
  118. package/esm/package.json +0 -4
  119. package/types/common/getFocusedByKeyboardStyle.d.ts +0 -4
  120. package/types/configs/useGlobalKeyListeners.d.ts +0 -6
@@ -4,59 +4,59 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
6
  require('react');
7
- var InternalNotifications = require('@elliemae/ds-icons/Notifications');
8
- var ExceptionsSmallFill = require('@elliemae/ds-icons/ExceptionsSmallFill');
9
- var AlertsSmallFill = require('@elliemae/ds-icons/AlertsSmallFill');
10
- var MessagesSmallFill = require('@elliemae/ds-icons/MessagesSmallFill');
7
+ var dsIcons = require('@elliemae/ds-icons');
11
8
  var styled = require('styled-components');
12
9
  var Grid = require('@elliemae/ds-grid');
13
10
 
14
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
12
 
16
13
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
17
- var InternalNotifications__default = /*#__PURE__*/_interopDefaultLegacy(InternalNotifications);
18
- var ExceptionsSmallFill__default = /*#__PURE__*/_interopDefaultLegacy(ExceptionsSmallFill);
19
- var AlertsSmallFill__default = /*#__PURE__*/_interopDefaultLegacy(AlertsSmallFill);
20
- var MessagesSmallFill__default = /*#__PURE__*/_interopDefaultLegacy(MessagesSmallFill);
21
14
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
22
15
  var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
23
16
 
24
- const StyledIcon = /*#__PURE__*/styled__default['default'].div.withConfig({
17
+ const StyledIcon = /*#__PURE__*/styled__default["default"].div.withConfig({
25
18
  componentId: "sc-hasbsd-0"
26
19
  })(["display:flex;flex-direction:column;align-items:center;"]);
27
- const Notifications = ({
28
- exceptions = false,
29
- alerts = false,
30
- messages = false
31
- }) => /*#__PURE__*/_jsx__default['default'](StyledIcon, {}, void 0, /*#__PURE__*/_jsx__default['default'](InternalNotifications__default['default'], {
32
- size: "m",
33
- color: ['brand-primary', 800]
34
- }), (exceptions || alerts || messages) && /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
35
- cols: ['1fr', '1fr', '1fr'],
36
- gutter: "xxxs",
37
- mt: "2px"
38
- }, void 0, /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
39
- width: "6px",
40
- height: "6px"
41
- }, void 0, exceptions && /*#__PURE__*/_jsx__default['default'](ExceptionsSmallFill__default['default'], {
42
- width: "6px",
43
- height: "6px",
44
- color: ['warning', 900]
45
- })), /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
46
- width: "6px",
47
- height: "6px"
48
- }, void 0, alerts && /*#__PURE__*/_jsx__default['default'](AlertsSmallFill__default['default'], {
49
- width: "6px",
50
- height: "6px",
51
- color: ['danger', 900]
52
- })), /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
53
- width: "6px",
54
- height: "6px"
55
- }, void 0, messages && /*#__PURE__*/_jsx__default['default'](MessagesSmallFill__default['default'], {
56
- width: "6px",
57
- height: "6px",
58
- color: ['success', 900]
59
- }))));
20
+ const Notifications = _ref => {
21
+ let {
22
+ exceptions = false,
23
+ alerts = false,
24
+ messages = false
25
+ } = _ref;
26
+ return /*#__PURE__*/_jsx__default["default"](StyledIcon, {}, void 0, /*#__PURE__*/_jsx__default["default"](dsIcons.Notifications, {
27
+ size: "m",
28
+ color: ['brand-primary', 800],
29
+ "data-testid": "left-nav-notifications-icon"
30
+ }), (exceptions || alerts || messages) && /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
31
+ cols: ['1fr', '1fr', '1fr'],
32
+ gutter: "xxxs",
33
+ mt: "2px"
34
+ }, void 0, /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
35
+ width: "6px",
36
+ height: "6px",
37
+ "data-testid": "left-nav-exceptions-icon"
38
+ }, void 0, exceptions && /*#__PURE__*/_jsx__default["default"](dsIcons.ExceptionsSmallFill, {
39
+ width: "6px",
40
+ height: "6px",
41
+ color: ['warning', 900]
42
+ })), /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
43
+ width: "6px",
44
+ height: "6px",
45
+ "data-testid": "left-nav-alerts-icon"
46
+ }, void 0, alerts && /*#__PURE__*/_jsx__default["default"](dsIcons.AlertsSmallFill, {
47
+ width: "6px",
48
+ height: "6px",
49
+ color: ['danger', 900]
50
+ })), /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
51
+ width: "6px",
52
+ height: "6px",
53
+ "data-testid": "left-nav-messages-icon"
54
+ }, void 0, messages && /*#__PURE__*/_jsx__default["default"](dsIcons.MessagesSmallFill, {
55
+ width: "6px",
56
+ height: "6px",
57
+ color: ['success', 900]
58
+ }))));
59
+ };
60
60
 
61
61
  exports.Notifications = Notifications;
62
- exports['default'] = Notifications;
62
+ exports["default"] = Notifications;
@@ -2,22 +2,26 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
5
10
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
11
  require('react');
7
12
  var styled = require('styled-components');
8
- var InternalOpenWindow = require('@elliemae/ds-icons/OpenWindow');
13
+ var dsIcons = require('@elliemae/ds-icons');
9
14
  var jsxRuntime = require('react/jsx-runtime');
10
15
 
11
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
17
 
13
18
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
14
19
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
15
- var InternalOpenWindow__default = /*#__PURE__*/_interopDefaultLegacy(InternalOpenWindow);
16
20
 
17
21
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
18
22
 
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
20
- const StyledOpenWindow = /*#__PURE__*/styled__default['default'](InternalOpenWindow__default['default']).withConfig({
23
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+ const StyledOpenWindow = /*#__PURE__*/styled__default["default"](dsIcons.OpenWindow).withConfig({
21
25
  componentId: "sc-g53ios-0"
22
26
  })(["cursor:pointer;:focus{outline:1px solid ", ";}"], props => props.theme.colors.brand[800]);
23
27
  const OpenWindow = props => /*#__PURE__*/jsxRuntime.jsx(StyledOpenWindow, _objectSpread({
@@ -26,4 +30,4 @@ const OpenWindow = props => /*#__PURE__*/jsxRuntime.jsx(StyledOpenWindow, _objec
26
30
  }, props));
27
31
 
28
32
  exports.OpenWindow = OpenWindow;
29
- exports['default'] = OpenWindow;
33
+ exports["default"] = OpenWindow;
@@ -5,12 +5,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var LeftNavigationContext = require('../LeftNavigationContext.js');
7
7
 
8
- const useExpandableOnClickHandler = ({
9
- id,
10
- onExpand,
11
- onOpen,
12
- selectable = true
13
- }) => {
8
+ const useExpandableOnClickHandler = _ref => {
9
+ let {
10
+ id,
11
+ onExpand,
12
+ onOpen,
13
+ selectable = true
14
+ } = _ref;
14
15
  const {
15
16
  leftNavProps: {
16
17
  expanded
@@ -23,10 +23,11 @@ const nextIndex = (index, length) => (index + 1) % length;
23
23
 
24
24
  const prevIndex = (index, length) => (index - 1 + length) % length;
25
25
 
26
- const useKeyboardNavigation = ({
27
- item,
28
- onClick
29
- }) => {
26
+ const useKeyboardNavigation = _ref => {
27
+ let {
28
+ item,
29
+ onClick
30
+ } = _ref;
30
31
  const {
31
32
  dsId,
32
33
  itemOpts: {
@@ -41,7 +42,6 @@ const useKeyboardNavigation = ({
41
42
  } = React.useContext(LeftNavigationContext.LeftNavContext);
42
43
  const currentIndex = React.useMemo(() => visibleItems.findIndex(visibleItemDsId => visibleItemDsId === dsId), [dsId, visibleItems]);
43
44
  const {
44
- expandedForAnimation,
45
45
  setFocusedItem,
46
46
  focusedItem,
47
47
  setSelectedItem
@@ -83,7 +83,7 @@ const useKeyboardNavigation = ({
83
83
 
84
84
  if (closable && keyCode === KEY_CODES.LEFT_ARROW) {
85
85
  onClick(e);
86
- focusAndSelect(dsId);
86
+ setFocusedItem(dsId);
87
87
  }
88
88
 
89
89
  if (keyCode === KEY_CODES.DOWN_ARROW) {
@@ -103,7 +103,7 @@ const useKeyboardNavigation = ({
103
103
  if (keyCode === KEY_CODES.END) {
104
104
  setFocusedItem(visibleItems[visibleItems.length - 1]);
105
105
  }
106
- }, [dsId, expandedForAnimation, selectable, openable, closable, onClick, visibleItemsRefs, visibleItems, focusedItem, focusAndSelect]);
106
+ }, [openable, closable, selectable, focusedItem, onClick, focusAndSelect, dsId, setFocusedItem, visibleItems, currentIndex]);
107
107
  return onKeyDown;
108
108
  };
109
109
 
@@ -5,13 +5,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var LeftNavigationContext = require('../LeftNavigationContext.js');
7
7
 
8
- const useOpenableOnClickHandler = ({
9
- id,
10
- opened,
11
- onExpand,
12
- onOpen,
13
- onClose
14
- }) => {
8
+ const useOpenableOnClickHandler = _ref => {
9
+ let {
10
+ id,
11
+ opened,
12
+ onExpand,
13
+ onOpen,
14
+ onClose
15
+ } = _ref;
15
16
  const {
16
17
  leftNavProps: {
17
18
  expanded
@@ -2,6 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.some.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.some.js');
5
8
  var React = require('react');
6
9
  var constants = require('../exported-related/constants.js');
7
10
 
@@ -14,13 +17,20 @@ const isSelectableOutOfTheBox = elem => typeof elem.type === 'string' && elem.ty
14
17
 
15
18
  const isSelectableCustom = elem => elem.itemOpts.selectable;
16
19
 
17
- const useSelectFirstBodyItem = (items, openedItem, setSelectedItem) => {
20
+ const isItemInsideTheTree = (item, itemID) => {
21
+ var _item$itemOpts, _item$itemOpts$items;
22
+
23
+ return item.dsId === itemID || (item === null || item === void 0 ? void 0 : (_item$itemOpts = item.itemOpts) === null || _item$itemOpts === void 0 ? void 0 : (_item$itemOpts$items = _item$itemOpts.items) === null || _item$itemOpts$items === void 0 ? void 0 : _item$itemOpts$items.some(it => isItemInsideTheTree(it, itemID)));
24
+ };
25
+
26
+ const useSelectFirstBodyItem = (items, openedItem, selectedItem, setSelectedItem, disableDefaultSelection) => {
18
27
  React.useEffect(() => {
19
- if (items && items.length && openedItem) {
28
+ if (!disableDefaultSelection && items && items.length && openedItem) {
20
29
  const index = items.findIndex(elem => isSelectableOutOfTheBox(elem) || isSelectableCustom(elem));
21
- if (index !== -1) setSelectedItem(items[index].dsId);
30
+ const isItemInside = items.some(it => isItemInsideTheTree(it, selectedItem));
31
+ if (isItemInside) setSelectedItem(selectedItem);else if (index !== -1) setSelectedItem(items[index].dsId);
22
32
  }
23
- }, [openedItem]);
33
+ }, [openedItem, setSelectedItem, disableDefaultSelection]);
24
34
  };
25
35
 
26
36
  exports.useSelectFirstBodyItem = useSelectFirstBodyItem;
package/cjs/index.js CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('overlayscrollbars/css/OverlayScrollbars.css');
6
5
  var propTypes = require('./prop-types.js');
7
6
  var LeftNavigation = require('./LeftNavigation.js');
8
7
  var constants = require('./exported-related/constants.js');
@@ -18,7 +17,7 @@ exports.LeftNavItemOptionsSchema = propTypes.LeftNavItemOptionsSchema;
18
17
  exports.LeftNavItemPropsSchema = propTypes.LeftNavItemPropsSchema;
19
18
  exports.LeftNavigation = LeftNavigation.LeftNavigation;
20
19
  exports.LeftNavigationWithSchema = LeftNavigation.LeftNavigationWithSchema;
21
- exports.default = LeftNavigation.LeftNavigation;
20
+ exports["default"] = LeftNavigation.LeftNavigation;
22
21
  exports.CHEVRON_BACK_DS_ID = constants.CHEVRON_BACK_DS_ID;
23
22
  exports.FOOTER_DS_ID = constants.FOOTER_DS_ID;
24
23
  exports.FOOTER_MENU_CLOSE_DS_ID = constants.FOOTER_MENU_CLOSE_DS_ID;
@@ -4,39 +4,39 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
6
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ require('core-js/modules/esnext.async-iterator.map.js');
8
+ require('core-js/modules/esnext.iterator.map.js');
9
+ require('core-js/modules/esnext.async-iterator.filter.js');
10
+ require('core-js/modules/esnext.iterator.constructor.js');
11
+ require('core-js/modules/esnext.iterator.filter.js');
12
+ require('core-js/modules/esnext.async-iterator.for-each.js');
13
+ require('core-js/modules/esnext.iterator.for-each.js');
7
14
  var React = require('react');
8
15
  var Grid = require('@elliemae/ds-grid');
9
16
  var dsTruncatedTooltipText = require('@elliemae/ds-truncated-tooltip-text');
10
- var ArrowheadRight = require('@elliemae/ds-icons/ArrowheadRight');
11
- var ArrowheadDown = require('@elliemae/ds-icons/ArrowheadDown');
17
+ var dsIcons = require('@elliemae/ds-icons');
12
18
  var constants = require('../../exported-related/constants.js');
13
- var index$2 = require('../../exported-related/ItemRenderer/index.js');
14
- require('@elliemae/ds-icons/ChevronSmallRight');
19
+ var index$3 = require('../../exported-related/ItemRenderer/index.js');
15
20
  require('react/jsx-runtime');
16
- require('@elliemae/ds-icons/Notifications');
17
- require('@elliemae/ds-icons/ExceptionsSmallFill');
18
- require('@elliemae/ds-icons/AlertsSmallFill');
19
- require('@elliemae/ds-icons/MessagesSmallFill');
20
21
  require('styled-components');
21
- require('@elliemae/ds-icons/OpenWindow');
22
22
  var styled = require('./styled.js');
23
23
  var index = require('../ItemSeparator/index.js');
24
24
  var index$1 = require('../ItemWithDate/index.js');
25
+ var index$2 = require('../ItemTextLabel/index.js');
25
26
 
26
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
27
28
 
28
29
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
29
30
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
30
31
  var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
31
- var ArrowheadRight__default = /*#__PURE__*/_interopDefaultLegacy(ArrowheadRight);
32
- var ArrowheadDown__default = /*#__PURE__*/_interopDefaultLegacy(ArrowheadDown);
33
32
 
34
33
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
35
34
 
36
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
35
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
37
36
  const outOfTheBoxSubitemsComponents = {
38
37
  [constants.ITEM_TYPES.LEFT_NAV_ITEM_SEPARATOR]: index.ItemSeparator,
39
- [constants.ITEM_TYPES.LEFT_NAV_ITEM_WITH_DATE]: index$1.ItemWithDate
38
+ [constants.ITEM_TYPES.LEFT_NAV_ITEM_WITH_DATE]: index$1.ItemWithDate,
39
+ [constants.ITEM_TYPES.LEFT_NAV_ITEM_TEXT_LABEL]: index$2.ItemTextLabel
40
40
  };
41
41
 
42
42
  const OutOfTheBoxMapSubitem = props => {
@@ -50,10 +50,10 @@ const OutOfTheBoxMapSubitem = props => {
50
50
  } = props;
51
51
 
52
52
  if (typeof type === 'string' && !!outOfTheBoxSubitemsComponents[type]) {
53
- var _item$itemOpts;
53
+ var _item$itemOpts$indent, _item$itemOpts;
54
54
 
55
55
  const OutOfTheBoxComponent = outOfTheBoxSubitemsComponents[type];
56
- const currentIndent = ((_item$itemOpts = item.itemOpts) === null || _item$itemOpts === void 0 ? void 0 : _item$itemOpts.indent) ?? 0;
56
+ const currentIndent = (_item$itemOpts$indent = (_item$itemOpts = item.itemOpts) === null || _item$itemOpts === void 0 ? void 0 : _item$itemOpts.indent) !== null && _item$itemOpts$indent !== void 0 ? _item$itemOpts$indent : 0;
57
57
 
58
58
  const newItem = _objectSpread(_objectSpread({}, item), {}, {
59
59
  itemOpts: _objectSpread(_objectSpread({}, item.itemOpts), {}, {
@@ -61,14 +61,14 @@ const OutOfTheBoxMapSubitem = props => {
61
61
  })
62
62
  });
63
63
 
64
- return /*#__PURE__*/_jsx__default['default'](OutOfTheBoxComponent, {
64
+ return /*#__PURE__*/_jsx__default["default"](OutOfTheBoxComponent, {
65
65
  item: newItem,
66
66
  ctx: ctx
67
67
  });
68
68
  } // we expect an error to be threw if Component is not defined and type is not a valid out-of-the-box...
69
69
 
70
70
 
71
- return /*#__PURE__*/_jsx__default['default'](Component, {
71
+ return /*#__PURE__*/_jsx__default["default"](Component, {
72
72
  item: item,
73
73
  ctx: ctx
74
74
  });
@@ -86,7 +86,8 @@ const ItemControlledDrilldown = props => {
86
86
  labelBold,
87
87
  labelColor,
88
88
  isOpened,
89
- items
89
+ items,
90
+ labelDataTestId
90
91
  }
91
92
  },
92
93
  ctx,
@@ -98,8 +99,8 @@ const ItemControlledDrilldown = props => {
98
99
  } = props;
99
100
  const labelOverflow = itemLabelOverflow || leftNavLabelOverflow;
100
101
  const arrowIcon = React.useMemo(() => {
101
- const Component = isOpened ? ArrowheadDown__default['default'] : ArrowheadRight__default['default'];
102
- return /*#__PURE__*/_jsx__default['default'](Component, {
102
+ const Component = isOpened ? dsIcons.ArrowheadDown : dsIcons.ArrowheadRight;
103
+ return /*#__PURE__*/_jsx__default["default"](Component, {
103
104
  width: "24px",
104
105
  height: "18px",
105
106
  color: ['brand-primary', '800']
@@ -107,16 +108,16 @@ const ItemControlledDrilldown = props => {
107
108
  }, [isOpened]);
108
109
  const subitems = React.useMemo(() => {
109
110
  if (!isOpened || !items) return [];
110
- return items.map(subitem => /*#__PURE__*/_jsx__default['default'](OutOfTheBoxMapSubitem, {
111
+ return items.map(subitem => /*#__PURE__*/_jsx__default["default"](OutOfTheBoxMapSubitem, {
111
112
  item: subitem,
112
113
  ctx: ctx
113
114
  }, subitem.dsId));
114
115
  }, [items, isOpened]);
115
- return /*#__PURE__*/_jsx__default['default'](index$2.ItemRenderer, {
116
+ return /*#__PURE__*/_jsx__default["default"](index$3.ItemRenderer, {
116
117
  item: _objectSpread(_objectSpread({}, item), {}, {
117
118
  itemOpts: _objectSpread(_objectSpread({
118
119
  ariaExpanded: isOpened,
119
- ariaRole: 'menu'
120
+ ariaRole: 'menuitem'
120
121
  }, item.itemOpts), {}, {
121
122
  openable: !isOpened,
122
123
  closable: isOpened
@@ -126,29 +127,29 @@ const ItemControlledDrilldown = props => {
126
127
  subitems: subitems,
127
128
  minHeight: "32px",
128
129
  paddingTop: "8px"
129
- }, void 0, /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
130
+ }, void 0, /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
130
131
  pl: "xxs",
131
132
  mt: "-2px"
132
- }, void 0, arrowIcon), /*#__PURE__*/_jsx__default['default'](styled.StyledLabel, {
133
+ }, void 0, arrowIcon), /*#__PURE__*/_jsx__default["default"](styled.StyledLabel, {
133
134
  pb: "xxxs",
134
- "data-testid": "leftnav-list-item-label",
135
+ "data-testid": labelDataTestId || 'leftnav-list-item-label',
135
136
  labelOverflow: labelOverflow,
136
137
  labelBold: labelBold,
137
138
  labelColor: labelColor
138
- }, void 0, labelOverflow === 'truncate' ? /*#__PURE__*/_jsx__default['default'](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
139
+ }, void 0, labelOverflow === 'truncate' ? /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
139
140
  value: label,
140
141
  placement: "bottom-start"
141
- }) : label), /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
142
+ }) : label), /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
142
143
  pr: "xxs2",
143
144
  cols: ['auto', 'auto'],
144
145
  alignItems: "center"
145
- }, void 0, /*#__PURE__*/_jsx__default['default'](styled.StyledDate, {
146
+ }, void 0, /*#__PURE__*/_jsx__default["default"](styled.StyledDate, {
146
147
  ml: "xxs",
147
148
  "data-testid": "leftnav-list-item-date"
148
- }, void 0, labelRightSection), /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
149
+ }, void 0, labelRightSection), /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
149
150
  pl: RightComponent ? 'xxs' : '0px',
150
151
  "data-testid": "leftnav-right-component"
151
- }, void 0, RightComponent && /*#__PURE__*/_jsx__default['default'](RightComponent, {
152
+ }, void 0, RightComponent && /*#__PURE__*/_jsx__default["default"](RightComponent, {
152
153
  ctx: ctx,
153
154
  item: item
154
155
  }))));
@@ -10,13 +10,16 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
11
11
  var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
12
12
 
13
- const StyledLabel = /*#__PURE__*/styled__default['default'](Grid__default['default']).withConfig({
13
+ const StyledLabel = /*#__PURE__*/styled__default["default"](Grid__default["default"]).withConfig({
14
14
  componentId: "sc-1tjij7e-0"
15
- })(["font-size:13px;font-weight:", ";color:", ";line-height:14px;word-break:", ";"], props => props.labelBold ? props.theme.fontWeights.semibold : props.theme.fontWeights.regular, ({
16
- labelColor,
17
- theme
18
- }) => labelColor ? theme.colors[labelColor[0]][labelColor[1]] : theme.colors.neutral[800], props => props.labelOverflow === 'wrapAll' ? 'break-all' : 'normal');
19
- const StyledDate = /*#__PURE__*/styled__default['default'](Grid__default['default']).withConfig({
15
+ })(["font-size:13px;font-weight:", ";color:", ";line-height:14px;word-break:", ";"], props => props.labelBold ? props.theme.fontWeights.semibold : props.theme.fontWeights.regular, _ref => {
16
+ let {
17
+ labelColor,
18
+ theme
19
+ } = _ref;
20
+ return labelColor ? theme.colors[labelColor[0]][labelColor[1]] : theme.colors.neutral[800];
21
+ }, props => props.labelOverflow === 'wrapAll' ? 'break-all' : 'normal');
22
+ const StyledDate = /*#__PURE__*/styled__default["default"](Grid__default["default"]).withConfig({
20
23
  componentId: "sc-1tjij7e-1"
21
24
  })(["font-size:12px;color:", ";line-height:14px;"], props => props.theme.colors.neutral[600]);
22
25
 
@@ -2,21 +2,21 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/esnext.async-iterator.filter.js');
6
+ require('core-js/modules/esnext.iterator.constructor.js');
7
+ require('core-js/modules/esnext.iterator.filter.js');
8
+ require('core-js/modules/esnext.async-iterator.for-each.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
5
10
  var _jsx = require('@babel/runtime/helpers/jsx');
6
11
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
- require('react');
12
+ var React = require('react');
8
13
  var Grid = require('@elliemae/ds-grid');
9
14
  var dsTruncatedTooltipText = require('@elliemae/ds-truncated-tooltip-text');
10
15
  var constants = require('../../exported-related/constants.js');
11
16
  var index = require('../../exported-related/ItemRenderer/index.js');
12
- require('@elliemae/ds-icons/ChevronSmallRight');
17
+ require('@elliemae/ds-icons');
13
18
  require('react/jsx-runtime');
14
- require('@elliemae/ds-icons/Notifications');
15
- require('@elliemae/ds-icons/ExceptionsSmallFill');
16
- require('@elliemae/ds-icons/AlertsSmallFill');
17
- require('@elliemae/ds-icons/MessagesSmallFill');
18
19
  require('styled-components');
19
- require('@elliemae/ds-icons/OpenWindow');
20
20
  var styled = require('./styled.js');
21
21
 
22
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -27,8 +27,13 @@ var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
27
27
 
28
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
29
29
 
30
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
30
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
31
+
32
+ const notOpenedShadowStyle = isSelected => theme => "\n box-shadow: inset 4px 0 0 0 ".concat(isSelected ? theme.colors.brand[400] : 'transparent', ";\n\n :hover {\n box-shadow: inset 4px 0 0 0 ").concat(isSelected ? theme.colors.brand[400] : theme.colors.brand[300], ";\n }\n\n :active {\n box-shadow: inset 4px 0 0 0 ").concat(theme.colors.brand[400], ";\n }\n");
33
+
31
34
  const ItemHeader = props => {
35
+ var _item$itemOpts$ariaLa;
36
+
32
37
  const {
33
38
  item,
34
39
  item: {
@@ -36,7 +41,8 @@ const ItemHeader = props => {
36
41
  itemOpts: {
37
42
  label,
38
43
  RightComponent,
39
- BottomComponent
44
+ BottomComponent,
45
+ labelDataTestId
40
46
  },
41
47
  CollapsedComponent = () => null
42
48
  },
@@ -48,13 +54,16 @@ const ItemHeader = props => {
48
54
  onItemClick
49
55
  },
50
56
  expandedForAnimation,
51
- setSelectedItem,
52
- setFocusedItem
57
+ setFocusedItem,
58
+ selectedItem,
59
+ selectedParent
53
60
  }
54
61
  } = props;
55
62
  const opened = openedItem === dsId;
56
- const ariaLabel = item.itemOpts.ariaLabel ?? (typeof label === 'string' ? label : 'menuitem');
57
- return /*#__PURE__*/_jsx__default['default'](index.ItemRenderer, {
63
+ const ariaLabel = (_item$itemOpts$ariaLa = item.itemOpts.ariaLabel) !== null && _item$itemOpts$ariaLa !== void 0 ? _item$itemOpts$ariaLa : typeof label === 'string' ? label : 'menuitem';
64
+ const isSelected = selectedItem === dsId || selectedParent === dsId;
65
+ const shadowStyle = React.useCallback(opened => theme => !opened ? notOpenedShadowStyle(isSelected)(theme) : "box-shadow: inset 4px 0 0 0 #52A6EC", [isSelected, openedItem]);
66
+ return /*#__PURE__*/_jsx__default["default"](index.ItemRenderer, {
58
67
  item: _objectSpread(_objectSpread({}, item), {}, {
59
68
  itemOpts: _objectSpread(_objectSpread({
60
69
  ariaLabel,
@@ -66,19 +75,19 @@ const ItemHeader = props => {
66
75
  })
67
76
  }),
68
77
  hasBorderBottom: true,
69
- borderBottomMr: opened ? '12px' : '0px'
70
- }, void 0, /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
78
+ borderBottomMr: opened ? '12px' : '0px',
79
+ shadowStyle: shadowStyle
80
+ }, void 0, /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
71
81
  cols: opened ? ['auto', 'auto'] : ['38px'],
72
82
  gutter: "1px",
73
83
  pl: opened ? 'xxs' : 0,
74
84
  justifyItems: "center",
75
85
  "data-testid": "leftnav-leftcomponent"
76
- }, void 0, opened && /*#__PURE__*/_jsx__default['default'](styled.StyledChevronLeft, {
86
+ }, void 0, opened && /*#__PURE__*/_jsx__default["default"](styled.StyledChevronLeft, {
77
87
  size: "m",
78
88
  color: ['brand-primary', 800],
79
89
  onClick: e => {
80
90
  onItemClick(item, e);
81
- setSelectedItem(dsId);
82
91
  },
83
92
  "data-testid": "leftnav-leftcomponent-chevron",
84
93
  tabIndex: 0,
@@ -87,20 +96,20 @@ const ItemHeader = props => {
87
96
  setFocusedItem(constants.CHEVRON_BACK_DS_ID);
88
97
  },
89
98
  role: "button",
90
- "aria-label": `Close ${ariaLabel}`
91
- }), /*#__PURE__*/_jsx__default['default'](CollapsedComponent, {
99
+ "aria-label": "Close ".concat(ariaLabel)
100
+ }), /*#__PURE__*/_jsx__default["default"](CollapsedComponent, {
92
101
  item: item,
93
102
  ctx: ctx
94
- })), /*#__PURE__*/_jsx__default['default'](styled.StyledLabel, {
103
+ })), /*#__PURE__*/_jsx__default["default"](styled.StyledLabel, {
95
104
  ml: opened ? 'xxs' : '1px',
96
105
  mt: "xxxs",
97
106
  mb: "15px",
98
- "data-testid": "leftnav-itemlabel",
107
+ "data-testid": labelDataTestId || 'leftnav-itemlabel',
99
108
  labelOverflow: labelOverflow
100
- }, void 0, labelOverflow === 'truncate' ? /*#__PURE__*/_jsx__default['default'](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
109
+ }, void 0, labelOverflow === 'truncate' ? /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
101
110
  value: label,
102
111
  placement: "bottom-start"
103
- }) : label), /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
112
+ }) : label), /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
104
113
  pl: "xs",
105
114
  pr: opened ? 'xxs2' : 'xxs',
106
115
  onFocus: e => {
@@ -109,10 +118,10 @@ const ItemHeader = props => {
109
118
  },
110
119
  onKeyDown: e => e.stopPropagation(),
111
120
  "data-testid": "leftnav-right-component"
112
- }, void 0, RightComponent && /*#__PURE__*/_jsx__default['default'](RightComponent, {
121
+ }, void 0, RightComponent && /*#__PURE__*/_jsx__default["default"](RightComponent, {
113
122
  ctx: ctx,
114
123
  item: item
115
- })), BottomComponent && /*#__PURE__*/_jsx__default['default'](Grid__default['default'], {
124
+ })), BottomComponent && /*#__PURE__*/_jsx__default["default"](Grid__default["default"], {
116
125
  style: {
117
126
  gridColumn: 'span 3'
118
127
  },
@@ -124,7 +133,7 @@ const ItemHeader = props => {
124
133
  e.stopPropagation();
125
134
  },
126
135
  onKeyDown: e => e.stopPropagation()
127
- }, void 0, /*#__PURE__*/_jsx__default['default'](BottomComponent, {
136
+ }, void 0, /*#__PURE__*/_jsx__default["default"](BottomComponent, {
128
137
  ctx: ctx,
129
138
  item: item
130
139
  })));