@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,21 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var TreeDndPlugin = require('./dnd/TreeDndPlugin.js');
6
- var TreeRovingPlugin = require('./roving/TreeRovingPlugin.js');
7
- var SelectablePluginTree = require('./selectable/SelectablePluginTree.js');
8
- var TreeToolbarPlugin = require('./toolbar/TreeToolbarPlugin.js');
9
- var TreeDataPlugin = require('./tree/TreeDataPlugin.js');
10
- var TreeVirtualizationPlugin = require('./virtualization/TreeVirtualizationPlugin.js');
11
- var SearchableTreePlugin = require('./searchable/SearchableTreePlugin.js');
12
-
13
-
14
-
15
- exports.TreeDndPlugin = TreeDndPlugin.TreeDndPlugin;
16
- exports.TreeRovingPlugin = TreeRovingPlugin.TreeRovingPlugin;
17
- exports.SelectablePluginTree = SelectablePluginTree.SelectablePluginTree;
18
- exports.TreeToolbarPlugin = TreeToolbarPlugin.TreeToolbarPlugin;
19
- exports.TreePluginList = TreeDataPlugin.TreePluginList;
20
- exports.TreeVirtualizationPlugin = TreeVirtualizationPlugin.TreeVirtualizationPlugin;
21
- exports.SearchableTreePlugin = SearchableTreePlugin.SearchableTreePlugin;
@@ -1,109 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
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');
14
- var React = require('react');
15
- var FocusGroupProvider = require('@elliemae/ds-shared/FocusGroup/FocusGroupManager');
16
- var useFocusGroupItem = require('@elliemae/ds-shared/FocusGroup/useFocusGroupItem');
17
- var dsUtilities = require('@elliemae/ds-utilities');
18
- var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
19
- var jsxRuntime = require('react/jsx-runtime');
20
-
21
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
-
23
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
24
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
25
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
26
- var FocusGroupProvider__default = /*#__PURE__*/_interopDefaultLegacy(FocusGroupProvider);
27
- var useFocusGroupItem__default = /*#__PURE__*/_interopDefaultLegacy(useFocusGroupItem);
28
- var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
29
-
30
- const _excluded = ["innerRef", "onFocus", "onBlur"];
31
-
32
- 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; }
33
-
34
- 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; }
35
-
36
- const TreeListRovingHoc = instance => props => {
37
- const {
38
- hotKeys
39
- } = instance.getInstance();
40
- return /*#__PURE__*/_jsx__default["default"](FocusGroupProvider__default["default"], {
41
- hotKeys: hotKeys
42
- }, void 0, props.children);
43
- }; // eslint-disable-next-line react/display-name
44
-
45
-
46
- const TreeItemRovingHoc = Component => _ref => {
47
- let {
48
- innerRef,
49
- onFocus,
50
- onBlur
51
- } = _ref,
52
- props = _objectWithoutProperties__default["default"](_ref, _excluded);
53
-
54
- // eslint-disable-next-line react-hooks/rules-of-hooks
55
- const ref = React.useRef(null); // eslint-disable-next-line react-hooks/rules-of-hooks
56
-
57
- useFocusGroupItem__default["default"](ref, {
58
- onFocus,
59
- onBlur
60
- });
61
- return /*#__PURE__*/jsxRuntime.jsx(Component, _objectSpread(_objectSpread({}, props), {}, {
62
- innerRef: dsUtilities.mergeRefs(ref, innerRef)
63
- }));
64
- };
65
-
66
- const TreeRovingPlugin = createInstancePlugin__default["default"]('tree-data', {
67
- getItemProps(props, instance) {
68
- const [isItemFocused, setIsItemFocused] = React.useState(false);
69
- return _objectSpread(_objectSpread({}, props), {}, {
70
- onBlur: () => setIsItemFocused(false),
71
- // eslint-disable-next-line no-unused-vars
72
- onFocus: e => {
73
- var _instance$props;
74
-
75
- setIsItemFocused(true);
76
-
77
- if (instance !== null && instance !== void 0 && (_instance$props = instance.props) !== null && _instance$props !== void 0 && _instance$props.onItemFocus) {
78
- instance.props.onItemFocus({
79
- scrollToItem: function () {
80
- var _props$listRef, _props$listRef$curren;
81
-
82
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
83
- args[_key] = arguments[_key];
84
- }
85
-
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);
87
- },
88
- itemIndex: props === null || props === void 0 ? void 0 : props.index
89
- });
90
- }
91
- },
92
- isItemFocused,
93
- 'data-index': props.index
94
- });
95
- },
96
-
97
- renderers(renderers, instance) {
98
- const ListWrapper = React.useMemo(() => TreeListRovingHoc(instance), []);
99
- const Item = React.useMemo(() => TreeItemRovingHoc(renderers.item), []);
100
- return _objectSpread(_objectSpread({}, renderers), {}, {
101
- listWrapper: ListWrapper,
102
- item: Item
103
- });
104
- }
105
-
106
- });
107
- TreeRovingPlugin.order = 0;
108
-
109
- exports.TreeRovingPlugin = TreeRovingPlugin;
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var TreeRovingPlugin = require('./TreeRovingPlugin.js');
6
-
7
-
8
-
9
- exports.TreeRovingPlugin = TreeRovingPlugin.TreeRovingPlugin;
@@ -1,109 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
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');
9
- var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
10
- var Highlighter = require('react-highlight-words');
11
- require('react');
12
- var dsUtilities = require('@elliemae/ds-utilities');
13
-
14
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
-
16
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
17
- var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
18
- var Highlighter__default = /*#__PURE__*/_interopDefaultLegacy(Highlighter);
19
-
20
- const markParentsAsChildMatch = record => {
21
- let currRecord = record;
22
-
23
- while (currRecord.parentNode) {
24
- currRecord.parentNode.childMatch = true;
25
- currRecord = currRecord.parentNode;
26
- }
27
- };
28
-
29
- function transformRecords(records, instance) {
30
- var _instance$getListRef, _instance$getListRef$;
31
-
32
- // gets the ul with overflow: auto
33
- const list = (_instance$getListRef = instance.getListRef()) === null || _instance$getListRef === void 0 ? void 0 : (_instance$getListRef$ = _instance$getListRef.current) === null || _instance$getListRef$ === void 0 ? void 0 : _instance$getListRef$.parentElement;
34
- const {
35
- props: {
36
- searchQuery
37
- }
38
- } = instance.getInstance();
39
- if (!searchQuery) return records; // Scroll the list to the top once the search is triggered
40
-
41
- list === null || list === void 0 ? void 0 : list.scrollTo(0, 0);
42
- return records.filter(record => record.selfMatch || record.childMatch);
43
- }
44
-
45
- transformRecords.order = 0;
46
-
47
- function transformRecord(record, instance) {
48
- const {
49
- props: {
50
- searchQuery
51
- },
52
- getItemLabel
53
- } = instance.getInstance();
54
-
55
- if (searchQuery && getItemLabel(record).toLowerCase().indexOf(searchQuery.toLowerCase()) !== -1) {
56
- markParentsAsChildMatch(record); // eslint-disable-next-line no-param-reassign
57
-
58
- record.selfMatch = true;
59
- }
60
-
61
- return record;
62
- }
63
-
64
- transformRecord.order = 0;
65
-
66
- const itemRenderer = (value, itemProps, instance) => {
67
- const {
68
- props: {
69
- searchQuery,
70
- showHighlight = true
71
- }
72
- } = instance.getInstance();
73
- if (!showHighlight || !searchQuery) return value;
74
- return /*#__PURE__*/_jsx__default["default"](Highlighter__default["default"], {
75
- autoEscape: true,
76
- highlightClassName: "tree-text-highlight",
77
- searchWords: [searchQuery],
78
- textToHighlight: value
79
- });
80
- };
81
-
82
- itemRenderer.order = 0;
83
- const SearchableTreePlugin = createInstancePlugin__default["default"]('searchable-tree', {
84
- instance: instance => {
85
- const {
86
- props: {
87
- searchQuery
88
- }
89
- } = instance; // eslint-disable-next-line react-hooks/rules-of-hooks
90
-
91
- const prevSearchQuery = dsUtilities.usePrevious(searchQuery);
92
- return {
93
- prevSearchQuery
94
- };
95
- },
96
- shouldWalkChildren: (record, instance) => {
97
- const {
98
- props: {
99
- searchQuery
100
- }
101
- } = instance.getInstance();
102
- return !!searchQuery;
103
- },
104
- record: transformRecord,
105
- records: transformRecords,
106
- itemRenderer
107
- });
108
-
109
- exports.SearchableTreePlugin = SearchableTreePlugin;
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var SearchableTreePlugin = require('./SearchableTreePlugin.js');
6
-
7
-
8
-
9
- exports.SearchableTreePlugin = SearchableTreePlugin.SearchableTreePlugin;
@@ -1,7 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const getListFromDocument = document.querySelector("[data-testid=\"tree-list\"]");
6
-
7
- exports.getListFromDocument = getListFromDocument;
@@ -1,290 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _jsx = require('@babel/runtime/helpers/jsx');
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');
15
- var React = require('react');
16
- var dsForm = require('@elliemae/ds-form');
17
- var dsUtilities = require('@elliemae/ds-utilities');
18
- var createInstancePlugin = require('@elliemae/ds-shared/createDataInstance/createInstancePlugin');
19
- var walkTreeStrategy = require('../tree/walkTreeStrategy.js');
20
- var utils = require('../tree/utils.js');
21
- var utils$1 = require('./utils.js');
22
- require('react/jsx-runtime');
23
-
24
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
25
-
26
- var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
27
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
28
- var createInstancePlugin__default = /*#__PURE__*/_interopDefaultLegacy(createInstancePlugin);
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
- const updateParentState = _ref => {
35
- let {
36
- node,
37
- checked,
38
- selectionState,
39
- isCurrentParentChildren = true
40
- } = _ref;
41
- const {
42
- parentNode
43
- } = node;
44
-
45
- if (parentNode) {
46
- let nextSelectedChildrenAmount; // increase or decrease the amount
47
-
48
- if (checked === true && isCurrentParentChildren) nextSelectedChildrenAmount = parentNode.selectedChildren.length;
49
- if (checked === true && !isCurrentParentChildren) nextSelectedChildrenAmount = parentNode.selectedChildren.length + 1;
50
- if (checked === false) nextSelectedChildrenAmount = parentNode.selectedChildren.length - 1;
51
- const parentChildren = utils.getParentChildren(node);
52
- const parentChildrenLength = parentChildren && parentChildren.length; // check parent state
53
-
54
- const parentState = utils$1.checkParentState(nextSelectedChildrenAmount, parentChildrenLength, checked);
55
- selectionState[parentNode.id || 'all'] = parentState;
56
- updateParentState({
57
- node: parentNode,
58
- checked: parentState,
59
- selectionState,
60
- isCurrentParentChildren: false
61
- });
62
- }
63
- };
64
-
65
- const useSelectableTreeState = instance => {
66
- const {
67
- originalData,
68
- idKey = 'id',
69
- props: {
70
- onSelect = () => null,
71
- selection: selectionProp = {},
72
- onSelectionChange = () => null,
73
- isMultiSelect = false,
74
- isSingleSelect = false
75
- }
76
- } = instance;
77
- const [selection, setSelection] = dsUtilities.useDerivedStateFromProps(selectionProp);
78
- const isAllSelected = React.useMemo(() => {
79
- if (!isMultiSelect) return false;
80
- const amountSelected = originalData.reduce((result, item) => selection[item[idKey]] === true ? result + 1 : result, 0);
81
-
82
- if (amountSelected === originalData.length) {
83
- return true;
84
- }
85
-
86
- if (amountSelected === 0) {
87
- return false;
88
- }
89
-
90
- return 'mixed';
91
- }, [selection]);
92
- const select = React.useCallback(function (record) {
93
- let additionalActions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
94
-
95
- if (dsUtilities.isFunction(onSelect)) {
96
- onSelect(record.data, {
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
-
102
- if (additionalActions.scrollToItem) additionalActions.scrollToItem(args);
103
- },
104
- itemIndex: additionalActions === null || additionalActions === void 0 ? void 0 : additionalActions.itemIndex
105
- });
106
- }
107
-
108
- setSelection(prevSelection => {
109
- const nextSelectionState = isMultiSelect ? _objectSpread({}, prevSelection) : {};
110
- const nextState = isMultiSelect ? !prevSelection[record.id] : {};
111
- nextSelectionState[record.id] = nextState;
112
-
113
- if (isMultiSelect || isSingleSelect) {
114
- // if node group then select all its leafs
115
- if (record.isGroup && isMultiSelect) {
116
- if (record.parentNode && nextState) record.parentNode.selectedChildren.push(record.id);
117
- if (!nextState) record.selectedChildren = []; // get all children
118
-
119
- walkTreeStrategy.walkTreeStrategy({
120
- data: record.data.children,
121
- parentNode: record,
122
- cb: node => {
123
- const parentId = utils.getParentId(node); // if direct child and truthy next state
124
-
125
- if (nextState && parentId === record.id) {
126
- record.selectedChildren.push(node.id);
127
- }
128
-
129
- nextSelectionState[node.id] = nextState;
130
- }
131
- });
132
- } // mutates the cloned selection state
133
-
134
-
135
- updateParentState({
136
- node: record,
137
- checked: nextState,
138
- selectionState: nextSelectionState
139
- });
140
- }
141
-
142
- onSelectionChange(nextSelectionState, record.data, {
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
-
148
- if (additionalActions.scrollToItem) additionalActions.scrollToItem(args);
149
- },
150
- itemIndex: additionalActions === null || additionalActions === void 0 ? void 0 : additionalActions.itemIndex
151
- });
152
- return nextSelectionState;
153
- });
154
- }, []);
155
- return {
156
- state: {
157
- selection,
158
- isAllSelected
159
- },
160
- actions: {
161
- select
162
- }
163
- };
164
- };
165
-
166
- const updateParentInternalState = (record, checked) => {
167
- const {
168
- parentNode
169
- } = record;
170
- if (!parentNode) return; // if next state is checked
171
-
172
- if (checked === true) {
173
- parentNode.selectedChildren.push(record.id);
174
- } else {
175
- parentNode.selectedChildren = parentNode.selectedChildren.filter(id => id !== record.id);
176
- }
177
- };
178
- const SelectablePluginTree = createInstancePlugin__default["default"]('selectable', {
179
- state: useSelectableTreeState,
180
- // itemRenderer: SelectionFormatter,
181
- record: (record, instance) => {
182
- const {
183
- state: {
184
- selection
185
- },
186
- props: {
187
- isMultiSelect,
188
- isSingleSelect
189
- }
190
- } = instance.getInstance();
191
- record.checked = selection[record.id];
192
-
193
- if (isMultiSelect || isSingleSelect) {
194
- // if it's the root of the tree declare the selectedChildren array
195
- if (!record.parentNode.id && record.parentNode.selectedChildren === undefined) {
196
- record.parentNode.selectedChildren = [];
197
- }
198
-
199
- if (record.isGroup && record.selectedChildren === undefined) {
200
- record.selectedChildren = [];
201
- }
202
-
203
- updateParentInternalState(record, record.checked);
204
- }
205
-
206
- return record;
207
- },
208
-
209
- getItemProps(props, instance, _ref3) {
210
- let {
211
- record
212
- } = _ref3;
213
- const {
214
- actions: {
215
- select
216
- },
217
- props: {
218
- isMultiSelect,
219
- isSingleSelect,
220
- disableLeafs,
221
- disableGroups
222
- }
223
- } = instance.getInstance();
224
-
225
- const handleSelect = () => select(record, {
226
- scrollToItem: function () {
227
- var _props$listRef, _props$listRef$curren;
228
-
229
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
230
- args[_key3] = arguments[_key3];
231
- }
232
-
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);
234
- },
235
- itemIndex: props === null || props === void 0 ? void 0 : props.index
236
- });
237
-
238
- const checkboxAddon = isMultiSelect && /*#__PURE__*/_jsx__default["default"](dsForm.DSCheckbox, {
239
- checked: record.checked,
240
- disabled: record.isGroup ? disableGroups : disableLeafs,
241
- className: "tree-item-checkbox",
242
- "data-testid": "tree-item-checkbox",
243
- onChange: handleSelect,
244
- tabIndex: -1
245
- });
246
-
247
- const radioAddon = isSingleSelect && !isMultiSelect && /*#__PURE__*/_jsx__default["default"](dsForm.DSRadio, {
248
- checked: !!record.checked,
249
- disabled: record.isGroup ? disableGroups : disableLeafs,
250
- className: "tree-item-radio",
251
- "data-testid": "tree-item-radio",
252
- onChange: handleSelect,
253
- tabIndex: -1
254
- });
255
-
256
- if (isMultiSelect || isSingleSelect) {
257
- return _objectSpread(_objectSpread({}, props), {}, {
258
- leftAddons: [checkboxAddon, radioAddon, ...(props.leftAddons || [])],
259
- 'aria-selected': !!record.checked
260
- });
261
- }
262
-
263
- return _objectSpread(_objectSpread({}, props), {}, {
264
- onClick: handleSelect,
265
- className: dsUtilities.cx(props.className, record.checked && 'selected'),
266
- 'aria-selected': !!record.checked
267
- });
268
- },
269
-
270
- hotKeys(grid) {
271
- return {
272
- key: 'space',
273
- handler: _ref4 => {
274
- let {
275
- index
276
- } = _ref4;
277
- const {
278
- records,
279
- actions: {
280
- select
281
- }
282
- } = grid.getInstance();
283
- select(records[index]);
284
- }
285
- };
286
- }
287
-
288
- });
289
-
290
- exports.SelectablePluginTree = SelectablePluginTree;
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var SelectablePluginTree = require('./SelectablePluginTree.js');
6
-
7
-
8
-
9
- exports.SelectablePluginTree = SelectablePluginTree.SelectablePluginTree;
@@ -1,19 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- const checkParentState = (nextSelectedChildrenAmount, parentChildrenLength, checked) => {
6
- let parentState = false;
7
-
8
- if (nextSelectedChildrenAmount === parentChildrenLength) {
9
- parentState = true;
10
- } else if (nextSelectedChildrenAmount > 0 && nextSelectedChildrenAmount < parentChildrenLength) {
11
- parentState = 'mixed';
12
- } else if (parentChildrenLength && checked === 'mixed') {
13
- parentState = 'mixed';
14
- }
15
-
16
- return parentState;
17
- };
18
-
19
- exports.checkParentState = checkParentState;