@elliemae/ds-treeview 2.2.0-alpha.4 → 3.0.0-next.2

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 (206) hide show
  1. package/cjs/TreeView.js +27 -49
  2. package/cjs/TreeViewContext.js +37 -61
  3. package/cjs/config/cssClassesConstants.js +13 -41
  4. package/cjs/config/useTreeview.js +78 -116
  5. package/cjs/hoc/DnDTreeContext.js +18 -0
  6. package/cjs/hoc/SortableItemContext.js +21 -0
  7. package/cjs/hoc/WithConditionalDnDContext.js +138 -0
  8. package/cjs/hoc/WithDnDSortableItemContext.js +70 -0
  9. package/cjs/index.js +26 -37
  10. package/cjs/parts/CheckboxSelectable.js +59 -70
  11. package/cjs/parts/ChildrenCountDisplayer.js +28 -45
  12. package/cjs/parts/DnDHandle.js +46 -0
  13. package/cjs/parts/DropIndicator.js +75 -0
  14. package/cjs/parts/ExpandCaret.js +83 -85
  15. package/cjs/parts/Icon.js +31 -46
  16. package/cjs/parts/NestingSpace.js +35 -43
  17. package/cjs/parts/RadioSelectable.js +37 -52
  18. package/cjs/parts/TreeItem.js +141 -147
  19. package/cjs/parts/TreeItemText.js +95 -88
  20. package/cjs/parts/TreeList.js +130 -119
  21. package/cjs/plugins/dnd/TreeDndPlugin.js +7 -59
  22. package/cjs/plugins/dnd/index.js +9 -28
  23. package/cjs/plugins/index.js +21 -34
  24. package/cjs/plugins/roving/TreeRovingPlugin.js +7 -35
  25. package/cjs/plugins/roving/index.js +9 -28
  26. package/cjs/plugins/searchable/SearchableTreePlugin.js +7 -35
  27. package/cjs/plugins/searchable/index.js +9 -28
  28. package/cjs/plugins/selectable/SelectablePluginTree.js +7 -35
  29. package/cjs/plugins/selectable/index.js +9 -28
  30. package/cjs/plugins/toolbar/TreeToolbarPlugin.js +7 -35
  31. package/cjs/plugins/toolbar/index.js +9 -28
  32. package/cjs/plugins/tree/TreeDataPlugin.js +7 -35
  33. package/cjs/plugins/tree/index.js +9 -28
  34. package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js +7 -35
  35. package/cjs/plugins/virtualization/index.js +9 -28
  36. package/cjs/react-desc-prop-types.js +54 -82
  37. package/cjs/related-components/TreeViewSearchBar.js +40 -42
  38. package/cjs/sharedTypes.js +2 -27
  39. package/cjs/utils/array-helpers.js +11 -35
  40. package/cjs/utils/group-expands-helpers.js +59 -86
  41. package/cjs/utils/keyboard-helpers.js +90 -85
  42. package/cjs/utils/object-helpers.js +36 -43
  43. package/cjs/utils/refs-helpers.js +22 -43
  44. package/cjs/utils/selectable-helper.js +53 -61
  45. package/cjs/utils/string-helpers.js +7 -35
  46. package/cjs/utils/tree-helpers.js +161 -105
  47. package/cjs/utils/useInstanceRefActions.js +43 -54
  48. package/cjs/utils/useTree.js +80 -76
  49. package/esm/TreeView.js +16 -18
  50. package/esm/TreeViewContext.js +31 -32
  51. package/esm/config/cssClassesConstants.js +6 -12
  52. package/esm/config/useTreeview.js +56 -73
  53. package/esm/hoc/DnDTreeContext.js +14 -0
  54. package/esm/hoc/SortableItemContext.js +17 -0
  55. package/esm/hoc/WithConditionalDnDContext.js +128 -0
  56. package/esm/hoc/WithDnDSortableItemContext.js +61 -0
  57. package/esm/index.js +9 -8
  58. package/esm/parts/CheckboxSelectable.js +46 -36
  59. package/esm/parts/ChildrenCountDisplayer.js +20 -16
  60. package/esm/parts/DnDHandle.js +38 -0
  61. package/esm/parts/DropIndicator.js +68 -0
  62. package/esm/parts/ExpandCaret.js +72 -54
  63. package/esm/parts/Icon.js +22 -16
  64. package/esm/parts/NestingSpace.js +27 -14
  65. package/esm/parts/RadioSelectable.js +28 -20
  66. package/esm/parts/TreeItem.js +125 -114
  67. package/esm/parts/TreeItemText.js +85 -58
  68. package/esm/parts/TreeList.js +119 -91
  69. package/esm/plugins/dnd/TreeDndPlugin.js +3 -30
  70. package/esm/plugins/dnd/index.js +1 -3
  71. package/esm/plugins/index.js +7 -9
  72. package/esm/plugins/roving/TreeRovingPlugin.js +3 -6
  73. package/esm/plugins/roving/index.js +1 -3
  74. package/esm/plugins/searchable/SearchableTreePlugin.js +3 -6
  75. package/esm/plugins/searchable/index.js +1 -3
  76. package/esm/plugins/selectable/SelectablePluginTree.js +3 -6
  77. package/esm/plugins/selectable/index.js +1 -3
  78. package/esm/plugins/toolbar/TreeToolbarPlugin.js +3 -6
  79. package/esm/plugins/toolbar/index.js +1 -3
  80. package/esm/plugins/tree/TreeDataPlugin.js +3 -6
  81. package/esm/plugins/tree/index.js +1 -3
  82. package/esm/plugins/virtualization/TreeVirtualizationPlugin.js +3 -6
  83. package/esm/plugins/virtualization/index.js +1 -3
  84. package/esm/react-desc-prop-types.js +44 -47
  85. package/esm/related-components/TreeViewSearchBar.js +32 -13
  86. package/esm/sharedTypes.js +1 -2
  87. package/esm/utils/array-helpers.js +6 -6
  88. package/esm/utils/group-expands-helpers.js +46 -56
  89. package/esm/utils/keyboard-helpers.js +74 -46
  90. package/esm/utils/object-helpers.js +31 -14
  91. package/esm/utils/refs-helpers.js +19 -15
  92. package/esm/utils/selectable-helper.js +43 -32
  93. package/esm/utils/string-helpers.js +3 -6
  94. package/esm/utils/tree-helpers.js +143 -73
  95. package/esm/utils/useInstanceRefActions.js +35 -21
  96. package/esm/utils/useTree.js +59 -35
  97. package/package.json +35 -19
  98. package/types/hoc/DnDTreeContext.d.ts +14 -0
  99. package/types/hoc/SortableItemContext.d.ts +19 -0
  100. package/types/hoc/WithConditionalDnDContext.d.ts +4 -0
  101. package/types/hoc/WithDnDSortableItemContext.d.ts +4 -0
  102. package/types/parts/DnDHandle.d.ts +6 -0
  103. package/types/parts/DropIndicator.d.ts +10 -0
  104. package/types/parts/TreeItem.d.ts +4 -11
  105. package/types/parts/TreeList.d.ts +0 -4
  106. package/types/plugins/dnd/TreeDndPlugin.d.ts +0 -2
  107. package/types/react-desc-prop-types.d.ts +17 -3
  108. package/types/sharedTypes.d.ts +1 -8
  109. package/types/utils/keyboard-helpers.d.ts +2 -1
  110. package/types/utils/refs-helpers.d.ts +1 -1
  111. package/types/utils/tree-helpers.d.ts +4 -1
  112. package/types/utils/useTree.d.ts +1 -0
  113. package/cjs/TreeView.js.map +0 -7
  114. package/cjs/TreeViewContext.js.map +0 -7
  115. package/cjs/config/cssClassesConstants.js.map +0 -7
  116. package/cjs/config/useTreeview.js.map +0 -7
  117. package/cjs/index.js.map +0 -7
  118. package/cjs/parts/CheckboxSelectable.js.map +0 -7
  119. package/cjs/parts/ChildrenCountDisplayer.js.map +0 -7
  120. package/cjs/parts/ExpandCaret.js.map +0 -7
  121. package/cjs/parts/Icon.js.map +0 -7
  122. package/cjs/parts/NestingSpace.js.map +0 -7
  123. package/cjs/parts/RadioSelectable.js.map +0 -7
  124. package/cjs/parts/TreeItem.js.map +0 -7
  125. package/cjs/parts/TreeItemText.js.map +0 -7
  126. package/cjs/parts/TreeList.js.map +0 -7
  127. package/cjs/plugins/dnd/TreeDndPlugin.js.map +0 -7
  128. package/cjs/plugins/dnd/index.js.map +0 -7
  129. package/cjs/plugins/index.js.map +0 -7
  130. package/cjs/plugins/roving/TreeRovingPlugin.js.map +0 -7
  131. package/cjs/plugins/roving/index.js.map +0 -7
  132. package/cjs/plugins/searchable/SearchableTreePlugin.js.map +0 -7
  133. package/cjs/plugins/searchable/index.js.map +0 -7
  134. package/cjs/plugins/selectable/SelectablePluginTree.js.map +0 -7
  135. package/cjs/plugins/selectable/index.js.map +0 -7
  136. package/cjs/plugins/toolbar/TreeToolbarPlugin.js.map +0 -7
  137. package/cjs/plugins/toolbar/index.js.map +0 -7
  138. package/cjs/plugins/tree/TreeDataPlugin.js.map +0 -7
  139. package/cjs/plugins/tree/index.js.map +0 -7
  140. package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js.map +0 -7
  141. package/cjs/plugins/virtualization/index.js.map +0 -7
  142. package/cjs/react-desc-prop-types.js.map +0 -7
  143. package/cjs/related-components/TreeViewSearchBar.js.map +0 -7
  144. package/cjs/sharedTypes.js.map +0 -7
  145. package/cjs/utils/array-helpers.js.map +0 -7
  146. package/cjs/utils/dnd-helpers.js +0 -146
  147. package/cjs/utils/dnd-helpers.js.map +0 -7
  148. package/cjs/utils/group-expands-helpers.js.map +0 -7
  149. package/cjs/utils/keyboard-helpers.js.map +0 -7
  150. package/cjs/utils/object-helpers.js.map +0 -7
  151. package/cjs/utils/refs-helpers.js.map +0 -7
  152. package/cjs/utils/selectable-helper.js.map +0 -7
  153. package/cjs/utils/string-helpers.js.map +0 -7
  154. package/cjs/utils/tree-helpers.js.map +0 -7
  155. package/cjs/utils/useDnDHelpers.js +0 -199
  156. package/cjs/utils/useDnDHelpers.js.map +0 -7
  157. package/cjs/utils/useInstanceRefActions.js.map +0 -7
  158. package/cjs/utils/useTree.js.map +0 -7
  159. package/esm/TreeView.js.map +0 -7
  160. package/esm/TreeViewContext.js.map +0 -7
  161. package/esm/config/cssClassesConstants.js.map +0 -7
  162. package/esm/config/useTreeview.js.map +0 -7
  163. package/esm/index.js.map +0 -7
  164. package/esm/parts/CheckboxSelectable.js.map +0 -7
  165. package/esm/parts/ChildrenCountDisplayer.js.map +0 -7
  166. package/esm/parts/ExpandCaret.js.map +0 -7
  167. package/esm/parts/Icon.js.map +0 -7
  168. package/esm/parts/NestingSpace.js.map +0 -7
  169. package/esm/parts/RadioSelectable.js.map +0 -7
  170. package/esm/parts/TreeItem.js.map +0 -7
  171. package/esm/parts/TreeItemText.js.map +0 -7
  172. package/esm/parts/TreeList.js.map +0 -7
  173. package/esm/plugins/dnd/TreeDndPlugin.js.map +0 -7
  174. package/esm/plugins/dnd/index.js.map +0 -7
  175. package/esm/plugins/index.js.map +0 -7
  176. package/esm/plugins/roving/TreeRovingPlugin.js.map +0 -7
  177. package/esm/plugins/roving/index.js.map +0 -7
  178. package/esm/plugins/searchable/SearchableTreePlugin.js.map +0 -7
  179. package/esm/plugins/searchable/index.js.map +0 -7
  180. package/esm/plugins/selectable/SelectablePluginTree.js.map +0 -7
  181. package/esm/plugins/selectable/index.js.map +0 -7
  182. package/esm/plugins/toolbar/TreeToolbarPlugin.js.map +0 -7
  183. package/esm/plugins/toolbar/index.js.map +0 -7
  184. package/esm/plugins/tree/TreeDataPlugin.js.map +0 -7
  185. package/esm/plugins/tree/index.js.map +0 -7
  186. package/esm/plugins/virtualization/TreeVirtualizationPlugin.js.map +0 -7
  187. package/esm/plugins/virtualization/index.js.map +0 -7
  188. package/esm/react-desc-prop-types.js.map +0 -7
  189. package/esm/related-components/TreeViewSearchBar.js.map +0 -7
  190. package/esm/sharedTypes.js.map +0 -7
  191. package/esm/utils/array-helpers.js.map +0 -7
  192. package/esm/utils/dnd-helpers.js +0 -117
  193. package/esm/utils/dnd-helpers.js.map +0 -7
  194. package/esm/utils/group-expands-helpers.js.map +0 -7
  195. package/esm/utils/keyboard-helpers.js.map +0 -7
  196. package/esm/utils/object-helpers.js.map +0 -7
  197. package/esm/utils/refs-helpers.js.map +0 -7
  198. package/esm/utils/selectable-helper.js.map +0 -7
  199. package/esm/utils/string-helpers.js.map +0 -7
  200. package/esm/utils/tree-helpers.js.map +0 -7
  201. package/esm/utils/useDnDHelpers.js +0 -170
  202. package/esm/utils/useDnDHelpers.js.map +0 -7
  203. package/esm/utils/useInstanceRefActions.js.map +0 -7
  204. package/esm/utils/useTree.js.map +0 -7
  205. package/types/utils/dnd-helpers.d.ts +0 -39
  206. package/types/utils/useDnDHelpers.d.ts +0 -26
