@elliemae/ds-treeview 2.2.1 → 2.3.0-alpha.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.
- package/cjs/TreeView.js +47 -31
- package/cjs/TreeView.js.map +7 -0
- package/cjs/TreeViewContext.js +55 -43
- package/cjs/TreeViewContext.js.map +7 -0
- package/cjs/config/cssClassesConstants.js +41 -13
- package/cjs/config/cssClassesConstants.js.map +7 -0
- package/cjs/config/useTreeview.js +102 -88
- package/cjs/config/useTreeview.js.map +7 -0
- package/cjs/hoc/DnDTreeContext.js +45 -0
- package/cjs/hoc/DnDTreeContext.js.map +7 -0
- package/cjs/hoc/SortableItemContext.js +46 -0
- package/cjs/hoc/SortableItemContext.js.map +7 -0
- package/cjs/hoc/WithConditionalDnDContext.js +128 -0
- package/cjs/hoc/WithConditionalDnDContext.js.map +7 -0
- package/cjs/hoc/WithDnDSortableItemContext.js +69 -0
- package/cjs/hoc/WithDnDSortableItemContext.js.map +7 -0
- package/cjs/index.js +37 -27
- package/cjs/index.js.map +7 -0
- package/cjs/parts/CheckboxSelectable.js +70 -59
- package/cjs/parts/CheckboxSelectable.js.map +7 -0
- package/cjs/parts/ChildrenCountDisplayer.js +45 -28
- package/cjs/parts/ChildrenCountDisplayer.js.map +7 -0
- package/cjs/parts/DnDHandle.js +57 -0
- package/cjs/parts/DnDHandle.js.map +7 -0
- package/cjs/parts/DropIndicator.js +80 -0
- package/cjs/parts/DropIndicator.js.map +7 -0
- package/cjs/parts/ExpandCaret.js +85 -83
- package/cjs/parts/ExpandCaret.js.map +7 -0
- package/cjs/parts/Icon.js +46 -31
- package/cjs/parts/Icon.js.map +7 -0
- package/cjs/parts/NestingSpace.js +43 -35
- package/cjs/parts/NestingSpace.js.map +7 -0
- package/cjs/parts/RadioSelectable.js +52 -37
- package/cjs/parts/RadioSelectable.js.map +7 -0
- package/cjs/parts/TreeItem.js +121 -165
- package/cjs/parts/TreeItem.js.map +7 -0
- package/cjs/parts/TreeItemText.js +88 -95
- package/cjs/parts/TreeItemText.js.map +7 -0
- package/cjs/parts/TreeList.js +114 -132
- package/cjs/parts/TreeList.js.map +7 -0
- package/cjs/plugins/dnd/TreeDndPlugin.js +34 -43
- package/cjs/plugins/dnd/TreeDndPlugin.js.map +7 -0
- package/cjs/plugins/dnd/index.js +28 -10
- package/cjs/plugins/dnd/index.js.map +7 -0
- package/cjs/plugins/index.js +34 -22
- package/cjs/plugins/index.js.map +7 -0
- package/cjs/plugins/roving/TreeRovingPlugin.js +35 -7
- package/cjs/plugins/roving/TreeRovingPlugin.js.map +7 -0
- package/cjs/plugins/roving/index.js +28 -9
- package/cjs/plugins/roving/index.js.map +7 -0
- package/cjs/plugins/searchable/SearchableTreePlugin.js +35 -7
- package/cjs/plugins/searchable/SearchableTreePlugin.js.map +7 -0
- package/cjs/plugins/searchable/index.js +28 -9
- package/cjs/plugins/searchable/index.js.map +7 -0
- package/cjs/plugins/selectable/SelectablePluginTree.js +35 -7
- package/cjs/plugins/selectable/SelectablePluginTree.js.map +7 -0
- package/cjs/plugins/selectable/index.js +28 -9
- package/cjs/plugins/selectable/index.js.map +7 -0
- package/cjs/plugins/toolbar/TreeToolbarPlugin.js +35 -7
- package/cjs/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
- package/cjs/plugins/toolbar/index.js +28 -9
- package/cjs/plugins/toolbar/index.js.map +7 -0
- package/cjs/plugins/tree/TreeDataPlugin.js +35 -7
- package/cjs/plugins/tree/TreeDataPlugin.js.map +7 -0
- package/cjs/plugins/tree/index.js +28 -9
- package/cjs/plugins/tree/index.js.map +7 -0
- package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js +35 -7
- package/cjs/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
- package/cjs/plugins/virtualization/index.js +28 -9
- package/cjs/plugins/virtualization/index.js.map +7 -0
- package/cjs/react-desc-prop-types.js +83 -53
- package/cjs/react-desc-prop-types.js.map +7 -0
- package/cjs/related-components/TreeViewSearchBar.js +42 -40
- package/cjs/related-components/TreeViewSearchBar.js.map +7 -0
- package/cjs/sharedTypes.js +27 -2
- package/cjs/sharedTypes.js.map +7 -0
- package/cjs/utils/array-helpers.js +35 -11
- package/cjs/utils/array-helpers.js.map +7 -0
- package/cjs/utils/group-expands-helpers.js +86 -59
- package/cjs/utils/group-expands-helpers.js.map +7 -0
- package/cjs/utils/keyboard-helpers.js +86 -90
- package/cjs/utils/keyboard-helpers.js.map +7 -0
- package/cjs/utils/object-helpers.js +43 -36
- package/cjs/utils/object-helpers.js.map +7 -0
- package/cjs/utils/refs-helpers.js +43 -22
- package/cjs/utils/refs-helpers.js.map +7 -0
- package/cjs/utils/selectable-helper.js +61 -53
- package/cjs/utils/selectable-helper.js.map +7 -0
- package/cjs/utils/string-helpers.js +35 -7
- package/cjs/utils/string-helpers.js.map +7 -0
- package/cjs/utils/tree-helpers.js +125 -135
- package/cjs/utils/tree-helpers.js.map +7 -0
- package/cjs/utils/useInstanceRefActions.js +54 -43
- package/cjs/utils/useInstanceRefActions.js.map +7 -0
- package/cjs/utils/useTree.js +78 -78
- package/cjs/utils/useTree.js.map +7 -0
- package/esm/TreeView.js +16 -20
- package/esm/TreeView.js.map +7 -0
- package/esm/TreeViewContext.js +26 -37
- package/esm/TreeViewContext.js.map +7 -0
- package/esm/config/cssClassesConstants.js +12 -6
- package/esm/config/cssClassesConstants.js.map +7 -0
- package/esm/config/useTreeview.js +59 -66
- package/esm/config/useTreeview.js.map +7 -0
- package/esm/hoc/DnDTreeContext.js +16 -0
- package/esm/hoc/DnDTreeContext.js.map +7 -0
- package/esm/hoc/SortableItemContext.js +17 -0
- package/esm/hoc/SortableItemContext.js.map +7 -0
- package/esm/hoc/WithConditionalDnDContext.js +99 -0
- package/esm/hoc/WithConditionalDnDContext.js.map +7 -0
- package/esm/hoc/WithDnDSortableItemContext.js +40 -0
- package/esm/hoc/WithDnDSortableItemContext.js.map +7 -0
- package/esm/index.js +8 -9
- package/esm/index.js.map +7 -0
- package/esm/parts/CheckboxSelectable.js +36 -46
- package/esm/parts/CheckboxSelectable.js.map +7 -0
- package/esm/parts/ChildrenCountDisplayer.js +16 -20
- package/esm/parts/ChildrenCountDisplayer.js.map +7 -0
- package/esm/parts/DnDHandle.js +28 -0
- package/esm/parts/DnDHandle.js.map +7 -0
- package/esm/parts/DropIndicator.js +51 -0
- package/esm/parts/DropIndicator.js.map +7 -0
- package/esm/parts/ExpandCaret.js +54 -72
- package/esm/parts/ExpandCaret.js.map +7 -0
- package/esm/parts/Icon.js +16 -22
- package/esm/parts/Icon.js.map +7 -0
- package/esm/parts/NestingSpace.js +14 -27
- package/esm/parts/NestingSpace.js.map +7 -0
- package/esm/parts/RadioSelectable.js +20 -28
- package/esm/parts/RadioSelectable.js.map +7 -0
- package/esm/parts/TreeItem.js +89 -150
- package/esm/parts/TreeItem.js.map +7 -0
- package/esm/parts/TreeItemText.js +58 -85
- package/esm/parts/TreeItemText.js.map +7 -0
- package/esm/parts/TreeList.js +86 -120
- package/esm/parts/TreeList.js.map +7 -0
- package/esm/plugins/dnd/TreeDndPlugin.js +5 -34
- package/esm/plugins/dnd/TreeDndPlugin.js.map +7 -0
- package/esm/plugins/dnd/index.js +3 -1
- package/esm/plugins/dnd/index.js.map +7 -0
- package/esm/plugins/index.js +9 -7
- package/esm/plugins/index.js.map +7 -0
- package/esm/plugins/roving/TreeRovingPlugin.js +6 -3
- package/esm/plugins/roving/TreeRovingPlugin.js.map +7 -0
- package/esm/plugins/roving/index.js +3 -1
- package/esm/plugins/roving/index.js.map +7 -0
- package/esm/plugins/searchable/SearchableTreePlugin.js +6 -3
- package/esm/plugins/searchable/SearchableTreePlugin.js.map +7 -0
- package/esm/plugins/searchable/index.js +3 -1
- package/esm/plugins/searchable/index.js.map +7 -0
- package/esm/plugins/selectable/SelectablePluginTree.js +6 -3
- package/esm/plugins/selectable/SelectablePluginTree.js.map +7 -0
- package/esm/plugins/selectable/index.js +3 -1
- package/esm/plugins/selectable/index.js.map +7 -0
- package/esm/plugins/toolbar/TreeToolbarPlugin.js +6 -3
- package/esm/plugins/toolbar/TreeToolbarPlugin.js.map +7 -0
- package/esm/plugins/toolbar/index.js +3 -1
- package/esm/plugins/toolbar/index.js.map +7 -0
- package/esm/plugins/tree/TreeDataPlugin.js +6 -3
- package/esm/plugins/tree/TreeDataPlugin.js.map +7 -0
- package/esm/plugins/tree/index.js +3 -1
- package/esm/plugins/tree/index.js.map +7 -0
- package/esm/plugins/virtualization/TreeVirtualizationPlugin.js +6 -3
- package/esm/plugins/virtualization/TreeVirtualizationPlugin.js.map +7 -0
- package/esm/plugins/virtualization/index.js +3 -1
- package/esm/plugins/virtualization/index.js.map +7 -0
- package/esm/react-desc-prop-types.js +48 -43
- package/esm/react-desc-prop-types.js.map +7 -0
- package/esm/related-components/TreeViewSearchBar.js +13 -32
- package/esm/related-components/TreeViewSearchBar.js.map +7 -0
- package/esm/sharedTypes.js +2 -1
- package/esm/sharedTypes.js.map +7 -0
- package/esm/utils/array-helpers.js +6 -6
- package/esm/utils/array-helpers.js.map +7 -0
- package/esm/utils/group-expands-helpers.js +56 -46
- package/esm/utils/group-expands-helpers.js.map +7 -0
- package/esm/utils/keyboard-helpers.js +47 -74
- package/esm/utils/keyboard-helpers.js.map +7 -0
- package/esm/utils/object-helpers.js +14 -31
- package/esm/utils/object-helpers.js.map +7 -0
- package/esm/utils/refs-helpers.js +15 -19
- package/esm/utils/refs-helpers.js.map +7 -0
- package/esm/utils/selectable-helper.js +32 -43
- package/esm/utils/selectable-helper.js.map +7 -0
- package/esm/utils/string-helpers.js +6 -3
- package/esm/utils/string-helpers.js.map +7 -0
- package/esm/utils/tree-helpers.js +94 -119
- package/esm/utils/tree-helpers.js.map +7 -0
- package/esm/utils/useInstanceRefActions.js +21 -35
- package/esm/utils/useInstanceRefActions.js.map +7 -0
- package/esm/utils/useTree.js +37 -57
- package/esm/utils/useTree.js.map +7 -0
- package/package.json +34 -18
- package/types/hoc/DnDTreeContext.d.ts +14 -0
- package/types/hoc/SortableItemContext.d.ts +19 -0
- package/types/hoc/WithConditionalDnDContext.d.ts +4 -0
- package/types/hoc/WithDnDSortableItemContext.d.ts +4 -0
- package/types/parts/DnDHandle.d.ts +6 -0
- package/types/parts/DropIndicator.d.ts +10 -0
- package/types/parts/TreeItem.d.ts +4 -11
- package/types/parts/TreeList.d.ts +0 -4
- package/types/plugins/dnd/TreeDndPlugin.d.ts +0 -2
- package/types/react-desc-prop-types.d.ts +17 -3
- package/types/sharedTypes.d.ts +1 -8
- package/types/utils/keyboard-helpers.d.ts +2 -1
- package/types/utils/refs-helpers.d.ts +1 -1
- package/types/utils/tree-helpers.d.ts +4 -1
- package/types/utils/useTree.d.ts +1 -0
- package/cjs/utils/dnd-helpers.js +0 -140
- package/cjs/utils/useDnDHelpers.js +0 -220
- package/esm/utils/dnd-helpers.js +0 -132
- package/esm/utils/useDnDHelpers.js +0 -216
- package/types/utils/dnd-helpers.d.ts +0 -39
- package/types/utils/useDnDHelpers.d.ts +0 -26
package/esm/parts/TreeItem.js
CHANGED
|
@@ -1,163 +1,93 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
-
import
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import { TreeItemText } from './TreeItemText.js';
|
|
22
|
-
import { treeItemBlockName, DSTreeViewPrefix } from '../config/cssClassesConstants.js';
|
|
23
|
-
import { jsxs } from 'react/jsx-runtime';
|
|
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(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 TreeListItem = aggregatedClasses('li', {
|
|
29
|
-
'data-testid': treeItemBlockName,
|
|
30
|
-
role: 'treeitem' // temp fix untill we move to styled components
|
|
31
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import React2, { useContext, useMemo, useCallback } from "react";
|
|
3
|
+
import { aggregatedClasses } from "@elliemae/ds-classnames";
|
|
4
|
+
import RadioSelectable from "./RadioSelectable";
|
|
5
|
+
import CheckboxSelectable from "./CheckboxSelectable";
|
|
6
|
+
import TreeViewContext from "../TreeViewContext";
|
|
7
|
+
import { setMultipleRefs } from "../utils/refs-helpers";
|
|
8
|
+
import { useOnItemKeyDown } from "../utils/keyboard-helpers";
|
|
9
|
+
import { NestingSpace } from "./NestingSpace";
|
|
10
|
+
import { Icon } from "./Icon";
|
|
11
|
+
import { ExpandCaret } from "./ExpandCaret";
|
|
12
|
+
import { TreeItemText } from "./TreeItemText";
|
|
13
|
+
import { DSTreeViewPrefix, treeItemBlockName } from "../config/cssClassesConstants";
|
|
14
|
+
import { DnDHandle } from "./DnDHandle";
|
|
15
|
+
import { withDnDSortableItemContext } from "../hoc/WithDnDSortableItemContext";
|
|
16
|
+
import { DropIndicatorPosition, SortableItemContext } from "../hoc/SortableItemContext";
|
|
17
|
+
import DropIndicator from "./DropIndicator";
|
|
18
|
+
const TreeListItem = aggregatedClasses("li", {
|
|
19
|
+
"data-testid": treeItemBlockName,
|
|
20
|
+
role: "treeitem"
|
|
32
21
|
})(treeItemBlockName);
|
|
33
|
-
const TreeListItemAddonsWrapper = aggregatedClasses(
|
|
34
|
-
)
|
|
35
|
-
const DnDHandle = SortableHandle(_ref => {
|
|
36
|
-
let {
|
|
37
|
-
id
|
|
38
|
-
} = _ref;
|
|
39
|
-
return /*#__PURE__*/_jsx(GripperVertical, {
|
|
40
|
-
"data-testid": "drag-handle",
|
|
41
|
-
className: "drag-handle",
|
|
42
|
-
size: "s",
|
|
43
|
-
onMouseDown: e => {
|
|
44
|
-
// prevent focusing the drag-handle to avoid borders
|
|
45
|
-
if (e) {
|
|
46
|
-
e.preventDefault();
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
tabIndex: "0"
|
|
50
|
-
}, "".concat(id, "-drag-handle"));
|
|
51
|
-
});
|
|
52
|
-
const TreeItem = props => {
|
|
22
|
+
const TreeListItemAddonsWrapper = aggregatedClasses("div")(treeItemBlockName, "addons");
|
|
23
|
+
const TreeItem = (props) => {
|
|
53
24
|
const {
|
|
54
25
|
item,
|
|
55
26
|
itemIndex,
|
|
56
27
|
itemWrapperStyle = {},
|
|
57
28
|
virtualItemRef,
|
|
58
29
|
spaceForNestingLevel = 1.5,
|
|
59
|
-
|
|
30
|
+
isDragOverlay = false
|
|
60
31
|
} = props;
|
|
61
|
-
const {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const {
|
|
66
|
-
nodeItemRef
|
|
67
|
-
} = node.model;
|
|
68
|
-
const openFolderOnHoverTimeout = useRef(null);
|
|
69
|
-
const [isDraggingOverThis, setIsDraggingOverThis] = useState(false);
|
|
70
|
-
const onItemKeyDown = useOnItemKeyDown(item);
|
|
32
|
+
const { id, node } = item;
|
|
33
|
+
const { nodeItemRef } = node.model;
|
|
34
|
+
const { draggableProps } = useContext(SortableItemContext);
|
|
35
|
+
const onItemKeyDown = useOnItemKeyDown(item, draggableProps);
|
|
71
36
|
const ctx = useContext(TreeViewContext);
|
|
72
37
|
const {
|
|
73
|
-
props: {
|
|
74
|
-
disableIcons,
|
|
75
|
-
rightAddons,
|
|
76
|
-
onItemClick,
|
|
77
|
-
onItemFocus,
|
|
78
|
-
rowSize,
|
|
79
|
-
labelOverflow
|
|
80
|
-
},
|
|
81
|
-
relativeMouseCord,
|
|
38
|
+
props: { disableIcons, rightAddons, onItemClick, onItemFocus, rowSize, labelOverflow },
|
|
82
39
|
withRadioChecks,
|
|
83
40
|
withCheckboxChecks,
|
|
84
41
|
withDragAndDrop,
|
|
85
42
|
selectedItem,
|
|
86
43
|
selectedCheckboxes,
|
|
87
44
|
hoverItem,
|
|
88
|
-
|
|
89
|
-
virtualListHelpers: {
|
|
90
|
-
scrollToIndex
|
|
91
|
-
},
|
|
45
|
+
virtualListHelpers: { scrollToIndex },
|
|
92
46
|
setHoverItem,
|
|
93
47
|
setSelectedItem,
|
|
94
48
|
setFocusedItem
|
|
95
|
-
} = ctx;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const setItemRefs = ref => {
|
|
100
|
-
setMultipleRefs(virtualItemRef, nodeItemRef)(ref);
|
|
49
|
+
} = ctx;
|
|
50
|
+
const setItemRefs = (ref) => {
|
|
51
|
+
setMultipleRefs(virtualItemRef, !isDragOverlay && nodeItemRef, !isDragOverlay && draggableProps && draggableProps.setNodeRef)(ref);
|
|
101
52
|
};
|
|
102
|
-
|
|
53
|
+
const dropIndicatorPosition = draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;
|
|
54
|
+
const isDropIndicatorPositionInside = dropIndicatorPosition === DropIndicatorPosition.Inside;
|
|
55
|
+
const isDragging = draggableProps && draggableProps.isDragging;
|
|
56
|
+
const isDropValid = draggableProps && draggableProps.isDropValid;
|
|
103
57
|
const dropPreviewClassName = useMemo(() => {
|
|
104
|
-
if (
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}, [withDragAndDrop, relativeMouseCord, isDraggingOverThis]);
|
|
114
|
-
const selectedClassName = useMemo(() => (selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id) === item.id ? 'selected' : '', [item.id, selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id]);
|
|
115
|
-
const hoverClassName = useMemo(() => (hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id) !== item.id || withDragAndDrop && isDragging ? '' : 'hover', [hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id, item.id, withDragAndDrop, isDragging]);
|
|
58
|
+
if (isDropIndicatorPositionInside) {
|
|
59
|
+
const className = `${DSTreeViewPrefix}-${treeItemBlockName}${isDropValid ? "--valid" : "--invalid"}-drop-in`;
|
|
60
|
+
return className;
|
|
61
|
+
}
|
|
62
|
+
return "";
|
|
63
|
+
}, [isDropIndicatorPositionInside, isDropValid]);
|
|
64
|
+
const dragOverlayClassName = useMemo(() => isDragOverlay ? "drag-overlay" : "", [isDragOverlay]);
|
|
65
|
+
const selectedClassName = useMemo(() => selectedItem?.id === item.id && !isDragOverlay ? "selected" : "", [isDragOverlay, item.id, selectedItem?.id]);
|
|
66
|
+
const hoverClassName = useMemo(() => !isDragOverlay && (hoverItem?.id === item.id || isDragging) ? "hover" : "", [isDragOverlay, hoverItem?.id, item.id, isDragging]);
|
|
116
67
|
const fixedHeightClassname = useMemo(() => {
|
|
117
|
-
if (labelOverflow ===
|
|
118
|
-
if (rowSize ===
|
|
119
|
-
|
|
68
|
+
if (labelOverflow === "truncate") {
|
|
69
|
+
if (rowSize === "compact")
|
|
70
|
+
return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height-compact`;
|
|
71
|
+
return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height`;
|
|
120
72
|
}
|
|
121
|
-
|
|
122
|
-
return '';
|
|
73
|
+
return "";
|
|
123
74
|
}, [labelOverflow, rowSize]);
|
|
124
|
-
const finalClassName = useMemo(() =>
|
|
125
|
-
const handleItemClick = useCallback(e => {
|
|
75
|
+
const finalClassName = useMemo(() => `${dropPreviewClassName} ${fixedHeightClassname} ${selectedClassName} ${hoverClassName} ${dragOverlayClassName}`, [dropPreviewClassName, selectedClassName, hoverClassName, fixedHeightClassname, dragOverlayClassName]);
|
|
76
|
+
const handleItemClick = useCallback((e) => {
|
|
126
77
|
onItemClick(item, e);
|
|
127
78
|
setFocusedItem(item);
|
|
128
79
|
setSelectedItem(item);
|
|
129
|
-
const itemVirtualIndex = typeof item.virtualIndex ===
|
|
80
|
+
const itemVirtualIndex = typeof item.virtualIndex === "number" ? item.virtualIndex : -1;
|
|
130
81
|
onItemFocus({
|
|
131
82
|
itemIndex: itemVirtualIndex,
|
|
132
|
-
scrollToItem:
|
|
133
|
-
let opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
|
|
134
|
-
align: 'start'
|
|
135
|
-
};
|
|
136
|
-
return scrollToIndex(itemVirtualIndex, opts);
|
|
137
|
-
},
|
|
83
|
+
scrollToItem: (opts = { align: "start" }) => scrollToIndex(itemVirtualIndex, opts),
|
|
138
84
|
item
|
|
139
85
|
});
|
|
140
86
|
}, [item, scrollToIndex, onItemClick, onItemFocus, setSelectedItem, setFocusedItem]);
|
|
141
|
-
return
|
|
87
|
+
return /* @__PURE__ */ React2.createElement(TreeListItem, {
|
|
142
88
|
tabIndex: 0,
|
|
143
|
-
onMouseMove: event => {
|
|
144
|
-
if (withDragAndDrop && onMouseDragOverItem) {
|
|
145
|
-
onMouseDragOverItem({
|
|
146
|
-
event,
|
|
147
|
-
item,
|
|
148
|
-
itemIndex,
|
|
149
|
-
setIsDraggingOverThis,
|
|
150
|
-
openFolderOnHoverTimeout
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
89
|
onMouseLeave: () => {
|
|
155
|
-
if (
|
|
156
|
-
setIsDraggingOverThis(false);
|
|
157
|
-
if (openFolderOnHoverTimeout !== null && openFolderOnHoverTimeout !== void 0 && openFolderOnHoverTimeout.current) clearTimeout(openFolderOnHoverTimeout.current);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if ((hoverItem === null || hoverItem === void 0 ? void 0 : hoverItem.id) === item.id) {
|
|
90
|
+
if (hoverItem?.id === item.id) {
|
|
161
91
|
setHoverItem(null);
|
|
162
92
|
}
|
|
163
93
|
},
|
|
@@ -165,34 +95,43 @@ const TreeItem = props => {
|
|
|
165
95
|
setHoverItem(item);
|
|
166
96
|
},
|
|
167
97
|
onClick: handleItemClick,
|
|
98
|
+
onBlur: () => setFocusedItem(null),
|
|
168
99
|
ref: setItemRefs,
|
|
169
|
-
style:
|
|
100
|
+
style: { ...itemWrapperStyle },
|
|
170
101
|
className: finalClassName,
|
|
171
102
|
"aria-expanded": !!item.isExpanded,
|
|
172
103
|
"aria-selected": !!selectedCheckboxes[item.id],
|
|
173
104
|
"data-id": item.id,
|
|
174
105
|
"data-index": item.virtualIndex,
|
|
175
|
-
onKeyDown: onItemKeyDown
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
})
|
|
106
|
+
onKeyDown: onItemKeyDown
|
|
107
|
+
}, /* @__PURE__ */ React2.createElement(TreeListItemAddonsWrapper, null, withDragAndDrop ? /* @__PURE__ */ React2.createElement(DnDHandle, {
|
|
108
|
+
id,
|
|
109
|
+
isDragOverlay
|
|
110
|
+
}) : null, withRadioChecks && !isDragOverlay ? /* @__PURE__ */ React2.createElement(RadioSelectable, {
|
|
111
|
+
item,
|
|
112
|
+
itemIndex
|
|
113
|
+
}) : null, withCheckboxChecks && !isDragOverlay ? /* @__PURE__ */ React2.createElement(CheckboxSelectable, {
|
|
114
|
+
item,
|
|
115
|
+
itemIndex
|
|
116
|
+
}) : null, !isDragOverlay && /* @__PURE__ */ React2.createElement(NestingSpace, {
|
|
117
|
+
item,
|
|
118
|
+
spaceForNestingLevel
|
|
119
|
+
}), !isDragOverlay && /* @__PURE__ */ React2.createElement(ExpandCaret, {
|
|
120
|
+
item
|
|
121
|
+
}), !disableIcons ? /* @__PURE__ */ React2.createElement(Icon, {
|
|
122
|
+
item
|
|
123
|
+
}) : null), /* @__PURE__ */ React2.createElement(TreeItemText, {
|
|
124
|
+
item
|
|
125
|
+
}), rightAddons && /* @__PURE__ */ React2.createElement(TreeListItemAddonsWrapper, null, typeof rightAddons === "function" ? rightAddons(item) : rightAddons), /* @__PURE__ */ React2.createElement(DropIndicator, {
|
|
126
|
+
dropIndicatorPosition,
|
|
127
|
+
isDropValid
|
|
128
|
+
}));
|
|
129
|
+
};
|
|
130
|
+
var TreeItem_default = withDnDSortableItemContext(TreeItem);
|
|
131
|
+
export {
|
|
132
|
+
TreeItem,
|
|
133
|
+
TreeListItem,
|
|
134
|
+
TreeListItemAddonsWrapper,
|
|
135
|
+
TreeItem_default as default
|
|
195
136
|
};
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
export { DragAndDropTreeItem, TreeItem, TreeListItem, TreeListItemAddonsWrapper };
|
|
137
|
+
//# sourceMappingURL=TreeItem.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/TreeItem.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable complexity */\n/* eslint-disable max-lines */\nimport React, { useContext, useMemo, useCallback } from 'react';\n\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\n\nimport RadioSelectable from './RadioSelectable';\nimport CheckboxSelectable from './CheckboxSelectable';\nimport TreeViewContext from '../TreeViewContext';\nimport { setMultipleRefs } from '../utils/refs-helpers';\nimport { useOnItemKeyDown } from '../utils/keyboard-helpers';\nimport { NestingSpace } from './NestingSpace';\nimport { Icon } from './Icon';\nimport { ExpandCaret } from './ExpandCaret';\nimport { TreeItemText } from './TreeItemText';\nimport { DSTreeViewPrefix, treeItemBlockName } from '../config/cssClassesConstants';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\nimport { DnDHandle } from './DnDHandle';\nimport { withDnDSortableItemContext } from '../hoc/WithDnDSortableItemContext';\nimport { DropIndicatorPosition, SortableItemContext } from '../hoc/SortableItemContext';\nimport DropIndicator from './DropIndicator';\n\nexport const TreeListItem = aggregatedClasses('li', {\n 'data-testid': treeItemBlockName,\n role: 'treeitem',\n // temp fix untill we move to styled components\n})(treeItemBlockName) as unknown as React.ComponentType<React.ComponentProps<'li'>>;\n\nexport const TreeListItemAddonsWrapper = aggregatedClasses('div')(\n treeItemBlockName,\n 'addons',\n // temp fix untill we move to styled components\n) as unknown as React.ComponentType;\n\ninterface PropsT {\n item: DSTreeviewT.Item;\n itemIndex: number;\n isDragOverlay?: boolean;\n virtualItemRef?: React.RefObject<HTMLLIElement>;\n itemWrapperStyle?: { [key: string]: unknown };\n spaceForNestingLevel?: number;\n}\nexport const TreeItem = (props: PropsT): JSX.Element => {\n const {\n item,\n itemIndex,\n itemWrapperStyle = {},\n virtualItemRef,\n spaceForNestingLevel = 1.5,\n isDragOverlay = false,\n } = props;\n const { id, node } = item;\n const { nodeItemRef } = node.model;\n\n const { draggableProps } = useContext(SortableItemContext);\n\n const onItemKeyDown = useOnItemKeyDown(item, draggableProps);\n\n const ctx = useContext(TreeViewContext);\n const {\n props: { disableIcons, rightAddons, onItemClick, onItemFocus, rowSize, labelOverflow },\n withRadioChecks,\n withCheckboxChecks,\n withDragAndDrop,\n selectedItem,\n selectedCheckboxes,\n hoverItem,\n virtualListHelpers: { scrollToIndex },\n setHoverItem,\n setSelectedItem,\n setFocusedItem,\n } = ctx;\n\n // Sortable Items needs to update\n // - the virtual list ref (for react-virtual requirement)\n // - nodeItemRef which is a prop avaiable in the TreeModel nodes\n // - the drag and drop node reference\n const setItemRefs: React.LegacyRef<HTMLLIElement> | undefined = (ref: HTMLLIElement) => {\n setMultipleRefs(\n virtualItemRef,\n !isDragOverlay && nodeItemRef,\n !isDragOverlay && draggableProps && draggableProps.setNodeRef,\n )(ref);\n };\n\n const dropIndicatorPosition =\n draggableProps && draggableProps.shouldShowDropIndicatorPosition && draggableProps.dropIndicatorPosition;\n\n const isDropIndicatorPositionInside = dropIndicatorPosition === DropIndicatorPosition.Inside;\n\n const isDragging = draggableProps && draggableProps.isDragging;\n\n const isDropValid = draggableProps && draggableProps.isDropValid;\n\n const dropPreviewClassName = useMemo(() => {\n if (isDropIndicatorPositionInside) {\n const className = `${DSTreeViewPrefix}-${treeItemBlockName}${isDropValid ? '--valid' : '--invalid'}-drop-in`;\n return className;\n }\n return '';\n }, [isDropIndicatorPositionInside, isDropValid]);\n\n const dragOverlayClassName = useMemo(() => (isDragOverlay ? 'drag-overlay' : ''), [isDragOverlay]);\n\n const selectedClassName = useMemo(\n () => (selectedItem?.id === item.id && !isDragOverlay ? 'selected' : ''),\n [isDragOverlay, item.id, selectedItem?.id],\n );\n const hoverClassName = useMemo(\n () => (!isDragOverlay && (hoverItem?.id === item.id || isDragging) ? 'hover' : ''),\n [isDragOverlay, hoverItem?.id, item.id, isDragging],\n );\n const fixedHeightClassname = useMemo(() => {\n if (labelOverflow === 'truncate') {\n if (rowSize === 'compact') return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height-compact`;\n return `${DSTreeViewPrefix}-${treeItemBlockName}--fixed-height`;\n }\n return '';\n }, [labelOverflow, rowSize]);\n\n const finalClassName = useMemo(\n () =>\n `${dropPreviewClassName} ${fixedHeightClassname} ${selectedClassName} ${hoverClassName} ${dragOverlayClassName}`,\n [dropPreviewClassName, selectedClassName, hoverClassName, fixedHeightClassname, dragOverlayClassName],\n );\n\n const handleItemClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n onItemClick(item, e);\n setFocusedItem(item);\n setSelectedItem(item);\n const itemVirtualIndex = typeof item.virtualIndex === 'number' ? item.virtualIndex : -1;\n onItemFocus({\n itemIndex: itemVirtualIndex,\n scrollToItem: (opts = { align: 'start' }) => scrollToIndex(itemVirtualIndex, opts),\n item,\n });\n },\n [item, scrollToIndex, onItemClick, onItemFocus, setSelectedItem, setFocusedItem],\n );\n\n return (\n <TreeListItem\n tabIndex={0}\n onMouseLeave={() => {\n if (hoverItem?.id === item.id) {\n setHoverItem(null);\n }\n }}\n onMouseEnter={() => {\n setHoverItem(item);\n }}\n onClick={handleItemClick}\n onBlur={() => setFocusedItem(null)}\n ref={setItemRefs}\n style={{ ...itemWrapperStyle }}\n className={finalClassName}\n aria-expanded={!!item.isExpanded}\n aria-selected={!!selectedCheckboxes[item.id]}\n data-id={item.id}\n data-index={item.virtualIndex}\n onKeyDown={onItemKeyDown}\n >\n <TreeListItemAddonsWrapper>\n {withDragAndDrop ? <DnDHandle id={id} isDragOverlay={isDragOverlay} /> : null}\n {withRadioChecks && !isDragOverlay ? <RadioSelectable item={item} itemIndex={itemIndex} /> : null}\n {withCheckboxChecks && !isDragOverlay ? <CheckboxSelectable item={item} itemIndex={itemIndex} /> : null}\n {!isDragOverlay && <NestingSpace item={item} spaceForNestingLevel={spaceForNestingLevel} />}\n {!isDragOverlay && <ExpandCaret item={item} />}\n {!disableIcons ? <Icon item={item} /> : null}\n </TreeListItemAddonsWrapper>\n <TreeItemText item={item} />\n {rightAddons && (\n <TreeListItemAddonsWrapper>\n {typeof rightAddons === 'function' ? rightAddons(item) : rightAddons}\n </TreeListItemAddonsWrapper>\n )}\n <DropIndicator dropIndicatorPosition={dropIndicatorPosition} isDropValid={isDropValid} />\n </TreeListItem>\n );\n};\n\nexport default withDnDSortableItemContext(TreeItem);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,99 +1,72 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import Highlighter from
|
|
4
|
-
import { SimpleTruncatedTooltipText } from
|
|
5
|
-
import { aggregatedClasses } from
|
|
6
|
-
import { ChildrenCountDisplayer } from
|
|
7
|
-
import {
|
|
8
|
-
import TreeViewContext from
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const CustomHighlight = _ref => {
|
|
18
|
-
let {
|
|
19
|
-
children
|
|
20
|
-
} = _ref;
|
|
21
|
-
return /*#__PURE__*/_jsx("mark", {
|
|
22
|
-
className: "tree-text-highlight",
|
|
23
|
-
"data-testid": "tree-text-highlight"
|
|
24
|
-
}, void 0, children);
|
|
25
|
-
};
|
|
26
|
-
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import React2, { useMemo, useContext } from "react";
|
|
3
|
+
import Highlighter from "react-highlight-words";
|
|
4
|
+
import { SimpleTruncatedTooltipText } from "@elliemae/ds-truncated-tooltip-text";
|
|
5
|
+
import { aggregatedClasses } from "@elliemae/ds-classnames";
|
|
6
|
+
import { ChildrenCountDisplayer } from "./ChildrenCountDisplayer";
|
|
7
|
+
import { DSTreeViewPrefix, treeItemBlockName } from "../config/cssClassesConstants";
|
|
8
|
+
import TreeViewContext from "../TreeViewContext";
|
|
9
|
+
const ItemContent = aggregatedClasses("div")(`${treeItemBlockName}-content`);
|
|
10
|
+
const ItemValue = aggregatedClasses("span")(treeItemBlockName, "value");
|
|
11
|
+
const classNameModifierWrapAll = `${DSTreeViewPrefix}-${treeItemBlockName}__value--wrap-all`;
|
|
12
|
+
const classNameModifierTruncate = `${DSTreeViewPrefix}-${treeItemBlockName}__value--truncate`;
|
|
13
|
+
const CustomHighlight = ({ children }) => /* @__PURE__ */ React2.createElement("mark", {
|
|
14
|
+
className: "tree-text-highlight",
|
|
15
|
+
"data-testid": "tree-text-highlight"
|
|
16
|
+
}, children);
|
|
27
17
|
function TreeItemText(props) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const {
|
|
31
|
-
item
|
|
32
|
-
} = props;
|
|
18
|
+
const { item } = props;
|
|
33
19
|
const ctx = useContext(TreeViewContext);
|
|
34
20
|
const {
|
|
35
|
-
props: {
|
|
36
|
-
searchQuery,
|
|
37
|
-
showChildrenAmount,
|
|
38
|
-
labelOverflow,
|
|
39
|
-
nameKey
|
|
40
|
-
}
|
|
21
|
+
props: { searchQuery, showChildrenAmount, labelOverflow, nameKey }
|
|
41
22
|
} = ctx;
|
|
42
23
|
const Text = useMemo(() => {
|
|
43
24
|
const itemLabelText = item[nameKey];
|
|
44
|
-
|
|
45
25
|
if (searchQuery) {
|
|
46
|
-
if (labelOverflow ===
|
|
47
|
-
return
|
|
48
|
-
value:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
})) : null]
|
|
57
|
-
})
|
|
26
|
+
if (labelOverflow === "truncate") {
|
|
27
|
+
return /* @__PURE__ */ React2.createElement(SimpleTruncatedTooltipText, {
|
|
28
|
+
value: /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Highlighter, {
|
|
29
|
+
autoEscape: true,
|
|
30
|
+
highlightTag: CustomHighlight,
|
|
31
|
+
searchWords: [searchQuery],
|
|
32
|
+
textToHighlight: itemLabelText
|
|
33
|
+
}), showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
|
|
34
|
+
item
|
|
35
|
+
}) : null)
|
|
58
36
|
});
|
|
59
37
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
item: item
|
|
69
|
-
})) : null]
|
|
70
|
-
});
|
|
38
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Highlighter, {
|
|
39
|
+
autoEscape: true,
|
|
40
|
+
highlightTag: CustomHighlight,
|
|
41
|
+
searchWords: [searchQuery],
|
|
42
|
+
textToHighlight: itemLabelText
|
|
43
|
+
}), showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
|
|
44
|
+
item
|
|
45
|
+
}) : null);
|
|
71
46
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
item: item
|
|
78
|
-
})) : null]
|
|
79
|
-
})
|
|
47
|
+
if (labelOverflow === "truncate") {
|
|
48
|
+
return /* @__PURE__ */ React2.createElement(SimpleTruncatedTooltipText, {
|
|
49
|
+
value: /* @__PURE__ */ React2.createElement(React2.Fragment, null, itemLabelText, showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
|
|
50
|
+
item
|
|
51
|
+
}) : null)
|
|
80
52
|
});
|
|
81
53
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
item: item
|
|
86
|
-
})) : null]
|
|
87
|
-
});
|
|
54
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, itemLabelText, showChildrenAmount ? /* @__PURE__ */ React2.createElement(ChildrenCountDisplayer, {
|
|
55
|
+
item
|
|
56
|
+
}) : null);
|
|
88
57
|
}, [item, searchQuery, nameKey, showChildrenAmount, labelOverflow]);
|
|
89
|
-
let className =
|
|
90
|
-
if (labelOverflow ===
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
},
|
|
58
|
+
let className = "";
|
|
59
|
+
if (labelOverflow === "wrap-all")
|
|
60
|
+
className += `${classNameModifierWrapAll} `;
|
|
61
|
+
if (labelOverflow === "truncate")
|
|
62
|
+
className += `${classNameModifierTruncate} `;
|
|
63
|
+
return /* @__PURE__ */ React2.createElement(ItemContent, {
|
|
64
|
+
"data-testid": `${treeItemBlockName}-content`
|
|
65
|
+
}, /* @__PURE__ */ React2.createElement(ItemValue, {
|
|
66
|
+
className
|
|
67
|
+
}, Text));
|
|
97
68
|
}
|
|
98
|
-
|
|
99
|
-
|
|
69
|
+
export {
|
|
70
|
+
TreeItemText
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=TreeItemText.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../scripts/build/transpile/react-shim.js", "../../../src/parts/TreeItemText.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable max-lines */\nimport React, { useMemo, useContext } from 'react';\nimport Highlighter from 'react-highlight-words';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-truncated-tooltip-text';\nimport { aggregatedClasses } from '@elliemae/ds-classnames';\n\nimport { ChildrenCountDisplayer } from './ChildrenCountDisplayer';\nimport { DSTreeViewPrefix, treeItemBlockName } from '../config/cssClassesConstants';\n\nimport TreeViewContext from '../TreeViewContext';\nimport type { DSTreeviewT } from '../react-desc-prop-types';\n\nconst ItemContent = aggregatedClasses('div')(`${treeItemBlockName}-content`) as unknown as React.ComponentType<\n React.ComponentProps<'div'>\n>;\nconst ItemValue = aggregatedClasses('span')(treeItemBlockName, 'value') as unknown as React.ComponentType<\n React.ComponentProps<'span'>\n>;\n\n// const wrapperClassName = `${DSTreeViewPrefix}-${treeItemBlockName}-content`;\nconst classNameModifierWrapAll = `${DSTreeViewPrefix}-${treeItemBlockName}__value--wrap-all`;\nconst classNameModifierTruncate = `${DSTreeViewPrefix}-${treeItemBlockName}__value--truncate`;\n\n// eslint-disable-next-line react/prop-types\nconst CustomHighlight = ({ children }: { children: React.ReactNode }) => (\n <mark className=\"tree-text-highlight\" data-testid=\"tree-text-highlight\">\n {children}\n </mark>\n);\ninterface PropsT {\n item: DSTreeviewT.Item;\n}\nexport function TreeItemText(props: PropsT): JSX.Element {\n const { item } = props;\n const ctx = useContext(TreeViewContext);\n const {\n props: { searchQuery, showChildrenAmount, labelOverflow, nameKey },\n } = ctx;\n\n const Text = useMemo(() => {\n const itemLabelText = item[nameKey] as DSTreeviewT.Item['name'];\n if (searchQuery) {\n if (labelOverflow === 'truncate') {\n return (\n <SimpleTruncatedTooltipText\n value={\n <>\n <Highlighter\n autoEscape\n highlightTag={CustomHighlight}\n searchWords={[searchQuery]}\n textToHighlight={itemLabelText}\n />\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n }\n />\n );\n }\n return (\n <>\n <Highlighter\n autoEscape\n highlightTag={CustomHighlight}\n searchWords={[searchQuery]}\n textToHighlight={itemLabelText}\n />\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n );\n }\n if (labelOverflow === 'truncate') {\n return (\n <SimpleTruncatedTooltipText\n value={\n <>\n {itemLabelText}\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n }\n />\n );\n }\n return (\n <>\n {itemLabelText}\n {showChildrenAmount ? <ChildrenCountDisplayer item={item} /> : null}\n </>\n );\n }, [item, searchQuery, nameKey, showChildrenAmount, labelOverflow]);\n\n let className = '';\n if (labelOverflow === 'wrap-all') className += `${classNameModifierWrapAll} `;\n if (labelOverflow === 'truncate') className += `${classNameModifierTruncate} `;\n\n return (\n <ItemContent data-testid={`${treeItemBlockName}-content`}>\n <ItemValue className={className}>{Text}</ItemValue>\n </ItemContent>\n );\n}\n"],
|
|
5
|
+
"mappings": "AAAA;ACCA;AACA;AACA;AACA;AAEA;AACA;AAEA;AAGA,MAAM,cAAc,kBAAkB,OAAO,GAAG;AAGhD,MAAM,YAAY,kBAAkB,QAAQ,mBAAmB;AAK/D,MAAM,2BAA2B,GAAG,oBAAoB;AACxD,MAAM,4BAA4B,GAAG,oBAAoB;AAGzD,MAAM,kBAAkB,CAAC,EAAE,eACzB,qCAAC,QAAD;AAAA,EAAM,WAAU;AAAA,EAAsB,eAAY;AAAA,GAC/C;AAME,sBAAsB,OAA4B;AACvD,QAAM,EAAE,SAAS;AACjB,QAAM,MAAM,WAAW;AACvB,QAAM;AAAA,IACJ,OAAO,EAAE,aAAa,oBAAoB,eAAe;AAAA,MACvD;AAEJ,QAAM,OAAO,QAAQ,MAAM;AACzB,UAAM,gBAAgB,KAAK;AAC3B,QAAI,aAAa;AACf,UAAI,kBAAkB,YAAY;AAChC,eACE,qCAAC,4BAAD;AAAA,UACE,OACE,4DACE,qCAAC,aAAD;AAAA,YACE,YAAU;AAAA,YACV,cAAc;AAAA,YACd,aAAa,CAAC;AAAA,YACd,iBAAiB;AAAA,cAElB,qBAAqB,qCAAC,wBAAD;AAAA,YAAwB;AAAA,eAAiB;AAAA;AAAA;AAMzE,aACE,4DACE,qCAAC,aAAD;AAAA,QACE,YAAU;AAAA,QACV,cAAc;AAAA,QACd,aAAa,CAAC;AAAA,QACd,iBAAiB;AAAA,UAElB,qBAAqB,qCAAC,wBAAD;AAAA,QAAwB;AAAA,WAAiB;AAAA;AAIrE,QAAI,kBAAkB,YAAY;AAChC,aACE,qCAAC,4BAAD;AAAA,QACE,OACE,4DACG,eACA,qBAAqB,qCAAC,wBAAD;AAAA,UAAwB;AAAA,aAAiB;AAAA;AAAA;AAMzE,WACE,4DACG,eACA,qBAAqB,qCAAC,wBAAD;AAAA,MAAwB;AAAA,SAAiB;AAAA,KAGlE,CAAC,MAAM,aAAa,SAAS,oBAAoB;AAEpD,MAAI,YAAY;AAChB,MAAI,kBAAkB;AAAY,iBAAa,GAAG;AAClD,MAAI,kBAAkB;AAAY,iBAAa,GAAG;AAElD,SACE,qCAAC,aAAD;AAAA,IAAa,eAAa,GAAG;AAAA,KAC3B,qCAAC,WAAD;AAAA,IAAW;AAAA,KAAuB;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|