@snack-uikit/tree 0.6.26-preview-1b7c1817.0 → 0.6.26-preview-d96c83e8.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 (94) hide show
  1. package/README.md +0 -1
  2. package/dist/cjs/components/Tree/Tree.js +63 -0
  3. package/dist/cjs/components/Tree/index.js +25 -0
  4. package/dist/cjs/components/Tree/utils.js +31 -0
  5. package/dist/cjs/components/index.js +25 -0
  6. package/dist/cjs/constants.js +26 -0
  7. package/dist/{contexts → cjs/contexts}/TreeContext.d.ts +2 -5
  8. package/dist/cjs/contexts/TreeContext.js +128 -0
  9. package/dist/cjs/helperComponents/ExpandableTreeNode/ExpandableTreeNode.js +163 -0
  10. package/dist/cjs/helperComponents/ExpandableTreeNode/index.js +25 -0
  11. package/dist/cjs/helperComponents/TreeItem/TreeItem.js +32 -0
  12. package/dist/cjs/helperComponents/TreeItem/index.js +25 -0
  13. package/dist/cjs/helperComponents/TreeLine/TreeLine.js +30 -0
  14. package/dist/cjs/helperComponents/TreeLine/index.js +25 -0
  15. package/dist/cjs/helperComponents/TreeNode/TreeNode.js +270 -0
  16. package/dist/cjs/helperComponents/TreeNode/components/TreeNodeActions.js +109 -0
  17. package/dist/cjs/helperComponents/TreeNode/components/index.js +25 -0
  18. package/dist/cjs/helperComponents/TreeNode/index.js +25 -0
  19. package/dist/cjs/helperComponents/TreeNode/utils.js +13 -0
  20. package/dist/cjs/helperComponents/index.js +28 -0
  21. package/dist/cjs/helpers.js +89 -0
  22. package/dist/cjs/index.js +25 -0
  23. package/dist/{types.d.ts → cjs/types.d.ts} +1 -2
  24. package/dist/cjs/types.js +5 -0
  25. package/dist/esm/components/Tree/Tree.d.ts +4 -0
  26. package/dist/{components → esm/components}/Tree/Tree.js +1 -1
  27. package/dist/esm/components/Tree/utils.d.ts +2 -0
  28. package/dist/esm/components/index.d.ts +1 -0
  29. package/dist/esm/components/index.js +1 -0
  30. package/dist/esm/constants.d.ts +20 -0
  31. package/dist/esm/contexts/TreeContext.d.ts +24 -0
  32. package/dist/{contexts → esm/contexts}/TreeContext.js +1 -1
  33. package/dist/esm/helperComponents/ExpandableTreeNode/ExpandableTreeNode.d.ts +11 -0
  34. package/dist/esm/helperComponents/ExpandableTreeNode/index.js +1 -0
  35. package/dist/esm/helperComponents/TreeItem/TreeItem.d.ts +8 -0
  36. package/dist/esm/helperComponents/TreeItem/index.js +1 -0
  37. package/dist/esm/helperComponents/TreeLine/TreeLine.d.ts +7 -0
  38. package/dist/esm/helperComponents/TreeLine/index.js +1 -0
  39. package/dist/esm/helperComponents/TreeNode/TreeNode.d.ts +11 -0
  40. package/dist/{helperComponents → esm/helperComponents}/TreeNode/TreeNode.js +4 -5
  41. package/dist/esm/helperComponents/TreeNode/components/TreeNodeActions.d.ts +14 -0
  42. package/dist/esm/helperComponents/TreeNode/components/index.js +1 -0
  43. package/dist/esm/helperComponents/TreeNode/index.js +1 -0
  44. package/dist/esm/helperComponents/TreeNode/utils.d.ts +3 -0
  45. package/dist/esm/helperComponents/index.js +4 -0
  46. package/dist/esm/helpers.d.ts +11 -0
  47. package/dist/esm/index.d.ts +2 -0
  48. package/dist/esm/types.d.ts +98 -0
  49. package/package.json +14 -12
  50. package/src/components/Tree/Tree.tsx +0 -1
  51. package/src/contexts/TreeContext.tsx +3 -10
  52. package/src/helperComponents/TreeNode/TreeNode.tsx +17 -23
  53. package/src/types.ts +1 -2
  54. package/dist/components/Tree/styles.module.css +0 -4
  55. package/dist/helperComponents/ExpandableTreeNode/styles.module.css +0 -34
  56. package/dist/helperComponents/TreeLine/styles.module.css +0 -37
  57. package/dist/helperComponents/TreeNode/styles.module.css +0 -113
  58. /package/dist/{components → cjs/components}/Tree/Tree.d.ts +0 -0
  59. /package/dist/{components → cjs/components}/Tree/index.d.ts +0 -0
  60. /package/dist/{components → cjs/components}/Tree/utils.d.ts +0 -0
  61. /package/dist/{components → cjs/components}/index.d.ts +0 -0
  62. /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
  63. /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/ExpandableTreeNode.d.ts +0 -0
  64. /package/dist/{helperComponents → cjs/helperComponents}/ExpandableTreeNode/index.d.ts +0 -0
  65. /package/dist/{helperComponents → cjs/helperComponents}/TreeItem/TreeItem.d.ts +0 -0
  66. /package/dist/{helperComponents → cjs/helperComponents}/TreeItem/index.d.ts +0 -0
  67. /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/TreeLine.d.ts +0 -0
  68. /package/dist/{helperComponents → cjs/helperComponents}/TreeLine/index.d.ts +0 -0
  69. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/TreeNode.d.ts +0 -0
  70. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/components/TreeNodeActions.d.ts +0 -0
  71. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/components/index.d.ts +0 -0
  72. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/index.d.ts +0 -0
  73. /package/dist/{helperComponents → cjs/helperComponents}/TreeNode/utils.d.ts +0 -0
  74. /package/dist/{helperComponents → cjs/helperComponents}/index.d.ts +0 -0
  75. /package/dist/{helpers.d.ts → cjs/helpers.d.ts} +0 -0
  76. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  77. /package/dist/{components/Tree/index.js → esm/components/Tree/index.d.ts} +0 -0
  78. /package/dist/{components → esm/components/Tree}/index.js +0 -0
  79. /package/dist/{components → esm/components}/Tree/utils.js +0 -0
  80. /package/dist/{constants.js → esm/constants.js} +0 -0
  81. /package/dist/{helperComponents → esm/helperComponents}/ExpandableTreeNode/ExpandableTreeNode.js +0 -0
  82. /package/dist/{helperComponents/ExpandableTreeNode/index.js → esm/helperComponents/ExpandableTreeNode/index.d.ts} +0 -0
  83. /package/dist/{helperComponents → esm/helperComponents}/TreeItem/TreeItem.js +0 -0
  84. /package/dist/{helperComponents/TreeItem/index.js → esm/helperComponents/TreeItem/index.d.ts} +0 -0
  85. /package/dist/{helperComponents → esm/helperComponents}/TreeLine/TreeLine.js +0 -0
  86. /package/dist/{helperComponents/TreeLine/index.js → esm/helperComponents/TreeLine/index.d.ts} +0 -0
  87. /package/dist/{helperComponents → esm/helperComponents}/TreeNode/components/TreeNodeActions.js +0 -0
  88. /package/dist/{helperComponents/TreeNode/components/index.js → esm/helperComponents/TreeNode/components/index.d.ts} +0 -0
  89. /package/dist/{helperComponents/TreeNode/index.js → esm/helperComponents/TreeNode/index.d.ts} +0 -0
  90. /package/dist/{helperComponents → esm/helperComponents}/TreeNode/utils.js +0 -0
  91. /package/dist/{helperComponents/index.js → esm/helperComponents/index.d.ts} +0 -0
  92. /package/dist/{helpers.js → esm/helpers.js} +0 -0
  93. /package/dist/{index.js → esm/index.js} +0 -0
  94. /package/dist/{types.js → esm/types.js} +0 -0
