@dreamcommerce/aurora 2.8.12 → 2.9.0-10

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 (67) hide show
  1. package/build/cjs/packages/aurora/src/assets/icon_list_arrow_down.js +17 -0
  2. package/build/cjs/packages/aurora/src/assets/icon_list_arrow_down.js.map +1 -0
  3. package/build/cjs/packages/aurora/src/components/dropdown/components/custom_label.js +3 -1
  4. package/build/cjs/packages/aurora/src/components/dropdown/components/custom_label.js.map +1 -1
  5. package/build/cjs/packages/aurora/src/components/dropdown/hooks/use_keyboard_open_close.js +1 -0
  6. package/build/cjs/packages/aurora/src/components/dropdown/hooks/use_keyboard_open_close.js.map +1 -1
  7. package/build/cjs/packages/aurora/src/components/stack/index.js +15 -2
  8. package/build/cjs/packages/aurora/src/components/stack/index.js.map +1 -1
  9. package/build/cjs/packages/aurora/src/components/tree/components/tree_node.js +53 -0
  10. package/build/cjs/packages/aurora/src/components/tree/components/tree_node.js.map +1 -0
  11. package/build/cjs/packages/aurora/src/components/tree/context/tree_context.js +19 -0
  12. package/build/cjs/packages/aurora/src/components/tree/context/tree_context.js.map +1 -0
  13. package/build/cjs/packages/aurora/src/components/tree/context/tree_provider.js +38 -0
  14. package/build/cjs/packages/aurora/src/components/tree/context/tree_provider.js.map +1 -0
  15. package/build/cjs/packages/aurora/src/components/tree/css_classes.js +31 -0
  16. package/build/cjs/packages/aurora/src/components/tree/css_classes.js.map +1 -0
  17. package/build/cjs/packages/aurora/src/components/tree/hooks/tree_hook.js +21 -0
  18. package/build/cjs/packages/aurora/src/components/tree/hooks/tree_hook.js.map +1 -0
  19. package/build/cjs/packages/aurora/src/components/tree/hooks/tree_node_hook.js +23 -0
  20. package/build/cjs/packages/aurora/src/components/tree/hooks/tree_node_hook.js.map +1 -0
  21. package/build/cjs/packages/aurora/src/components/tree/index.js +23 -0
  22. package/build/cjs/packages/aurora/src/components/tree/index.js.map +1 -0
  23. package/build/cjs/packages/aurora/src/css/tree/main.module.less.js +12 -0
  24. package/build/cjs/packages/aurora/src/css/tree/main.module.less.js.map +1 -0
  25. package/build/cjs/packages/aurora/src/index.js +4 -0
  26. package/build/cjs/packages/aurora/src/index.js.map +1 -1
  27. package/build/esm/packages/aurora/src/assets/icon_list_arrow_down.d.ts +1 -0
  28. package/build/esm/packages/aurora/src/assets/icon_list_arrow_down.js +9 -0
  29. package/build/esm/packages/aurora/src/assets/icon_list_arrow_down.js.map +1 -0
  30. package/build/esm/packages/aurora/src/components/dropdown/components/custom_label.js +3 -1
  31. package/build/esm/packages/aurora/src/components/dropdown/components/custom_label.js.map +1 -1
  32. package/build/esm/packages/aurora/src/components/dropdown/hooks/use_keyboard_open_close.d.ts +1 -0
  33. package/build/esm/packages/aurora/src/components/dropdown/hooks/use_keyboard_open_close.js +1 -0
  34. package/build/esm/packages/aurora/src/components/dropdown/hooks/use_keyboard_open_close.js.map +1 -1
  35. package/build/esm/packages/aurora/src/components/stack/index.js +16 -3
  36. package/build/esm/packages/aurora/src/components/stack/index.js.map +1 -1
  37. package/build/esm/packages/aurora/src/components/stack/stack_types.d.ts +4 -0
  38. package/build/esm/packages/aurora/src/components/tree/components/tree_node.d.ts +21 -0
  39. package/build/esm/packages/aurora/src/components/tree/components/tree_node.js +44 -0
  40. package/build/esm/packages/aurora/src/components/tree/components/tree_node.js.map +1 -0
  41. package/build/esm/packages/aurora/src/components/tree/context/tree_context.d.ts +17 -0
  42. package/build/esm/packages/aurora/src/components/tree/context/tree_context.js +14 -0
  43. package/build/esm/packages/aurora/src/components/tree/context/tree_context.js.map +1 -0
  44. package/build/esm/packages/aurora/src/components/tree/context/tree_provider.d.ts +2 -0
  45. package/build/esm/packages/aurora/src/components/tree/context/tree_provider.js +30 -0
  46. package/build/esm/packages/aurora/src/components/tree/context/tree_provider.js.map +1 -0
  47. package/build/esm/packages/aurora/src/components/tree/css_classes.d.ts +21 -0
  48. package/build/esm/packages/aurora/src/components/tree/css_classes.js +26 -0
  49. package/build/esm/packages/aurora/src/components/tree/css_classes.js.map +1 -0
  50. package/build/esm/packages/aurora/src/components/tree/hooks/tree_hook.d.ts +1 -0
  51. package/build/esm/packages/aurora/src/components/tree/hooks/tree_hook.js +13 -0
  52. package/build/esm/packages/aurora/src/components/tree/hooks/tree_hook.js.map +1 -0
  53. package/build/esm/packages/aurora/src/components/tree/hooks/tree_node_hook.d.ts +2 -0
  54. package/build/esm/packages/aurora/src/components/tree/hooks/tree_node_hook.js +19 -0
  55. package/build/esm/packages/aurora/src/components/tree/hooks/tree_node_hook.js.map +1 -0
  56. package/build/esm/packages/aurora/src/components/tree/index.d.ts +6 -0
  57. package/build/esm/packages/aurora/src/components/tree/index.js +14 -0
  58. package/build/esm/packages/aurora/src/components/tree/index.js.map +1 -0
  59. package/build/esm/packages/aurora/src/css/tree/main.module.less.js +8 -0
  60. package/build/esm/packages/aurora/src/css/tree/main.module.less.js.map +1 -0
  61. package/build/esm/packages/aurora/src/index.d.ts +3 -1
  62. package/build/esm/packages/aurora/src/index.js +2 -0
  63. package/build/esm/packages/aurora/src/index.js.map +1 -1
  64. package/build/esm/packages/aurora/src/typings/general.d.ts +4 -0
  65. package/build/esm/packages/aurora/src/typings/general.js +1 -0
  66. package/build/esm/packages/aurora/src/typings/general.js.map +1 -1
  67. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
