@snack-uikit/tree 0.6.29 → 0.6.30-preview-ba12ca94.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.
Files changed (93) hide show
  1. package/dist/cjs/components/Tree/Tree.js +64 -0
  2. package/dist/cjs/components/Tree/index.js +25 -0
  3. package/dist/cjs/components/Tree/utils.js +31 -0
  4. package/dist/cjs/components/index.js +25 -0
  5. package/dist/cjs/constants.js +27 -0
  6. package/dist/cjs/contexts/TreeContext.js +128 -0
  7. package/dist/cjs/helperComponents/ExpandableTreeNode/ExpandableTreeNode.js +164 -0
  8. package/dist/cjs/helperComponents/ExpandableTreeNode/index.js +25 -0
  9. package/dist/cjs/helperComponents/TreeItem/TreeItem.js +32 -0
  10. package/dist/cjs/helperComponents/TreeItem/index.js +25 -0
  11. package/dist/cjs/helperComponents/TreeLine/TreeLine.js +30 -0
  12. package/dist/cjs/helperComponents/TreeLine/index.js +25 -0
  13. package/dist/cjs/helperComponents/TreeNode/TreeNode.js +280 -0
  14. package/dist/cjs/helperComponents/TreeNode/components/TreeNodeActions.js +109 -0
  15. package/dist/cjs/helperComponents/TreeNode/components/index.js +25 -0
  16. package/dist/cjs/helperComponents/TreeNode/index.js +25 -0
  17. package/dist/cjs/helperComponents/TreeNode/utils.js +13 -0
  18. package/dist/cjs/helperComponents/index.js +28 -0
  19. package/dist/cjs/helpers.js +89 -0
  20. package/dist/cjs/index.js +25 -0
  21. package/dist/cjs/types.js +5 -0
  22. package/dist/esm/components/Tree/Tree.d.ts +4 -0
  23. package/dist/esm/components/Tree/styles.module.css +4 -0
  24. package/dist/esm/components/Tree/utils.d.ts +2 -0
  25. package/dist/esm/components/index.d.ts +1 -0
  26. package/dist/esm/components/index.js +1 -0
  27. package/dist/esm/constants.d.ts +21 -0
  28. package/dist/esm/contexts/TreeContext.d.ts +27 -0
  29. package/dist/esm/helperComponents/ExpandableTreeNode/ExpandableTreeNode.d.ts +11 -0
  30. package/dist/esm/helperComponents/ExpandableTreeNode/index.js +1 -0
  31. package/dist/esm/helperComponents/ExpandableTreeNode/styles.module.css +34 -0
  32. package/dist/esm/helperComponents/TreeItem/TreeItem.d.ts +8 -0
  33. package/dist/esm/helperComponents/TreeItem/index.js +1 -0
  34. package/dist/esm/helperComponents/TreeLine/TreeLine.d.ts +7 -0
  35. package/dist/esm/helperComponents/TreeLine/index.js +1 -0
  36. package/dist/esm/helperComponents/TreeLine/styles.module.css +37 -0
  37. package/dist/esm/helperComponents/TreeNode/TreeNode.d.ts +11 -0
  38. package/dist/esm/helperComponents/TreeNode/components/TreeNodeActions.d.ts +14 -0
  39. package/dist/esm/helperComponents/TreeNode/components/index.js +1 -0
  40. package/dist/esm/helperComponents/TreeNode/index.js +1 -0
  41. package/dist/esm/helperComponents/TreeNode/styles.module.css +113 -0
  42. package/dist/esm/helperComponents/TreeNode/utils.d.ts +3 -0
  43. package/dist/esm/helperComponents/index.js +4 -0
  44. package/dist/esm/helpers.d.ts +11 -0
  45. package/dist/esm/index.d.ts +2 -0
  46. package/dist/esm/types.d.ts +100 -0
  47. package/package.json +16 -12
  48. /package/dist/{components → cjs/components}/Tree/Tree.d.ts +0 -0
  49. /package/dist/{components → cjs/components}/Tree/index.d.ts +0 -0
  50. /package/dist/{components → cjs/components}/Tree/styles.module.css +0 -0
  51. /package/dist/{components → cjs/components}/Tree/utils.d.ts +0 -0
  52. /package/dist/{components → cjs/components}/index.d.ts +0 -0
  53. /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
  54. /package/dist/{contexts → cjs/contexts}/TreeContext.d.ts +0 -0
  55. /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/ExpandableTreeNode.d.ts +0 -0
  56. /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/index.d.ts +0 -0
  57. /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/styles.module.css +0 -0
  58. /package/dist/{helperComponents → cjs/helperComponents}/TreeItem/TreeItem.d.ts +0 -0
  59. /package/dist/{helperComponents → cjs/helperComponents}/TreeItem/index.d.ts +0 -0
  60. /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/TreeLine.d.ts +0 -0
  61. /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/index.d.ts +0 -0
  62. /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/styles.module.css +0 -0
  63. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/TreeNode.d.ts +0 -0
  64. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/components/TreeNodeActions.d.ts +0 -0
  65. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/components/index.d.ts +0 -0
  66. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/index.d.ts +0 -0
  67. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/styles.module.css +0 -0
  68. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/utils.d.ts +0 -0
  69. /package/dist/{helperComponents → cjs/helperComponents}/index.d.ts +0 -0
  70. /package/dist/{helpers.d.ts → cjs/helpers.d.ts} +0 -0
  71. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  72. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  73. /package/dist/{components → esm/components}/Tree/Tree.js +0 -0
  74. /package/dist/{components/Tree/index.js → esm/components/Tree/index.d.ts} +0 -0
  75. /package/dist/{components → esm/components/Tree}/index.js +0 -0
  76. /package/dist/{components → esm/components}/Tree/utils.js +0 -0
  77. /package/dist/{constants.js → esm/constants.js} +0 -0
  78. /package/dist/{contexts → esm/contexts}/TreeContext.js +0 -0
  79. /package/dist/{helperComponents → esm/helperComponents}/ExpandableTreeNode/ExpandableTreeNode.js +0 -0
  80. /package/dist/{helperComponents/ExpandableTreeNode/index.js → esm/helperComponents/ExpandableTreeNode/index.d.ts} +0 -0
  81. /package/dist/{helperComponents → esm/helperComponents}/TreeItem/TreeItem.js +0 -0
  82. /package/dist/{helperComponents/TreeItem/index.js → esm/helperComponents/TreeItem/index.d.ts} +0 -0
  83. /package/dist/{helperComponents → esm/helperComponents}/TreeLine/TreeLine.js +0 -0
  84. /package/dist/{helperComponents/TreeLine/index.js → esm/helperComponents/TreeLine/index.d.ts} +0 -0
  85. /package/dist/{helperComponents → esm/helperComponents}/TreeNode/TreeNode.js +0 -0
  86. /package/dist/{helperComponents → esm/helperComponents}/TreeNode/components/TreeNodeActions.js +0 -0
  87. /package/dist/{helperComponents/TreeNode/components/index.js → esm/helperComponents/TreeNode/components/index.d.ts} +0 -0
  88. /package/dist/{helperComponents/TreeNode/index.js → esm/helperComponents/TreeNode/index.d.ts} +0 -0
  89. /package/dist/{helperComponents → esm/helperComponents}/TreeNode/utils.js +0 -0
  90. /package/dist/{helperComponents/index.js → esm/helperComponents/index.d.ts} +0 -0
  91. /package/dist/{helpers.js → esm/helpers.js} +0 -0
  92. /package/dist/{index.js → esm/index.js} +0 -0
  93. /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);