package/README.md CHANGED
@@ -55,7 +55,6 @@ const [selectedNodes, setSelected] = useState<TreeNodeId[]>([]);
55
55
  | selectionMode | "single" \| "multi" | - | Режим выбора элементов: <br> - `Single` - одиночный выбор <br> - `Multi` - множественный выбор <br> - `undefined` - без выбора |
56
56
  | selected | `string \| string[]` | - | Состояние для выбраных элементов: <br> - При <strong>selectionMode</strong>=`Multi` - принимает массив строк <br> - При <strong>selectionMode</strong>=`Single` - принимает строку |
57
57
  | onSelect | `((selectedKeys: string[], node: TreeNodeProps) => void) \| ((selectedKey: string, node: TreeNodeProps) => void)` | - | Колбэк при изменении выбраных элементов: <br> - При <strong>selectionMode</strong>=`Multi` - возвращает массив строк <br> - При <strong>selectionMode</strong>=`Single` - возвращает строку |
58
- | showToggleInSingleMode | `boolean` | - | |
59
58
 
60
59
 
61
60
  [//]: DOCUMENTATION_SECTION_END
@@ -0,0 +1,63 @@
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({});
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
+ data,
48
+ expandedNodes,
49
+ onNodeClick,
50
+ onExpand,
51
+ nodeActions,
52
+ parentActions,
53
+ onDataLoad,
54
+ showLines,
55
+ showIcons
56
+ }, (0, utils_2.extractSelectableProps)(rest)),
57
+ children: data.map((node, index) => (0, jsx_runtime_1.jsx)(helperComponents_1.TreeItem, {
58
+ node: node,
59
+ tabIndexAvailable: index === 0 || index === data.length - 1
60
+ }, node.id))
61
+ })
62
+ }));
63
+ }
@@ -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,26 @@
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
+ icon: 'tree__node__icon',
21
+ title: 'tree__node__title',
22
+ droplistTrigger: 'tree__node__droplist-trigger',
23
+ droplistAction: 'tree__node__droplist-action',
24
+ expandable: 'tree__node__expandable',
25
+ expandableContent: 'tree__node__expandable-content'
26
+ };
@@ -1,9 +1,6 @@
1
1
  import { Dispatch, ReactNode, SetStateAction } from 'react';