+
11
+ const IconListArrowDown = () => {
12
+ return (React__default['default'].createElement("svg", { width: "6", height: "4", viewBox: "0 0 6 4", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
13
+ React__default['default'].createElement("path", { id: "Polygon 1", d: "M3.28615 3.86114C3.12455 4.04629 2.87545 4.04629 2.71385 3.86114L0.136577 0.908383C-0.145619 0.585074 0.0386869 -4.16709e-08 0.422729 0L5.57727 5.59302e-07C5.96131 6.00973e-07 6.14562 0.585074 5.86342 0.908383L3.28615 3.86114Z", fill: "#5C657E" })));
14
+ };
15
+
16
+ exports.IconListArrowDown = IconListArrowDown;
17
+ //# sourceMappingURL=icon_list_arrow_down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -14,9 +14,11 @@ const CustomLabel = ({ children, disabled }) => {
14
14
  const { toggleDropdown, isOpen } = index.useDropdownContext();
15
15
  const ref = React.useRef(null);
16
16
  use_keyboard_open_close.useKeyboardOpenClose(toggleDropdown, isOpen, ref);
17
- const handleOnClick = () => {
17
+ const handleOnClick = (ev) => {
18
18
  if (disabled)
19
19
  return;
20
+ ev.preventDefault();
21
+ ev.stopPropagation();
20
22
  toggleDropdown && toggleDropdown();
21
23
  };
22
24
  return (React__default['default'].createElement("div", { onClick: handleOnClick, ref: ref, tabIndex: 0 }, children));
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -10,5 +10,6 @@ const useKeyboardOpenClose = (toggleDropdown, isOpen, ref) => {
10
10
  use_key_down.useKeyDown(['Esc|Escape'], () => isOpen && (toggleDropdown === null || toggleDropdown === void 0 ? void 0 : toggleDropdown()), ref);
11
11
  };
12
12
 
13
+ exports.default = useKeyboardOpenClose;
13
14
  exports.useKeyboardOpenClose = useKeyboardOpenClose;
14
15
  //# sourceMappingURL=use_keyboard_open_close.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -13,11 +13,24 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
13
13
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
14
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
15
15
 
16
- const Stack = ({ children, spacing = 0, className = '', direction = stack_constants.STACK_DIRECTIONS.row, justify = stack_constants.STACK_JUSTIFICATIONS.flexStart, align = stack_constants.STACK_ALIGNMENTS.normal, wrap = stack_constants.STACK_WRAP.nowrap, as = 'div', inline = false, style = {} }) => {
16
+ const Stack = ({ children, spacing = 0, className = '', direction = stack_constants.STACK_DIRECTIONS.row, justify = stack_constants.STACK_JUSTIFICATIONS.flexStart, align = stack_constants.STACK_ALIGNMENTS.normal, wrap = stack_constants.STACK_WRAP.nowrap, as = 'div', inline = false, style = {}, onMouseLeave, onMouseEnter, attributes, onClick }) => {
17
17
  const stackClass = classnames__default['default'](main_module['default'][css_classes.cssStack], main_module['default'][stack_constants.STACK_DIRECTIONS_TO_CSS_CLASSES_MAP[direction]], main_module['default'][stack_constants.STACK_ALIGNMENTS_TO_CSS_CLASSES_MAP[align]], main_module['default'][stack_constants.STACK_JUSTIFICATIONS_TO_CSS_CLASSES_MAP[justify]], main_module['default'][stack_constants.STACK_WRAP_TO_CSS_CLASSES_MAP[wrap]], inline ? main_module['default'][stack_constants.STACK_CSS_CLASSES.inline] : '', className);
18
+ const stackElRef = React.useRef(null);
19
+ React.useEffect(() => {
20
+ if (!stackElRef.current || !attributes)
21
+ return;
22
+ Object.entries(attributes).forEach(([key, value]) => {
23
+ var _a;
24
+ (_a = stackElRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute(key, value);
25
+ });
26
+ }, []);
18
27
  return React__default['default'].createElement(as, {
28
+ ref: stackElRef,
19
29
  className: `${stackClass}`,
20
- style: { gap: `${spacing}px`, ...style }
30
+ style: { gap: `${spacing}px`, ...style },
31
+ onMouseEnter,
32
+ onMouseLeave,
33
+ onClick
21
34
  }, children);
22
35
  };
23
36
 
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,53 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classnames = require('classnames');
7
+ var reactTransitionGroup = require('react-transition-group');
8
+ var css_classes = require('../css_classes.js');
9
+ var main_module = require('../../../css/tree/main.module.less.js');
10
+ var tree_hook = require('../hooks/tree_hook.js');
11
+ var tree_node_hook = require('../hooks/tree_node_hook.js');
12
+ var icon_list_arrow_down = require('../../../assets/icon_list_arrow_down.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
18
+
19
+ const TreeNode = ({ children, id, cssClassNames, ContentComponent, LabelComponent, ...rest }) => {
20
+ const treeApi = tree_hook.useTree();
21
+ const node = tree_node_hook.useTreeNode(id, rest);
22
+ const nodeChildrenRef = React.useRef(null);
23
+ if (!node)
24
+ return null;
25
+ const toggleNode = () => {
26
+ treeApi.toggleNode(node.id);
27
+ };
28
+ const Label = LabelComponent ? (LabelComponent === null || LabelComponent === void 0 ? void 0 : LabelComponent({ node, isLeaf: !children })) : (React__default['default'].createElement("span", { tabIndex: !children ? 0 : -1, className: classnames__default['default'](main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeLabelContent], css_classes.TREE_NODE_CSS_CLASSES.treeNodeLabelContent) }, node.label ? node.label : node.id));
29
+ const Content = ContentComponent ? (ContentComponent === null || ContentComponent === void 0 ? void 0 : ContentComponent({ node, toggleNode, isLeaf: !children })) : (React__default['default'].createElement("div", { className: classnames__default['default'](css_classes.TREE_NODE_CSS_CLASSES.treeNodeLabel, main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeLabel]) },
30
+ React__default['default'].createElement("button", { className: classnames__default['default'](css_classes.TREE_NODE_CSS_CLASSES.treeNodeTogglerBtn, main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeTogglerBtn], {
31
+ [css_classes.TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnExpanded]: node.expanded,
32
+ [main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnExpanded]]: node.expanded
33
+ }), onClick: toggleNode },
34
+ React__default['default'].createElement("span", { className: classnames__default['default'](main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnIcon], css_classes.TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnIcon) },
35
+ React__default['default'].createElement(icon_list_arrow_down.IconListArrowDown, null))),
36
+ Label));
37
+ return (React__default['default'].createElement("li", { role: "treeitem", "aria-expanded": node.expanded, className: classnames__default['default'](main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNode], css_classes.TREE_NODE_CSS_CLASSES.treeNode, cssClassNames, {
38
+ [css_classes.TREE_NODE_CSS_CLASSES.treeNodeExpanded]: node.expanded
39
+ }) },
40
+ children ? Content : Label,
41
+ children ? (React__default['default'].createElement(reactTransitionGroup.CSSTransition, { unmountOnExit: true, in: node.expanded, timeout: 250, classNames: {
42
+ enter: main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildrenEnter],
43
+ enterActive: main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildrenEnterActive],
44
+ exit: main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildrenExit],
45
+ exitActive: main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildrenExitActive],
46
+ exitDone: main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildrenExitDone]
47
+ } },
48
+ React__default['default'].createElement("ul", { className: classnames__default['default'](main_module['default'][css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildren], css_classes.TREE_NODE_CSS_CLASSES.treeNodeChildren), ref: nodeChildrenRef }, children))) : null));
49
+ };
50
+
51
+ exports.TreeNode = TreeNode;
52
+ exports.default = TreeNode;
53
+ //# sourceMappingURL=tree_node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ const TreeContext = React.createContext({
8
+ addNode: () => { },
9
+ updateNode: () => { },
10
+ removeNode: () => { },
11
+ toggleNode: () => { },
12
+ getNode: () => undefined,
13
+ hasNode: () => false
14
+ });
15
+ const TreeContextProvider = TreeContext.Provider;
16
+
17
+ exports.TreeContext = TreeContext;
18
+ exports.TreeContextProvider = TreeContextProvider;
19
+ //# sourceMappingURL=tree_context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var tree_context = require('./tree_context.js');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
+
12
+ const TreeProvider = ({ children }) => {
13
+ const [nodes, setNodes] = React.useState([]);
14
+ const value = {
15
+ addNode(node) {
16
+ setNodes((nodes) => [...nodes, node]);
17
+ },
18
+ updateNode(nodeId, node) {
19
+ setNodes((nodes) => nodes.map((n) => (n.id === nodeId ? { ...n, ...node } : n)));
20
+ },
21
+ getNode(nodeId) {
22
+ return nodes.find((node) => node.id === nodeId);
23
+ },
24
+ removeNode(nodeId) {
25
+ setNodes((nodes) => nodes.filter((node) => node.id !== nodeId));
26
+ },
27
+ toggleNode(nodeId) {
28
+ setNodes((nodes) => nodes.map((node) => (node.id === nodeId ? { ...node, expanded: !node.expanded } : node)));
29
+ },
30
+ hasNode(nodeId) {
31
+ return !!nodes.find((node) => node.id === nodeId);
32
+ }
33
+ };
34
+ return React__default['default'].createElement(tree_context.TreeContextProvider, { value: value }, children);
35
+ };
36
+
37
+ exports.TreeProvider = TreeProvider;
38
+ //# sourceMappingURL=tree_provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const baseCssClass = 'tree';
6
+ const TREE_CSS_CLASSES = {
7
+ tree: baseCssClass,
8
+ treeNode: `${baseCssClass}__node`
9
+ };
10
+ const treeNodeBaseCssClass = `tree-node`;
11
+ const TREE_NODE_CSS_CLASSES = {
12
+ treeNode: treeNodeBaseCssClass,
13
+ treeNodeTogglerBtn: `${treeNodeBaseCssClass}__toggler-btn`,
14
+ treeNodeTogglerBtnExpanded: `${treeNodeBaseCssClass}__toggler-btn_expanded`,
15
+ treeNodeTogglerBtnIcon: `${treeNodeBaseCssClass}__toggler-btn-icon`,
16
+ treeNodeLabelContent: `${treeNodeBaseCssClass}__label-content`,
17
+ treeNodeLabel: `${treeNodeBaseCssClass}__label`,
18
+ treeNodeChildren: `${treeNodeBaseCssClass}__children`,
19
+ treeNodeChildrenEnter: `${treeNodeBaseCssClass}__children-enter`,
20
+ treeNodeChildrenEnterActive: `${treeNodeBaseCssClass}__children-enter-active`,
21
+ treeNodeChildrenExit: `${treeNodeBaseCssClass}__children-exit`,
22
+ treeNodeChildrenExitActive: `${treeNodeBaseCssClass}__children-exit-active`,
23
+ treeNodeChildrenExitDone: `${treeNodeBaseCssClass}__children-exit-done`,
24
+ treeNodeExpanded: `${treeNodeBaseCssClass}_expanded`,
25
+ treeNodeDisabled: `${treeNodeBaseCssClass}_disabled`,
26
+ treeNodeFocused: `${treeNodeBaseCssClass}_focused`
27
+ };
28
+
29
+ exports.TREE_CSS_CLASSES = TREE_CSS_CLASSES;
30
+ exports.TREE_NODE_CSS_CLASSES = TREE_NODE_CSS_CLASSES;
31
+ //# sourceMappingURL=css_classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var tree_context = require('../context/tree_context.js');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
+
12
+ const useTree = () => {
13
+ const context = React__default['default'].useContext(tree_context.TreeContext);
14
+ if (!context) {
15
+ throw new Error('useTree must be used within a TreeContextProvider');
16
+ }
17
+ return context;
18
+ };
19
+
20
+ exports.useTree = useTree;
21
+ //# sourceMappingURL=tree_hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var tree_hook = require('./tree_hook.js');
7
+
8
+ const useTreeNode = (nodeId, props) => {
9
+ const treeApi = tree_hook.useTree();
10
+ React.useEffect(() => {
11
+ if (treeApi.hasNode(nodeId) && props)
12
+ treeApi.updateNode(nodeId, props);
13
+ }, [props === null || props === void 0 ? void 0 : props.expanded]);
14
+ React.useEffect(() => {
15
+ if (!treeApi.hasNode(nodeId))
16
+ treeApi.addNode({ id: nodeId, ...props });
17
+ return () => treeApi.removeNode(nodeId);
18
+ }, []);
19
+ return treeApi.getNode(nodeId);
20
+ };
21
+
22
+ exports.useTreeNode = useTreeNode;
23
+ //# sourceMappingURL=tree_node_hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classnames = require('classnames');
7
+ var tree_provider = require('./context/tree_provider.js');
8
+ var css_classes = require('./css_classes.js');
9
+ var main_module = require('../../css/tree/main.module.less.js');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
15
+
16
+ const Tree = ({ children, cssClassNames }) => {
17
+ return (React__default['default'].createElement(tree_provider.TreeProvider, null,
18
+ React__default['default'].createElement("ul", { className: classnames__default['default'](main_module['default'][css_classes.TREE_CSS_CLASSES.tree], css_classes.TREE_CSS_CLASSES.tree, cssClassNames) }, children)));
19
+ };
20
+
21
+ exports.Tree = Tree;
22
+ exports.default = Tree;
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styleInject_es = require('../../../../../external/style-inject/dist/style-inject.es.js');
6
+
7
+ var css_248z = ".main-module_tree__3D4e3 {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.main-module_tree-node__toggler-btn__s9KoL {\n display: flex;\n padding: 0 4px 8px 4px;\n cursor: pointer;\n}\n.main-module_tree-node__toggler-btn__s9KoL svg {\n transition: rotate 250ms ease-out;\n rotate: -95deg;\n}\n.main-module_tree-node__toggler-btn_expanded__17Joe svg {\n rotate: 0deg;\n}\n.main-module_tree-node__label__DT728 {\n display: flex;\n align-items: center;\n background: none;\n gap: 8px;\n}\n.main-module_tree-node__children__QyEOR {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n transform-origin: top center;\n transition: opacity 250ms ease-out, scale 250ms ease-out;\n padding-left: 16px;\n list-style: none;\n will-change: true;\n}\n.main-module_tree-node__children-enter__vxFO- {\n opacity: 0;\n scale: 1 0;\n}\n.main-module_tree-node__children-enter-active__T6XIS {\n opacity: 1;\n scale: 1 1;\n}\n.main-module_tree-node__children-exit__1NXHe {\n opacity: 1;\n scale: 1 1;\n}\n.main-module_tree-node__children-exit-active__vdqAI {\n opacity: 0;\n scale: 1 0;\n}\n";
8
+ var cssClasses = {"tree":"main-module_tree__3D4e3","tree-node__toggler-btn":"main-module_tree-node__toggler-btn__s9KoL","tree-node__toggler-btn_expanded":"main-module_tree-node__toggler-btn_expanded__17Joe","tree-node__label":"main-module_tree-node__label__DT728","tree-node__children":"main-module_tree-node__children__QyEOR","tree-node__children-enter":"main-module_tree-node__children-enter__vxFO-","tree-node__children-enter-active":"main-module_tree-node__children-enter-active__T6XIS","tree-node__children-exit":"main-module_tree-node__children-exit__1NXHe","tree-node__children-exit-active":"main-module_tree-node__children-exit-active__vdqAI"};
9
+ styleInject_es['default'](css_248z);
10
+
11
+ exports.default = cssClasses;
12
+ //# sourceMappingURL=main.module.less.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,6BAA6B,8DAAkE;AAC/F;AACA;AACA;AACA;AACA;AACA;"}
@@ -81,6 +81,8 @@ var tabs_wrapper = require('./components/tabs/components/tabs_wrapper.js');
81
81
  var index$2 = require('./components/tooltip/index.js');
