@elliemae/ds-treeview 2.0.0-next.8 → 2.0.0-rc.3
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/TreeView.js +5 -0
- package/cjs/deprecated/TreeView.js +5 -0
- package/cjs/deprecated/__testUtils__/utils.js +9 -1
- package/cjs/deprecated/plugins/dnd/TreeDndPlugin.js +14 -8
- package/cjs/deprecated/plugins/dnd/renderers/DraggableItem.js +7 -3
- package/cjs/deprecated/plugins/dnd/renderers/DroppableList.js +20 -15
- package/cjs/deprecated/plugins/dnd/utils.js +41 -34
- package/cjs/deprecated/plugins/roving/TreeRovingPlugin.js +12 -3
- package/cjs/deprecated/plugins/searchable/SearchableTreePlugin.js +5 -3
- package/cjs/deprecated/plugins/selectable/SelectablePluginTree.js +52 -33
- package/cjs/deprecated/plugins/toolbar/TreeToolbarPlugin.js +11 -7
- package/cjs/deprecated/plugins/tree/TreeDataPlugin.js +38 -28
- package/cjs/deprecated/plugins/tree/useExpandTreeState.js +8 -5
- package/cjs/deprecated/plugins/tree/utils.js +17 -4
- package/cjs/deprecated/plugins/tree/walkTreeStrategy.js +11 -9
- package/cjs/deprecated/plugins/virtualization/TreeVirtualizationPlugin.js +24 -10
- package/cjs/deprecated/renderers.js +16 -8
- package/cjs/parts/CheckboxSelectable.js +7 -3
- package/cjs/parts/ExpandCaret.js +10 -10
- package/cjs/parts/Icon.js +2 -2
- package/cjs/parts/NestingSpace.js +5 -0
- package/cjs/parts/RadioSelectable.js +2 -3
- package/cjs/parts/TreeItem.js +29 -19
- package/cjs/parts/TreeItemText.js +12 -9
- package/cjs/parts/TreeList.js +17 -7
- package/cjs/related-components/TreeViewSearchBar.js +2 -2
- package/cjs/utils/dnd-helpers.js +29 -25
- package/cjs/utils/group-expands-helpers.js +7 -5
- package/cjs/utils/keyboard-helpers.js +6 -3
- package/cjs/utils/object-helpers.js +8 -0
- package/cjs/utils/refs-helpers.js +11 -1
- package/cjs/utils/selectable-helper.js +9 -2
- package/cjs/utils/tree-helpers.js +26 -8
- package/cjs/utils/useDnDHelpers.js +18 -12
- package/cjs/utils/useInstanceRefActions.js +13 -10
- package/cjs/utils/useTree.js +5 -0
- package/esm/TreeView.js +5 -0
- package/esm/deprecated/TreeView.js +5 -0
- package/esm/deprecated/__testUtils__/utils.js +9 -1
- package/esm/deprecated/plugins/dnd/TreeDndPlugin.js +13 -7
- package/esm/deprecated/plugins/dnd/renderers/DraggableItem.js +6 -1
- package/esm/deprecated/plugins/dnd/renderers/DroppableList.js +17 -11
- package/esm/deprecated/plugins/dnd/utils.js +34 -27
- package/esm/deprecated/plugins/roving/TreeRovingPlugin.js +11 -2
- package/esm/deprecated/plugins/searchable/SearchableTreePlugin.js +4 -1
- package/esm/deprecated/plugins/selectable/SelectablePluginTree.js +44 -22
- package/esm/deprecated/plugins/toolbar/TreeToolbarPlugin.js +8 -3
- package/esm/deprecated/plugins/tree/TreeDataPlugin.js +28 -16
- package/esm/deprecated/plugins/tree/useExpandTreeState.js +6 -2
- package/esm/deprecated/plugins/tree/utils.js +17 -4
- package/esm/deprecated/plugins/tree/walkTreeStrategy.js +11 -9
- package/esm/deprecated/plugins/virtualization/TreeVirtualizationPlugin.js +24 -10
- package/esm/deprecated/renderers.js +16 -8
- package/esm/parts/CheckboxSelectable.js +7 -2
- package/esm/parts/ExpandCaret.js +8 -6
- package/esm/parts/Icon.js +1 -1
- package/esm/parts/NestingSpace.js +5 -0
- package/esm/parts/RadioSelectable.js +2 -2
- package/esm/parts/TreeItem.js +29 -18
- package/esm/parts/TreeItemText.js +10 -7
- package/esm/parts/TreeList.js +16 -6
- package/esm/related-components/TreeViewSearchBar.js +1 -1
- package/esm/utils/dnd-helpers.js +29 -25
- package/esm/utils/group-expands-helpers.js +7 -5
- package/esm/utils/keyboard-helpers.js +6 -3
- package/esm/utils/object-helpers.js +8 -0
- package/esm/utils/refs-helpers.js +11 -1
- package/esm/utils/selectable-helper.js +9 -2
- package/esm/utils/tree-helpers.js +26 -8
- package/esm/utils/useDnDHelpers.js +18 -12
- package/esm/utils/useInstanceRefActions.js +13 -10
- package/esm/utils/useTree.js +5 -0
- package/package.json +11 -10
- package/types/deprecated/plugins/tree/useExpandTreeState.d.ts +12 -2
package/cjs/TreeView.js
CHANGED
|
@@ -5,6 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
6
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
7
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
8
13
|
var React = require('react');
|
|
9
14
|
var reactVirtual = require('react-virtual');
|
|
10
15
|
var uuid = require('uuid');
|
|
@@ -6,6 +6,11 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
|
6
6
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
7
7
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
8
8
|
require('core-js/modules/web.dom-collections.iterator.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');
|
|
9
14
|
require('react');
|
|
10
15
|
var useDataList = require('@elliemae/ds-shared/useDataList');
|
|
11
16
|
var renderers = require('./renderers.js');
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
6
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
7
7
|
require('core-js/modules/esnext.map.delete-all.js');
|
|
8
|
+
require('core-js/modules/esnext.map.emplace.js');
|
|
8
9
|
require('core-js/modules/esnext.map.every.js');
|
|
9
10
|
require('core-js/modules/esnext.map.filter.js');
|
|
10
11
|
require('core-js/modules/esnext.map.find.js');
|
|
@@ -18,7 +19,12 @@ require('core-js/modules/esnext.map.reduce.js');
|
|
|
18
19
|
require('core-js/modules/esnext.map.some.js');
|
|
19
20
|
require('core-js/modules/esnext.map.update.js');
|
|
20
21
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
22
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
23
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
24
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
21
25
|
require('core-js/modules/es.string.replace.js');
|
|
26
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
27
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
22
28
|
require('react');
|
|
23
29
|
var react = require('@testing-library/react');
|
|
24
30
|
var renderers = require('../renderers.js');
|
|
@@ -50,7 +56,9 @@ const treeItemsToMap = items => {
|
|
|
50
56
|
* @param key
|
|
51
57
|
*/
|
|
52
58
|
|
|
53
|
-
function getTreeItemsFromRender(_ref
|
|
59
|
+
function getTreeItemsFromRender(_ref) {
|
|
60
|
+
let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : renderers.treeItemBlockName;
|
|
61
|
+
|
|
54
62
|
let {
|
|
55
63
|
data,
|
|
56
64
|
plugins
|
|
@@ -4,8 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
6
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
7
12
|
var React = require('react');
|
|
8
|
-
var
|
|
13
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
9
14
|
var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
|
|
10
15
|
var DraggableItem = require('./renderers/DraggableItem.js');
|
|
11
16
|
var DroppableList = require('./renderers/DroppableList.js');
|
|
@@ -31,12 +36,13 @@ const TreeDndPlugin = createInstancePlugin__default["default"]('tree-dnd', {
|
|
|
31
36
|
|
|
32
37
|
const [draggedRecord, setDraggedRecord] = React.useState(null); // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
33
38
|
|
|
34
|
-
const changeRecordsPosition = React.useCallback(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
const changeRecordsPosition = React.useCallback(_ref => {
|
|
40
|
+
let {
|
|
41
|
+
sourceRecord,
|
|
42
|
+
targetRecord,
|
|
43
|
+
combineWith,
|
|
44
|
+
down
|
|
45
|
+
} = _ref;
|
|
40
46
|
let nextTreeData;
|
|
41
47
|
const sourceTreePosition = utils.getTreePosition(sourceRecord.path);
|
|
42
48
|
let targetTreePosition = {};
|
|
@@ -55,7 +61,7 @@ const TreeDndPlugin = createInstancePlugin__default["default"]('tree-dnd', {
|
|
|
55
61
|
// if we combine elements, we change a different array (the children of the target)
|
|
56
62
|
|
|
57
63
|
|
|
58
|
-
const changingSameArray = !combineWith &&
|
|
64
|
+
const changingSameArray = !combineWith && dsUtilities.isEqual(sourceTreePosition.parentPath, targetTreePosition.parentPath);
|
|
59
65
|
|
|
60
66
|
if (changingSameArray) {
|
|
61
67
|
nextTreeData = utils.changePositionSameArray({
|
|
@@ -4,9 +4,14 @@ var _jsx = require('@babel/runtime/helpers/jsx');
|
|
|
4
4
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
5
5
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
6
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
7
12
|
require('react');
|
|
8
13
|
var reactBeautifulDnd = require('react-beautiful-dnd');
|
|
9
|
-
var
|
|
14
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
10
15
|
var utils = require('../utils.js');
|
|
11
16
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
17
|
|
|
@@ -15,7 +20,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
15
20
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
16
21
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
17
22
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
18
|
-
var GripperVertical__default = /*#__PURE__*/_interopDefaultLegacy(GripperVertical);
|
|
19
23
|
|
|
20
24
|
const _excluded = ["key"];
|
|
21
25
|
|
|
@@ -49,7 +53,7 @@ const DraggableItem = (renderers // , instance
|
|
|
49
53
|
|
|
50
54
|
return /*#__PURE__*/jsxRuntime.jsx(ItemComponent, _objectSpread(_objectSpread({}, draggableProps), {}, {
|
|
51
55
|
// isDragging={isDragging}
|
|
52
|
-
leftAddons: [/*#__PURE__*/jsxRuntime.jsx(
|
|
56
|
+
leftAddons: [/*#__PURE__*/jsxRuntime.jsx(dsIcons.GripperVertical, _objectSpread(_objectSpread({
|
|
53
57
|
"data-testid": "drag-handle"
|
|
54
58
|
}, provided.dragHandleProps), {}, {
|
|
55
59
|
className: "drag-handle",
|
|
@@ -4,11 +4,15 @@ var _jsx = require('@babel/runtime/helpers/jsx');
|
|
|
4
4
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
5
5
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
6
6
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
7
12
|
var React = require('react');
|
|
8
13
|
var reactBeautifulDnd = require('react-beautiful-dnd');
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var system = require('@elliemae/ds-utilities/system');
|
|
14
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
15
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
12
16
|
var FocusGroupContext = require('@elliemae/ds-shared/FocusGroup/FocusGroupContext');
|
|
13
17
|
var utils = require('../../tree/utils.js');
|
|
14
18
|
var utils$1 = require('../utils.js');
|
|
@@ -19,7 +23,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
19
23
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
20
24
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
21
25
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
22
|
-
var GripperVertical__default = /*#__PURE__*/_interopDefaultLegacy(GripperVertical);
|
|
23
26
|
var FocusGroupContext__default = /*#__PURE__*/_interopDefaultLegacy(FocusGroupContext);
|
|
24
27
|
|
|
25
28
|
const _excluded = ["records"];
|
|
@@ -75,9 +78,10 @@ const DroppableList = (renderers, instance) => _ref => {
|
|
|
75
78
|
|
|
76
79
|
currTargetRef.current = destination || currTargetRef.current;
|
|
77
80
|
}, [records]);
|
|
78
|
-
const onDragStart = React.useCallback(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
const onDragStart = React.useCallback(_ref2 => {
|
|
82
|
+
let {
|
|
83
|
+
source
|
|
84
|
+
} = _ref2;
|
|
81
85
|
preDragFocusedNode.current = document.activeElement; // when we move the currently focused item, preDragFocusedNode is the body of the doc
|
|
82
86
|
|
|
83
87
|
setFocusedItemWasDragged(preDragFocusedNode.current.tagName === 'BODY');
|
|
@@ -92,13 +96,14 @@ const DroppableList = (renderers, instance) => _ref => {
|
|
|
92
96
|
}, [records]);
|
|
93
97
|
const onDragEnd = React.useCallback( // eslint-disable-next-line complexity
|
|
94
98
|
// eslint-disable-next-line max-statements
|
|
95
|
-
|
|
96
|
-
destination,
|
|
97
|
-
source,
|
|
98
|
-
combine
|
|
99
|
-
}) => {
|
|
99
|
+
_ref3 => {
|
|
100
100
|
var _sourceRecord$parentN, _targetRecord$parentN;
|
|
101
101
|
|
|
102
|
+
let {
|
|
103
|
+
destination,
|
|
104
|
+
source,
|
|
105
|
+
combine
|
|
106
|
+
} = _ref3;
|
|
102
107
|
clearTimeout(expandTimerRef.current);
|
|
103
108
|
const sourceIndex = source.index;
|
|
104
109
|
const destinationIndex = destination && destination.index;
|
|
@@ -144,7 +149,7 @@ const DroppableList = (renderers, instance) => _ref => {
|
|
|
144
149
|
record: record
|
|
145
150
|
}, utils$1.getDraggableProps({
|
|
146
151
|
className: 'item-cloned'
|
|
147
|
-
}, provided, snapshot)), /*#__PURE__*/jsxRuntime.jsx(
|
|
152
|
+
}, provided, snapshot)), /*#__PURE__*/jsxRuntime.jsx(dsIcons.GripperVertical, _objectSpread(_objectSpread({}, provided.dragHandleProps), {}, {
|
|
148
153
|
className: "drag-handle"
|
|
149
154
|
})), itemRenderer({
|
|
150
155
|
record,
|
|
@@ -165,8 +170,8 @@ const DroppableList = (renderers, instance) => _ref => {
|
|
|
165
170
|
// work in a virtual list
|
|
166
171
|
const itemCount = snapshot.isUsingPlaceholder ? records.length + 1 : records.length;
|
|
167
172
|
return /*#__PURE__*/jsxRuntime.jsx(ListComponent, _objectSpread(_objectSpread({}, rest), {}, {
|
|
168
|
-
className:
|
|
169
|
-
innerRef:
|
|
173
|
+
className: dsUtilities.cx(rest.className, draggedRecord && 'dragging'),
|
|
174
|
+
innerRef: dsUtilities.mergeRefs(droppableProvided.innerRef, rest.innerRef, rest.ref),
|
|
170
175
|
itemCount: itemCount,
|
|
171
176
|
records: records
|
|
172
177
|
}));
|
|
@@ -4,8 +4,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
6
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
10
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
11
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
12
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
9
13
|
|
|
10
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
11
15
|
|
|
@@ -24,9 +28,9 @@ function getStyle(provided, style) {
|
|
|
24
28
|
function getDraggableProps(props, provided, snapshot) {
|
|
25
29
|
const isGroupedOver = Boolean(snapshot.combineTargetFor);
|
|
26
30
|
return _objectSpread(_objectSpread(_objectSpread({}, props), provided.draggableProps), {}, {
|
|
27
|
-
className:
|
|
31
|
+
className: dsUtilities.cx(props.className, isGroupedOver && 'can-group-over'),
|
|
28
32
|
// provided,
|
|
29
|
-
innerRef:
|
|
33
|
+
innerRef: dsUtilities.mergeRefs(provided.innerRef, props.innerRef, props.ref),
|
|
30
34
|
'data-index': props.index,
|
|
31
35
|
style: getStyle(provided, _objectSpread(_objectSpread({}, props.style), {}, {
|
|
32
36
|
display: 'flex'
|
|
@@ -37,7 +41,7 @@ const setTreeArrayInPath = (treeData, path, data) => {
|
|
|
37
41
|
const nextTreeData = [...treeData];
|
|
38
42
|
|
|
39
43
|
if (path.length) {
|
|
40
|
-
|
|
44
|
+
dsUtilities.set(nextTreeData, path, data);
|
|
41
45
|
return nextTreeData;
|
|
42
46
|
}
|
|
43
47
|
|
|
@@ -64,37 +68,39 @@ const isSourceBeforeTarget = (sourcePath, targetPath) => {
|
|
|
64
68
|
|
|
65
69
|
return sourceIsBeforeTarget;
|
|
66
70
|
};
|
|
67
|
-
const updateTargetPath = (sourcePath, targetPath
|
|
71
|
+
const updateTargetPath = function (sourcePath, targetPath) {
|
|
72
|
+
let incr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;
|
|
68
73
|
const nextTargetPath = [...targetPath];
|
|
69
74
|
const posToUpdate = sourcePath.length ? sourcePath.length - 1 : 0;
|
|
70
75
|
nextTargetPath.splice(posToUpdate, 1, targetPath[posToUpdate] + incr);
|
|
71
76
|
return nextTargetPath;
|
|
72
77
|
};
|
|
73
78
|
const getParentPath = path => path.slice(0, -1);
|
|
74
|
-
const getParentChildrenByPath = (treeData, path) => path && path.length ?
|
|
79
|
+
const getParentChildrenByPath = (treeData, path) => path && path.length ? dsUtilities.get(treeData, path) : treeData;
|
|
75
80
|
const getTreePosition = recordPath => ({
|
|
76
81
|
parentPath: getParentPath(recordPath),
|
|
77
82
|
index: recordPath.slice(-1)[0]
|
|
78
83
|
});
|
|
79
|
-
const changePositionBetweenDifferentArrays =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
84
|
+
const changePositionBetweenDifferentArrays = _ref => {
|
|
85
|
+
let {
|
|
86
|
+
sourceTreePosition,
|
|
87
|
+
// already extracted sourceRecord.path
|
|
88
|
+
targetTreePosition,
|
|
89
|
+
// already extracted targetRecord.path
|
|
90
|
+
// combineWith the element we want to append to the children of (this is null when the drag doesn't result in adding children)
|
|
91
|
+
combineWith,
|
|
92
|
+
sourceRecord,
|
|
93
|
+
// what we are dragging
|
|
94
|
+
targetRecord,
|
|
95
|
+
// what we are dropping on top of
|
|
96
|
+
down,
|
|
97
|
+
// ???
|
|
98
|
+
data,
|
|
99
|
+
// tree before dragEnd changes
|
|
100
|
+
childrenKey = 'children' // constant -> 'children'
|
|
101
|
+
|
|
102
|
+
} = _ref;
|
|
103
|
+
let nextTreeData = dsUtilities.cloneDeep(data);
|
|
98
104
|
if (!sourceRecord || !sourceRecord.data) throw new Error('error while dragging, no dragged item received');
|
|
99
105
|
const sourceTreeChildren = getParentChildrenByPath(nextTreeData, sourceTreePosition.parentPath); // When moving an item we remove the item from it's former parent children array
|
|
100
106
|
|
|
@@ -123,15 +129,16 @@ const changePositionBetweenDifferentArrays = ({
|
|
|
123
129
|
return nextTreeData;
|
|
124
130
|
};
|
|
125
131
|
const combineWithTarget = () => {};
|
|
126
|
-
const changePositionSameArray =
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
const changePositionSameArray = _ref2 => {
|
|
133
|
+
let {
|
|
134
|
+
targetTreePosition,
|
|
135
|
+
sourceRecord,
|
|
136
|
+
targetRecord,
|
|
137
|
+
data
|
|
138
|
+
} = _ref2;
|
|
139
|
+
let nextTreeData = dsUtilities.cloneDeep(data);
|
|
133
140
|
const targetTreeChildren = getParentChildrenByPath(nextTreeData, targetTreePosition.parentPath);
|
|
134
|
-
const nextChildren =
|
|
141
|
+
const nextChildren = dsUtilities.arrayMove(targetTreeChildren, sourceRecord.index, targetRecord.index); // mutates the tree. That's the reason of the clone above
|
|
135
142
|
|
|
136
143
|
nextTreeData = setTreeArrayInPath(nextTreeData, targetTreePosition.parentPath, nextChildren);
|
|
137
144
|
return nextTreeData;
|
|
@@ -6,10 +6,15 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
|
6
6
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
7
7
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
8
8
|
require('core-js/modules/web.dom-collections.iterator.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');
|
|
9
14
|
var React = require('react');
|
|
10
15
|
var FocusGroupProvider = require('@elliemae/ds-shared/FocusGroup/FocusGroupManager');
|
|
11
16
|
var useFocusGroupItem = require('@elliemae/ds-shared/FocusGroup/useFocusGroupItem');
|
|
12
|
-
var
|
|
17
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
13
18
|
var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
|
|
14
19
|
var jsxRuntime = require('react/jsx-runtime');
|
|
15
20
|
|
|
@@ -54,7 +59,7 @@ const TreeItemRovingHoc = Component => _ref => {
|
|
|
54
59
|
onBlur
|
|
55
60
|
});
|
|
56
61
|
return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread(_objectSpread({}, props), {}, {
|
|
57
|
-
innerRef:
|
|
62
|
+
innerRef: dsUtilities.mergeRefs(ref, innerRef)
|
|
58
63
|
}));
|
|
59
64
|
};
|
|
60
65
|
|
|
@@ -71,9 +76,13 @@ const TreeRovingPlugin = createInstancePlugin__default["default"]('tree-data', {
|
|
|
71
76
|
|
|
72
77
|
if (instance !== null && instance !== void 0 && (_instance$props = instance.props) !== null && _instance$props !== void 0 && _instance$props.onItemFocus) {
|
|
73
78
|
instance.props.onItemFocus({
|
|
74
|
-
scrollToItem: (
|
|
79
|
+
scrollToItem: function () {
|
|
75
80
|
var _props$listRef, _props$listRef$curren;
|
|
76
81
|
|
|
82
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
83
|
+
args[_key] = arguments[_key];
|
|
84
|
+
}
|
|
85
|
+
|
|
77
86
|
return props === null || props === void 0 ? void 0 : (_props$listRef = props.listRef) === null || _props$listRef === void 0 ? void 0 : (_props$listRef$curren = _props$listRef.current) === null || _props$listRef$curren === void 0 ? void 0 : _props$listRef$curren.scrollToItem(args);
|
|
78
87
|
},
|
|
79
88
|
itemIndex: props === null || props === void 0 ? void 0 : props.index
|
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
8
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
6
9
|
var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
|
|
7
10
|
var Highlighter = require('react-highlight-words');
|
|
8
11
|
require('react');
|
|
9
|
-
var
|
|
12
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
10
13
|
|
|
11
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
12
15
|
|
|
13
16
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
14
17
|
var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
|
|
15
18
|
var Highlighter__default = /*#__PURE__*/_interopDefaultLegacy(Highlighter);
|
|
16
|
-
var usePrevious__default = /*#__PURE__*/_interopDefaultLegacy(usePrevious);
|
|
17
19
|
|
|
18
20
|
const markParentsAsChildMatch = record => {
|
|
19
21
|
let currRecord = record;
|
|
@@ -86,7 +88,7 @@ const SearchableTreePlugin = createInstancePlugin__default["default"]('searchabl
|
|
|
86
88
|
}
|
|
87
89
|
} = instance; // eslint-disable-next-line react-hooks/rules-of-hooks
|
|
88
90
|
|
|
89
|
-
const prevSearchQuery =
|
|
91
|
+
const prevSearchQuery = dsUtilities.usePrevious(searchQuery);
|
|
90
92
|
return {
|
|
91
93
|
prevSearchQuery
|
|
92
94
|
};
|
|
@@ -5,36 +5,39 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
6
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
7
7
|
require('core-js/modules/web.dom-collections.iterator.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.reduce.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.reduce.js');
|
|
11
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
12
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
13
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
14
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
8
15
|
var React = require('react');
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var utils = require('@elliemae/ds-utilities/utils');
|
|
12
|
-
var useDerivedStateFromProps = require('@elliemae/ds-utilities/hooks/useDerivedStateFromProps');
|
|
16
|
+
var dsForm = require('@elliemae/ds-form');
|
|
17
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
13
18
|
var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
|
|
14
19
|
var walkTreeStrategy = require('../tree/walkTreeStrategy.js');
|
|
15
|
-
var utils
|
|
16
|
-
var utils$
|
|
20
|
+
var utils = require('../tree/utils.js');
|
|
21
|
+
var utils$1 = require('./utils.js');
|
|
17
22
|
require('react/jsx-runtime');
|
|
18
23
|
|
|
19
24
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
20
25
|
|
|
21
26
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
22
27
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
23
|
-
var Checkbox__default = /*#__PURE__*/_interopDefaultLegacy(Checkbox);
|
|
24
|
-
var Radio__default = /*#__PURE__*/_interopDefaultLegacy(Radio);
|
|
25
|
-
var useDerivedStateFromProps__default = /*#__PURE__*/_interopDefaultLegacy(useDerivedStateFromProps);
|
|
26
28
|
var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
|
|
27
29
|
|
|
28
30
|
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
31
|
|
|
30
32
|
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
33
|
|
|
32
|
-
const updateParentState =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
const updateParentState = _ref => {
|
|
35
|
+
let {
|
|
36
|
+
node,
|
|
37
|
+
checked,
|
|
38
|
+
selectionState,
|
|
39
|
+
isCurrentParentChildren = true
|
|
40
|
+
} = _ref;
|
|
38
41
|
const {
|
|
39
42
|
parentNode
|
|
40
43
|
} = node;
|
|
@@ -45,10 +48,10 @@ const updateParentState = ({
|
|
|
45
48
|
if (checked === true && isCurrentParentChildren) nextSelectedChildrenAmount = parentNode.selectedChildren.length;
|
|
46
49
|
if (checked === true && !isCurrentParentChildren) nextSelectedChildrenAmount = parentNode.selectedChildren.length + 1;
|
|
47
50
|
if (checked === false) nextSelectedChildrenAmount = parentNode.selectedChildren.length - 1;
|
|
48
|
-
const parentChildren = utils
|
|
51
|
+
const parentChildren = utils.getParentChildren(node);
|
|
49
52
|
const parentChildrenLength = parentChildren && parentChildren.length; // check parent state
|
|
50
53
|
|
|
51
|
-
const parentState = utils$
|
|
54
|
+
const parentState = utils$1.checkParentState(nextSelectedChildrenAmount, parentChildrenLength, checked);
|
|
52
55
|
selectionState[parentNode.id || 'all'] = parentState;
|
|
53
56
|
updateParentState({
|
|
54
57
|
node: parentNode,
|
|
@@ -71,7 +74,7 @@ const useSelectableTreeState = instance => {
|
|
|
71
74
|
isSingleSelect = false
|
|
72
75
|
}
|
|
73
76
|
} = instance;
|
|
74
|
-
const [selection, setSelection] =
|
|
77
|
+
const [selection, setSelection] = dsUtilities.useDerivedStateFromProps(selectionProp);
|
|
75
78
|
const isAllSelected = React.useMemo(() => {
|
|
76
79
|
if (!isMultiSelect) return false;
|
|
77
80
|
const amountSelected = originalData.reduce((result, item) => selection[item[idKey]] === true ? result + 1 : result, 0);
|
|
@@ -86,10 +89,16 @@ const useSelectableTreeState = instance => {
|
|
|
86
89
|
|
|
87
90
|
return 'mixed';
|
|
88
91
|
}, [selection]);
|
|
89
|
-
const select = React.useCallback((record
|
|
90
|
-
|
|
92
|
+
const select = React.useCallback(function (record) {
|
|
93
|
+
let additionalActions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
94
|
+
|
|
95
|
+
if (dsUtilities.isFunction(onSelect)) {
|
|
91
96
|
onSelect(record.data, {
|
|
92
|
-
scrollToItem: (
|
|
97
|
+
scrollToItem: function () {
|
|
98
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
99
|
+
args[_key] = arguments[_key];
|
|
100
|
+
}
|
|
101
|
+
|
|
93
102
|
if (additionalActions.scrollToItem) additionalActions.scrollToItem(args);
|
|
94
103
|
},
|
|
95
104
|
itemIndex: additionalActions === null || additionalActions === void 0 ? void 0 : additionalActions.itemIndex
|
|
@@ -111,7 +120,7 @@ const useSelectableTreeState = instance => {
|
|
|
111
120
|
data: record.data.children,
|
|
112
121
|
parentNode: record,
|
|
113
122
|
cb: node => {
|
|
114
|
-
const parentId = utils
|
|
123
|
+
const parentId = utils.getParentId(node); // if direct child and truthy next state
|
|
115
124
|
|
|
116
125
|
if (nextState && parentId === record.id) {
|
|
117
126
|
record.selectedChildren.push(node.id);
|
|
@@ -131,7 +140,11 @@ const useSelectableTreeState = instance => {
|
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
onSelectionChange(nextSelectionState, record.data, {
|
|
134
|
-
scrollToItem: (
|
|
143
|
+
scrollToItem: function () {
|
|
144
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
145
|
+
args[_key2] = arguments[_key2];
|
|
146
|
+
}
|
|
147
|
+
|
|
135
148
|
if (additionalActions.scrollToItem) additionalActions.scrollToItem(args);
|
|
136
149
|
},
|
|
137
150
|
itemIndex: additionalActions === null || additionalActions === void 0 ? void 0 : additionalActions.itemIndex
|
|
@@ -193,9 +206,10 @@ const SelectablePluginTree = createInstancePlugin__default["default"]('selectabl
|
|
|
193
206
|
return record;
|
|
194
207
|
},
|
|
195
208
|
|
|
196
|
-
getItemProps(props, instance, {
|
|
197
|
-
|
|
198
|
-
|
|
209
|
+
getItemProps(props, instance, _ref3) {
|
|
210
|
+
let {
|
|
211
|
+
record
|
|
212
|
+
} = _ref3;
|
|
199
213
|
const {
|
|
200
214
|
actions: {
|
|
201
215
|
select
|
|
@@ -209,15 +223,19 @@ const SelectablePluginTree = createInstancePlugin__default["default"]('selectabl
|
|
|
209
223
|
} = instance.getInstance();
|
|
210
224
|
|
|
211
225
|
const handleSelect = () => select(record, {
|
|
212
|
-
scrollToItem: (
|
|
226
|
+
scrollToItem: function () {
|
|
213
227
|
var _props$listRef, _props$listRef$curren;
|
|
214
228
|
|
|
229
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
230
|
+
args[_key3] = arguments[_key3];
|
|
231
|
+
}
|
|
232
|
+
|
|
215
233
|
return props === null || props === void 0 ? void 0 : (_props$listRef = props.listRef) === null || _props$listRef === void 0 ? void 0 : (_props$listRef$curren = _props$listRef.current) === null || _props$listRef$curren === void 0 ? void 0 : _props$listRef$curren.scrollToItem(args);
|
|
216
234
|
},
|
|
217
235
|
itemIndex: props === null || props === void 0 ? void 0 : props.index
|
|
218
236
|
});
|
|
219
237
|
|
|
220
|
-
const checkboxAddon = isMultiSelect && /*#__PURE__*/_jsx__default["default"](
|
|
238
|
+
const checkboxAddon = isMultiSelect && /*#__PURE__*/_jsx__default["default"](dsForm.DSCheckbox, {
|
|
221
239
|
checked: record.checked,
|
|
222
240
|
disabled: record.isGroup ? disableGroups : disableLeafs,
|
|
223
241
|
className: "tree-item-checkbox",
|
|
@@ -226,7 +244,7 @@ const SelectablePluginTree = createInstancePlugin__default["default"]('selectabl
|
|
|
226
244
|
tabIndex: -1
|
|
227
245
|
});
|
|
228
246
|
|
|
229
|
-
const radioAddon = isSingleSelect && !isMultiSelect && /*#__PURE__*/_jsx__default["default"](
|
|
247
|
+
const radioAddon = isSingleSelect && !isMultiSelect && /*#__PURE__*/_jsx__default["default"](dsForm.DSRadio, {
|
|
230
248
|
checked: !!record.checked,
|
|
231
249
|
disabled: record.isGroup ? disableGroups : disableLeafs,
|
|
232
250
|
className: "tree-item-radio",
|
|
@@ -244,7 +262,7 @@ const SelectablePluginTree = createInstancePlugin__default["default"]('selectabl
|
|
|
244
262
|
|
|
245
263
|
return _objectSpread(_objectSpread({}, props), {}, {
|
|
246
264
|
onClick: handleSelect,
|
|
247
|
-
className:
|
|
265
|
+
className: dsUtilities.cx(props.className, record.checked && 'selected'),
|
|
248
266
|
'aria-selected': !!record.checked
|
|
249
267
|
});
|
|
250
268
|
},
|
|
@@ -252,9 +270,10 @@ const SelectablePluginTree = createInstancePlugin__default["default"]('selectabl
|
|
|
252
270
|
hotKeys(grid) {
|
|
253
271
|
return {
|
|
254
272
|
key: 'space',
|
|
255
|
-
handler:
|
|
256
|
-
|
|
257
|
-
|
|
273
|
+
handler: _ref4 => {
|
|
274
|
+
let {
|
|
275
|
+
index
|
|
276
|
+
} = _ref4;
|
|
258
277
|
const {
|
|
259
278
|
records,
|
|
260
279
|
actions: {
|
|
@@ -2,13 +2,18 @@
|
|
|
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 _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
12
|
var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
|
8
13
|
var React = require('react');
|
|
9
|
-
var
|
|
10
|
-
var Button = require('@elliemae/ds-
|
|
11
|
-
var
|
|
14
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
15
|
+
var Button = require('@elliemae/ds-button');
|
|
16
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
12
17
|
var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
|
|
13
18
|
var ToolbarProvider = require('@elliemae/ds-shared/toolbar/ToolbarProvider');
|
|
14
19
|
var FocusGroupContext = require('@elliemae/ds-shared/FocusGroup/FocusGroupContext');
|
|
@@ -19,7 +24,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
19
24
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
20
25
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
21
26
|
var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
|
|
22
|
-
var MoreOptionsVert__default = /*#__PURE__*/_interopDefaultLegacy(MoreOptionsVert);
|
|
23
27
|
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
24
28
|
var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
|
|
25
29
|
var ToolbarProvider__default = /*#__PURE__*/_interopDefaultLegacy(ToolbarProvider);
|
|
@@ -38,7 +42,7 @@ const ToolbarDisclosure = props => {
|
|
|
38
42
|
extraParams,
|
|
39
43
|
renderToolbar,
|
|
40
44
|
isItemFocused,
|
|
41
|
-
icon = /*#__PURE__*/_jsx__default["default"](
|
|
45
|
+
icon = /*#__PURE__*/_jsx__default["default"](dsIcons.MoreOptionsVert, {
|
|
42
46
|
color: ['brand-primary', 800]
|
|
43
47
|
}),
|
|
44
48
|
rowSize
|
|
@@ -72,8 +76,8 @@ const ToolbarDisclosure = props => {
|
|
|
72
76
|
icon: icon,
|
|
73
77
|
innerRef: ref,
|
|
74
78
|
onClick: show,
|
|
75
|
-
onMouseEnter:
|
|
76
|
-
onMouseLeave:
|
|
79
|
+
onMouseEnter: dsUtilities.runAll(show, onMouseEnter),
|
|
80
|
+
onMouseLeave: dsUtilities.runAll(hide, onMouseLeave),
|
|
77
81
|
tabIndex: isItemFocused ? 0 : -1
|
|
78
82
|
}));
|
|
79
83
|
};
|