@elliemae/ds-left-navigation 2.0.0-alpha.11 → 2.0.0-alpha.12
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.
- package/cjs/LeftNavigationContext.js +0 -4
- package/cjs/common/getLeftBorderStyle.js +2 -2
- package/cjs/common/index.js +0 -2
- package/cjs/configs/useLeftNavConfig.js +13 -21
- package/cjs/configs/useLeftNavItems.js +7 -7
- package/cjs/exported-related/ChevronItem/index.js +7 -3
- package/cjs/exported-related/Icon/index.js +5 -0
- package/cjs/exported-related/ItemRenderer/index.js +6 -7
- package/cjs/exported-related/ItemRenderer/styled.js +27 -17
- package/cjs/exported-related/ItemRenderer/usePropsWithDefaults.js +8 -2
- package/cjs/exported-related/Notifications/index.js +41 -41
- package/cjs/exported-related/OpenWindowItem/index.js +7 -3
- package/cjs/hooks/useExpandableOnClickHandler.js +7 -6
- package/cjs/hooks/useKeyboardNavigation.js +7 -7
- package/cjs/hooks/useOpenableOnClickHandler.js +8 -7
- package/cjs/hooks/useSelectFirstBodyItem.js +14 -4
- package/cjs/outOfTheBox/ItemControlledDrilldown/index.js +17 -16
- package/cjs/outOfTheBox/ItemControlledDrilldown/styled.js +7 -4
- package/cjs/outOfTheBox/ItemHeader/index.js +20 -13
- package/cjs/outOfTheBox/ItemHeader/styled.js +3 -4
- package/cjs/outOfTheBox/ItemLink/index.js +18 -14
- package/cjs/outOfTheBox/ItemSection/index.js +11 -8
- package/cjs/outOfTheBox/ItemSeparator/index.js +6 -6
- package/cjs/outOfTheBox/ItemSubmenu/index.js +13 -13
- package/cjs/outOfTheBox/ItemSubmenu/styled.js +3 -4
- package/cjs/outOfTheBox/ItemTextLabel/index.js +11 -9
- package/cjs/outOfTheBox/ItemTextLabel/styled.js +7 -4
- package/cjs/outOfTheBox/ItemUncontrolledDrilldown/index.js +12 -13
- package/cjs/outOfTheBox/ItemUncontrolledDrilldown/styled.js +7 -4
- package/cjs/outOfTheBox/ItemWithDate/index.js +9 -8
- package/cjs/outOfTheBox/ItemWithDate/styled.js +7 -4
- package/cjs/outOfTheBox/index.js +6 -6
- package/cjs/parts/LeftNavContent/index.js +5 -2
- package/cjs/parts/LeftNavContent/styled.js +9 -6
- package/cjs/parts/LeftNavContentWithScrollbar/index.js +6 -1
- package/cjs/parts/LeftNavFooterItem/index.js +2 -11
- package/cjs/parts/LeftNavFooterItem/styled.js +8 -9
- package/cjs/parts/LeftNavLoading/index.js +13 -10
- package/cjs/parts/OutOfTheBoxMapItem.js +5 -0
- package/cjs/prop-types.js +2 -1
- package/esm/LeftNavigationContext.js +0 -4
- package/esm/common/getLeftBorderStyle.js +2 -2
- package/esm/common/index.js +0 -1
- package/esm/configs/useLeftNavConfig.js +13 -21
- package/esm/configs/useLeftNavItems.js +7 -7
- package/esm/exported-related/ChevronItem/index.js +7 -2
- package/esm/exported-related/Icon/index.js +5 -0
- package/esm/exported-related/ItemRenderer/index.js +6 -7
- package/esm/exported-related/ItemRenderer/styled.js +27 -18
- package/esm/exported-related/ItemRenderer/usePropsWithDefaults.js +8 -2
- package/esm/exported-related/Notifications/index.js +41 -37
- package/esm/exported-related/OpenWindowItem/index.js +7 -2
- package/esm/hooks/useExpandableOnClickHandler.js +7 -6
- package/esm/hooks/useKeyboardNavigation.js +7 -7
- package/esm/hooks/useOpenableOnClickHandler.js +8 -7
- package/esm/hooks/useSelectFirstBodyItem.js +14 -4
- package/esm/outOfTheBox/ItemControlledDrilldown/index.js +14 -11
- package/esm/outOfTheBox/ItemControlledDrilldown/styled.js +7 -4
- package/esm/outOfTheBox/ItemHeader/index.js +20 -13
- package/esm/outOfTheBox/ItemHeader/styled.js +3 -3
- package/esm/outOfTheBox/ItemLink/index.js +18 -14
- package/esm/outOfTheBox/ItemSection/index.js +11 -8
- package/esm/outOfTheBox/ItemSeparator/index.js +6 -6
- package/esm/outOfTheBox/ItemSubmenu/index.js +13 -13
- package/esm/outOfTheBox/ItemSubmenu/styled.js +3 -3
- package/esm/outOfTheBox/ItemTextLabel/index.js +11 -9
- package/esm/outOfTheBox/ItemTextLabel/styled.js +7 -4
- package/esm/outOfTheBox/ItemUncontrolledDrilldown/index.js +11 -10
- package/esm/outOfTheBox/ItemUncontrolledDrilldown/styled.js +7 -4
- package/esm/outOfTheBox/ItemWithDate/index.js +9 -8
- package/esm/outOfTheBox/ItemWithDate/styled.js +7 -4
- package/esm/outOfTheBox/index.js +6 -6
- package/esm/parts/LeftNavContent/index.js +5 -2
- package/esm/parts/LeftNavContent/styled.js +9 -6
- package/esm/parts/LeftNavContentWithScrollbar/index.js +6 -1
- package/esm/parts/LeftNavFooterItem/index.js +1 -9
- package/esm/parts/LeftNavFooterItem/styled.js +3 -4
- package/esm/parts/LeftNavLoading/index.js +13 -10
- package/esm/parts/OutOfTheBoxMapItem.js +5 -0
- package/esm/prop-types.js +2 -1
- package/package.json +12 -17
- package/types/LeftNavigation.d.ts +46 -11
- package/types/LeftNavigationContext.d.ts +0 -4
- package/types/common/index.d.ts +0 -1
- package/types/exported-related/ItemRenderer/styled.d.ts +3 -2
- package/types/hooks/useKeyboardNavigation.d.ts +1 -1
- package/types/hooks/useSelectFirstBodyItem.d.ts +1 -1
- package/types/index.d.d.ts +7 -2
- package/types/outOfTheBox/ItemControlledDrilldown/styled.d.ts +2 -2
- package/types/outOfTheBox/ItemHeader/styled.d.ts +2 -2
- package/types/outOfTheBox/ItemLink/styled.d.ts +1 -1
- package/types/outOfTheBox/ItemSection/styled.d.ts +3 -3
- package/types/outOfTheBox/ItemSubmenu/styled.d.ts +2 -2
- package/types/outOfTheBox/ItemTextLabel/styled.d.ts +1 -1
- package/types/outOfTheBox/ItemUncontrolledDrilldown/styled.d.ts +2 -2
- package/types/outOfTheBox/ItemWithDate/styled.d.ts +2 -2
- package/types/parts/LeftNavContent/styled.d.ts +7 -11
- package/types/parts/LeftNavFooterItem/styled.d.ts +10 -6
- package/types/prop-types.d.ts +87 -18
- package/cjs/common/getFocusedByKeyboardStyle.js +0 -12
- package/cjs/configs/useGlobalKeyListeners.js +0 -31
- package/esm/common/getFocusedByKeyboardStyle.js +0 -8
- package/esm/configs/useGlobalKeyListeners.js +0 -22
- package/types/common/getFocusedByKeyboardStyle.d.ts +0 -4
- package/types/configs/useGlobalKeyListeners.d.ts +0 -6
|
@@ -23,12 +23,8 @@ const defaultContext = {
|
|
|
23
23
|
leftNavProps: defaultProps,
|
|
24
24
|
selectedItem: null,
|
|
25
25
|
setSelectedItem: () => null,
|
|
26
|
-
selectedSubitem: null,
|
|
27
|
-
setSelectedSubitem: () => null,
|
|
28
26
|
focusedItem: null,
|
|
29
27
|
setFocusedItem: () => null,
|
|
30
|
-
focusedByKey: false,
|
|
31
|
-
setFocusedByKey: () => null,
|
|
32
28
|
expandedForAnimation: true,
|
|
33
29
|
openedDrilldowns: [],
|
|
34
30
|
setOpenedDrilldowns: () => null,
|
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
const commonLeftBorderStyle = (color, hoverColor, activeColor) => "\n\n -webkit-box-shadow: inset 4px 0 0 0 ".concat(color, ";\n box-shadow: inset 4px 0 0 0 ").concat(color, ";\n\n :hover {\n -webkit-box-shadow: inset 4px 0 0 0 ").concat(hoverColor, ";\n box-shadow: inset 4px 0 0 0 ").concat(hoverColor, ";\n }\n\n :active {\n -webkit-box-shadow: inset 4px 0 0 0 ").concat(activeColor, ";\n box-shadow: inset 4px 0 0 0 ").concat(activeColor, ";\n }\n");
|
|
6
6
|
|
|
7
7
|
const getLeftBorderStyle = props => {
|
|
8
|
-
if (props.selected) return commonLeftBorderStyle(props.theme.colors.brand[400], props.theme.colors.brand[400], props.theme.colors.brand[400]);
|
|
9
|
-
return commonLeftBorderStyle(props.theme.colors.neutral['000'], props.theme.colors.
|
|
8
|
+
if (props.selected || props.selectedParent) return commonLeftBorderStyle(props.theme.colors.brand[400], props.theme.colors.brand[400], props.theme.colors.brand[400]);
|
|
9
|
+
return commonLeftBorderStyle(props.theme.colors.neutral['000'], props.theme.colors.brand[300], props.theme.colors.brand[400]);
|
|
10
10
|
};
|
|
11
11
|
|
|
12
12
|
exports.getLeftBorderStyle = getLeftBorderStyle;
|
package/cjs/common/index.js
CHANGED
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var getFocusedByKeyboardStyle = require('./getFocusedByKeyboardStyle.js');
|
|
6
5
|
var getItemBackgroundStyle = require('./getItemBackgroundStyle.js');
|
|
7
6
|
var getLeftBorderStyle = require('./getLeftBorderStyle.js');
|
|
8
7
|
var getScrollbarStyle = require('./getScrollbarStyle.js');
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
|
|
12
|
-
exports.getFocusedByKeyboardBorderStyle = getFocusedByKeyboardStyle.getFocusedByKeyboardBorderStyle;
|
|
13
11
|
exports.getItemBackgroundStyle = getItemBackgroundStyle.getItemBackgroundStyle;
|
|
14
12
|
exports.getLeftBorderStyle = getLeftBorderStyle.getLeftBorderStyle;
|
|
15
13
|
exports.getScrolbarStyle = getScrollbarStyle.getScrolbarStyle;
|
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
6
6
|
var React = require('react');
|
|
7
|
-
var useGlobalKeyListeners = require('./useGlobalKeyListeners.js');
|
|
8
7
|
var useLeftNavItems = require('./useLeftNavItems.js');
|
|
9
8
|
var useLeftNavSmoothExpand = require('./useLeftNavSmoothExpand.js');
|
|
10
9
|
var useSelectFirstBodyItem = require('../hooks/useSelectFirstBodyItem.js');
|
|
@@ -27,10 +26,10 @@ const useLeftNavConfig = props => {
|
|
|
27
26
|
// Selection related
|
|
28
27
|
|
|
29
28
|
const [selectedItem, setSelectedItem] = React__default["default"].useState(null);
|
|
30
|
-
|
|
29
|
+
React__default["default"].useState(null);
|
|
30
|
+
const [selectedParent, setSelectedParent] = React__default["default"].useState(null); // Focus related
|
|
31
31
|
|
|
32
|
-
const [focusedItem, setFocusedItem] = React__default["default"].useState(null);
|
|
33
|
-
const [focusedByKey, setFocusedByKey] = React__default["default"].useState(true); // Opened uncontrolled drilldowns
|
|
32
|
+
const [focusedItem, setFocusedItem] = React__default["default"].useState(null); // Opened uncontrolled drilldowns
|
|
34
33
|
|
|
35
34
|
const [openedDrilldowns, setOpenedDrilldowns] = React__default["default"].useState([]); // -----------------------------------------------------------------------------
|
|
36
35
|
// ************************** ------------ **************************
|
|
@@ -46,24 +45,19 @@ const useLeftNavConfig = props => {
|
|
|
46
45
|
}), [expandedForAnimation, timeoutRef, setExpandedForAnimation]);
|
|
47
46
|
useLeftNavSmoothExpand.useLeftNavSmoothExpand(props, smoothExpandOpts); // -----------------------------------------------------------------------------
|
|
48
47
|
// ************************** ------------ **************************
|
|
49
|
-
// * KEYBOARD *
|
|
50
|
-
// ************************** ------------ **************************
|
|
51
|
-
|
|
52
|
-
const globalKeyOpts = React__default["default"].useMemo(() => ({
|
|
53
|
-
setFocusedByKey
|
|
54
|
-
}), [setFocusedByKey]);
|
|
55
|
-
useGlobalKeyListeners.useGlobalKeyListeners(globalKeyOpts); // -----------------------------------------------------------------------------
|
|
56
|
-
// ************************** ------------ **************************
|
|
57
48
|
// * SIDE EFFECTS *
|
|
58
49
|
// ************************** ------------ **************************
|
|
59
50
|
|
|
60
51
|
React__default["default"].useEffect(() => {
|
|
61
52
|
onSelectedChange(selectedItem);
|
|
62
53
|
}, [selectedItem, onSelectedChange]);
|
|
54
|
+
React__default["default"].useEffect(() => {
|
|
55
|
+
if (openedItem !== null) setSelectedParent(openedItem);
|
|
56
|
+
}, [openedItem]);
|
|
63
57
|
React__default["default"].useEffect(() => {
|
|
64
58
|
onFocusChange(focusedItem);
|
|
65
|
-
}, [focusedItem,
|
|
66
|
-
useSelectFirstBodyItem.useSelectFirstBodyItem(items, openedItem, setSelectedItem); // -----------------------------------------------------------------------------
|
|
59
|
+
}, [focusedItem, onFocusChange]);
|
|
60
|
+
useSelectFirstBodyItem.useSelectFirstBodyItem(items, openedItem, props.selectedItem !== undefined ? props.selectedItem : selectedItem, setSelectedItem, props.disableDefaultSelection); // -----------------------------------------------------------------------------
|
|
67
61
|
// ************************** ------------ **************************
|
|
68
62
|
// * ITEMS MANAGEMENT *
|
|
69
63
|
// ************************** ------------ **************************
|
|
@@ -73,7 +67,7 @@ const useLeftNavConfig = props => {
|
|
|
73
67
|
bodyHeaderItem: props.BodyHeaderComponent,
|
|
74
68
|
items: props.items,
|
|
75
69
|
openedDrilldowns
|
|
76
|
-
}), [props.items, openedDrilldowns]); // We need to know the current visible items since we have drilldowns
|
|
70
|
+
}), [props.HeaderComponent, props.BodyHeaderComponent, props.items, openedDrilldowns]); // We need to know the current visible items since we have drilldowns
|
|
77
71
|
|
|
78
72
|
const {
|
|
79
73
|
visibleItems,
|
|
@@ -86,19 +80,17 @@ const useLeftNavConfig = props => {
|
|
|
86
80
|
const finalConfig = React__default["default"].useMemo(() => ({
|
|
87
81
|
leftNavProps: props,
|
|
88
82
|
expandedForAnimation,
|
|
89
|
-
selectedItem,
|
|
83
|
+
selectedItem: props.selectedItem !== undefined ? props.selectedItem : selectedItem,
|
|
90
84
|
setSelectedItem,
|
|
91
|
-
|
|
92
|
-
|
|
85
|
+
selectedParent: props.selectedParent !== undefined ? props.selectedParent : selectedParent,
|
|
86
|
+
setSelectedParent,
|
|
93
87
|
focusedItem,
|
|
94
88
|
setFocusedItem,
|
|
95
|
-
focusedByKey,
|
|
96
|
-
setFocusedByKey,
|
|
97
89
|
openedDrilldowns,
|
|
98
90
|
setOpenedDrilldowns,
|
|
99
91
|
visibleItems,
|
|
100
92
|
visibleItemsRefs
|
|
101
|
-
}), [props,
|
|
93
|
+
}), [props, expandedForAnimation, selectedItem, setSelectedItem, setSelectedParent, selectedParent, focusedItem, setFocusedItem, openedDrilldowns, setOpenedDrilldowns, visibleItems, visibleItemsRefs]);
|
|
102
94
|
return finalConfig;
|
|
103
95
|
};
|
|
104
96
|
|
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
5
8
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
6
9
|
var React = require('react');
|
|
7
10
|
var constants = require('../exported-related/constants.js');
|
|
8
11
|
require('@babel/runtime/helpers/jsx');
|
|
9
12
|
require('@elliemae/ds-grid');
|
|
10
13
|
require('styled-components');
|
|
14
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
15
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
16
|
require('@babel/runtime/helpers/defineProperty');
|
|
12
17
|
require('react/jsx-runtime');
|
|
13
|
-
require('@elliemae/ds-icons
|
|
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
|
-
require('@elliemae/ds-icons/OpenWindow');
|
|
18
|
+
require('@elliemae/ds-icons');
|
|
19
19
|
|
|
20
20
|
const notFocuseableItems = [constants.ITEM_TYPES.LEFT_NAV_ITEM_SEPARATOR, constants.ITEM_TYPES.LEFT_NAV_ITEM_SECTION]; // Walks the array of items
|
|
21
21
|
// Drilldowns are tree-like structures
|
|
@@ -66,7 +66,7 @@ const useLeftNavItems = props => {
|
|
|
66
66
|
});
|
|
67
67
|
visibleItemsArray.push(constants.FOOTER_DS_ID);
|
|
68
68
|
return visibleItemsArray;
|
|
69
|
-
}, [
|
|
69
|
+
}, [items, openedDrilldowns]);
|
|
70
70
|
visibleItems.forEach(dsId => {
|
|
71
71
|
if (!(dsId in visibleItemsRefs.current)) visibleItemsRefs.current[dsId] = /*#__PURE__*/React.createRef();
|
|
72
72
|
});
|
|
@@ -2,20 +2,24 @@
|
|
|
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
|
-
var
|
|
12
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
8
13
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
14
|
|
|
10
15
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
16
|
|
|
12
17
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
13
|
-
var ChevronRight__default = /*#__PURE__*/_interopDefaultLegacy(ChevronRight);
|
|
14
18
|
|
|
15
19
|
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; }
|
|
16
20
|
|
|
17
21
|
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; }
|
|
18
|
-
const ChevronItem = props => /*#__PURE__*/jsxRuntime.jsx(
|
|
22
|
+
const ChevronItem = props => /*#__PURE__*/jsxRuntime.jsx(dsIcons.ChevronSmallRight, _objectSpread({
|
|
19
23
|
size: "m",
|
|
20
24
|
color: ['brand-primary', 800]
|
|
21
25
|
}, props));
|
|
@@ -2,6 +2,11 @@
|
|
|
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');
|
|
@@ -50,10 +50,9 @@ const ItemRenderer = props => {
|
|
|
50
50
|
openedItem
|
|
51
51
|
},
|
|
52
52
|
expandedForAnimation,
|
|
53
|
-
|
|
53
|
+
selectedParent,
|
|
54
54
|
selectedItem,
|
|
55
55
|
setSelectedItem,
|
|
56
|
-
focusedItem,
|
|
57
56
|
setFocusedItem,
|
|
58
57
|
visibleItemsRefs
|
|
59
58
|
} = ctx;
|
|
@@ -73,7 +72,6 @@ const ItemRenderer = props => {
|
|
|
73
72
|
});
|
|
74
73
|
const cols = React.useMemo(() => expandedForAnimation ? ['auto', '1fr', 'auto'] : ['38px'], [expandedForAnimation]);
|
|
75
74
|
const isSelected = React.useMemo(() => selectedItem === dsId, [selectedItem, dsId]);
|
|
76
|
-
const isFocused = React.useMemo(() => focusedItem === dsId, [focusedItem, dsId]);
|
|
77
75
|
|
|
78
76
|
if (!expandedForAnimation && !CollapsedComponent) {
|
|
79
77
|
return null;
|
|
@@ -81,29 +79,30 @@ const ItemRenderer = props => {
|
|
|
81
79
|
|
|
82
80
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
83
81
|
children: [/*#__PURE__*/_jsx__default["default"](styled.StyledItemWrapper, {
|
|
84
|
-
shadowStyle: shadowStyle,
|
|
82
|
+
shadowStyle: shadowStyle(opened, item.type),
|
|
85
83
|
"data-testid": "leftnav-item-wrapper"
|
|
86
84
|
}, void 0, /*#__PURE__*/jsxRuntime.jsx(styled.StyledItem, {
|
|
87
85
|
ref: visibleItemsRefs.current[dsId],
|
|
88
86
|
pt: paddingTop,
|
|
89
87
|
pl: indent === undefined ? 'xxxs' : "".concat(indent, "px"),
|
|
90
88
|
minHeight: minHeight,
|
|
91
|
-
shadowStyle: shadowStyle,
|
|
89
|
+
shadowStyle: shadowStyle(opened, item.type),
|
|
92
90
|
alignItems: "flex-start",
|
|
93
91
|
cols: cols,
|
|
94
92
|
onClick: !opened ? handleOnClick : () => null,
|
|
95
93
|
onKeyDown: onKeyDown,
|
|
96
94
|
selectable: selectable,
|
|
97
95
|
selected: isSelected,
|
|
96
|
+
selectedParent: selectedParent === dsId,
|
|
98
97
|
opened: opened,
|
|
99
|
-
focused: isFocused,
|
|
100
|
-
focusedByKey: focusedByKey,
|
|
101
98
|
onFocus: handleFocus,
|
|
102
99
|
"data-testid": "leftnav-item-container",
|
|
103
100
|
tabIndex: focuseable ? 0 : -1,
|
|
104
101
|
"aria-describedby": ariaDescribedBy,
|
|
105
102
|
"aria-expanded": ariaExpanded,
|
|
106
103
|
role: ariaRole,
|
|
104
|
+
"data-selected": isSelected,
|
|
105
|
+
"data-selectedparent": selectedParent === dsId,
|
|
107
106
|
"aria-label": ariaLabel,
|
|
108
107
|
"aria-hidden": !focuseable,
|
|
109
108
|
"aria-live": ariaLive,
|
|
@@ -11,38 +11,48 @@ var Grid__default = /*#__PURE__*/_interopDefaultLegacy(Grid);
|
|
|
11
11
|
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
12
12
|
|
|
13
13
|
/* eslint-disable indent */
|
|
14
|
+
const borderOutside = function (color) {
|
|
15
|
+
let weight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
16
|
+
return "&:before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border: ".concat(weight, "px solid ").concat(color, ";\n pointer-events: none;\n}");
|
|
17
|
+
};
|
|
14
18
|
const StyledItemWrapper = /*#__PURE__*/styled__default["default"](Grid__default["default"]).withConfig({
|
|
15
19
|
componentId: "sc-11wzgfh-0"
|
|
16
20
|
})(["position:relative;", ""], props => props.shadowStyle(props.theme));
|
|
17
21
|
|
|
18
|
-
const getItemBackground =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
const getItemBackground = _ref => {
|
|
23
|
+
let {
|
|
24
|
+
selectable,
|
|
25
|
+
opened,
|
|
26
|
+
selected,
|
|
27
|
+
theme
|
|
28
|
+
} = _ref;
|
|
24
29
|
if (!selectable) return 'white';
|
|
25
30
|
if (selected && !opened) return theme.colors.brand[200];
|
|
26
31
|
return theme.colors.neutral['000'];
|
|
27
32
|
};
|
|
28
33
|
|
|
29
|
-
const getItemHoverBackground =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
const getItemHoverBackground = _ref2 => {
|
|
35
|
+
let {
|
|
36
|
+
selectable,
|
|
37
|
+
opened,
|
|
38
|
+
selected,
|
|
39
|
+
theme
|
|
40
|
+
} = _ref2;
|
|
35
41
|
if (!selectable) return 'white';
|
|
36
42
|
if (selected && !opened) return theme.colors.brand[200];
|
|
37
|
-
return theme.colors.
|
|
43
|
+
return theme.colors.brand['200'];
|
|
38
44
|
};
|
|
39
45
|
|
|
40
46
|
const StyledItem = /*#__PURE__*/styled__default["default"](Grid__default["default"]).withConfig({
|
|
41
47
|
componentId: "sc-11wzgfh-1"
|
|
42
|
-
})(["cursor:", ";min-height:", ";background:", "
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
48
|
+
})(["cursor:", ";min-height:", ";background:", ";", ":hover{background:", ";}:active{background:", ";}", ";outline:none;", ""], props => props.selectable && !props.opened ? 'pointer' : 'auto', props => props.minHeight, getItemBackground, props => props.selected && !props.opened ? borderOutside(props.theme.colors.brand[500], 1) : '', getItemHoverBackground, _ref3 => {
|
|
49
|
+
let {
|
|
50
|
+
selectable,
|
|
51
|
+
theme
|
|
52
|
+
} = _ref3;
|
|
53
|
+
return selectable ? theme.colors.brand[200] : 'white';
|
|
54
|
+
}, props => props.shadowStyle(props.theme), props => props.tabIndex !== -1 ? ":focus {\n ".concat(borderOutside(props.theme.colors.brand[700]), "\n }") : '');
|
|
46
55
|
|
|
47
56
|
exports.StyledItem = StyledItem;
|
|
48
57
|
exports.StyledItemWrapper = StyledItemWrapper;
|
|
58
|
+
exports.borderOutside = borderOutside;
|
|
@@ -2,6 +2,11 @@
|
|
|
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
|
var React = require('react');
|
|
7
12
|
|
|
@@ -24,7 +29,8 @@ const itemDefaultProps = {
|
|
|
24
29
|
ariaLive: 'off',
|
|
25
30
|
ariaExpanded: undefined,
|
|
26
31
|
ariaDescribedBy: undefined
|
|
27
|
-
};
|
|
32
|
+
};
|
|
33
|
+
const itemWithoutShadows = ['ds-left-nav-item-header', 'ds-left-nav-item-link', 'ds-left-nav-item-submenu']; // Make use Item props with defaults
|
|
28
34
|
|
|
29
35
|
const usePropsWithDefaults = props => {
|
|
30
36
|
const propsWithDefault = React.useMemo(() => {
|
|
@@ -38,7 +44,7 @@ const usePropsWithDefaults = props => {
|
|
|
38
44
|
minHeight: '48px',
|
|
39
45
|
paddingTop: '12px',
|
|
40
46
|
subitems: [],
|
|
41
|
-
shadowStyle: () =>
|
|
47
|
+
shadowStyle: (opened, type) => theme => "box-shadow: ".concat(opened || !itemWithoutShadows.includes(type) ? 'inset 4px 0 0 0 #52A6EC' : 'inset 4px 0 0 0 white'),
|
|
42
48
|
hasBorderBottom: false,
|
|
43
49
|
borderBottomMr: '0px'
|
|
44
50
|
}, props), {}, {
|
|
@@ -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
|
|
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
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}, void 0,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
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
|
|
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
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; }
|
|
20
|
-
const StyledOpenWindow = /*#__PURE__*/styled__default["default"](
|
|
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({
|
|
@@ -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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
28
|
-
|
|
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
|
-
|
|
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
|
-
}, [
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
|
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
|
-
|
|
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;
|