2
2
  import { OnNodeClick, ParentNode, TreeBaseProps, TreeNodeId, TreeNodeProps } from '../types';
3
- type TreeContextBaseProps = TreeBaseProps & {
4
- showToggleInSingleMode?: boolean;
5
- };
6
- type TreeContextProps = Omit<TreeContextBaseProps, 'onSelect' | 'onExpand' | 'onNodeClick' | 'selected' | 'selectionMode'> & {
3
+ type TreeContextProps = Omit<TreeBaseProps, 'onSelect' | 'onExpand' | 'onNodeClick' | 'selected' | 'selectionMode'> & {
7
4
  onExpand(node: TreeNodeProps): void;
8
5
  onSelect(node: Pick<TreeNodeProps, 'id' | 'nested' | 'disabled'>, parentNode?: ParentNode): void;
9
6
  selected?: TreeNodeId[] | TreeNodeId;
@@ -19,7 +16,7 @@ type TreeContextProps = Omit<TreeContextBaseProps, 'onSelect' | 'onExpand' | 'on
19
16
  };
20
17
  type TreeContextProviderProps = {
21
18
  children: ReactNode;
22
- value: TreeContextBaseProps;
19
+ value: TreeBaseProps;
23
20
  };
24
21
  export declare const TreeContext: import("react").Context<TreeContextProps>;
25
22
  export declare function TreeContextProvider({ children, value }: TreeContextProviderProps): import("react/jsx-runtime").JSX.Element;
@@ -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, 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,163 @@
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({});
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.disabled) return;
94
+ if (node.nested && !node.nested.length && !isExpanded && onDataLoad) {
95
+ setLoading(true);
96
+ yield onDataLoad(node).finally(() => {
97
+ setLoading(false);
98
+ });
99
+ }
100
+ onExpand(node);
101
+ toggle();
102
+ });
103
+ const handleKeyDown = e => {
104
+ if (!isExpandable) return;
105
+ switch (e.key) {
106
+ case 'ArrowRight':
107
+ {
108
+ if (!isExpanded) {
109
+ toggleExpand();
110
+ }
111
+ return;
112
+ }
113
+ case 'ArrowLeft':
114
+ {
115
+ if (isExpanded) {
116
+ toggleExpand();
117
+ }
118
+ return;
119
+ }
120
+ default:
121
+ return;
122
+ }
123
+ };
124
+ return (0, jsx_runtime_1.jsxs)("div", {
125
+ className: styles_module_scss_1.default.expandableTreeNode,
126
+ "data-test-id": dataTestId,
127
+ "data-expandable": Boolean(node.nested) || undefined,
128
+ "data-disabled": node.disabled || undefined,
129
+ children: [(0, jsx_runtime_1.jsx)(TreeNode_1.TreeNode, Object.assign({}, node, {
130
+ isLoading: isLoading,
131
+ parentNode: parentNode,
132
+ onChevronClick: toggleExpand,
133
+ onKeyDown: handleKeyDown,
134
+ tabIndexAvailable: tabIndexAvailable
135
+ })), node.nested && (0, jsx_runtime_1.jsx)("div", {
136
+ className: styles_module_scss_1.default.expandableWrap,
137
+ "data-expanded": isExpanded || undefined,
138
+ "data-test-id": constants_1.TEST_IDS.expandable,
139
+ children: showContent && (0, jsx_runtime_1.jsxs)("div", {
140
+ className: styles_module_scss_1.default.expandableContent,
141
+ "data-test-id": constants_1.TEST_IDS.expandableContent,
142
+ children: [(0, jsx_runtime_1.jsx)(TreeLine_1.TreeLine, {
143
+ visible: showLines,
144
+ halfHeight: isLineHalfHeight,
145
+ "data-test-id": constants_1.TEST_IDS.line
146
+ }), (0, jsx_runtime_1.jsx)("div", {
147
+ className: styles_module_scss_1.default.expandableNested,
148
+ children: node.nested.map(nestedNode => {
149
+ const parent = {
150
+ id: node.id,
151
+ nested: node.nested,
152
+ parentNode
153
+ };
154
+ return (0, jsx_runtime_1.jsx)(TreeItem_1.TreeItem, {
155
+ node: nestedNode,
156
+ parentNode: parent
157
+ }, nestedNode.id);
158
+ })
159
+ })]
160
+ })
161
+ })]
162
+ });
163
+ }
@@ -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({});
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);