82
82
  var index$J = require('./components/with_loader/index.js');
83
83
  var values_syncer = require('./components/controls/components/values_syncer.js');
84
+ var index$N = require('./components/tree/index.js');
85
+ var tree_node = require('./components/tree/components/tree_node.js');
84
86
 
85
87
 
86
88
 
@@ -165,4 +167,6 @@ exports.TabsWrapper = tabs_wrapper['default'];
165
167
  exports.Tooltip = index$2['default'];
166
168
  exports.WithLoader = index$J['default'];
167
169
  exports.ValuesSyncer = values_syncer['default'];
170
+ exports.Tree = index$N.Tree;
171
+ exports.TreeNode = tree_node.TreeNode;
168
172
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1 @@
1
+ export declare const IconListArrowDown: () => JSX.Element;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+
3
+ const IconListArrowDown = () => {
4
+ return (React.createElement("svg", { width: "6", height: "4", viewBox: "0 0 6 4", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
5
+ React.createElement("path", { id: "Polygon 1", d: "M3.28615 3.86114C3.12455 4.04629 2.87545 4.04629 2.71385 3.86114L0.136577 0.908383C-0.145619 0.585074 0.0386869 -4.16709e-08 0.422729 0L5.57727 5.59302e-07C5.96131 6.00973e-07 6.14562 0.585074 5.86342 0.908383L3.28615 3.86114Z", fill: "#5C657E" })));
6
+ };
7
+
8
+ export { IconListArrowDown };
9
+ //# sourceMappingURL=icon_list_arrow_down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -6,9 +6,11 @@ const CustomLabel = ({ children, disabled }) => {
6
6
  const { toggleDropdown, isOpen } = useDropdownContext();
7
7
  const ref = useRef(null);
8
8
  useKeyboardOpenClose(toggleDropdown, isOpen, ref);
9
- const handleOnClick = () => {
9
+ const handleOnClick = (ev) => {
10
10
  if (disabled)
11
11
  return;
12
+ ev.preventDefault();
13
+ ev.stopPropagation();
12
14
  toggleDropdown && toggleDropdown();
13
15
  };
14
16
  return (React.createElement("div", { onClick: handleOnClick, ref: ref, tabIndex: 0 }, children));
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,2 +1,3 @@
1
1
  import { RefObject } from 'react';
2
2
  export declare const useKeyboardOpenClose: (toggleDropdown?: () => void, isOpen?: boolean, ref?: RefObject<HTMLElement>) => void;
3
+ export default useKeyboardOpenClose;
@@ -6,5 +6,6 @@ const useKeyboardOpenClose = (toggleDropdown, isOpen, ref) => {
6
6
  useKeyDown(['Esc|Escape'], () => isOpen && (toggleDropdown === null || toggleDropdown === void 0 ? void 0 : toggleDropdown()), ref);
7
7
  };
8
8
 
9
+ export default useKeyboardOpenClose;
9
10
  export { useKeyboardOpenClose };
10
11
  //# sourceMappingURL=use_keyboard_open_close.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,14 +1,27 @@
1
- import React from 'react';
1
+ import React, { useRef, useEffect } from 'react';
2
2
  import classnames from 'classnames';
3
3
  import { STACK_DIRECTIONS, STACK_JUSTIFICATIONS, STACK_ALIGNMENTS, STACK_WRAP, STACK_DIRECTIONS_TO_CSS_CLASSES_MAP, STACK_ALIGNMENTS_TO_CSS_CLASSES_MAP, STACK_JUSTIFICATIONS_TO_CSS_CLASSES_MAP, STACK_WRAP_TO_CSS_CLASSES_MAP, STACK_CSS_CLASSES } from './stack_constants.js';
4
4
  import cssClasses from '../../css/stack/main.module.less.js';
5
5
  import { cssStack } from './css_classes.js';
6
6
 
7
- const Stack = ({ children, spacing = 0, className = '', direction = STACK_DIRECTIONS.row, justify = STACK_JUSTIFICATIONS.flexStart, align = STACK_ALIGNMENTS.normal, wrap = STACK_WRAP.nowrap, as = 'div', inline = false, style = {} }) => {
7
+ const Stack = ({ children, spacing = 0, className = '', direction = STACK_DIRECTIONS.row, justify = STACK_JUSTIFICATIONS.flexStart, align = STACK_ALIGNMENTS.normal, wrap = STACK_WRAP.nowrap, as = 'div', inline = false, style = {}, onMouseLeave, onMouseEnter, attributes, onClick }) => {
8
8
  const stackClass = classnames(cssClasses[cssStack], cssClasses[STACK_DIRECTIONS_TO_CSS_CLASSES_MAP[direction]], cssClasses[STACK_ALIGNMENTS_TO_CSS_CLASSES_MAP[align]], cssClasses[STACK_JUSTIFICATIONS_TO_CSS_CLASSES_MAP[justify]], cssClasses[STACK_WRAP_TO_CSS_CLASSES_MAP[wrap]], inline ? cssClasses[STACK_CSS_CLASSES.inline] : '', className);
9
+ const stackElRef = useRef(null);
10
+ useEffect(() => {
11
+ if (!stackElRef.current || !attributes)
12
+ return;
13
+ Object.entries(attributes).forEach(([key, value]) => {
14
+ var _a;
15
+ (_a = stackElRef.current) === null || _a === void 0 ? void 0 : _a.setAttribute(key, value);
16
+ });
17
+ }, []);
9
18
  return React.createElement(as, {
19
+ ref: stackElRef,
10
20
  className: `${stackClass}`,
11
- style: { gap: `${spacing}px`, ...style }
21
+ style: { gap: `${spacing}px`, ...style },
22
+ onMouseEnter,
23
+ onMouseLeave,
24
+ onClick
12
25
  }, children);
13
26
  };
14
27
 
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -12,6 +12,10 @@ export declare type TStackProps = {
12
12
  as?: string;
13
13
  inline?: boolean;
14
14
  style?: Record<any, any>;
15
+ onMouseEnter?: (event: React.MouseEvent) => void;
16
+ onMouseLeave?: (event: React.MouseEvent) => void;
17
+ attributes?: Record<string, any>;
18
+ onClick?: (event: React.MouseEvent) => void;
15
19
  };
16
20
  export declare type TStackJustify = Any.Keys<typeof STACK_JUSTIFICATIONS_TO_CSS_CLASSES_MAP>;
17
21
  export declare type TStackDirection = Any.Keys<typeof STACK_DIRECTIONS_TO_CSS_CLASSES_MAP>;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { TPropsWithChildren } from "../../../typings/general";
3
+ import { ITreeNode } from "../context/tree_context";
4
+ declare type TTreeContentComponentProps = {
5
+ node: ITreeNode;
6
+ toggleNode: () => void;
7
+ isLeaf: boolean;
8
+ };
9
+ declare type TTreeLabelComponentProps = {
10
+ node: ITreeNode;
11
+ isLeaf: boolean;
12
+ };
13
+ declare type TTreeNodeProps = TPropsWithChildren<ITreeNode & {
14
+ cssClassNames?: string;
15
+ collapseIcon?: React.ReactNode;
16
+ expandIcon?: React.ReactNode;
17
+ LabelComponent?: (props: TTreeLabelComponentProps) => React.ReactNode;
18
+ ContentComponent?: (props: TTreeContentComponentProps) => React.ReactNode;
19
+ }>;
20
+ export declare const TreeNode: ({ children, id, cssClassNames, ContentComponent, LabelComponent, ...rest }: TTreeNodeProps) => JSX.Element | null;
21
+ export default TreeNode;
@@ -0,0 +1,44 @@
1
+ import React, { useRef } from 'react';
2
+ import classnames from 'classnames';
3
+ import { CSSTransition } from 'react-transition-group';
4
+ import { TREE_NODE_CSS_CLASSES } from '../css_classes.js';
5
+ import cssClasses from '../../../css/tree/main.module.less.js';
6
+ import { useTree } from '../hooks/tree_hook.js';
7
+ import { useTreeNode } from '../hooks/tree_node_hook.js';
8
+ import { IconListArrowDown } from '../../../assets/icon_list_arrow_down.js';
9
+
10
+ const TreeNode = ({ children, id, cssClassNames, ContentComponent, LabelComponent, ...rest }) => {
11
+ const treeApi = useTree();
12
+ const node = useTreeNode(id, rest);
13
+ const nodeChildrenRef = useRef(null);
14
+ if (!node)
15
+ return null;
16
+ const toggleNode = () => {
17
+ treeApi.toggleNode(node.id);
18
+ };
19
+ const Label = LabelComponent ? (LabelComponent === null || LabelComponent === void 0 ? void 0 : LabelComponent({ node, isLeaf: !children })) : (React.createElement("span", { tabIndex: !children ? 0 : -1, className: classnames(cssClasses[TREE_NODE_CSS_CLASSES.treeNodeLabelContent], TREE_NODE_CSS_CLASSES.treeNodeLabelContent) }, node.label ? node.label : node.id));
20
+ const Content = ContentComponent ? (ContentComponent === null || ContentComponent === void 0 ? void 0 : ContentComponent({ node, toggleNode, isLeaf: !children })) : (React.createElement("div", { className: classnames(TREE_NODE_CSS_CLASSES.treeNodeLabel, cssClasses[TREE_NODE_CSS_CLASSES.treeNodeLabel]) },
21
+ React.createElement("button", { className: classnames(TREE_NODE_CSS_CLASSES.treeNodeTogglerBtn, cssClasses[TREE_NODE_CSS_CLASSES.treeNodeTogglerBtn], {
22
+ [TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnExpanded]: node.expanded,
23
+ [cssClasses[TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnExpanded]]: node.expanded
24
+ }), onClick: toggleNode },
25
+ React.createElement("span", { className: classnames(cssClasses[TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnIcon], TREE_NODE_CSS_CLASSES.treeNodeTogglerBtnIcon) },
26
+ React.createElement(IconListArrowDown, null))),
27
+ Label));
28
+ return (React.createElement("li", { role: "treeitem", "aria-expanded": node.expanded, className: classnames(cssClasses[TREE_NODE_CSS_CLASSES.treeNode], TREE_NODE_CSS_CLASSES.treeNode, cssClassNames, {
29
+ [TREE_NODE_CSS_CLASSES.treeNodeExpanded]: node.expanded
30
+ }) },
31
+ children ? Content : Label,
32
+ children ? (React.createElement(CSSTransition, { unmountOnExit: true, in: node.expanded, timeout: 250, classNames: {
33
+ enter: cssClasses[TREE_NODE_CSS_CLASSES.treeNodeChildrenEnter],
34
+ enterActive: cssClasses[TREE_NODE_CSS_CLASSES.treeNodeChildrenEnterActive],
35
+ exit: cssClasses[TREE_NODE_CSS_CLASSES.treeNodeChildrenExit],
36
+ exitActive: cssClasses[TREE_NODE_CSS_CLASSES.treeNodeChildrenExitActive],
37
+ exitDone: cssClasses[TREE_NODE_CSS_CLASSES.treeNodeChildrenExitDone]
38
+ } },
39
+ React.createElement("ul", { className: classnames(cssClasses[TREE_NODE_CSS_CLASSES.treeNodeChildren], TREE_NODE_CSS_CLASSES.treeNodeChildren), ref: nodeChildrenRef }, children))) : null));
40
+ };
41
+
42
+ export default TreeNode;
43
+ export { TreeNode };
44
+ //# sourceMappingURL=tree_node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ export declare type ITreeNode = {
3
+ id: string;
4
+ label?: string;
5
+ expanded?: boolean;
6
+ disabled?: boolean;
7
+ };
8
+ export interface ITreeContext {
9
+ addNode(node: ITreeNode): void;
10
+ updateNode(nodeId: string, node: Partial<ITreeNode>): void;
11
+ hasNode(nodeId: string): boolean;
12
+ getNode(nodeId: string): ITreeNode | undefined;
13
+ removeNode(nodeId: string): void;
14
+ toggleNode(nodeId: string): void;
15
+ }
16
+ export declare const TreeContext: import("react").Context<ITreeContext>;
17
+ export declare const TreeContextProvider: import("react").Provider<ITreeContext>;
@@ -0,0 +1,14 @@
1
+ import { createContext } from 'react';
2
+
3
+ const TreeContext = createContext({
4
+ addNode: () => { },
5
+ updateNode: () => { },
6
+ removeNode: () => { },
7
+ toggleNode: () => { },
8
+ getNode: () => undefined,
9
+ hasNode: () => false
10
+ });
11
+ const TreeContextProvider = TreeContext.Provider;
12
+
13
+ export { TreeContext, TreeContextProvider };
14
+ //# sourceMappingURL=tree_context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,2 @@
1
+ import { TPropsWithChildren } from "../../../typings/general";
2
+ export declare const TreeProvider: ({ children }: TPropsWithChildren) => JSX.Element;
@@ -0,0 +1,30 @@
1
+ import React, { useState } from 'react';
2
+ import { TreeContextProvider } from './tree_context.js';
3
+
4
+ const TreeProvider = ({ children }) => {
5
+ const [nodes, setNodes] = useState([]);
6
+ const value = {
7
+ addNode(node) {
8
+ setNodes((nodes) => [...nodes, node]);
9
+ },
10
+ updateNode(nodeId, node) {
11
+ setNodes((nodes) => nodes.map((n) => (n.id === nodeId ? { ...n, ...node } : n)));
12
+ },
13
+ getNode(nodeId) {
14
+ return nodes.find((node) => node.id === nodeId);
15
+ },
16
+ removeNode(nodeId) {
17
+ setNodes((nodes) => nodes.filter((node) => node.id !== nodeId));
18
+ },
19
+ toggleNode(nodeId) {
20
+ setNodes((nodes) => nodes.map((node) => (node.id === nodeId ? { ...node, expanded: !node.expanded } : node)));
21
+ },
22
+ hasNode(nodeId) {
23
+ return !!nodes.find((node) => node.id === nodeId);
24
+ }
25
+ };
26
+ return React.createElement(TreeContextProvider, { value: value }, children);
27
+ };
28
+
29
+ export { TreeProvider };
30
+ //# sourceMappingURL=tree_provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,21 @@
1
+ export declare const TREE_CSS_CLASSES: {
2
+ readonly tree: "tree";
3
+ readonly treeNode: "tree__node";
4
+ };
5
+ export declare const TREE_NODE_CSS_CLASSES: {
6
+ readonly treeNode: "tree-node";
7
+ readonly treeNodeTogglerBtn: "tree-node__toggler-btn";
8
+ readonly treeNodeTogglerBtnExpanded: "tree-node__toggler-btn_expanded";
9
+ readonly treeNodeTogglerBtnIcon: "tree-node__toggler-btn-icon";
10
+ readonly treeNodeLabelContent: "tree-node__label-content";
11
+ readonly treeNodeLabel: "tree-node__label";
12
+ readonly treeNodeChildren: "tree-node__children";
13
+ readonly treeNodeChildrenEnter: "tree-node__children-enter";
14
+ readonly treeNodeChildrenEnterActive: "tree-node__children-enter-active";
15
+ readonly treeNodeChildrenExit: "tree-node__children-exit";
16
+ readonly treeNodeChildrenExitActive: "tree-node__children-exit-active";
17
+ readonly treeNodeChildrenExitDone: "tree-node__children-exit-done";
18
+ readonly treeNodeExpanded: "tree-node_expanded";
19
+ readonly treeNodeDisabled: "tree-node_disabled";
20
+ readonly treeNodeFocused: "tree-node_focused";
21
+ };
@@ -0,0 +1,26 @@
1
+ const baseCssClass = 'tree';
2
+ const TREE_CSS_CLASSES = {
3
+ tree: baseCssClass,
4
+ treeNode: `${baseCssClass}__node`
5
+ };
6
+ const treeNodeBaseCssClass = `tree-node`;
7
+ const TREE_NODE_CSS_CLASSES = {
8
+ treeNode: treeNodeBaseCssClass,
9
+ treeNodeTogglerBtn: `${treeNodeBaseCssClass}__toggler-btn`,
10
+ treeNodeTogglerBtnExpanded: `${treeNodeBaseCssClass}__toggler-btn_expanded`,
11
+ treeNodeTogglerBtnIcon: `${treeNodeBaseCssClass}__toggler-btn-icon`,
12
+ treeNodeLabelContent: `${treeNodeBaseCssClass}__label-content`,
13
+ treeNodeLabel: `${treeNodeBaseCssClass}__label`,
14
+ treeNodeChildren: `${treeNodeBaseCssClass}__children`,
15
+ treeNodeChildrenEnter: `${treeNodeBaseCssClass}__children-enter`,
16
+ treeNodeChildrenEnterActive: `${treeNodeBaseCssClass}__children-enter-active`,
17
+ treeNodeChildrenExit: `${treeNodeBaseCssClass}__children-exit`,
18
+ treeNodeChildrenExitActive: `${treeNodeBaseCssClass}__children-exit-active`,
19
+ treeNodeChildrenExitDone: `${treeNodeBaseCssClass}__children-exit-done`,
20
+ treeNodeExpanded: `${treeNodeBaseCssClass}_expanded`,
21
+ treeNodeDisabled: `${treeNodeBaseCssClass}_disabled`,
22
+ treeNodeFocused: `${treeNodeBaseCssClass}_focused`
23
+ };
24
+
25
+ export { TREE_CSS_CLASSES, TREE_NODE_CSS_CLASSES };
26
+ //# sourceMappingURL=css_classes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1 @@
1
+ export declare const useTree: () => import("../context/tree_context").ITreeContext;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { TreeContext } from '../context/tree_context.js';
3
+
4
+ const useTree = () => {
5
+ const context = React.useContext(TreeContext);
6
+ if (!context) {
7
+ throw new Error('useTree must be used within a TreeContextProvider');
8
+ }
9
+ return context;
10
+ };
11
+
12
+ export { useTree };
13
+ //# sourceMappingURL=tree_hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,2 @@
1
+ import { ITreeNode } from "../context/tree_context";
2
+ export declare const useTreeNode: (nodeId: string, props?: Partial<ITreeNode>) => ITreeNode | undefined;
@@ -0,0 +1,19 @@
1
+ import { useEffect } from 'react';
2
+ import { useTree } from './tree_hook.js';
3
+
4
+ const useTreeNode = (nodeId, props) => {
5
+ const treeApi = useTree();
6
+ useEffect(() => {
7
+ if (treeApi.hasNode(nodeId) && props)
8
+ treeApi.updateNode(nodeId, props);
9
+ }, [props === null || props === void 0 ? void 0 : props.expanded]);
10
+ useEffect(() => {
11
+ if (!treeApi.hasNode(nodeId))
12
+ treeApi.addNode({ id: nodeId, ...props });
13
+ return () => treeApi.removeNode(nodeId);
14
+ }, []);
15
+ return treeApi.getNode(nodeId);
16
+ };
17
+
18
+ export { useTreeNode };
19
+ //# sourceMappingURL=tree_node_hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,6 @@
1
+ import { TPropsWithChildren } from "../../typings/general";
2
+ declare type TTreeProps = {
3
+ cssClassNames?: string;
4
+ };
5
+ export declare const Tree: ({ children, cssClassNames }: TPropsWithChildren<TTreeProps>) => JSX.Element;
6
+ export default Tree;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import classnames from 'classnames';
3
+ import { TreeProvider } from './context/tree_provider.js';
4
+ import { TREE_CSS_CLASSES } from './css_classes.js';
5
+ import cssClasses from '../../css/tree/main.module.less.js';
6
+
7
+ const Tree = ({ children, cssClassNames }) => {
8
+ return (React.createElement(TreeProvider, null,
9
+ React.createElement("ul", { className: classnames(cssClasses[TREE_CSS_CLASSES.tree], TREE_CSS_CLASSES.tree, cssClassNames) }, children)));
10
+ };
11
+
12
+ export default Tree;
13
+ export { Tree };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,8 @@
1
+ import styleInject from '../../../../../external/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = ".main-module_tree__3D4e3 {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.main-module_tree-node__toggler-btn__s9KoL {\n display: flex;\n padding: 0 4px 8px 4px;\n cursor: pointer;\n}\n.main-module_tree-node__toggler-btn__s9KoL svg {\n transition: rotate 250ms ease-out;\n rotate: -95deg;\n}\n.main-module_tree-node__toggler-btn_expanded__17Joe svg {\n rotate: 0deg;\n}\n.main-module_tree-node__label__DT728 {\n display: flex;\n align-items: center;\n background: none;\n gap: 8px;\n}\n.main-module_tree-node__children__QyEOR {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n transform-origin: top center;\n transition: opacity 250ms ease-out, scale 250ms ease-out;\n padding-left: 16px;\n list-style: none;\n will-change: true;\n}\n.main-module_tree-node__children-enter__vxFO- {\n opacity: 0;\n scale: 1 0;\n}\n.main-module_tree-node__children-enter-active__T6XIS {\n opacity: 1;\n scale: 1 1;\n}\n.main-module_tree-node__children-exit__1NXHe {\n opacity: 1;\n scale: 1 1;\n}\n.main-module_tree-node__children-exit-active__vdqAI {\n opacity: 0;\n scale: 1 0;\n}\n";
4
+ var cssClasses = {"tree":"main-module_tree__3D4e3","tree-node__toggler-btn":"main-module_tree-node__toggler-btn__s9KoL","tree-node__toggler-btn_expanded":"main-module_tree-node__toggler-btn_expanded__17Joe","tree-node__label":"main-module_tree-node__label__DT728","tree-node__children":"main-module_tree-node__children__QyEOR","tree-node__children-enter":"main-module_tree-node__children-enter__vxFO-","tree-node__children-enter-active":"main-module_tree-node__children-enter-active__T6XIS","tree-node__children-exit":"main-module_tree-node__children-exit__1NXHe","tree-node__children-exit-active":"main-module_tree-node__children-exit-active__vdqAI"};
5
+ styleInject(css_248z);
6
+
7
+ export default cssClasses;
8
+ //# sourceMappingURL=main.module.less.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,wBAAwB,8DAAkE;AAC1F;AACA;AACA;AACA;AACA;AACA;"}
@@ -105,13 +105,15 @@ import { useSearchList } from "./components/search_list/use_search_list";
105
105
  import { useToggle } from "./components/dropdown/hooks";
106
106
  import XhrImagePicker from "./components/xhr_image_picker";
107
107
  import ValuesSyncer from "./components/controls/components/values_syncer";
108
+ import { Tree } from "./components/tree";
109
+ import { TreeNode } from "./components/tree/components/tree_node";
108
110
  /**
109
111
  * export hooks
110
112
  */
111
113
  /**
112
114
  * export components
113
115
  */
114
- export { Accordion, Button, Tooltip, ButtonsGroup, Dropdown, Select, MultiSelect, Label, Stack, Control, ControlInput, ControlCheckbox, ControlCheckboxSwitch, ControlRadio, ControlSelect, ControlRange, ControlMultiSelect, ControlTextarea, Gallery, Datepicker, ColorPicker, ControlColorPicker, ControlDatepicker, ControlFilePicker, ControlXhrImagePicker, Heading, Typography, Modal, ModalProvider, AbsoluteModal, RelativeModal, TabsWrapper, Tabs, TabsItem, TabsItemList, TabsPanel, TabsPanelList, SearchList, SearchListInput, SearchListResults, Tag, TagsSelector, ControlTagsSelector, Table, DataTable, Grid, DropdownContext, ModalContext, IconCalendar, Spacing, IconArrow, IconTick, FilePicker, ImagePicker, ControlCellSelector, Hint, ControlRadioGroup, MessageBox, FlashMessenger, useFlashMessenger, Loader, WithLoader, useDropdownContext, FlashMessengerContext, FlashMessagesList, Link, IconTablet, IconMobile, IconLaptop, IconDesktop, IconWarning, useToggle, useSearchList, Slide, SlideWrapper, SlideHeader, SlideSubHeader, SlideContent, SlideFooter, XhrImagePicker, ValuesSyncer };
116
+ export { Accordion, Button, Tooltip, ButtonsGroup, Dropdown, Select, MultiSelect, Label, Stack, Control, ControlInput, ControlCheckbox, ControlCheckboxSwitch, ControlRadio, ControlSelect, ControlRange, ControlMultiSelect, ControlTextarea, Gallery, Datepicker, ColorPicker, ControlColorPicker, ControlDatepicker, ControlFilePicker, ControlXhrImagePicker, Heading, Typography, Modal, ModalProvider, AbsoluteModal, RelativeModal, TabsWrapper, Tabs, TabsItem, TabsItemList, TabsPanel, TabsPanelList, SearchList, SearchListInput, SearchListResults, Tag, TagsSelector, ControlTagsSelector, Table, DataTable, Grid, DropdownContext, ModalContext, IconCalendar, Spacing, IconArrow, IconTick, FilePicker, ImagePicker, ControlCellSelector, Hint, ControlRadioGroup, MessageBox, FlashMessenger, useFlashMessenger, Loader, WithLoader, useDropdownContext, FlashMessengerContext, FlashMessagesList, Link, IconTablet, IconMobile, IconLaptop, IconDesktop, IconWarning, useToggle, useSearchList, Slide, SlideWrapper, SlideHeader, SlideSubHeader, SlideContent, SlideFooter, XhrImagePicker, ValuesSyncer, Tree, TreeNode };
115
117
  /**
116
118
  * export types
117
119
  */
@@ -77,4 +77,6 @@ export { default as TabsWrapper } from './components/tabs/components/tabs_wrappe
77
77
  export { default as Tooltip } from './components/tooltip/index.js';
78
78
  export { default as WithLoader } from './components/with_loader/index.js';
79
79
  export { default as ValuesSyncer } from './components/controls/components/values_syncer.js';
80
+ export { Tree } from './components/tree/index.js';
81
+ export { TreeNode } from './components/tree/components/tree_node.js';
80
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,6 +1,7 @@
1
1
  import { HORIZONTAL_POSITION, VERTICAL_POSITION } from "../constants/positions";
2
2
  import { DIRECTION } from "../constants/directions";
3
3
  import { CSS_THEME_VARIABLES } from "../constants/css_theme_variables";
4
+ import { ReactNode } from 'react';
4
5
  export declare type EnumLiteralsOf<T extends object> = T[keyof T];
5
6
  export declare type THorizontalPosition = EnumLiteralsOf<typeof HORIZONTAL_POSITION>;
6
7
  export declare type TVerticalPosition = EnumLiteralsOf<typeof VERTICAL_POSITION>;
@@ -12,3 +13,6 @@ export declare type TCssPositions = {
12
13
  };
13
14
  export declare type TDirection = EnumLiteralsOf<typeof DIRECTION>;
14
15
  export declare type TThemeColorsVariables = keyof typeof CSS_THEME_VARIABLES;
16
+ export declare type TPropsWithChildren<P = {}> = P & {
17
+ children?: ReactNode;
18
+ };
@@ -1,4 +1,5 @@
1
1
  import '@auroraConstants/positions';
2
2
  import '@auroraConstants/directions';
3
3
  import '@auroraConstants/css_theme_variables';
4
+ import 'react';
4
5
  //# sourceMappingURL=general.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../../../../src/typings/general.ts"],"names":[],"mappings":"AAAA,OAAuD,4BAA4B,CAAC;AAEpF,OAA0B,6BAA6B,CAAC;AACxD,OAAoC,sCAAsC,CAAC"}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["../../../../../../src/typings/general.ts"],"names":[],"mappings":"AAAA,OAAuD,4BAA4B,CAAC;AAEpF,OAA0B,6BAA6B,CAAC;AACxD,OAAoC,sCAAsC,CAAC;AAC3E,OAA0B,OAAO,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@dreamcommerce/aurora",
3
3
  "packageManager": "yarn@3.2.0",
4
4
  "sideEffects": false,
5
- "version": "2.8.12",
5
+ "version": "2.9.0-10",
6
6
  "description": "aurora",
7
7
  "author": "k0ssak",
8
8
  "license": "MIT",