@snack-uikit/tree 0.6.29 → 0.6.30-preview-71543426.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +14 -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,11 @@
1
+ import { ParentNode } from '../../types';
2
+ import { TreeNodeProps } from '../TreeNode';
3
+ type ExpandableTreeNodeProps = {
4
+ node: TreeNodeProps;
5
+ parentNode?: ParentNode & {
6
+ parentNode?: ParentNode;
7
+ };
8
+ tabIndexAvailable?: boolean;
9
+ };
10
+ export declare function ExpandableTreeNode({ node: { 'data-test-id': dataTestId, ...node }, parentNode, tabIndexAvailable, }: ExpandableTreeNodeProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1 @@
1
+ export * from './ExpandableTreeNode';
@@ -0,0 +1,34 @@
1
+ .expandableTreeNode{
2
+ position:relative;
3
+ width:100%;
4
+ }
5
+
6
+ .expandableContent{
7
+ overflow:hidden;
8
+ display:flex;
9
+ box-sizing:border-box;
10
+ min-height:0;
11
+ visibility:hidden;
12
+ transition:visibility 200ms;
13
+ }
14
+
15
+ .expandableWrap{
16
+ overflow:hidden;
17
+ display:grid;
18
+ grid-template-rows:0fr;
19
+ box-sizing:border-box;
20
+ width:100%;
21
+ transition:grid-template-rows 200ms;
22
+ }
23
+ .expandableWrap[data-expanded=true]{
24
+ overflow:unset;
25
+ grid-template-rows:1fr;
26
+ }
27
+ .expandableWrap[data-expanded=true] .expandableContent{
28
+ visibility:visible;
29
+ }
30
+
31
+ .expandableNested{
32
+ width:100%;
33
+ min-width:0;
34
+ }
@@ -0,0 +1,8 @@
1
+ import { ParentNode, TreeNodeProps } from '../../types';
2
+ type TreeItemProps = {
3
+ node: TreeNodeProps;
4
+ parentNode?: ParentNode;
5
+ tabIndexAvailable?: boolean;
6
+ };
7
+ export declare function TreeItem({ node, tabIndexAvailable, parentNode }: TreeItemProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1 @@
1
+ export * from './TreeItem';
@@ -0,0 +1,7 @@
1
+ export type TreeLineProps = {
2
+ halfWidth?: boolean;
3
+ halfHeight?: boolean;
4
+ visible?: boolean;
5
+ horizontal?: boolean;
6
+ };
7
+ export declare function TreeLine({ halfWidth, halfHeight, horizontal, visible }: TreeLineProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export * from './TreeLine';
@@ -0,0 +1,37 @@
1
+ .treeLine{
2
+ pointer-events:none;
3
+ position:relative;
4
+ flex-shrink:0;
5
+ width:var(--size-tree-item-line-width, 24px);
6
+ visibility:hidden;
7
+ }
8
+ .treeLine[data-visible]{
9
+ visibility:visible;
10
+ }
11
+ .treeLine[data-visible]::after{
12
+ content:"";
13
+ position:absolute;
14
+ top:0;
15
+ left:50%;
16
+ transform:translateX(-50%);
17
+ width:1px;
18
+ height:calc(100% - var(--size-tree-item-height, 32px) / 2);
19
+ background:var(--sys-neutral-decor-default, #dde0ea);
20
+ }
21
+ .treeLine[data-half-height]::after{
22
+ height:calc(100% - var(--size-tree-item-height, 32px) / 2);
23
+ }
24
+ .treeLine[data-horizontal]::after{
25
+ top:50%;
26
+ left:-50%;
27
+ transform:translateY(-50%);
28
+ width:calc(150% - var(--space-tree-item-child-line-padding, 8px));
29
+ height:1px;
30
+ }
31
+ .treeLine[data-horizontal][data-half-width]{
32
+ width:0;
33
+ }
34
+ .treeLine[data-horizontal][data-half-width]::after{
35
+ left:calc(0px - var(--size-tree-item-line-width, 24px) / 2);
36
+ width:calc(var(--size-tree-item-line-width, 24px) / 2);
37
+ }
@@ -0,0 +1,11 @@
1
+ import { KeyboardEventHandler, MouseEventHandler } from 'react';
2
+ import { ParentNode, TreeNodeProps } from '../../types';
3
+ export type { TreeNodeProps };
4
+ type TreeNodeComponentProps = TreeNodeProps & {
5
+ onChevronClick?: MouseEventHandler<HTMLElement>;
6
+ onKeyDown?: KeyboardEventHandler<HTMLElement>;
7
+ isLoading?: boolean;
8
+ parentNode?: ParentNode;
9
+ tabIndexAvailable?: boolean;
10
+ };
11
+ export declare function TreeNode({ id, title, icon, expandedIcon, collapsedIcon, disabled, onClick, nested, className, onChevronClick, onKeyDown, isLoading, parentNode, tabIndexAvailable, ...rest }: TreeNodeComponentProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ import { Dispatch, SetStateAction } from 'react';
2
+ import { ItemProps } from '@snack-uikit/list';
3
+ import { TreeNodeProps } from '../../../types';
4
+ type TreeNodeActionsProps = {
5
+ isDroplistOpen: boolean;
6
+ setDroplistOpen: Dispatch<SetStateAction<boolean>>;
7
+ getNodeActions(node: TreeNodeProps): ItemProps[];
8
+ node: TreeNodeProps;
9
+ isDroplistTriggerFocused: boolean;
10
+ focusNode(): void;
11
+ onBlurActions(): void;
12
+ };
13
+ export declare function TreeNodeActions({ getNodeActions, isDroplistTriggerFocused, focusNode, isDroplistOpen, setDroplistOpen, onBlurActions, node, }: TreeNodeActionsProps): import("react/jsx-runtime").JSX.Element | null;
14
+ export {};
@@ -0,0 +1 @@
1
+ export * from './TreeNodeActions';
@@ -0,0 +1 @@
1
+ export * from './TreeNode';
@@ -0,0 +1,113 @@
1
+ .treeNode{
2
+ display:flex;
3
+ align-items:center;
4
+ box-sizing:border-box;
5
+ width:100%;
6
+ }
7
+
8
+ .treeNodeIcon{
9
+ display:flex;
10
+ flex-shrink:0;
11
+ align-items:center;
12
+ justify-content:center;
13
+ box-sizing:border-box;
14
+ color:var(--sys-neutral-text-support, #6d707f);
15
+ }
16
+ .treeNodeIcon svg{
17
+ width:var(--size-icon-container-s, 24px) !important;
18
+ height:var(--size-icon-container-s, 24px) !important;
19
+ }
20
+
21
+ .treeNodeTitle{
22
+ flex-grow:1;
23
+ box-sizing:border-box;
24
+ min-width:var(--size-tree-item-checkbox-wrap, 24px);
25
+ color:var(--sys-neutral-text-main, #41424e);
26
+ }
27
+
28
+ .treeNodeActions{
29
+ display:flex;
30
+ visibility:hidden;
31
+ }
32
+ .treeNodeActions:focus-visible, .treeNodeActions[data-focused]{
33
+ visibility:visible;
34
+ }
35
+
36
+ .treeNodeContent{
37
+ height:var(--size-tree-item-height, 32px);
38
+ gap:var(--space-tree-item-content-layout-gap, 4px);
39
+ padding-right:var(--space-tree-item-content-layout-padding, 4px);
40
+ padding-left:var(--space-tree-item-content-layout-padding, 4px);
41
+ border-radius:var(--radius-tree-item-content-layout, 8px);
42
+ cursor:pointer;
43
+ position:relative;
44
+ display:flex;
45
+ align-items:center;
46
+ box-sizing:border-box;
47
+ width:100%;
48
+ }
49
+ .treeNodeContent::before{
50
+ pointer-events:none;
51
+ content:"";
52
+ position:absolute;
53
+ top:0;
54
+ left:0;
55
+ box-sizing:border-box;
56
+ width:100%;
57
+ height:100%;
58
+ opacity:0;
59
+ background-color:var(--sys-neutral-accent-default, #787b8a);
60
+ border-radius:inherit;
61
+ }
62
+ .treeNodeContent:hover::before, .treeNodeContent:focus-visible::before, .treeNodeContent[data-droplist-active]::before{
63
+ opacity:var(--opacity-a008, 0.08);
64
+ }
65
+ .treeNodeContent:hover .treeNodeActions, .treeNodeContent:focus-visible .treeNodeActions, .treeNodeContent[data-droplist-active] .treeNodeActions{
66
+ visibility:visible;
67
+ }
68
+ .treeNodeContent:focus-visible{
69
+ outline-width:var(--border-state-focus-s-border-width, 2px);
70
+ outline-style:var(--border-state-focus-s-border-style, solid);
71
+ outline-color:var(--border-state-focus-s-border-color, );
72
+ outline-offset:calc(var(--border-state-focus-s-border-width, 2px) * -1);
73
+ outline-color:var(--sys-available-complementary, #1c1c24);
74
+ }
75
+ .treeNodeContent[data-multiselect]{
76
+ cursor:default;
77
+ }
78
+ .treeNodeContent[aria-disabled=true]{
79
+ cursor:not-allowed;
80
+ }
81
+ .treeNodeContent[aria-disabled=true]::before{
82
+ display:none;
83
+ }
84
+ .treeNodeContent[aria-disabled=true] .treeNodeTitle, .treeNodeContent[aria-disabled=true] .treeNodeIcon{
85
+ color:var(--sys-neutral-text-disabled, #aaaebd);
86
+ }
87
+ .treeNodeContent[aria-selected=true]:not([data-multiselect])::before{
88
+ opacity:var(--opacity-a008, 0.08);
89
+ background-color:var(--sys-primary-accent-default, #794ed3);
90
+ }
91
+ .treeNodeContent[aria-selected=true]:not([data-multiselect]):hover::before{
92
+ opacity:var(--opacity-a016, 0.16);
93
+ }
94
+
95
+ .treeNodeCheckboxWrap{
96
+ width:var(--size-tree-item-checkbox-wrap, 24px);
97
+ height:var(--size-tree-item-checkbox-wrap, 24px);
98
+ display:flex;
99
+ flex-shrink:0;
100
+ align-items:center;
101
+ justify-content:center;
102
+ box-sizing:border-box;
103
+ }
104
+
105
+ .treeNodeExpandButton{
106
+ box-sizing:border-box;
107
+ }
108
+ .treeNodeExpandButton svg{
109
+ transition:transform 0.2s ease;
110
+ }
111
+ .treeNodeExpandButton[data-expanded] svg{
112
+ transform:rotate(90deg);
113
+ }
@@ -0,0 +1,3 @@
1
+ import { FocusEvent, MouseEvent } from 'react';
2
+ export declare function stopPropagationClick(e: MouseEvent<HTMLInputElement>): void;
3
+ export declare function stopPropagationFocus(e: FocusEvent<HTMLInputElement>): void;
@@ -0,0 +1,4 @@
1
+ export * from './ExpandableTreeNode';
2
+ export * from './TreeNode';
3
+ export * from './TreeLine';
4
+ export * from './TreeItem';
@@ -0,0 +1,11 @@
1
+ import { ParentNode, TreeNodeId, TreeNodeProps } from './types';
2
+ export declare function checkNestedNodesSelection(nodes: TreeNodeProps[], selectedKeys: TreeNodeId[]): {
3
+ someSelected: boolean;
4
+ allSelected: boolean;
5
+ };
6
+ export declare function findAllExpandedChildNodeIds(nodes: TreeNodeProps[], expandedNodes: TreeNodeId[]): string[];
7
+ export declare function lookupTreeForSelectedNodes({ node, selectedNodes, parentNode, }: {
8
+ node: Pick<TreeNodeProps, 'id' | 'nested' | 'disabled'>;
9
+ selectedNodes: TreeNodeId[];
10
+ parentNode?: ParentNode;
11
+ }): string[];
@@ -0,0 +1,2 @@
1
+ export * from './components';
2
+ export type { OnNodeClick, TreeNodeId, TreeNodeProps } from './types';
@@ -0,0 +1,100 @@
1
+ import { MouseEvent, MouseEventHandler, ReactNode } from 'react';
2
+ import { ItemProps } from '@snack-uikit/list';
3
+ import { ValueOf, WithSupportProps } from '@snack-uikit/utils';
4
+ import { SELECTION_MODE } from './constants';
5
+ export type SelectionMode = ValueOf<typeof SELECTION_MODE>;
6
+ export type TreeNodeId = string;
7
+ export type BaseTreeNode = WithSupportProps<{
8
+ /** Идентификатор элемента */
9
+ id: TreeNodeId;
10
+ /** Имя элемента */
11
+ title: string | ((value: Pick<BaseTreeNode, 'id' | 'disabled'>) => ReactNode);
12
+ /** Является ли элемент деактивированным */
13
+ disabled?: boolean;
14
+ /** Обработчик клика по элементу */
15
+ onClick?: MouseEventHandler;
16
+ className?: string;
17
+ }>;
18
+ export type ChildTreeNode = BaseTreeNode & {
19
+ /** Иконка дочернего элемента */
20
+ icon?: ReactNode;
21
+ nested?: never;
22
+ expandedIcon?: never;
23
+ collapsedIcon?: never;
24
+ };
25
+ export type ParentTreeNode = BaseTreeNode & {
26
+ icon?: never;
27
+ /** Иконка элемента-родителя в открытом состоянии */
28
+ expandedIcon?: ReactNode;
29
+ /** Иконка элемента-родителя в закрытом состоянии */
30
+ collapsedIcon?: ReactNode;
31
+ /** Вложенные элементы дерева */
32
+ nested: (ChildTreeNode | ParentTreeNode)[];
33
+ title: string | ((value: Pick<ParentTreeNode, 'id' | 'disabled' | 'nested'>) => ReactNode);
34
+ };
35
+ export type TreeNodeProps = ChildTreeNode | ParentTreeNode;
36
+ export type ParentNode = Pick<TreeNodeProps, 'id' | 'nested'> & {
37
+ parentNode?: ParentNode;
38
+ };
39
+ export type OnNodeClick = (node: TreeNodeProps, e: MouseEvent) => void;
40
+ export type TreeCommonProps = {
41
+ /** Данные для отрисовки */
42
+ data: TreeNodeProps[];
43
+ /**
44
+ * Режим выбора элементов:
45
+ * <br> - `Single` - одиночный выбор
46
+ * <br> - `Multi` - множественный выбор
47
+ * <br> - `undefined` - без выбора
48
+ */
49
+ selectionMode?: SelectionMode;
50
+ /** Обработчик клика по элементу дерева */
51
+ onNodeClick?: OnNodeClick;
52
+ /** Состояние для раскрытых элементов */
53
+ expandedNodes?: TreeNodeId[];
54
+ /** Колбэк при раскрытии/закрытии элементов */
55
+ onExpand?(expandedKeys: TreeNodeId[], nodeId: TreeNodeId): void;
56
+ /** Состояние для выбранных элементов */
57
+ selected?: TreeNodeId[] | TreeNodeId;
58
+ /** Колбэк для асинхронной загрузки данных при раскрытии дерева */
59
+ onDataLoad?(node: TreeNodeProps): Promise<boolean | unknown>;
60
+ /** Дополнительные действия для элемента-родителя */
61
+ parentActions?(node: TreeNodeProps): ItemProps[];
62
+ /** Дополнительные действия для элемента-потомка */
63
+ nodeActions?(node: TreeNodeProps): ItemProps[];
64
+ /**
65
+ * Флаг отвечающий за отображение иконок у элементов дерева
66
+ * @default true
67
+ */
68
+ showIcons?: boolean;
69
+ /** Флаг отвечающий за отображение линий вложенности */
70
+ showLines?: boolean;
71
+ className?: string;
72
+ };
73
+ export type TreeView = Omit<TreeCommonProps, 'selected' | 'selectionMode'> & {
74
+ selectionMode?: never;
75
+ selected?: never;
76
+ onSelect?: never;
77
+ };
78
+ export type TreeSingleSelect = Omit<TreeCommonProps, 'selected'> & {
79
+ selectionMode: 'single';
80
+ /** Состояние для выбраного элемента */
81
+ /** <br> - При <strong>selectionMode</strong>=`Single` - принимает строку */
82
+ selected?: TreeNodeId;
83
+ /** <br> - При <strong>selectionMode</strong>=`Single` - возвращает строку */
84
+ onSelect?(selectedKey: TreeNodeId, node: TreeNodeProps): void;
85
+ showToggle?: boolean;
86
+ };
87
+ export type TreeMultiSelect = Omit<TreeCommonProps, 'selected'> & {
88
+ selectionMode: 'multi';
89
+ /**
90
+ * Состояние для выбраных элементов:
91
+ * <br> - При <strong>selectionMode</strong>=`Multi` - принимает массив строк
92
+ */
93
+ selected?: TreeNodeId[];
94
+ /**
95
+ * Колбэк при изменении выбраных элементов:
96
+ * <br> - При <strong>selectionMode</strong>=`Multi` - возвращает массив строк
97
+ */
98
+ onSelect?(selectedKeys: TreeNodeId[], node: TreeNodeProps): void;
99
+ };
100
+ export type TreeBaseProps = TreeView | TreeMultiSelect | TreeSingleSelect;
package/package.json CHANGED
@@ -4,15 +4,16 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Tree",
7
- "version": "0.6.29",
7
+ "version": "0.6.30-preview-71543426.0",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
11
11
  "*.woff2"
12
12
  ],
13
13
  "description": "",
14
- "main": "./dist/index.js",
15
- "module": "./dist/index.js",
14
+ "types": "./dist/esm/index.d.ts",
15
+ "main": "./dist/cjs/index.js",
16
+ "module": "./dist/esm/index.js",
16
17
  "homepage": "https://github.com/cloud-ru-tech/snack-uikit/tree/master/packages/tree",
17
18
  "repository": {
18
19
  "type": "git",
@@ -24,7 +25,8 @@
24
25
  "Белов Алексей <anbelov@cloud.ru>"
25
26
  ],
26
27
  "files": [
27
- "dist",
28
+ "dist/cjs",
29
+ "dist/esm",
28
30
  "src",
29
31
  "./CHANGELOG.md",
30
32
  "./LICENSE"
@@ -32,16 +34,16 @@
32
34
  "license": "Apache-2.0",
33
35
  "scripts": {},
34
36
  "dependencies": {
35
- "@snack-uikit/button": "0.17.5",
36
- "@snack-uikit/icons": "0.22.1",
37
- "@snack-uikit/list": "0.18.0",
38
- "@snack-uikit/toggles": "0.10.4",
39
- "@snack-uikit/truncate-string": "0.4.24",
40
- "@snack-uikit/typography": "0.6.3",
41
- "@snack-uikit/utils": "3.4.0",
37
+ "@snack-uikit/button": "0.17.6-preview-71543426.0",
38
+ "@snack-uikit/icons": "0.22.2-preview-71543426.0",
39
+ "@snack-uikit/list": "0.18.1-preview-71543426.0",
40
+ "@snack-uikit/toggles": "0.10.5-preview-71543426.0",
41
+ "@snack-uikit/truncate-string": "0.4.25-preview-71543426.0",
42
+ "@snack-uikit/typography": "0.6.4-preview-71543426.0",
43
+ "@snack-uikit/utils": "3.4.1-preview-71543426.0",
42
44
  "classnames": "2.3.2",
43
45
  "react-transition-state": "2.1.1",
44
46
  "uncontrollable": "8.0.4"
45
47
  },
46
- "gitHead": "a80c5b606728e51dd8470bf622cbab4f4b6fe337"
48
+ "gitHead": "3102614275e261c8f41db0f6c00a1f6b6276b2a9"
47
49
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes