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