@snack-uikit/tree 0.6.29 → 0.6.30-preview-71543426.0
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/dist/cjs/components/Tree/Tree.js +64 -0
- package/dist/cjs/components/Tree/index.js +25 -0
- package/dist/cjs/components/Tree/utils.js +31 -0
- package/dist/cjs/components/index.js +25 -0
- package/dist/cjs/constants.js +27 -0
- package/dist/cjs/contexts/TreeContext.js +128 -0
- package/dist/cjs/helperComponents/ExpandableTreeNode/ExpandableTreeNode.js +164 -0
- package/dist/cjs/helperComponents/ExpandableTreeNode/index.js +25 -0
- package/dist/cjs/helperComponents/TreeItem/TreeItem.js +32 -0
- package/dist/cjs/helperComponents/TreeItem/index.js +25 -0
- package/dist/cjs/helperComponents/TreeLine/TreeLine.js +30 -0
- package/dist/cjs/helperComponents/TreeLine/index.js +25 -0
- package/dist/cjs/helperComponents/TreeNode/TreeNode.js +280 -0
- package/dist/cjs/helperComponents/TreeNode/components/TreeNodeActions.js +109 -0
- package/dist/cjs/helperComponents/TreeNode/components/index.js +25 -0
- package/dist/cjs/helperComponents/TreeNode/index.js +25 -0
- package/dist/cjs/helperComponents/TreeNode/utils.js +13 -0
- package/dist/cjs/helperComponents/index.js +28 -0
- package/dist/cjs/helpers.js +89 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/types.js +5 -0
- package/dist/esm/components/Tree/Tree.d.ts +4 -0
- package/dist/esm/components/Tree/styles.module.css +4 -0
- package/dist/esm/components/Tree/utils.d.ts +2 -0
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/constants.d.ts +21 -0
- package/dist/esm/contexts/TreeContext.d.ts +27 -0
- package/dist/esm/helperComponents/ExpandableTreeNode/ExpandableTreeNode.d.ts +11 -0
- package/dist/esm/helperComponents/ExpandableTreeNode/index.js +1 -0
- package/dist/esm/helperComponents/ExpandableTreeNode/styles.module.css +34 -0
- package/dist/esm/helperComponents/TreeItem/TreeItem.d.ts +8 -0
- package/dist/esm/helperComponents/TreeItem/index.js +1 -0
- package/dist/esm/helperComponents/TreeLine/TreeLine.d.ts +7 -0
- package/dist/esm/helperComponents/TreeLine/index.js +1 -0
- package/dist/esm/helperComponents/TreeLine/styles.module.css +37 -0
- package/dist/esm/helperComponents/TreeNode/TreeNode.d.ts +11 -0
- package/dist/esm/helperComponents/TreeNode/components/TreeNodeActions.d.ts +14 -0
- package/dist/esm/helperComponents/TreeNode/components/index.js +1 -0
- package/dist/esm/helperComponents/TreeNode/index.js +1 -0
- package/dist/esm/helperComponents/TreeNode/styles.module.css +113 -0
- package/dist/esm/helperComponents/TreeNode/utils.d.ts +3 -0
- package/dist/esm/helperComponents/index.js +4 -0
- package/dist/esm/helpers.d.ts +11 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/types.d.ts +100 -0
- package/package.json +14 -12
- /package/dist/{components → cjs/components}/Tree/Tree.d.ts +0 -0
- /package/dist/{components → cjs/components}/Tree/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Tree/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Tree/utils.d.ts +0 -0
- /package/dist/{components → cjs/components}/index.d.ts +0 -0
- /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
- /package/dist/{contexts → cjs/contexts}/TreeContext.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/ExpandableTreeNode.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeItem/TreeItem.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeItem/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/TreeLine.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/TreeNode.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/components/TreeNodeActions.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/components/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/index.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/styles.module.css +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/utils.d.ts +0 -0
- /package/dist/{helperComponents → cjs/helperComponents}/index.d.ts +0 -0
- /package/dist/{helpers.d.ts → cjs/helpers.d.ts} +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{components → esm/components}/Tree/Tree.js +0 -0
- /package/dist/{components/Tree/index.js → esm/components/Tree/index.d.ts} +0 -0
- /package/dist/{components → esm/components/Tree}/index.js +0 -0
- /package/dist/{components → esm/components}/Tree/utils.js +0 -0
- /package/dist/{constants.js → esm/constants.js} +0 -0
- /package/dist/{contexts → esm/contexts}/TreeContext.js +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/ExpandableTreeNode/ExpandableTreeNode.js +0 -0
- /package/dist/{helperComponents/ExpandableTreeNode/index.js → esm/helperComponents/ExpandableTreeNode/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/TreeItem/TreeItem.js +0 -0
- /package/dist/{helperComponents/TreeItem/index.js → esm/helperComponents/TreeItem/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/TreeLine/TreeLine.js +0 -0
- /package/dist/{helperComponents/TreeLine/index.js → esm/helperComponents/TreeLine/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/TreeNode/TreeNode.js +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/TreeNode/components/TreeNodeActions.js +0 -0
- /package/dist/{helperComponents/TreeNode/components/index.js → esm/helperComponents/TreeNode/components/index.d.ts} +0 -0
- /package/dist/{helperComponents/TreeNode/index.js → esm/helperComponents/TreeNode/index.d.ts} +0 -0
- /package/dist/{helperComponents → esm/helperComponents}/TreeNode/utils.js +0 -0
- /package/dist/{helperComponents/index.js → esm/helperComponents/index.d.ts} +0 -0
- /package/dist/{helpers.js → esm/helpers.js} +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
12
|
+
return mod && mod.__esModule ? mod : {
|
|
13
|
+
"default": mod
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", {
|
|
17
|
+
value: true
|
|
18
|
+
});
|
|
19
|
+
exports.Tree = Tree;
|
|
20
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
21
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
22
|
+
const utils_1 = require("@snack-uikit/utils");
|
|
23
|
+
const TreeContext_1 = require("../../contexts/TreeContext");
|
|
24
|
+
const helperComponents_1 = require("../../helperComponents");
|
|
25
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
26
|
+
const utils_2 = require("./utils");
|
|
27
|
+
function Tree(_a) {
|
|
28
|
+
var {
|
|
29
|
+
data,
|
|
30
|
+
onNodeClick,
|
|
31
|
+
onExpand,
|
|
32
|
+
expandedNodes,
|
|
33
|
+
nodeActions,
|
|
34
|
+
parentActions,
|
|
35
|
+
onDataLoad,
|
|
36
|
+
showLines = true,
|
|
37
|
+
showIcons = true,
|
|
38
|
+
className
|
|
39
|
+
} = _a,
|
|
40
|
+
rest = __rest(_a, ["data", "onNodeClick", "onExpand", "expandedNodes", "nodeActions", "parentActions", "onDataLoad", "showLines", "showIcons", "className"]);
|
|
41
|
+
return (0, jsx_runtime_1.jsx)("div", Object.assign({
|
|
42
|
+
className: (0, classnames_1.default)(styles_module_scss_1.default.tree, className),
|
|
43
|
+
role: 'tree'
|
|
44
|
+
}, (0, utils_1.extractSupportProps)(rest), {
|
|
45
|
+
children: (0, jsx_runtime_1.jsx)(TreeContext_1.TreeContextProvider, {
|
|
46
|
+
value: Object.assign({
|
|
47
|
+
showToggle: rest.selectionMode === 'single' && rest.showToggle,
|
|
48
|
+
data,
|
|
49
|
+
expandedNodes,
|
|
50
|
+
onNodeClick,
|
|
51
|
+
onExpand,
|
|
52
|
+
nodeActions,
|
|
53
|
+
parentActions,
|
|
54
|
+
onDataLoad,
|
|
55
|
+
showLines,
|
|
56
|
+
showIcons
|
|
57
|
+
}, (0, utils_2.extractSelectableProps)(rest)),
|
|
58
|
+
children: data.map((node, index) => (0, jsx_runtime_1.jsx)(helperComponents_1.TreeItem, {
|
|
59
|
+
node: node,
|
|
60
|
+
tabIndexAvailable: index === 0 || index === data.length - 1
|
|
61
|
+
}, node.id))
|
|
62
|
+
})
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./Tree"), exports);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.extractSelectableProps = extractSelectableProps;
|
|
7
|
+
const constants_1 = require("../../constants");
|
|
8
|
+
function extractSelectableProps(_ref) {
|
|
9
|
+
let {
|
|
10
|
+
selectionMode,
|
|
11
|
+
selected,
|
|
12
|
+
onSelect
|
|
13
|
+
} = _ref;
|
|
14
|
+
switch (selectionMode) {
|
|
15
|
+
case constants_1.SELECTION_MODE.Single:
|
|
16
|
+
return {
|
|
17
|
+
selectionMode,
|
|
18
|
+
selected,
|
|
19
|
+
onSelect
|
|
20
|
+
};
|
|
21
|
+
case constants_1.SELECTION_MODE.Multi:
|
|
22
|
+
return {
|
|
23
|
+
selectionMode,
|
|
24
|
+
selected,
|
|
25
|
+
onSelect
|
|
26
|
+
};
|
|
27
|
+
case undefined:
|
|
28
|
+
default:
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./Tree"), exports);
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TEST_IDS = exports.TRANSITION_TIMING = exports.SELECTION_MODE = void 0;
|
|
7
|
+
exports.SELECTION_MODE = {
|
|
8
|
+
Single: 'single',
|
|
9
|
+
Multi: 'multi'
|
|
10
|
+
};
|
|
11
|
+
exports.TRANSITION_TIMING = {
|
|
12
|
+
accordionFolding: 200
|
|
13
|
+
};
|
|
14
|
+
exports.TEST_IDS = {
|
|
15
|
+
node: 'tree__node',
|
|
16
|
+
line: 'tree__node__line',
|
|
17
|
+
item: 'tree__node__item',
|
|
18
|
+
chevron: 'tree__node__chevron',
|
|
19
|
+
checkbox: 'tree__node__checkbox',
|
|
20
|
+
radio: 'tree__node__radio',
|
|
21
|
+
icon: 'tree__node__icon',
|
|
22
|
+
title: 'tree__node__title',
|
|
23
|
+
droplistTrigger: 'tree__node__droplist-trigger',
|
|
24
|
+
droplistAction: 'tree__node__droplist-action',
|
|
25
|
+
expandable: 'tree__node__expandable',
|
|
26
|
+
expandableContent: 'tree__node__expandable-content'
|
|
27
|
+
};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
4
|
+
var t = {};
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", {
|
|
12
|
+
value: true
|
|
13
|
+
});
|
|
14
|
+
exports.useTreeContext = exports.TreeContext = void 0;
|
|
15
|
+
exports.TreeContextProvider = TreeContextProvider;
|
|
16
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
17
|
+
const react_1 = require("react");
|
|
18
|
+
const uncontrollable_1 = require("uncontrollable");
|
|
19
|
+
const constants_1 = require("../constants");
|
|
20
|
+
const helpers_1 = require("../helpers");
|
|
21
|
+
exports.TreeContext = (0, react_1.createContext)({
|
|
22
|
+
data: [],
|
|
23
|
+
selected: undefined,
|
|
24
|
+
onSelect() {},
|
|
25
|
+
expandedNodes: [],
|
|
26
|
+
onExpand() {
|
|
27
|
+
return new Promise(resolve => resolve);
|
|
28
|
+
},
|
|
29
|
+
onNodeClick() {},
|
|
30
|
+
setFocusPosition() {},
|
|
31
|
+
setFocusIndex() {},
|
|
32
|
+
resetFocusPosition() {},
|
|
33
|
+
focusableNodeIds: [],
|
|
34
|
+
isMultiSelect: false,
|
|
35
|
+
isSingleSelect: false,
|
|
36
|
+
isSelectable: false
|
|
37
|
+
});
|
|
38
|
+
function TreeContextProvider(_ref) {
|
|
39
|
+
let {
|
|
40
|
+
children,
|
|
41
|
+
value
|
|
42
|
+
} = _ref;
|
|
43
|
+
const {
|
|
44
|
+
onNodeClick: onNodeClickProp,
|
|
45
|
+
onExpand: onExpandProp,
|
|
46
|
+
onSelect: onSelectProp,
|
|
47
|
+
selectionMode,
|
|
48
|
+
data
|
|
49
|
+
} = value,
|
|
50
|
+
props = __rest(value, ["onNodeClick", "onExpand", "onSelect", "selectionMode", "data"]);
|
|
51
|
+
const isMultiSelect = selectionMode === constants_1.SELECTION_MODE.Multi;
|
|
52
|
+
const isSingleSelect = selectionMode === constants_1.SELECTION_MODE.Single;
|
|
53
|
+
const isSelectable = Boolean(selectionMode);
|
|
54
|
+
const [expandedNodes, onExpandHandler] = (0, uncontrollable_1.useUncontrolledProp)(value.expandedNodes, value.expandedNodes || [], onExpandProp);
|
|
55
|
+
const onExpand = (0, react_1.useCallback)(node => {
|
|
56
|
+
const isExpanded = expandedNodes.includes(node.id);
|
|
57
|
+
const nodes = isExpanded ? expandedNodes.filter(id => id !== node.id) : expandedNodes.concat(node.id);
|
|
58
|
+
onExpandHandler(nodes, node);
|
|
59
|
+
}, [expandedNodes, onExpandHandler]);
|
|
60
|
+
const [selectedNodes, onSelectHandler] = (0, uncontrollable_1.useUncontrolledProp)(value.selected, [], onSelectProp);
|
|
61
|
+
const onSelect = (0, react_1.useCallback)((node, parentNode) => {
|
|
62
|
+
if (!isSelectable || node.disabled) return;
|
|
63
|
+
if (isSingleSelect) {
|
|
64
|
+
onSelectHandler(node.id === selectedNodes ? undefined : node.id, node);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (Array.isArray(selectedNodes)) {
|
|
68
|
+
const updatedSelectedNodes = (0, helpers_1.lookupTreeForSelectedNodes)({
|
|
69
|
+
node,
|
|
70
|
+
parentNode,
|
|
71
|
+
selectedNodes
|
|
72
|
+
});
|
|
73
|
+
onSelectHandler(updatedSelectedNodes, node);
|
|
74
|
+
}
|
|
75
|
+
}, [isSingleSelect, onSelectHandler, selectedNodes, isSelectable]);
|
|
76
|
+
const focusableNodeIds = (0, react_1.useMemo)(() => {
|
|
77
|
+
if (!(expandedNodes === null || expandedNodes === void 0 ? void 0 : expandedNodes.length)) {
|
|
78
|
+
return data.map(node => node.id);
|
|
79
|
+
}
|
|
80
|
+
return data.reduce((acc, cur) => {
|
|
81
|
+
var _a;
|
|
82
|
+
acc.push(cur.id);
|
|
83
|
+
const isExpanded = expandedNodes.includes(cur.id);
|
|
84
|
+
if (isExpanded && ((_a = cur.nested) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
85
|
+
acc.push(...(0, helpers_1.findAllExpandedChildNodeIds)(cur.nested, expandedNodes));
|
|
86
|
+
}
|
|
87
|
+
return acc;
|
|
88
|
+
}, []);
|
|
89
|
+
}, [data, expandedNodes]);
|
|
90
|
+
const [focusIndex, setFocusIndex] = (0, react_1.useState)();
|
|
91
|
+
const focusedNodeId = focusIndex !== undefined ? focusableNodeIds[focusIndex] : undefined;
|
|
92
|
+
const setFocusPosition = (0, react_1.useCallback)(nodeId => {
|
|
93
|
+
const newFocusIndex = focusableNodeIds.indexOf(nodeId);
|
|
94
|
+
setFocusIndex(newFocusIndex >= 0 ? newFocusIndex : undefined);
|
|
95
|
+
}, [focusableNodeIds]);
|
|
96
|
+
const resetFocusPosition = (0, react_1.useCallback)(() => setFocusIndex(undefined), []);
|
|
97
|
+
const onNodeClick = (0, react_1.useCallback)((node, e) => {
|
|
98
|
+
var _a;
|
|
99
|
+
if (node.disabled) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
if (isSingleSelect) {
|
|
103
|
+
onSelect(node);
|
|
104
|
+
}
|
|
105
|
+
((_a = node.onClick) === null || _a === void 0 ? void 0 : _a.call(node, e)) || (onNodeClickProp === null || onNodeClickProp === void 0 ? void 0 : onNodeClickProp(node, e));
|
|
106
|
+
}, [isSingleSelect, onSelect, onNodeClickProp]);
|
|
107
|
+
return (0, jsx_runtime_1.jsx)(exports.TreeContext.Provider, {
|
|
108
|
+
value: Object.assign(Object.assign({}, props), {
|
|
109
|
+
data,
|
|
110
|
+
selected: selectedNodes,
|
|
111
|
+
isSingleSelect,
|
|
112
|
+
isMultiSelect,
|
|
113
|
+
isSelectable,
|
|
114
|
+
expandedNodes,
|
|
115
|
+
onExpand,
|
|
116
|
+
onSelect,
|
|
117
|
+
onNodeClick,
|
|
118
|
+
focusedNodeId,
|
|
119
|
+
setFocusPosition,
|
|
120
|
+
resetFocusPosition,
|
|
121
|
+
setFocusIndex,
|
|
122
|
+
focusableNodeIds
|
|
123
|
+
}),
|
|
124
|
+
children: children
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const useTreeContext = () => (0, react_1.useContext)(exports.TreeContext);
|
|
128
|
+
exports.useTreeContext = useTreeContext;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
4
|
+
function adopt(value) {
|
|
5
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
6
|
+
resolve(value);
|
|
7
|
+
});
|
|
8
|
+
}
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) {
|
|
11
|
+
try {
|
|
12
|
+
step(generator.next(value));
|
|
13
|
+
} catch (e) {
|
|
14
|
+
reject(e);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function rejected(value) {
|
|
18
|
+
try {
|
|
19
|
+
step(generator["throw"](value));
|
|
20
|
+
} catch (e) {
|
|
21
|
+
reject(e);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function step(result) {
|
|
25
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
26
|
+
}
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __rest = void 0 && (void 0).__rest || function (s, e) {
|
|
31
|
+
var t = {};
|
|
32
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
33
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
34
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
39
|
+
return mod && mod.__esModule ? mod : {
|
|
40
|
+
"default": mod
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(exports, "__esModule", {
|
|
44
|
+
value: true
|
|
45
|
+
});
|
|
46
|
+
exports.ExpandableTreeNode = ExpandableTreeNode;
|
|
47
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
48
|
+
const react_1 = require("react");
|
|
49
|
+
const react_transition_state_1 = __importDefault(require("react-transition-state"));
|
|
50
|
+
const constants_1 = require("../../constants");
|
|
51
|
+
const TreeContext_1 = require("../../contexts/TreeContext");
|
|
52
|
+
const TreeItem_1 = require("../TreeItem");
|
|
53
|
+
const TreeLine_1 = require("../TreeLine");
|
|
54
|
+
const TreeNode_1 = require("../TreeNode");
|
|
55
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
56
|
+
function ExpandableTreeNode(_a) {
|
|
57
|
+
var _b = _a.node,
|
|
58
|
+
{
|
|
59
|
+
'data-test-id': dataTestId
|
|
60
|
+
} = _b,
|
|
61
|
+
node = __rest(_b, ['data-test-id']),
|
|
62
|
+
{
|
|
63
|
+
parentNode,
|
|
64
|
+
tabIndexAvailable
|
|
65
|
+
} = _a;
|
|
66
|
+
const {
|
|
67
|
+
expandedNodes,
|
|
68
|
+
onExpand,
|
|
69
|
+
onDataLoad,
|
|
70
|
+
showLines
|
|
71
|
+
} = (0, TreeContext_1.useTreeContext)();
|
|
72
|
+
const isExpandable = Boolean(node.nested);
|
|
73
|
+
const isExpanded = (expandedNodes === null || expandedNodes === void 0 ? void 0 : expandedNodes.includes(node.id)) || false;
|
|
74
|
+
const [isLoading, setLoading] = (0, react_1.useState)(false);
|
|
75
|
+
const [state, toggle] = (0, react_transition_state_1.default)({
|
|
76
|
+
timeout: constants_1.TRANSITION_TIMING.accordionFolding,
|
|
77
|
+
initialEntered: isExpanded || undefined,
|
|
78
|
+
enter: isExpanded
|
|
79
|
+
});
|
|
80
|
+
const showContent = node.nested && node.nested.length > 0 && state.status !== 'exited';
|
|
81
|
+
const isLineHalfHeight = (0, react_1.useMemo)(() => {
|
|
82
|
+
var _a, _b;
|
|
83
|
+
if (!((_a = node.nested) === null || _a === void 0 ? void 0 : _a.length)) return false;
|
|
84
|
+
return !((_b = node.nested.at(-1)) === null || _b === void 0 ? void 0 : _b.nested);
|
|
85
|
+
}, [node.nested]);
|
|
86
|
+
(0, react_1.useEffect)(() => {
|
|
87
|
+
var _a;
|
|
88
|
+
if (((_a = node.nested) === null || _a === void 0 ? void 0 : _a.length) && isExpanded && state.status === 'exited') {
|
|
89
|
+
toggle(true);
|
|
90
|
+
}
|
|
91
|
+
}, [isExpanded, node.nested, state.status]);
|
|
92
|
+
const toggleExpand = () => __awaiter(this, void 0, void 0, function* () {
|
|
93
|
+
if (node.nested && !node.nested.length && !isExpanded && onDataLoad) {
|
|
94
|
+
setLoading(true);
|
|
95
|
+
yield onDataLoad(node).finally(() => {
|
|
96
|
+
setLoading(false);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
onExpand(node);
|
|
100
|
+
toggle();
|
|
101
|
+
});
|
|
102
|
+
const handleKeyDown = e => {
|
|
103
|
+
if (!isExpandable) return;
|
|
104
|
+
switch (e.key) {
|
|
105
|
+
case 'ArrowRight':
|
|
106
|
+
{
|
|
107
|
+
if (!isExpanded) {
|
|
108
|
+
toggleExpand();
|
|
109
|
+
}
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
case 'ArrowLeft':
|
|
113
|
+
{
|
|
114
|
+
if (isExpanded) {
|
|
115
|
+
toggleExpand();
|
|
116
|
+
}
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
default:
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
return (0, jsx_runtime_1.jsxs)("div", {
|
|
124
|
+
className: styles_module_scss_1.default.expandableTreeNode,
|
|
125
|
+
"data-test-id": dataTestId,
|
|
126
|
+
"data-expandable": Boolean(node.nested) || undefined,
|
|
127
|
+
"data-disabled": node.disabled || undefined,
|
|
128
|
+
children: [(0, jsx_runtime_1.jsx)(TreeNode_1.TreeNode, Object.assign({}, node, {
|
|
129
|
+
isLoading: isLoading,
|
|
130
|
+
parentNode: parentNode,
|
|
131
|
+
onChevronClick: toggleExpand,
|
|
132
|
+
onKeyDown: handleKeyDown,
|
|
133
|
+
tabIndexAvailable: tabIndexAvailable
|
|
134
|
+
})), node.nested && (0, jsx_runtime_1.jsx)("div", {
|
|
135
|
+
className: styles_module_scss_1.default.expandableWrap,
|
|
136
|
+
"data-expanded": isExpanded || undefined,
|
|
137
|
+
"data-test-id": constants_1.TEST_IDS.expandable,
|
|
138
|
+
children: showContent && (0, jsx_runtime_1.jsxs)("div", {
|
|
139
|
+
className: styles_module_scss_1.default.expandableContent,
|
|
140
|
+
"data-test-id": constants_1.TEST_IDS.expandableContent,
|
|
141
|
+
children: [(0, jsx_runtime_1.jsx)(TreeLine_1.TreeLine, {
|
|
142
|
+
visible: showLines,
|
|
143
|
+
halfHeight: isLineHalfHeight,
|
|
144
|
+
"data-test-id": constants_1.TEST_IDS.line
|
|
145
|
+
}), (0, jsx_runtime_1.jsx)("div", {
|
|
146
|
+
className: styles_module_scss_1.default.expandableNested,
|
|
147
|
+
children: node.nested.map(nestedNode => {
|
|
148
|
+
const parent = {
|
|
149
|
+
id: node.id,
|
|
150
|
+
nested: node.nested,
|
|
151
|
+
parentNode
|
|
152
|
+
};
|
|
153
|
+
return (0, jsx_runtime_1.jsx)(TreeItem_1.TreeItem, {
|
|
154
|
+
node: Object.assign(Object.assign({}, nestedNode), {
|
|
155
|
+
disabled: node.disabled || nestedNode.disabled
|
|
156
|
+
}),
|
|
157
|
+
parentNode: parent
|
|
158
|
+
}, nestedNode.id);
|
|
159
|
+
})
|
|
160
|
+
})]
|
|
161
|
+
})
|
|
162
|
+
})]
|
|
163
|
+
});
|
|
164
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./ExpandableTreeNode"), exports);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TreeItem = TreeItem;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const constants_1 = require("../../constants");
|
|
9
|
+
const ExpandableTreeNode_1 = require("../ExpandableTreeNode");
|
|
10
|
+
const TreeNode_1 = require("../TreeNode");
|
|
11
|
+
function TreeItem(_ref) {
|
|
12
|
+
let {
|
|
13
|
+
node,
|
|
14
|
+
tabIndexAvailable,
|
|
15
|
+
parentNode
|
|
16
|
+
} = _ref;
|
|
17
|
+
const dataTestId = node['data-test-id'] || constants_1.TEST_IDS.node;
|
|
18
|
+
const nodeProps = Object.assign(Object.assign({}, node), {
|
|
19
|
+
'data-test-id': dataTestId
|
|
20
|
+
});
|
|
21
|
+
if (node.nested) {
|
|
22
|
+
return (0, jsx_runtime_1.jsx)(ExpandableTreeNode_1.ExpandableTreeNode, {
|
|
23
|
+
node: nodeProps,
|
|
24
|
+
tabIndexAvailable: tabIndexAvailable,
|
|
25
|
+
parentNode: parentNode
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return (0, jsx_runtime_1.jsx)(TreeNode_1.TreeNode, Object.assign({}, nodeProps, {
|
|
29
|
+
tabIndexAvailable: tabIndexAvailable,
|
|
30
|
+
parentNode: parentNode
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./TreeItem"), exports);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
|
|
4
|
+
return mod && mod.__esModule ? mod : {
|
|
5
|
+
"default": mod
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports.TreeLine = TreeLine;
|
|
12
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
13
|
+
const constants_1 = require("../../constants");
|
|
14
|
+
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
15
|
+
function TreeLine(_ref) {
|
|
16
|
+
let {
|
|
17
|
+
halfWidth,
|
|
18
|
+
halfHeight,
|
|
19
|
+
horizontal,
|
|
20
|
+
visible
|
|
21
|
+
} = _ref;
|
|
22
|
+
return (0, jsx_runtime_1.jsx)("div", {
|
|
23
|
+
className: styles_module_scss_1.default.treeLine,
|
|
24
|
+
"data-horizontal": horizontal || undefined,
|
|
25
|
+
"data-half-width": halfWidth || undefined,
|
|
26
|
+
"data-half-height": halfHeight || undefined,
|
|
27
|
+
"data-visible": visible || undefined,
|
|
28
|
+
"data-test-id": constants_1.TEST_IDS.line
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return m[k];
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
} : function (o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
});
|
|
19
|
+
var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", {
|
|
23
|
+
value: true
|
|
24
|
+
});
|
|
25
|
+
__exportStar(require("./TreeLine"), exports);
|