@@ -1,157 +1,142 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __reExport = (target, module2, copyDefault, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
- }
18
- return target;
19
- };
20
- var __toESM = (module2, isNodeMode) => {
21
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
- };
23
- var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
- return (module2, temp) => {
25
- return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
- };
27
- })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
- var TreeItem_exports = {};
29
- __export(TreeItem_exports, {
30
- DragAndDropTreeItem: () => DragAndDropTreeItem,
31
- TreeItem: () => TreeItem,
32
- TreeListItem: () => TreeListItem,
33
- TreeListItemAddonsWrapper: () => TreeListItemAddonsWrapper
34
- });
35
- var React = __toESM(require("react"));
36
- var import_react = __toESM(require("react"));
37
- var import_react_sortable_hoc = require("@elliemae/react-sortable-hoc");
38
- var import_ds_classnames = require("@elliemae/ds-classnames");
39
- var import_ds_icons = require("@elliemae/ds-icons");
40
- var import_RadioSelectable = __toESM(require("./RadioSelectable"));
41
- var import_CheckboxSelectable = __toESM(require("./CheckboxSelectable"));
42
- var import_TreeViewContext = __toESM(require("../TreeViewContext"));
43
- var import_refs_helpers = require("../utils/refs-helpers");
44
- var import_keyboard_helpers = require("../utils/keyboard-helpers");
45
- var import_NestingSpace = require("./NestingSpace");
46
- var import_Icon = require("./Icon");
47
- var import_ExpandCaret = require("./ExpandCaret");
48
- var import_TreeItemText = require("./TreeItemText");
49
- var import_cssClassesConstants = require("../config/cssClassesConstants");
50
- const TreeListItem = (0, import_ds_classnames.aggregatedClasses)("li", {
51
- "data-testid": import_cssClassesConstants.treeItemBlockName,
52
- role: "treeitem"
53
- })(import_cssClassesConstants.treeItemBlockName);
54
- const TreeListItemAddonsWrapper = (0, import_ds_classnames.aggregatedClasses)("div")(import_cssClassesConstants.treeItemBlockName, "addons");
55
- const DnDHandle = (0, import_react_sortable_hoc.SortableHandle)(({ id }) => /* @__PURE__ */ import_react.default.createElement(import_ds_icons.GripperVertical, {
56
- "data-testid": "drag-handle",
57
- key: `${id}-drag-handle`,
58
- className: "drag-handle",
59
- size: "s",
60
- onMouseDown: (e) => {
61
- if (e) {
62
- e.preventDefault();
63
- }
64
- },
65
- tabIndex: "0"
66
- }));
67
- const TreeItem = (props) => {
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 _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
+ var React = require('react');
13
+ var dsClassnames = require('@elliemae/ds-classnames');
14
+ var RadioSelectable = require('./RadioSelectable.js');
15
+ var CheckboxSelectable = require('./CheckboxSelectable.js');
16
+ var TreeViewContext = require('../TreeViewContext.js');
17
+ var refsHelpers = require('../utils/refs-helpers.js');
18
+ var keyboardHelpers = require('../utils/keyboard-helpers.js');
19
+ var NestingSpace = require('./NestingSpace.js');
20
+ var Icon = require('./Icon.js');
21
+ var ExpandCaret = require('./ExpandCaret.js');
22
+ var TreeItemText = require('./TreeItemText.js');
23
+ var cssClassesConstants = require('../config/cssClassesConstants.js');
24
+ var DnDHandle = require('./DnDHandle.js');
25
+ var WithDnDSortableItemContext = require('../hoc/WithDnDSortableItemContext.js');
26
+ var SortableItemContext = require('../hoc/SortableItemContext.js');
27
+ var DropIndicator = require('./DropIndicator.js');
28
+ var jsxRuntime = require('react/jsx-runtime');
29
+
30
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
31
+
32
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
33
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
34
+
35
+ 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; }
36
+
37
+ 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; }
38
+ const TreeListItem = dsClassnames.aggregatedClasses('li', {
39
+ 'data-testid': cssClassesConstants.treeItemBlockName,
40
+ role: 'treeitem' // temp fix untill we move to styled components
41
+
42
+ })(cssClassesConstants.treeItemBlockName);
43
+ const TreeListItemAddonsWrapper = dsClassnames.aggregatedClasses('div')(cssClassesConstants.treeItemBlockName, 'addons' // temp fix untill we move to styled components
44
+ );
45
+ const TreeItem = props => {
68
46
  const {
69
47
  item,
70
48
  itemIndex,
71
49
  itemWrapperStyle = {},
72
50
  virtualItemRef,
73
51
  spaceForNestingLevel = 1.5,
74
- onMouseDragOverItem
52
+ isDragOverlay = false
75
53
  } = props;
76
- const { id, node } = item;
77
- const { nodeItemRef } = node.model;
78
- const openFolderOnHoverTimeout = (0, import_react.useRef)(null);
79
- const [isDraggingOverThis, setIsDraggingOverThis] = (0, import_react.useState)(false);
80
- const onItemKeyDown = (0, import_keyboard_helpers.useOnItemKeyDown)(item);
81
- const ctx = (0, import_react.useContext)(import_TreeViewContext.default);
82
54
  const {
83
- props: { disableIcons, rightAddons, onItemClick, onItemFocus, rowSize, labelOverflow },
84
- relativeMouseCord,
55
+ id,
56
+ node
57
+ } = item;
58
+ const {
59
+ nodeItemRef
60
+ } = node.model;
61
+ const {
62
+ draggableProps
63
+ } = React.useContext(SortableItemContext.SortableItemContext);
64
+ const onItemKeyDown = keyboardHelpers.useOnItemKeyDown(item, draggableProps);
65
+ const ctx = React.useContext(TreeViewContext["default"]);
66
+ const {
67
+ props: {
68
+ disableIcons,
69
+ rightAddons,
70
+ onItemClick,
71
+ onItemFocus,
72
+ rowSize,
73
+ labelOverflow
74
+ },
85
75
  withRadioChecks,
86
76
  withCheckboxChecks,
87
77
  withDragAndDrop,
88
78
  selectedItem,
89
79
  selectedCheckboxes,
90
80
  hoverItem,
91
- isDragging,
92
- virtualListHelpers: { scrollToIndex },
81
+ virtualListHelpers: {
82
+ scrollToIndex
83
+ },
93
84
  setHoverItem,
94
85
  setSelectedItem,
95
86
  setFocusedItem
96
- } = ctx;
97
- const setItemRefs = (ref) => {
98
- (0, import_refs_helpers.setMultipleRefs)(virtualItemRef, nodeItemRef)(ref);
87
+ } = ctx; // Sortable Items needs to update
88
+ // - the virtual list ref (for react-virtual requirement)
89
+ // - nodeItemRef which is a prop avaiable in the TreeModel nodes
90
+ // - the drag and drop node reference
91
+
92
+ const setItemRefs = ref => {
93
+ refsHelpers.setMultipleRefs(virtualItemRef, !isDragOverlay && nodeItemRef, !isDragOverlay && draggableProps && draggableProps.setNodeRef)(ref);
99
94
  };
100
- const dropPreviewClassName = (0, import_react.useMemo)(() => {
101
- if (!withDragAndDrop || !relativeMouseCord || !isDraggingOverThis)
102
- return "";
103
- const { isBefore, isAfter, isValid } = relativeMouseCord;
104
- let className = `${import_cssClassesConstants.DSTreeViewPrefix}-${import_cssClassesConstants.treeItemBlockName}${isValid ? "--valid" : "--invalid"}`;
105
- if (isBefore)
106
- className += "-drop-before";
107
- else if (isAfter)
108
- className += "-drop-after";
109
- else
110
- className += "-drop-in";
111
- return className;
112
- }, [withDragAndDrop, relativeMouseCord, isDraggingOverThis]);
113
- const selectedClassName = (0, import_react.useMemo)(() => selectedItem?.id === item.id ? "selected" : "", [item.id, selectedItem?.id]);
114
- const hoverClassName = (0, import_react.useMemo)(() => hoverItem?.id !== item.id || withDragAndDrop && isDragging ? "" : "hover", [hoverItem?.id, item.id, withDragAndDrop, isDragging]);
115
- const fixedHeightClassname = (0, import_react.useMemo)(() => {
116
- if (labelOverflow === "truncate") {
117
- if (rowSize === "compact")
118
- return `${import_cssClassesConstants.DSTreeViewPrefix}-${import_cssClassesConstants.treeItemBlockName}--fixed-height-compact`;
119
- return `${import_cssClassesConstants.DSTreeViewPrefix}-${import_cssClassesConstants.treeItemBlockName}--fixed-height`;
95
+
96
+ const dropIndicatorPosition = draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;
97
+ const isDropIndicatorPositionInside = dropIndicatorPosition === SortableItemContext.DropIndicatorPosition.Inside;
98
+ const isDragging = draggableProps && draggableProps.isDragging;
99
+ const isDropValid = draggableProps && draggableProps.isDropValid;
100
+ const dropPreviewClassName = React.useMemo(() => {
101
+ if (isDropIndicatorPositionInside) {
102
+ const className = "".concat(cssClassesConstants.DSTreeViewPrefix, "-").concat(cssClassesConstants.treeItemBlockName).concat(isDropValid ? '--valid' : '--invalid', "-drop-in");
103
+ return className;
104
+ }
105
+
106
+ return '';
107
+ }, [isDropIndicatorPositionInside, isDropValid]);
108
+ const dragOverlayClassName = React.useMemo(() => isDragOverlay ? 'drag-overlay' : '', [isDragOverlay]);
109
+ const selectedClassName = React.useMemo(() => (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id) === item.id && !isDragOverlay ? 'selected' : '', [isDragOverlay, item.id, selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id]);
110
+ const hoverClassName = React.useMemo(() => !isDragOverlay && ((hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id) === item.id || isDragging) ? 'hover' : '', [isDragOverlay, hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id, item.id, isDragging]);
111
+ const fixedHeightClassname = React.useMemo(() => {
112
+ if (labelOverflow === 'truncate') {
113
+ if (rowSize === 'compact') return "".concat(cssClassesConstants.DSTreeViewPrefix, "-").concat(cssClassesConstants.treeItemBlockName, "--fixed-height-compact");
114
+ return "".concat(cssClassesConstants.DSTreeViewPrefix, "-").concat(cssClassesConstants.treeItemBlockName, "--fixed-height");
120
115
  }
121
- return "";
116
+
117
+ return '';
122
118
  }, [labelOverflow, rowSize]);
123
- const finalClassName = (0, import_react.useMemo)(() => `${dropPreviewClassName} ${fixedHeightClassname} ${selectedClassName} ${hoverClassName}`, [dropPreviewClassName, selectedClassName, hoverClassName, fixedHeightClassname]);
124
- const handleItemClick = (0, import_react.useCallback)((e) => {
119
+ const finalClassName = React.useMemo(() => "".concat(dropPreviewClassName, " ").concat(fixedHeightClassname, " ").concat(selectedClassName, " ").concat(hoverClassName, " ").concat(dragOverlayClassName), [dropPreviewClassName, selectedClassName, hoverClassName, fixedHeightClassname, dragOverlayClassName]);
120
+ const handleItemClick = React.useCallback(e => {
125
121
  onItemClick(item, e);
126
122
  setFocusedItem(item);
127
123
  setSelectedItem(item);
128
- const itemVirtualIndex = typeof item.virtualIndex === "number" ? item.virtualIndex : -1;
124
+ const itemVirtualIndex = typeof item.virtualIndex === 'number' ? item.virtualIndex : -1;
129
125
  onItemFocus({
130
126
  itemIndex: itemVirtualIndex,
131
- scrollToItem: (opts = { align: "start" }) => scrollToIndex(itemVirtualIndex, opts),
127
+ scrollToItem: function () {
128
+ let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
129
+ align: 'start'
130
+ };
131
+ return scrollToIndex(itemVirtualIndex, opts);
132
+ },
132
133
  item
133
134
  });
134
135
  }, [item, scrollToIndex, onItemClick, onItemFocus, setSelectedItem, setFocusedItem]);
135
- return /* @__PURE__ */ import_react.default.createElement(TreeListItem, {
136
+ return /*#__PURE__*/jsxRuntime.jsxs(TreeListItem, {
136
137
  tabIndex: 0,
137
- onMouseMove: (event) => {
138
- if (withDragAndDrop && onMouseDragOverItem) {
139
- onMouseDragOverItem({
140
- event,
141
- item,
142
- itemIndex,
143
- setIsDraggingOverThis,
144
- openFolderOnHoverTimeout
145
- });
146
- }
147
- },
148
138
  onMouseLeave: () => {
149
- if (withDragAndDrop) {
150
- setIsDraggingOverThis(false);
151
- if (openFolderOnHoverTimeout?.current)
152
- clearTimeout(openFolderOnHoverTimeout.current);
153
- }
154
- if (hoverItem?.id === item.id) {
139
+ if ((hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id) === item.id) {
155
140
  setHoverItem(null);
156
141
  }
157
142
  },
@@ -159,33 +144,42 @@ const TreeItem = (props) => {
159
144
  setHoverItem(item);
160
145
  },
161
146
  onClick: handleItemClick,
147
+ onBlur: () => setFocusedItem(null),
162
148
  ref: setItemRefs,
163
- style: { ...itemWrapperStyle },
149
+ style: _objectSpread({}, itemWrapperStyle),
164
150
  className: finalClassName,
165
151
  "aria-expanded": !!item.isExpanded,
166
152
  "aria-selected": !!selectedCheckboxes[item.id],
167
153
  "data-id": item.id,
168
154
  "data-index": item.virtualIndex,
169
- onKeyDown: onItemKeyDown
170
- }, /* @__PURE__ */ import_react.default.createElement(TreeListItemAddonsWrapper, null, withDragAndDrop ? /* @__PURE__ */ import_react.default.createElement(DnDHandle, {
171
- id
172
- }) : null, withRadioChecks ? /* @__PURE__ */ import_react.default.createElement(import_RadioSelectable.default, {
173
- item,
174
- itemIndex
175
- }) : null, withCheckboxChecks ? /* @__PURE__ */ import_react.default.createElement(import_CheckboxSelectable.default, {
176
- item,
177
- itemIndex
178
- }) : null, /* @__PURE__ */ import_react.default.createElement(import_NestingSpace.NestingSpace, {
179
- item,
180
- spaceForNestingLevel
181
- }), /* @__PURE__ */ import_react.default.createElement(import_ExpandCaret.ExpandCaret, {
182
- item
183
- }), !disableIcons ? /* @__PURE__ */ import_react.default.createElement(import_Icon.Icon, {
184
- item
185
- }) : null), /* @__PURE__ */ import_react.default.createElement(import_TreeItemText.TreeItemText, {
186
- item
187
- }), rightAddons && /* @__PURE__ */ import_react.default.createElement(TreeListItemAddonsWrapper, null, typeof rightAddons === "function" ? rightAddons(item) : rightAddons));
155
+ onKeyDown: onItemKeyDown,
156
+ children: [/*#__PURE__*/_jsx__default["default"](TreeListItemAddonsWrapper, {}, void 0, withDragAndDrop ? /*#__PURE__*/_jsx__default["default"](DnDHandle.DnDHandle, {
157
+ id: id,
158
+ isDragOverlay: isDragOverlay
159
+ }) : null, withRadioChecks && !isDragOverlay ? /*#__PURE__*/_jsx__default["default"](RadioSelectable, {
160
+ item: item,
161
+ itemIndex: itemIndex
162
+ }) : null, withCheckboxChecks && !isDragOverlay ? /*#__PURE__*/_jsx__default["default"](CheckboxSelectable, {
163
+ item: item,
164
+ itemIndex: itemIndex
165
+ }) : null, !isDragOverlay && /*#__PURE__*/_jsx__default["default"](NestingSpace.NestingSpace, {
166
+ item: item,
167
+ spaceForNestingLevel: spaceForNestingLevel
168
+ }), !isDragOverlay && /*#__PURE__*/_jsx__default["default"](ExpandCaret.ExpandCaret, {
169
+ item: item
170
+ }), !disableIcons ? /*#__PURE__*/_jsx__default["default"](Icon.Icon, {
171
+ item: item
172
+ }) : null), /*#__PURE__*/_jsx__default["default"](TreeItemText.TreeItemText, {
173
+ item: item
174
+ }), rightAddons && /*#__PURE__*/_jsx__default["default"](TreeListItemAddonsWrapper, {}, void 0, typeof rightAddons === 'function' ? rightAddons(item) : rightAddons), /*#__PURE__*/_jsx__default["default"](DropIndicator, {
175
+ dropIndicatorPosition: dropIndicatorPosition,
176
+ isDropValid: isDropValid
177
+ })]
178
+ });
188
179
  };
189
- const DragAndDropTreeItem = (0, import_react_sortable_hoc.SortableElement)(TreeItem);
190
- module.exports = __toCommonJS(TreeItem_exports);
191
- //# sourceMappingURL=TreeItem.js.map
180
+ var TreeItem$1 = WithDnDSortableItemContext.withDnDSortableItemContext(TreeItem);
181
+
182
+ exports.TreeItem = TreeItem;
183
+ exports.TreeListItem = TreeListItem;
184
+ exports.TreeListItemAddonsWrapper = TreeListItemAddonsWrapper;
185
+ exports["default"] = TreeItem$1;
@@ -1,101 +1,108 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var React = require('react');
7
+ var Highlighter = require('react-highlight-words');
8
+ var dsTruncatedTooltipText = require('@elliemae/ds-truncated-tooltip-text');
9
+ var dsClassnames = require('@elliemae/ds-classnames');
10
+ var ChildrenCountDisplayer = require('./ChildrenCountDisplayer.js');
11
+ var cssClassesConstants = require('../config/cssClassesConstants.js');
12
+ var TreeViewContext = require('../TreeViewContext.js');
13
+ var jsxRuntime = require('react/jsx-runtime');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
18
+ var Highlighter__default = /*#__PURE__*/_interopDefaultLegacy(Highlighter);
19
+
20
+ const ItemContent = dsClassnames.aggregatedClasses('div')("".concat(cssClassesConstants.treeItemBlockName, "-content"));
21
+ const ItemValue = dsClassnames.aggregatedClasses('span')(cssClassesConstants.treeItemBlockName, 'value'); // const wrapperClassName = `${DSTreeViewPrefix}-${treeItemBlockName}-content`;
22
+
23
+ const classNameModifierWrapAll = "".concat(cssClassesConstants.DSTreeViewPrefix, "-").concat(cssClassesConstants.treeItemBlockName, "__value--wrap-all");
24
+ const classNameModifierTruncate = "".concat(cssClassesConstants.DSTreeViewPrefix, "-").concat(cssClassesConstants.treeItemBlockName, "__value--truncate"); // eslint-disable-next-line react/prop-types
25
+
26
+ const CustomHighlight = _ref => {
27
+ let {
28
+ children
29
+ } = _ref;
30
+ return /*#__PURE__*/_jsx__default["default"]("mark", {
31
+ className: "tree-text-highlight",
32
+ "data-testid": "tree-text-highlight"
33
+ }, void 0, children);
11
34
  };
12
- var __reExport = (target, module2, copyDefault, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
16
- __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
17
- }
18
- return target;
19
- };
20
- var __toESM = (module2, isNodeMode) => {
21
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
22
- };
23
- var __toCommonJS = /* @__PURE__ */ ((cache) => {
24
- return (module2, temp) => {
25
- return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
26
- };
27
- })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
- var TreeItemText_exports = {};
29
- __export(TreeItemText_exports, {
30
- TreeItemText: () => TreeItemText
31
- });
32
- var React = __toESM(require("react"));
33
- var import_react = __toESM(require("react"));
34
- var import_react_highlight_words = __toESM(require("react-highlight-words"));
35
- var import_ds_truncated_tooltip_text = require("@elliemae/ds-truncated-tooltip-text");
36
- var import_ds_classnames = require("@elliemae/ds-classnames");
37
- var import_ChildrenCountDisplayer = require("./ChildrenCountDisplayer");
38
- var import_cssClassesConstants = require("../config/cssClassesConstants");
39
- var import_TreeViewContext = __toESM(require("../TreeViewContext"));
40
- const ItemContent = (0, import_ds_classnames.aggregatedClasses)("div")(`${import_cssClassesConstants.treeItemBlockName}-content`);
41
- const ItemValue = (0, import_ds_classnames.aggregatedClasses)("span")(import_cssClassesConstants.treeItemBlockName, "value");
42
- const classNameModifierWrapAll = `${import_cssClassesConstants.DSTreeViewPrefix}-${import_cssClassesConstants.treeItemBlockName}__value--wrap-all`;
43
- const classNameModifierTruncate = `${import_cssClassesConstants.DSTreeViewPrefix}-${import_cssClassesConstants.treeItemBlockName}__value--truncate`;
44
- const CustomHighlight = ({ children }) => /* @__PURE__ */ import_react.default.createElement("mark", {
45
- className: "tree-text-highlight",
46
- "data-testid": "tree-text-highlight"
47
- }, children);
35
+
48
36
  function TreeItemText(props) {
49
- const { item } = props;
50
- const ctx = (0, import_react.useContext)(import_TreeViewContext.default);
37
+ var _ChildrenCountDisplay, _ChildrenCountDisplay2, _ChildrenCountDisplay3, _ChildrenCountDisplay4;
38
+
39
+ const {
40
+ item
41
+ } = props;
42
+ const ctx = React.useContext(TreeViewContext["default"]);
51
43
  const {
52
- props: { searchQuery, showChildrenAmount, labelOverflow, nameKey }
44
+ props: {
45
+ searchQuery,
46
+ showChildrenAmount,
47
+ labelOverflow,
48
+ nameKey
49
+ }
53
50
  } = ctx;
54
- const Text = (0, import_react.useMemo)(() => {
51
+ const Text = React.useMemo(() => {
55
52
  const itemLabelText = item[nameKey];
53
+
56
54
  if (searchQuery) {
57
- if (labelOverflow === "truncate") {
58
- return /* @__PURE__ */ import_react.default.createElement(import_ds_truncated_tooltip_text.SimpleTruncatedTooltipText, {
59
- value: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_react_highlight_words.default, {
60
- autoEscape: true,
61
- highlightTag: CustomHighlight,
62
- searchWords: [searchQuery],
63
- textToHighlight: itemLabelText
64
- }), showChildrenAmount ? /* @__PURE__ */ import_react.default.createElement(import_ChildrenCountDisplayer.ChildrenCountDisplayer, {
65
- item
66
- }) : null)
55
+ if (labelOverflow === 'truncate') {
56
+ return /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
57
+ value: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
58
+ children: [/*#__PURE__*/_jsx__default["default"](Highlighter__default["default"], {
59
+ autoEscape: true,
60
+ highlightTag: CustomHighlight,
61
+ searchWords: [searchQuery],
62
+ textToHighlight: itemLabelText
63
+ }), showChildrenAmount ? _ChildrenCountDisplay || (_ChildrenCountDisplay = /*#__PURE__*/_jsx__default["default"](ChildrenCountDisplayer.ChildrenCountDisplayer, {
64
+ item: item
65
+ })) : null]
66
+ })
67
67
  });
68
68
  }
69
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(import_react_highlight_words.default, {
70
- autoEscape: true,
71
- highlightTag: CustomHighlight,
72
- searchWords: [searchQuery],
73
- textToHighlight: itemLabelText
74
- }), showChildrenAmount ? /* @__PURE__ */ import_react.default.createElement(import_ChildrenCountDisplayer.ChildrenCountDisplayer, {
75
- item
76
- }) : null);
69
+
70
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
71
+ children: [/*#__PURE__*/_jsx__default["default"](Highlighter__default["default"], {
72
+ autoEscape: true,
73
+ highlightTag: CustomHighlight,
74
+ searchWords: [searchQuery],
75
+ textToHighlight: itemLabelText
76
+ }), showChildrenAmount ? _ChildrenCountDisplay2 || (_ChildrenCountDisplay2 = /*#__PURE__*/_jsx__default["default"](ChildrenCountDisplayer.ChildrenCountDisplayer, {
77
+ item: item
78
+ })) : null]
79
+ });
77
80
  }
78
- if (labelOverflow === "truncate") {
79
- return /* @__PURE__ */ import_react.default.createElement(import_ds_truncated_tooltip_text.SimpleTruncatedTooltipText, {
80
- value: /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, itemLabelText, showChildrenAmount ? /* @__PURE__ */ import_react.default.createElement(import_ChildrenCountDisplayer.ChildrenCountDisplayer, {
81
- item
82
- }) : null)
81
+
82
+ if (labelOverflow === 'truncate') {
83
+ return /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
84
+ value: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
85
+ children: [itemLabelText, showChildrenAmount ? _ChildrenCountDisplay3 || (_ChildrenCountDisplay3 = /*#__PURE__*/_jsx__default["default"](ChildrenCountDisplayer.ChildrenCountDisplayer, {
86
+ item: item
87
+ })) : null]
88
+ })
83
89
  });
84
90
  }
85
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, itemLabelText, showChildrenAmount ? /* @__PURE__ */ import_react.default.createElement(import_ChildrenCountDisplayer.ChildrenCountDisplayer, {
86
- item
87
- }) : null);
91
+
92
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
93
+ children: [itemLabelText, showChildrenAmount ? _ChildrenCountDisplay4 || (_ChildrenCountDisplay4 = /*#__PURE__*/_jsx__default["default"](ChildrenCountDisplayer.ChildrenCountDisplayer, {
94
+ item: item
95
+ })) : null]
96
+ });
88
97
  }, [item, searchQuery, nameKey, showChildrenAmount, labelOverflow]);
