@bit-sun/business-component 2.2.1 → 2.2.3

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 (180) hide show
  1. package/.editorconfig +16 -16
  2. package/.fatherrc.ts +5 -5
  3. package/.gitlab-ci.yml +179 -179
  4. package/.prettierignore +7 -7
  5. package/.prettierrc +11 -11
  6. package/.umirc.ts +74 -74
  7. package/README.md +27 -27
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.esm.js +6152 -5276
  10. package/dist/index.js +6151 -5274
  11. package/dist/plugin/TableColumnSetting/index.d.ts +64 -0
  12. package/dist/plugin/TableColumnSetting/utils.d.ts +1 -0
  13. package/dist/utils/LocalstorageUtils.d.ts +2 -0
  14. package/docs/index.md +21 -21
  15. package/lib/assets/drag.svg +17 -17
  16. package/lib/assets/exportFail.svg +37 -37
  17. package/lib/assets/exportProcessing.svg +28 -28
  18. package/lib/assets/exportSuccess.svg +34 -34
  19. package/lib/assets/label_icon_bottom.svg +25 -25
  20. package/lib/assets/upExport.svg +22 -22
  21. package/package.json +77 -77
  22. package/src/assets/32.svg +27 -27
  23. package/src/assets/addIcon.svg +17 -17
  24. package/src/assets/allfunc.svg +27 -27
  25. package/src/assets/arrowRight.svg +24 -24
  26. package/src/assets/btn-delete.svg +29 -29
  27. package/src/assets/btn-edit.svg +19 -19
  28. package/src/assets/btn-more.svg +17 -17
  29. package/src/assets/btn-submit.svg +19 -19
  30. package/src/assets/caidan.svg +11 -11
  31. package/src/assets/close.svg +26 -26
  32. package/src/assets/drag.svg +17 -17
  33. package/src/assets/exportFail.svg +37 -37
  34. package/src/assets/exportProcessing.svg +28 -28
  35. package/src/assets/exportSuccess.svg +34 -34
  36. package/src/assets/fixed-left-active.svg +11 -11
  37. package/src/assets/fixed-left.svg +15 -15
  38. package/src/assets/fixed-right-active.svg +11 -11
  39. package/src/assets/fixed-right.svg +15 -15
  40. package/src/assets/guanbi.svg +15 -15
  41. package/src/assets/icon-quanping.svg +15 -15
  42. package/src/assets/icon-shezhi.svg +17 -17
  43. package/src/assets/label_icon_bottom.svg +25 -25
  44. package/src/assets/list-no-img.svg +21 -21
  45. package/src/assets/morentouxiang-32.svg +23 -23
  46. package/src/assets/scanning.svg +24 -24
  47. package/src/assets/upExport.svg +22 -22
  48. package/src/components/Business/AddSelectBusiness/index.md +63 -42
  49. package/src/components/Business/AddSelectBusiness/index.tsx +344 -341
  50. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  51. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  52. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  53. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  59. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  60. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  61. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  62. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  63. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  64. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  65. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  66. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +156 -156
  67. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  68. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  69. package/src/components/Business/BsLayouts/index.less +79 -79
  70. package/src/components/Business/BsLayouts/index.tsx +1479 -1479
  71. package/src/components/Business/BsLayouts/service.ts +10 -10
  72. package/src/components/Business/BsLayouts/utils.tsx +230 -230
  73. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  74. package/src/components/Business/BsSulaQueryTable/index.tsx +480 -480
  75. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  76. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  77. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  78. package/src/components/Business/CommodityEntry/index.md +70 -70
  79. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  80. package/src/components/Business/CommonAlert/index.tsx +23 -23
  81. package/src/components/Business/CommonGuideWrapper/index.less +111 -111
  82. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  83. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  84. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  85. package/src/components/Business/DetailPageWrapper/index.tsx +335 -335
  86. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  87. package/src/components/Business/HomePageWrapper/index.less +33 -33
  88. package/src/components/Business/HomePageWrapper/index.md +45 -45
  89. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  90. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  91. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  92. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  93. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  94. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  95. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  96. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  97. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  98. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  99. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  100. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  101. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  102. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  103. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  104. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  105. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  106. package/src/components/Business/JsonQueryTable/index.less +16 -16
  107. package/src/components/Business/JsonQueryTable/index.md +328 -328
  108. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  109. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  110. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  111. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  112. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  113. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  114. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  115. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  116. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  117. package/src/components/Business/JsonQueryTable/static.ts +356 -356
  118. package/src/components/Business/SearchSelect/BusinessUtils.ts +1586 -1586
  119. package/src/components/Business/SearchSelect/common.ts +53 -53
  120. package/src/components/Business/SearchSelect/index.md +1254 -1254
  121. package/src/components/Business/SearchSelect/index.tsx +51 -51
  122. package/src/components/Business/SearchSelect/utils.ts +100 -100
  123. package/src/components/Business/StateFlow/index.less +130 -130
  124. package/src/components/Business/StateFlow/index.md +60 -60
  125. package/src/components/Business/StateFlow/index.tsx +29 -29
  126. package/src/components/Business/TreeSearchSelect/index.md +126 -126
  127. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  128. package/src/components/Business/TreeSearchSelect/utils.ts +60 -60
  129. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  130. package/src/components/Business/columnSettingTable/index.less +247 -247
  131. package/src/components/Business/columnSettingTable/index.md +357 -357
  132. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  133. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  134. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  135. package/src/components/Business/moreTreeTable/index.less +99 -99
  136. package/src/components/Business/moreTreeTable/index.md +508 -508
  137. package/src/components/Business/moreTreeTable/index.tsx +315 -315
  138. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  139. package/src/components/Functional/AddSelect/index.less +367 -367
  140. package/src/components/Functional/AddSelect/index.md +155 -154
  141. package/src/components/Functional/AddSelect/index.tsx +1072 -994
  142. package/src/components/Functional/BillEntry/index.less +371 -371
  143. package/src/components/Functional/BillEntry/index.md +39 -39
  144. package/src/components/Functional/BillEntry/index.tsx +766 -670
  145. package/src/components/Functional/DataImport/index.less +63 -63
  146. package/src/components/Functional/DataImport/index.md +44 -44
  147. package/src/components/Functional/DataImport/index.tsx +695 -695
  148. package/src/components/Functional/DataValidation/index.less +63 -63
  149. package/src/components/Functional/DataValidation/index.md +39 -39
  150. package/src/components/Functional/DataValidation/index.tsx +687 -687
  151. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  152. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  153. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  154. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  155. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  156. package/src/components/Functional/SearchSelect/index.less +115 -115
  157. package/src/components/Functional/SearchSelect/index.md +141 -141
  158. package/src/components/Functional/SearchSelect/index.tsx +813 -813
  159. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  160. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  161. package/src/components/Functional/TreeSearchSelect/index.tsx +149 -149
  162. package/src/index.ts +34 -34
  163. package/src/plugin/TableColumnSetting/index.less +247 -0
  164. package/src/plugin/TableColumnSetting/index.md +50 -0
  165. package/src/plugin/TableColumnSetting/index.tsx +724 -0
  166. package/src/plugin/TableColumnSetting/utils.ts +19 -0
  167. package/src/styles/bsDefault.less +1906 -1906
  168. package/src/utils/CheckOneUser/index.md +39 -39
  169. package/src/utils/CheckOneUser/index.ts +51 -51
  170. package/src/utils/LocalstorageUtils.ts +33 -0
  171. package/src/utils/TableUtils.tsx +18 -18
  172. package/src/utils/checkUtils.ts +39 -39
  173. package/src/utils/enumConfig.ts +10 -10
  174. package/src/utils/getFormMode.js +12 -12
  175. package/src/utils/index.ts +2 -2
  176. package/src/utils/requestUtils.ts +33 -33
  177. package/src/utils/serialize.js +7 -7
  178. package/src/utils/utils.ts +183 -183
  179. package/tsconfig.json +29 -29
  180. package/typings.d.ts +4 -4
