@elliemae/ds-treeview 2.0.2 → 2.1.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/cjs/TreeView.js +5 -103
  2. package/cjs/TreeViewContext.js +44 -47
  3. package/cjs/config/useTreeview.js +137 -0
  4. package/cjs/index.js +1 -7
  5. package/cjs/parts/CheckboxSelectable.js +5 -7
  6. package/cjs/parts/ExpandCaret.js +17 -11
  7. package/cjs/parts/Icon.js +4 -0
  8. package/cjs/parts/NestingSpace.js +15 -22
  9. package/cjs/parts/RadioSelectable.js +7 -9
  10. package/cjs/parts/TreeItem.js +14 -11
  11. package/cjs/parts/TreeList.js +4 -2
  12. package/cjs/plugins/dnd/TreeDndPlugin.js +1 -1
  13. package/cjs/react-desc-prop-types.js +28 -27
  14. package/cjs/related-components/TreeViewSearchBar.js +9 -1
  15. package/cjs/{deprecated/plugins/selectable/helper.js → sharedTypes.js} +0 -0
  16. package/cjs/utils/dnd-helpers.js +2 -4
  17. package/cjs/utils/group-expands-helpers.js +34 -8
  18. package/cjs/utils/keyboard-helpers.js +64 -60
  19. package/cjs/utils/object-helpers.js +25 -7
  20. package/cjs/utils/refs-helpers.js +2 -2
  21. package/cjs/utils/tree-helpers.js +42 -27
  22. package/cjs/utils/useDnDHelpers.js +107 -100
  23. package/cjs/utils/useInstanceRefActions.js +3 -2
  24. package/cjs/utils/useTree.js +25 -6
  25. package/esm/TreeView.js +6 -103
  26. package/esm/TreeViewContext.js +44 -47
  27. package/esm/config/useTreeview.js +129 -0
  28. package/esm/index.js +0 -8
  29. package/esm/parts/CheckboxSelectable.js +5 -7
  30. package/esm/parts/ExpandCaret.js +17 -11
  31. package/esm/parts/Icon.js +4 -0
  32. package/esm/parts/NestingSpace.js +15 -21
  33. package/esm/parts/RadioSelectable.js +7 -9
  34. package/esm/parts/TreeItem.js +14 -11
  35. package/esm/parts/TreeList.js +4 -2
  36. package/esm/plugins/dnd/TreeDndPlugin.js +1 -1
  37. package/esm/react-desc-prop-types.js +28 -27
  38. package/esm/related-components/TreeViewSearchBar.js +9 -1
  39. package/esm/{deprecated/plugins/selectable/helper.js → sharedTypes.js} +0 -0
  40. package/esm/utils/dnd-helpers.js +2 -4
  41. package/esm/utils/group-expands-helpers.js +34 -9
  42. package/esm/utils/keyboard-helpers.js +62 -58
  43. package/esm/utils/object-helpers.js +25 -7
  44. package/esm/utils/refs-helpers.js +2 -2
  45. package/esm/utils/tree-helpers.js +42 -27
  46. package/esm/utils/useDnDHelpers.js +107 -100
  47. package/esm/utils/useInstanceRefActions.js +3 -2
  48. package/esm/utils/useTree.js +25 -6
  49. package/package.json +17 -128
  50. package/types/TreeView.d.ts +4 -148
  51. package/types/TreeViewContext.d.ts +4 -106
  52. package/types/config/useTreeview.d.ts +7 -0
  53. package/types/index.d.ts +0 -1
  54. package/types/parts/CheckboxSelectable.d.ts +5 -6
  55. package/types/parts/ChildrenCountDisplayer.d.ts +6 -6
  56. package/types/parts/ExpandCaret.d.ts +6 -6
  57. package/types/parts/Icon.d.ts +7 -5
  58. package/types/parts/NestingSpace.d.ts +3 -8
  59. package/types/parts/RadioSelectable.d.ts +5 -6
  60. package/types/parts/TreeItem.d.ts +22 -14
  61. package/types/parts/TreeItemText.d.ts +5 -5
  62. package/types/parts/TreeList.d.ts +22 -9
  63. package/types/react-desc-prop-types.d.ts +124 -43
  64. package/types/related-components/TreeViewSearchBar.d.ts +14 -11
  65. package/types/sharedTypes.d.ts +54 -0
  66. package/types/utils/array-helpers.d.ts +2 -2
  67. package/types/utils/dnd-helpers.d.ts +26 -25
  68. package/types/utils/group-expands-helpers.d.ts +13 -10
  69. package/types/utils/keyboard-helpers.d.ts +5 -3
  70. package/types/utils/object-helpers.d.ts +6 -2
  71. package/types/utils/refs-helpers.d.ts +4 -1
  72. package/types/utils/selectable-helper.d.ts +7 -3
  73. package/types/utils/string-helpers.d.ts +1 -1
  74. package/types/utils/tree-helpers.d.ts +25 -11
  75. package/types/utils/useDnDHelpers.d.ts +23 -3
  76. package/types/utils/useInstanceRefActions.d.ts +3 -3
  77. package/types/utils/useTree.d.ts +8 -7
  78. package/cjs/deprecated/TreeView.js +0 -72
  79. package/cjs/deprecated/__testUtils__/utils.js +0 -89
  80. package/cjs/deprecated/index.js +0 -27
  81. package/cjs/deprecated/plugins/dnd/TreeDndPlugin.js +0 -119
  82. package/cjs/deprecated/plugins/dnd/index.js +0 -9
  83. package/cjs/deprecated/plugins/dnd/renderers/DraggableItem.js +0 -67
  84. package/cjs/deprecated/plugins/dnd/renderers/DroppableList.js +0 -181
  85. package/cjs/deprecated/plugins/dnd/utils.js +0 -157
  86. package/cjs/deprecated/plugins/index.js +0 -21
  87. package/cjs/deprecated/plugins/roving/TreeRovingPlugin.js +0 -109
  88. package/cjs/deprecated/plugins/roving/index.js +0 -9
  89. package/cjs/deprecated/plugins/searchable/SearchableTreePlugin.js +0 -109
  90. package/cjs/deprecated/plugins/searchable/index.js +0 -9
  91. package/cjs/deprecated/plugins/searchable/utils.js +0 -7
  92. package/cjs/deprecated/plugins/selectable/SelectablePluginTree.js +0 -290
  93. package/cjs/deprecated/plugins/selectable/index.js +0 -9
  94. package/cjs/deprecated/plugins/selectable/utils.js +0 -19
  95. package/cjs/deprecated/plugins/toolbar/TreeToolbarPlugin.js +0 -128
  96. package/cjs/deprecated/plugins/toolbar/index.js +0 -9
  97. package/cjs/deprecated/plugins/tree/TreeDataPlugin.js +0 -281
  98. package/cjs/deprecated/plugins/tree/index.js +0 -9
  99. package/cjs/deprecated/plugins/tree/useExpandTreeState.js +0 -143
  100. package/cjs/deprecated/plugins/tree/utils.js +0 -43
  101. package/cjs/deprecated/plugins/tree/walkTreeStrategy.js +0 -60
  102. package/cjs/deprecated/plugins/virtualization/TreeVirtualizationPlugin.js +0 -209
  103. package/cjs/deprecated/plugins/virtualization/index.js +0 -9
  104. package/cjs/deprecated/renderers.js +0 -76
  105. package/cjs/prop-types.js +0 -61
  106. package/esm/deprecated/TreeView.js +0 -61
  107. package/esm/deprecated/__testUtils__/utils.js +0 -79
  108. package/esm/deprecated/index.js +0 -14
  109. package/esm/deprecated/plugins/dnd/TreeDndPlugin.js +0 -110
  110. package/esm/deprecated/plugins/dnd/index.js +0 -1
  111. package/esm/deprecated/plugins/dnd/renderers/DraggableItem.js +0 -59
  112. package/esm/deprecated/plugins/dnd/renderers/DroppableList.js +0 -172
  113. package/esm/deprecated/plugins/dnd/utils.js +0 -139
  114. package/esm/deprecated/plugins/index.js +0 -7
  115. package/esm/deprecated/plugins/roving/TreeRovingPlugin.js +0 -96
  116. package/esm/deprecated/plugins/roving/index.js +0 -1
  117. package/esm/deprecated/plugins/searchable/SearchableTreePlugin.js +0 -99
  118. package/esm/deprecated/plugins/searchable/index.js +0 -1
  119. package/esm/deprecated/plugins/searchable/utils.js +0 -3
  120. package/esm/deprecated/plugins/selectable/SelectablePluginTree.js +0 -280
  121. package/esm/deprecated/plugins/selectable/index.js +0 -1
  122. package/esm/deprecated/plugins/selectable/utils.js +0 -15
  123. package/esm/deprecated/plugins/toolbar/TreeToolbarPlugin.js +0 -114
  124. package/esm/deprecated/plugins/toolbar/index.js +0 -1
  125. package/esm/deprecated/plugins/tree/TreeDataPlugin.js +0 -269
  126. package/esm/deprecated/plugins/tree/index.js +0 -1
  127. package/esm/deprecated/plugins/tree/useExpandTreeState.js +0 -135
  128. package/esm/deprecated/plugins/tree/utils.js +0 -28
  129. package/esm/deprecated/plugins/tree/walkTreeStrategy.js +0 -56
  130. package/esm/deprecated/plugins/virtualization/TreeVirtualizationPlugin.js +0 -197
  131. package/esm/deprecated/plugins/virtualization/index.js +0 -1
  132. package/esm/deprecated/renderers.js +0 -59
  133. package/esm/prop-types.js +0 -46
  134. package/types/deprecated/TreeView.d.ts +0 -8
  135. package/types/deprecated/__testUtils__/utils.d.ts +0 -72
  136. package/types/deprecated/index.d.ts +0 -2
  137. package/types/deprecated/plugins/dnd/TreeDndPlugin.d.ts +0 -1
  138. package/types/deprecated/plugins/dnd/index.d.ts +0 -1
  139. package/types/deprecated/plugins/dnd/renderers/DraggableItem.d.ts +0 -3
  140. package/types/deprecated/plugins/dnd/renderers/DroppableList.d.ts +0 -6
  141. package/types/deprecated/plugins/dnd/tests/TreeDndPlugin.test.d.ts +0 -0
  142. package/types/deprecated/plugins/dnd/utils.d.ts +0 -28
  143. package/types/deprecated/plugins/index.d.ts +0 -7
  144. package/types/deprecated/plugins/roving/TreeRovingPlugin.d.ts +0 -1
  145. package/types/deprecated/plugins/roving/index.d.ts +0 -1
  146. package/types/deprecated/plugins/searchable/SearchableTreePlugin.d.ts +0 -1
  147. package/types/deprecated/plugins/searchable/index.d.ts +0 -1
  148. package/types/deprecated/plugins/searchable/utils.d.ts +0 -1
  149. package/types/deprecated/plugins/selectable/SelectablePluginTree.d.ts +0 -1
  150. package/types/deprecated/plugins/selectable/helper.d.ts +0 -0
  151. package/types/deprecated/plugins/selectable/index.d.ts +0 -1
  152. package/types/deprecated/plugins/selectable/tests/SelectablePluginTree.test.d.ts +0 -1
  153. package/types/deprecated/plugins/selectable/utils.d.ts +0 -1
  154. package/types/deprecated/plugins/toolbar/TreeToolbarPlugin.d.ts +0 -1
  155. package/types/deprecated/plugins/toolbar/index.d.ts +0 -1
  156. package/types/deprecated/plugins/tree/TreeDataPlugin.d.ts +0 -1
  157. package/types/deprecated/plugins/tree/index.d.ts +0 -1
  158. package/types/deprecated/plugins/tree/tests/TreeDataPlugin.test.d.ts +0 -1
  159. package/types/deprecated/plugins/tree/useExpandTreeState.d.ts +0 -14
  160. package/types/deprecated/plugins/tree/utils.d.ts +0 -8
  161. package/types/deprecated/plugins/tree/walkTreeStrategy.d.ts +0 -9
  162. package/types/deprecated/plugins/virtualization/TreeVirtualizationPlugin.d.ts +0 -1
  163. package/types/deprecated/plugins/virtualization/index.d.ts +0 -1
  164. package/types/deprecated/renderers.d.ts +0 -19
  165. package/types/prop-types.d.ts +0 -26
@@ -1,209 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
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');
10
- var _jsx = require('@babel/runtime/helpers/jsx');
11
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
12
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
13
- var React = require('react');
14
- var reactWindowDynamicFork = require('@john-osullivan/react-window-dynamic-fork');
15
- var virtualization = require('@elliemae/ds-shared/virtualization');
16
- var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
17
- var renderers = require('../../renderers.js');
18
- var jsxRuntime = require('react/jsx-runtime');
19
-
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
23
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
24
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
25
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
- var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
27
-
28
- const _excluded = ["records", "itemRenderer", "innerRef"];
29
-
30
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
31
-
32
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
-
34
- function shallowDiffers(prev, next) {
35
- // eslint-disable-next-line no-restricted-syntax
36
- for (const attribute in prev) {
37
- if (!(attribute in next)) {
38
- return true;
39
- }
40
- } // eslint-disable-next-line no-restricted-syntax
41
-
42
-
43
- for (const attribute in next) {
44
- if (prev[attribute] !== next[attribute]) {
45
- return true;
46
- }
47
- }
48
-
49
- return false;
50
- } // more performant alternative to areEqual from react-window 1.8.5
51
-
52
-
53
- function areEqualRecords(prevProps, nextProps) {
54
- const {
55
- style: prevStyle,
56
- index: pIdx,
57
- data: pData
58
- } = prevProps;
59
- const {
60
- style: nextStyle,
61
- index: nIdx,
62
- data: nData
63
- } = nextProps;
64
- return !shallowDiffers(prevStyle, nextStyle) && !shallowDiffers(pData === null || pData === void 0 ? void 0 : pData.records[pIdx], nData === null || nData === void 0 ? void 0 : nData.records[nIdx]);
65
- } // memoized list items strategy
66
- // https://react-window.now.sh/#/examples/list/memoized-list-items
67
-
68
-
69
- const VirtualizedTreeItem = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/React__default["default"].forwardRef((_ref, ref) => {
70
- let {
71
- index,
72
- style,
73
- data
74
- } = _ref;
75
- const {
76
- instance,
77
- records,
78
- listRef
79
- } = data;
80
- const {
81
- itemRenderer,
82
- getItemProps,
83
- renderers
84
- } = instance.getInstance();
85
- const record = records[index];
86
- const ItemComponent = renderers.item; // needed to show the shadow below the row and because
87
- // of absolute positioning from react-window
88
-
89
- const mixedProps = getItemProps({
90
- index,
91
- record,
92
- style,
93
- listRef,
94
- innerRef: ref
95
- }, {
96
- record
97
- });
98
- record.style = style;
99
- return /*#__PURE__*/jsxRuntime.jsx(ItemComponent, _objectSpread(_objectSpread({}, mixedProps), {}, {
100
- tabIndex: -1,
101
- children: itemRenderer(mixedProps)
102
- }));
103
- }), areEqualRecords); // eslint-disable-next-line react/display-name
104
-
105
- const VirtualizedTree = (renderers$1, instance) => _ref2 => {
106
- let {
107
- records,
108
- itemRenderer,
109
- innerRef
110
- } = _ref2,
111
- rest = _objectWithoutProperties__default["default"](_ref2, _excluded);
112
-
113
- // eslint-disable-next-line react-hooks/rules-of-hooks
114
- const {
115
- props: {
116
- autoHeight,
117
- fluid,
118
- width,
119
- height = 500,
120
- noItemsPlaceholder = 'No items found',
121
- initialOffset
122
- },
123
- state: {
124
- listRef
125
- },
126
- renderers: currRenderers,
127
- setListRef
128
- } = instance.getInstance(); // eslint-disable-next-line react-hooks/rules-of-hooks
129
-
130
- const ListComponent = React.useMemo(() => virtualization.getVirtualListComponent({
131
- component: reactWindowDynamicFork.DynamicSizeList,
132
- height,
133
- fluid,
134
- autoHeight
135
- }), [height, autoHeight]); // eslint-disable-next-line react-hooks/rules-of-hooks
136
-
137
- const itemData = React.useMemo(() => ({
138
- instance,
139
- listRef,
140
- renderers: currRenderers,
141
- records
142
- }), [records, currRenderers, listRef]); // todo: revise this
143
-
144
- if (records && !records.length) {
145
- return /*#__PURE__*/_jsx__default["default"](renderers.TreeListNoItems, {}, void 0, noItemsPlaceholder);
146
- }
147
-
148
- return /*#__PURE__*/jsxRuntime.jsx(ListComponent, _objectSpread(_objectSpread({
149
- innerRef: setListRef
150
- }, rest), {}, {
151
- ref: listRef,
152
- component: reactWindowDynamicFork.DynamicSizeList,
153
- height: height,
154
- initialScrollOffset: initialOffset,
155
- itemCount: records.length,
156
- itemData: itemData,
157
- outerElementType: renderers$1.list,
158
- outerRef: innerRef,
159
- width: width,
160
- children: VirtualizedTreeItem
161
- }));
162
- };
163
-
164
- const TreeVirtualizationPlugin = createInstancePlugin__default["default"]('tree-virtualization', {
165
- state() {
166
- // eslint-disable-next-line react-hooks/rules-of-hooks
167
- const listRef = React.useRef();
168
- return {
169
- state: {
170
- listRef
171
- },
172
- actions: {
173
- scrollTo: function () {
174
- var _listRef$current;
175
-
176
- if (listRef !== null && listRef !== void 0 && (_listRef$current = listRef.current) !== null && _listRef$current !== void 0 && _listRef$current.scrollTo) {
177
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
178
- args[_key] = arguments[_key];
179
- }
180
-
181
- listRef.current.scrollTo(args);
182
- }
183
- },
184
- scrollToItem: function () {
185
- var _listRef$current2;
186
-
187
- if (listRef !== null && listRef !== void 0 && (_listRef$current2 = listRef.current) !== null && _listRef$current2 !== void 0 && _listRef$current2.scrollToItem) {
188
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
189
- args[_key2] = arguments[_key2];
190
- }
191
-
192
- listRef.current.scrollToItem(args);
193
- }
194
- }
195
- }
196
- };
197
- },
198
-
199
- renderers(renderers, instance) {
200
- return {
201
- item: renderers.item,
202
- // eslint-disable-next-line react-hooks/rules-of-hooks
203
- list: React.useMemo(() => VirtualizedTree(renderers, instance), [])
204
- };
205
- }
206
-
207
- });
208
-
209
- exports.TreeVirtualizationPlugin = TreeVirtualizationPlugin;
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var TreeVirtualizationPlugin = require('./TreeVirtualizationPlugin.js');
6
-
7
-
8
-
9
- exports.TreeVirtualizationPlugin = TreeVirtualizationPlugin.TreeVirtualizationPlugin;
@@ -1,76 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
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');
10
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
11
- var _jsx = require('@babel/runtime/helpers/jsx');
12
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
13
- var dsClassnames = require('@elliemae/ds-classnames');
14
- require('react');
15
- var jsxRuntime = require('react/jsx-runtime');
16
-
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
20
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
21
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
22
-
23
- const _excluded = ["leftAddons", "rightAddons", "children"];
24
-
25
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
26
-
27
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
28
- const treeListBlockName = 'tree-list';
29
- const treeItemBlockName = 'tree-item';
30
- const treeListNoItemsBn = "".concat(treeListBlockName, "-no-items");
31
- const TreeListItem = dsClassnames.aggregatedClasses('li', {
32
- 'data-testid': treeItemBlockName,
33
- role: 'treeitem'
34
- })(treeItemBlockName);
35
- const TreeListItemAddonsWrapper = dsClassnames.aggregatedClasses('div')(treeItemBlockName, 'addons');
36
- const TreeList = dsClassnames.aggregatedClasses('ul', {
37
- 'data-testid': treeListBlockName,
38
- role: 'tree'
39
- })(treeListBlockName, null, _ref => {
40
- let {
41
- rowSize
42
- } = _ref;
43
- return {
44
- ["rowsize-".concat(rowSize)]: rowSize
45
- };
46
- });
47
- const TreeListNoItems = dsClassnames.aggregatedClasses('div', {
48
- 'data-testid': treeListNoItemsBn
49
- })(treeListNoItemsBn);
50
-
51
- function TreeItem(_ref2) {
52
- let {
53
- leftAddons,
54
- rightAddons,
55
- children
56
- } = _ref2,
57
- rest = _objectWithoutProperties__default["default"](_ref2, _excluded);
58
-
59
- return /*#__PURE__*/jsxRuntime.jsxs(TreeListItem, _objectSpread(_objectSpread({}, rest), {}, {
60
- children: [leftAddons && /*#__PURE__*/_jsx__default["default"](TreeListItemAddonsWrapper, {}, void 0, leftAddons), children, rightAddons && /*#__PURE__*/_jsx__default["default"](TreeListItemAddonsWrapper, {}, void 0, rightAddons)]
61
- }));
62
- }
63
-
64
- const TreeRenderers = {
65
- list: TreeList,
66
- item: TreeItem
67
- };
68
-
69
- exports.TreeList = TreeList;
70
- exports.TreeListItem = TreeListItem;
71
- exports.TreeListItemAddonsWrapper = TreeListItemAddonsWrapper;
72
- exports.TreeListNoItems = TreeListNoItems;
73
- exports.TreeRenderers = TreeRenderers;
74
- exports.treeItemBlockName = treeItemBlockName;
75
- exports.treeListBlockName = treeListBlockName;
76
- exports.treeListNoItemsBn = treeListNoItemsBn;
package/cjs/prop-types.js DELETED
@@ -1,61 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var PropTypes = require('prop-types');
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
10
-
11
- /* eslint-disable max-lines */
12
- const InstanceActionsPropTypes = PropTypes__default["default"].shape({
13
- toggleExpandAll: PropTypes__default["default"].func,
14
- scrollTo: PropTypes__default["default"].func
15
- });
16
- const TreeViewInstancePropType = PropTypes__default["default"].shape({
17
- current: PropTypes__default["default"].oneOfType([PropTypes__default["default"].oneOf([null]), PropTypes__default["default"].shape({
18
- actions: InstanceActionsPropTypes.isRequired
19
- })])
20
- });
21
- const TreeViewItemPropType = PropTypes__default["default"].shape({
22
- children: PropTypes__default["default"].arrayOf(PropTypes__default["default"].object),
23
- id: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]),
24
- isGroup: PropTypes__default["default"].oneOfType([PropTypes__default["default"].oneOf([undefined, null]), PropTypes__default["default"].bool]),
25
- name: PropTypes__default["default"].string,
26
- node: PropTypes__default["default"].object
27
- });
28
- const TreeListPropTypes = {
29
- // required when drag and drop is enabled, tracks the drag and drop results after drop and visual feedback borders
30
- // passed down to TreeItem
31
- onMouseDragOverItem: PropTypes__default["default"].func
32
- };
33
- const TreeItemPropTypes = {
34
- item: TreeViewItemPropType.isRequired,
35
- index: PropTypes__default["default"].number,
36
- itemIndex: PropTypes__default["default"].number,
37
- itemWrapperStyle: PropTypes__default["default"].object,
38
- virtualItemRef: PropTypes__default["default"].func,
39
- spaceForNestingLevel: PropTypes__default["default"].number,
40
- onMouseDragOverItem: PropTypes__default["default"].func
41
- };
42
- const TreeItemExpandCaretPropTypes = {
43
- item: TreeViewItemPropType.isRequired
44
- };
45
- const TreeItemNestingSpacePropTypes = {
46
- item: TreeViewItemPropType.isRequired,
47
- spaceForNestingLevel: PropTypes__default["default"].number.isRequired
48
- };
49
- const TreeItemCheckboxPropTypes = {
50
- item: TreeViewItemPropType.isRequired,
51
- itemIndex: PropTypes__default["default"].number.isRequired
52
- };
53
-
54
- exports.InstanceActionsPropTypes = InstanceActionsPropTypes;
55
- exports.TreeItemCheckboxPropTypes = TreeItemCheckboxPropTypes;
56
- exports.TreeItemExpandCaretPropTypes = TreeItemExpandCaretPropTypes;
57
- exports.TreeItemNestingSpacePropTypes = TreeItemNestingSpacePropTypes;
58
- exports.TreeItemPropTypes = TreeItemPropTypes;
59
- exports.TreeListPropTypes = TreeListPropTypes;
60
- exports.TreeViewInstancePropType = TreeViewInstancePropType;
61
- exports.TreeViewItemPropType = TreeViewItemPropType;
@@ -1,61 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
8
- import _jsx from '@babel/runtime/helpers/esm/jsx';
9
- import 'core-js/modules/web.dom-collections.iterator.js';
10
- import 'react';
11
- import useDataList from '@elliemae/ds-shared/useDataList';
12
- import { TreeRenderers } from './renderers.js';
13
- import { TreePluginList } from './plugins/tree/TreeDataPlugin.js';
14
- import { TreeVirtualizationPlugin } from './plugins/virtualization/TreeVirtualizationPlugin.js';
15
- import { TreeRovingPlugin } from './plugins/roving/TreeRovingPlugin.js';
16
- import { jsx } from 'react/jsx-runtime';
17
-
18
- const _excluded = ["data", "plugins", "children", "roving", "rowSize"];
19
-
20
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
-
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
-
24
- const wrapComponentIfExists = (Wrapper, children) => Wrapper ? /*#__PURE__*/_jsx(Wrapper, {}, void 0, children) : children;
25
-
26
- function TreeView(_ref) {
27
- let {
28
- data,
29
- plugins = [],
30
- children,
31
- roving = true,
32
- rowSize = 'normal'
33
- } = _ref,
34
- props = _objectWithoutProperties(_ref, _excluded);
35
-
36
- const instance = useDataList(_objectSpread(_objectSpread({
37
- data,
38
- plugins: [TreePluginList, TreeVirtualizationPlugin, roving && TreeRovingPlugin, ...plugins],
39
- customDecorators: {
40
- shouldWalkChildren: []
41
- },
42
- // adds a new decorator to the useDataList specific for trees
43
- renderers: TreeRenderers
44
- }, props), {}, {
45
- rowSize
46
- }));
47
- const {
48
- list: ListComponent,
49
- listWrapper: Wrapper
50
- } = instance.renderers;
51
- const {
52
- getListProps
53
- } = instance;
54
- return wrapComponentIfExists(Wrapper, /*#__PURE__*/jsx(ListComponent, _objectSpread(_objectSpread({
55
- records: instance.records
56
- }, getListProps()), {}, {
57
- className: "em-ds-tv-row-size-".concat(rowSize)
58
- })));
59
- }
60
-
61
- export { TreeView };
@@ -1,79 +0,0 @@
1
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
2
- import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
3
- import 'core-js/modules/esnext.map.delete-all.js';
4
- import 'core-js/modules/esnext.map.emplace.js';
5
- import 'core-js/modules/esnext.map.every.js';
6
- import 'core-js/modules/esnext.map.filter.js';
7
- import 'core-js/modules/esnext.map.find.js';
8
- import 'core-js/modules/esnext.map.find-key.js';
9
- import 'core-js/modules/esnext.map.includes.js';
10
- import 'core-js/modules/esnext.map.key-of.js';
11
- import 'core-js/modules/esnext.map.map-keys.js';
12
- import 'core-js/modules/esnext.map.map-values.js';
13
- import 'core-js/modules/esnext.map.merge.js';
14
- import 'core-js/modules/esnext.map.reduce.js';
15
- import 'core-js/modules/esnext.map.some.js';
16
- import 'core-js/modules/esnext.map.update.js';
17
- import 'core-js/modules/web.dom-collections.iterator.js';
18
- import 'core-js/modules/esnext.async-iterator.for-each.js';
19
- import 'core-js/modules/esnext.iterator.constructor.js';
20
- import 'core-js/modules/esnext.iterator.for-each.js';
21
- import 'core-js/modules/es.string.replace.js';
22
- import 'core-js/modules/esnext.async-iterator.filter.js';
23
- import 'core-js/modules/esnext.iterator.filter.js';
24
- import 'react';
25
- import { render } from '@testing-library/react';
26
- import { treeItemBlockName } from '../renderers.js';
27
- import { TreeView } from '../TreeView.js';
28
- import { jsx } from 'react/jsx-runtime';
29
-
30
- const _excluded = ["data", "plugins"],
31
- _excluded2 = ["getAllByTestId"];
32
-
33
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
34
-
35
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
36
- const treeItemsToMap = items => {
37
- const itemsMap = new Map();
38
- items.forEach(item => itemsMap.set(item.textContent.replace(/\(.*?\)/, '').replace(' ', ''), item));
39
- return itemsMap;
40
- };
41
- /**
42
- * Returns items and itemMap with itemText as keys
43
- *
44
- * @param root0
45
- * @param root0.data
46
- * @param root0.plugins
47
- * @param key
48
- */
49
-
50
- function getTreeItemsFromRender(_ref) {
51
- let key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : treeItemBlockName;
52
-
53
- let {
54
- data,
55
- plugins
56
- } = _ref,
57
- props = _objectWithoutProperties(_ref, _excluded);
58
-
59
- const _render = render( /*#__PURE__*/jsx(TreeView, _objectSpread(_objectSpread({}, props), {}, {
60
- data: data,
61
- height: 1000,
62
- plugins: plugins,
63
- width: 300
64
- }))),
65
- {
66
- getAllByTestId
67
- } = _render,
68
- testingLibraryApi = _objectWithoutProperties(_render, _excluded2);
69
-
70
- const items = getAllByTestId(key);
71
- const itemsMap = treeItemsToMap(items);
72
- return _objectSpread({
73
- items,
74
- itemsMap,
75
- getAllByTestId
76
- }, testingLibraryApi);
77
- }
78
-
79
- export { getTreeItemsFromRender, treeItemsToMap };
@@ -1,14 +0,0 @@
1
- export { TreeView } from './TreeView.js';
2
- export { TreeDndPlugin } from './plugins/dnd/TreeDndPlugin.js';
3
- export { TreeRovingPlugin } from './plugins/roving/TreeRovingPlugin.js';
4
- export { SelectablePluginTree } from './plugins/selectable/SelectablePluginTree.js';
5
- export { TreeToolbarPlugin } from './plugins/toolbar/TreeToolbarPlugin.js';
6
- export { TreePluginList } from './plugins/tree/TreeDataPlugin.js';
7
- export { TreeVirtualizationPlugin } from './plugins/virtualization/TreeVirtualizationPlugin.js';
8
- export { SearchableTreePlugin } from './plugins/searchable/SearchableTreePlugin.js';
9
-
10
- /* eslint-disable global-require */
11
- // Polyfill ResizeObserver for demo
12
- if (typeof ResizeObserver === 'undefined') {
13
- global.ResizeObserver = require('resize-observer-polyfill').default;
14
- }
@@ -1,110 +0,0 @@
1
- import 'core-js/modules/esnext.async-iterator.filter.js';
2
- import 'core-js/modules/esnext.iterator.constructor.js';
3
- import 'core-js/modules/esnext.iterator.filter.js';
4
- import 'core-js/modules/esnext.async-iterator.for-each.js';
5
- import 'core-js/modules/esnext.iterator.for-each.js';
6
- import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
7
- import 'core-js/modules/web.dom-collections.iterator.js';
8
- import { useState, useCallback, useMemo } from 'react';
9
- import { isEqual } from '@elliemae/ds-utilities';
10
- import createInstancePlugin from '@elliemae/ds-shared/createDataInstance/createInstancePlugin';
11
- import DraggableItem from './renderers/DraggableItem.js';
12
- import DroppableList from './renderers/DroppableList.js';
13
- import { getTreePosition, changePositionSameArray, changePositionBetweenDifferentArrays } from './utils.js';
14
-
15
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
-
17
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
18
- const TreeDndPlugin = createInstancePlugin('tree-dnd', {
19
- state(instance) {
20
- const {
21
- originalData,
22
- props: {
23
- childrenKey = 'children',
24
- onOrderChange = () => null
25
- }
26
- } = instance; // eslint-disable-next-line react-hooks/rules-of-hooks
27
-
28
- const [draggedRecord, setDraggedRecord] = useState(null); // eslint-disable-next-line react-hooks/rules-of-hooks
29
-
30
- const changeRecordsPosition = useCallback(_ref => {
31
- let {
32
- sourceRecord,
33
- targetRecord,
34
- combineWith,
35
- down
36
- } = _ref;
37
- let nextTreeData;
38
- const sourceTreePosition = getTreePosition(sourceRecord.path);
39
- let targetTreePosition = {};
40
-
41
- if (combineWith) {
42
- targetTreePosition = {
43
- parentPath: combineWith.path
44
- };
45
- } else if (targetRecord) {
46
- targetTreePosition = getTreePosition(targetRecord.path);
47
- } else {
48
- // there is no reordering
49
- // Reason: outside tree / outside drop target
50
- return originalData;
51
- } // if we are not combining elements we change the same array
52
- // if we combine elements, we change a different array (the children of the target)
53
-
54
-
55
- const changingSameArray = !combineWith && isEqual(sourceTreePosition.parentPath, targetTreePosition.parentPath);
56
-
57
- if (changingSameArray) {
58
- nextTreeData = changePositionSameArray({
59
- sourceRecord,
60
- targetRecord,
61
- sourceTreePosition,
62
- targetTreePosition,
63
- data: originalData
64
- });
65
- } else {
66
- nextTreeData = changePositionBetweenDifferentArrays({
67
- sourceRecord,
68
- targetRecord: combineWith || targetRecord,
69
- combineWith,
70
- sourceTreePosition,
71
- targetTreePosition,
72
- data: originalData,
73
- down
74
- });
75
- }
76
-
77
- onOrderChange(nextTreeData, sourceRecord); // console.log('nextTreeData :>> ', nextTreeData);
78
- // console.log(
79
- // `${sourceRecord?.data?.name} --> ${
80
- // combineWith?.data?.name || targetRecord?.data?.name
81
- // }`,
82
- // );
83
-
84
- return nextTreeData;
85
- }, [originalData, childrenKey]);
86
- return {
87
- state: {
88
- draggedRecord
89
- },
90
- actions: {
91
- setDraggedRecord,
92
- changeRecordsPosition
93
- }
94
- };
95
- },
96
-
97
- renderers(renderers, instance) {
98
- // eslint-disable-next-line react-hooks/rules-of-hooks
99
- const item = useMemo(() => DraggableItem(renderers), []); // eslint-disable-next-line react-hooks/rules-of-hooks
100
-
101
- const list = useMemo(() => DroppableList(renderers, instance), []);
102
- return _objectSpread(_objectSpread({}, renderers), {}, {
103
- item,
104
- list
105
- });
106
- }
107
-
108
- });
109
-
110
- export { TreeDndPlugin };
@@ -1 +0,0 @@
1
- export { TreeDndPlugin } from './TreeDndPlugin.js';