89
- let className = "";
90
- if (labelOverflow === "wrap-all")
91
- className += `${classNameModifierWrapAll} `;
92
- if (labelOverflow === "truncate")
93
- className += `${classNameModifierTruncate} `;
94
- return /* @__PURE__ */ import_react.default.createElement(ItemContent, {
95
- "data-testid": `${import_cssClassesConstants.treeItemBlockName}-content`
96
- }, /* @__PURE__ */ import_react.default.createElement(ItemValue, {
97
- className
98
- }, Text));
98
+ let className = '';
99
+ if (labelOverflow === 'wrap-all') className += "".concat(classNameModifierWrapAll, " ");
100
+ if (labelOverflow === 'truncate') className += "".concat(classNameModifierTruncate, " ");
101
+ return /*#__PURE__*/_jsx__default["default"](ItemContent, {
102
+ "data-testid": "".concat(cssClassesConstants.treeItemBlockName, "-content")
103
+ }, void 0, /*#__PURE__*/_jsx__default["default"](ItemValue, {
104
+ className: className
105
+ }, void 0, Text));
99
106
  }
100
- module.exports = __toCommonJS(TreeItemText_exports);
101
- //# sourceMappingURL=TreeItemText.js.map
107
+
108
+ exports.TreeItemText = TreeItemText;