@@ -1,124 +1,124 @@
1
- // @ts-nocheck
2
- import { parse } from '@babel/parser';
3
- import { visit } from 'ast-types';
4
-
5
- function getConfigNode(data) {
6
- let configNode;
7
-
8
- visit(parse(data), {
9
- visitIdentifier: path => {
10
- if (configNode) {
11
- return false;
12
- }
13
- const name = path.getValueProperty('name');
14
- if (name === 'config') {
15
- const node = path.parentPath.getValueProperty('init');
16
- if (node) {
17
- configNode = node;
18
- }
19
- }
20
- return false;
21
- },
22
- });
23
-
24
- return configNode;
25
- }
26
-
27
- export { getConfigNode };
28
-
29
- function locToPositon(data) {
30
- const { start, end } = data;
31
- const { line: startLine, column: startCol } = start;
32
- const { line: endLine, column: endCol } = end;
33
- const position = [startLine, startCol + 1, endLine, endCol + 1];
34
- return position;
35
- }
36
-
37
- export default function createTreeData(data) {
38
- if (!data) return;
39
-
40
- const { loc, properties = [] } = data;
41
- const astTree = properties.map(node => {
42
- if (!node) return;
43
- const { key, value, loc, type } = node;
44
- // 直接使用value类型 字符串 数值 布尔值
45
- const valueType = [
46
- 'StringLiteral',
47
- 'NumericLiteral',
48
- 'BooleanLiteral',
49
- 'ConditionalExpression',
50
- 'MemberExpression',
51
- ];
52
- const objectType = ['ObjectExpression'];
53
- const arrayType = ['ArrayExpression'];
54
- const funcType = ['ArrowFunctionExpression', 'FunctionExpression'];
55
- const paramsType = ['Identifier', 'ThisExpression'];
56
-
57
- const position = locToPositon(loc);
58
-
59
- const name = key?.name || key?.value;
60
-
61
- // 方法的快捷表示法
62
- if (type === 'ObjectMethod') {
63
- return {
64
- name,
65
- value: null,
66
- loc: position,
67
- };
68
- }
69
-
70
- if (valueType.includes(value.type)) {
71
- return {
72
- name,
73
- value: value.value,
74
- loc: position,
75
- };
76
- }
77
-
78
- if (objectType.includes(value.type)) {
79
- return {
80
- name,
81
- value: null,
82
- loc: position,
83
- children: createTreeData(value),
84
- type: 'object',
85
- };
86
- }
87
-
88
- if (arrayType.includes(value.type)) {
89
- return {
90
- name,
91
- value: null,
92
- loc: position,
93
- children: value.elements.map((v, idx) => {
94
- return {
95
- name: idx,
96
- value: null,
97
- type: 'object',
98
- loc: locToPositon(v.loc),
99
- children: createTreeData(v),
100
- };
101
- }),
102
- type: 'array',
103
- };
104
- }
105
-
106
- if (funcType.includes(value.type)) {
107
- return {
108
- name,
109
- value: null,
110
- loc: position,
111
- };
112
- }
113
-
114
- if (paramsType.includes(value.type)) {
115
- return {
116
- name,
117
- value: null,
118
- loc: position,
119
- };
120
- }
121
- });
122
-
123
- return astTree;
124
- }
1
+ // @ts-nocheck
2
+ import { parse } from '@babel/parser';
3
+ import { visit } from 'ast-types';
4
+
5
+ function getConfigNode(data) {
6
+ let configNode;
7
+
8
+ visit(parse(data), {
9
+ visitIdentifier: path => {
10
+ if (configNode) {
11
+ return false;
12
+ }
13
+ const name = path.getValueProperty('name');
14
+ if (name === 'config') {
15
+ const node = path.parentPath.getValueProperty('init');
16
+ if (node) {
17
+ configNode = node;
18
+ }
19
+ }
20
+ return false;
21
+ },
22
+ });
23
+
24
+ return configNode;
25
+ }
26
+
27
+ export { getConfigNode };
28
+
29
+ function locToPositon(data) {
30
+ const { start, end } = data;
31
+ const { line: startLine, column: startCol } = start;
32
+ const { line: endLine, column: endCol } = end;
33
+ const position = [startLine, startCol + 1, endLine, endCol + 1];
34
+ return position;
35
+ }
36
+
37
+ export default function createTreeData(data) {
38
+ if (!data) return;
39
+
40
+ const { loc, properties = [] } = data;
41
+ const astTree = properties.map(node => {
42
+ if (!node) return;
43
+ const { key, value, loc, type } = node;
44
+ // 直接使用value类型 字符串 数值 布尔值
45
+ const valueType = [
46
+ 'StringLiteral',
47
+ 'NumericLiteral',
48
+ 'BooleanLiteral',
49
+ 'ConditionalExpression',
50
+ 'MemberExpression',
51
+ ];
52
+ const objectType = ['ObjectExpression'];
53
+ const arrayType = ['ArrayExpression'];
54
+ const funcType = ['ArrowFunctionExpression', 'FunctionExpression'];
55
+ const paramsType = ['Identifier', 'ThisExpression'];
56
+
57
+ const position = locToPositon(loc);
58
+
59
+ const name = key?.name || key?.value;
60
+
61
+ // 方法的快捷表示法
62
+ if (type === 'ObjectMethod') {
63
+ return {
64
+ name,
65
+ value: null,
66
+ loc: position,
67
+ };
68
+ }
69
+
70
+ if (valueType.includes(value.type)) {
71
+ return {
72
+ name,
73
+ value: value.value,
74
+ loc: position,
75
+ };
76
+ }
77
+
78
+ if (objectType.includes(value.type)) {
79
+ return {
80
+ name,
81
+ value: null,
82
+ loc: position,
83
+ children: createTreeData(value),
84
+ type: 'object',
85
+ };
86
+ }
87
+
88
+ if (arrayType.includes(value.type)) {
89
+ return {
90
+ name,
91
+ value: null,
92
+ loc: position,
93
+ children: value.elements.map((v, idx) => {
94
+ return {
95
+ name: idx,
96
+ value: null,
97
+ type: 'object',
98
+ loc: locToPositon(v.loc),
99
+ children: createTreeData(v),
100
+ };
101
+ }),
102
+ type: 'array',
103
+ };
104
+ }
105
+
106
+ if (funcType.includes(value.type)) {
107
+ return {
108
+ name,
109
+ value: null,
110
+ loc: position,
111
+ };
112
+ }
113
+
114
+ if (paramsType.includes(value.type)) {
115
+ return {
116
+ name,
117
+ value: null,
118
+ loc: position,
119
+ };
120
+ }
121
+ });
122
+
123
+ return astTree;
124
+ }
@@ -1,29 +1,29 @@
1
- import React from 'react';
2
- import CompactArrayView from '../component/compactArrayView';
3
- import CompactObjectView from '../component/compactObjectView';
4
-
5
- function iconRender(data) {
6
- const { name, type, children, toggled } = data;
7
- if (toggled) {
8
- return name;
9
- }
10
- if (type === 'array') {
11
- return (
12
- <div>
13
- <span>{name}</span>
14
- <CompactArrayView array={children} />
15
- </div>
16
- );
17
- }
18
- if (type === 'object') {
19
- return (
20
- <div>
21
- <span>{name}</span>
22
- <CompactObjectView object={children} />
23
- </div>
24
- );
25
- }
26
- return name;
27
- }
28
-
29
- export default iconRender;
1
+ import React from 'react';
2
+ import CompactArrayView from '../component/compactArrayView';
3
+ import CompactObjectView from '../component/compactObjectView';
4
+
5
+ function iconRender(data) {
6
+ const { name, type, children, toggled } = data;
7
+ if (toggled) {
8
+ return name;
9
+ }
10
+ if (type === 'array') {
11
+ return (
12
+ <div>
13
+ <span>{name}</span>
14
+ <CompactArrayView array={children} />
15
+ </div>
16
+ );
17
+ }
18
+ if (type === 'object') {
19
+ return (
20
+ <div>
21
+ <span>{name}</span>
22
+ <CompactObjectView object={children} />
23
+ </div>
24
+ );
25
+ }
26
+ return name;
27
+ }
28
+
29
+ export default iconRender;
@@ -1,22 +1,22 @@
1
- import React from 'react';
2
-
3
- export default data => {
4
- const { type, name } = data;
5
-
6
- const pluginTypes = ['render', 'action', 'type', 'container', 'validator'];
7
- if (pluginTypes.includes(name)) {
8
- return <div className="codicon codicon-symbol-method"></div>;
9
- }
10
-
11
- if (name === 'fields' || name === 'columns') {
12
- return (
13
- <div className="codicon codicon-color-gold-6 codicon-symbol-array"> </div>
14
- );
15
- }
16
-
17
- if (typeof name === 'number' && type === 'object') {
18
- return <div className="codicon codicon-symbol-variable"></div>;
19
- }
20
-
21
- return <div className="codicon codicon-symbol-property"> </div>;
22
- };
1
+ import React from 'react';
2
+
3
+ export default data => {
4
+ const { type, name } = data;
5
+
6
+ const pluginTypes = ['render', 'action', 'type', 'container', 'validator'];
7
+ if (pluginTypes.includes(name)) {
8
+ return <div className="codicon codicon-symbol-method"></div>;
9
+ }
10
+
11
+ if (name === 'fields' || name === 'columns') {
12
+ return (
13
+ <div className="codicon codicon-color-gold-6 codicon-symbol-array"> </div>
14
+ );
15
+ }
16
+
17
+ if (typeof name === 'number' && type === 'object') {
18
+ return <div className="codicon codicon-symbol-variable"></div>;
19
+ }
20
+
21
+ return <div className="codicon codicon-symbol-property"> </div>;
22
+ };
@@ -1,116 +1,116 @@
1
- import React, { useEffect, useState } from 'react';
2
- import isArray from 'lodash/isArray';
3
- import cx from 'classnames';
4
-
5
- function TreeNode(props) {
6
- const {
7
- data,
8
- nameRender,
9
- iconRender,
10
- level,
11
- contextMenuRender,
12
- activeLine,
13
- } = props;
14
- const [nodeData, setNodeData] = useState(data);
15
- const isDirectory = !!nodeData.children;
16
-
17
- const handleClick = () => {
18
- const { onToggle, onSelect } = props;
19
- const newNodeData = { ...nodeData };
20
- // newNodeData.active = true;
21
- if (newNodeData.children) {
22
- newNodeData.toggled = !nodeData.toggled;
23
- }
24
- setNodeData(newNodeData);
25
- if (onSelect) {
26
- onSelect(newNodeData, !!nodeData.children);
27
- }
28
- };
29
-
30
- useEffect(() => {
31
- setNodeData(data);
32
- }, [activeLine]);
33
-
34
- const renderChildren = level => {
35
- const {
36
- onToggle,
37
- onSelect,
38
- nameRender,
39
- iconRender,
40
- contextMenuRender,
41
- } = props;
42
-
43
- if (nodeData.loading) {
44
- return <span>loading...</span>;
45
- }
46
-
47
- let children = nodeData.children;
48
- if (!isArray(children)) {
49
- children = children ? [children] : [];
50
- }
51
-
52
- return (
53
- <div>
54
- {children.map((child, index) => (
55
- <TreeNode
56
- onToggle={onToggle}
57
- onSelect={onSelect}
58
- key={child.name || index}
59
- data={child}
60
- nameRender={nameRender}
61
- iconRender={iconRender}
62
- contextMenuRender={contextMenuRender}
63
- level={level}
64
- activeLine={activeLine}
65
- />
66
- ))}
67
- </div>
68
- );
69
- };
70
-
71
- let blockNode = (
72
- <div
73
- className={cx(
74
- 'si-tree-node-block',
75
- nodeData.active && 'si-tree-node-block-actived',
76
- )}
77
- onClick={handleClick}
78
- >
79
- <div
80
- style={{
81
- paddingLeft: `${isDirectory ? level : level + 1}em`,
82
- display: 'flex',
83
- }}
84
- ></div>
85
- {isDirectory ? (
86
- <div
87
- className={cx(
88
- 'si-tree-node-switcher codicon',
89
- nodeData.toggled ? 'codicon-chevron-down' : 'codicon-chevron-right',
90
- )}
91
- />
92
- ) : (
93
- <div style={{ paddingLeft: 4 }} />
94
- )}
95
- {iconRender ? (
96
- <div className="si-tree-node-icon">{iconRender(nodeData)}</div>
97
- ) : null}
98
- <div className="si-tree-node-name">
99
- {nameRender ? nameRender(nodeData) : nodeData.name}
100
- </div>
101
- </div>
102
- );
103
-
104
- if (contextMenuRender) {
105
- blockNode = contextMenuRender(nodeData, blockNode);
106
- }
107
-
108
- return (
109
- <div className="si-tree-node">
110
- {blockNode}
111
- {nodeData.toggled ? renderChildren(level + 1) : null}
112
- </div>
113
- );
114
- }
115
-
116
- export default TreeNode;
1
+ import React, { useEffect, useState } from 'react';
2
+ import isArray from 'lodash/isArray';
3
+ import cx from 'classnames';
4
+
5
+ function TreeNode(props) {
6
+ const {
7
+ data,
8
+ nameRender,
9
+ iconRender,
10
+ level,
11
+ contextMenuRender,
12
+ activeLine,
13
+ } = props;
14
+ const [nodeData, setNodeData] = useState(data);
15
+ const isDirectory = !!nodeData.children;
16
+
17
+ const handleClick = () => {
18
+ const { onToggle, onSelect } = props;
19
+ const newNodeData = { ...nodeData };
20
+ // newNodeData.active = true;
21
+ if (newNodeData.children) {
22
+ newNodeData.toggled = !nodeData.toggled;
23
+ }
24
+ setNodeData(newNodeData);
25
+ if (onSelect) {
26
+ onSelect(newNodeData, !!nodeData.children);
27
+ }
28
+ };
29
+
30
+ useEffect(() => {
31
+ setNodeData(data);
32
+ }, [activeLine]);
33
+
34
+ const renderChildren = level => {
35
+ const {
36
+ onToggle,
37
+ onSelect,
38
+ nameRender,
39
+ iconRender,
40
+ contextMenuRender,
41
+ } = props;
42
+
43
+ if (nodeData.loading) {
44
+ return <span>loading...</span>;
45
+ }
46
+
47
+ let children = nodeData.children;
48
+ if (!isArray(children)) {
49
+ children = children ? [children] : [];
50
+ }
51
+
52
+ return (
53
+ <div>
54
+ {children.map((child, index) => (
55
+ <TreeNode
56
+ onToggle={onToggle}
57
+ onSelect={onSelect}
58
+ key={child.name || index}
59
+ data={child}
60
+ nameRender={nameRender}
61
+ iconRender={iconRender}
62
+ contextMenuRender={contextMenuRender}
63
+ level={level}
64
+ activeLine={activeLine}
65
+ />
66
+ ))}
67
+ </div>
68
+ );
69
+ };
70
+
71
+ let blockNode = (
72
+ <div
73
+ className={cx(
74
+ 'si-tree-node-block',
75
+ nodeData.active && 'si-tree-node-block-actived',
76
+ )}
77
+ onClick={handleClick}
78
+ >
79
+ <div
80
+ style={{
81
+ paddingLeft: `${isDirectory ? level : level + 1}em`,
82
+ display: 'flex',
83
+ }}
84
+ ></div>
85
+ {isDirectory ? (
86
+ <div
87
+ className={cx(
88
+ 'si-tree-node-switcher codicon',
89
+ nodeData.toggled ? 'codicon-chevron-down' : 'codicon-chevron-right',
90
+ )}
91
+ />
92
+ ) : (
93
+ <div style={{ paddingLeft: 4 }} />
94
+ )}
95
+ {iconRender ? (
96
+ <div className="si-tree-node-icon">{iconRender(nodeData)}</div>
97
+ ) : null}
98
+ <div className="si-tree-node-name">
99
+ {nameRender ? nameRender(nodeData) : nodeData.name}
100
+ </div>
101
+ </div>
102
+ );
103
+
104
+ if (contextMenuRender) {
105
+ blockNode = contextMenuRender(nodeData, blockNode);
106
+ }
107
+
108
+ return (
109
+ <div className="si-tree-node">
110
+ {blockNode}
111
+ {nodeData.toggled ? renderChildren(level + 1) : null}
112
+ </div>
113
+ );
114
+ }
115
+
116
+ export default TreeNode;
@@ -1,12 +1,12 @@
1
- import React from 'react';
2
- import { Drawer } from 'antd';
3
-
4
- export default (props:any) => {
5
- const { children, ...restProps } = props;
6
-
7
- return (
8
- <Drawer mask closable={false} forceRender {...restProps}>
9
- {children}
10
- </Drawer>
11
- );
12
- };
1
+ import React from 'react';
2
+ import { Drawer } from 'antd';
3
+
4
+ export default (props:any) => {
5
+ const { children, ...restProps } = props;
6
+
7
+ return (
8
+ <Drawer mask closable={false} forceRender {...restProps}>
9
+ {children}
10
+ </Drawer>
11
+ );
12
+ };