@bit-sun/business-component 2.2.21 → 2.2.23

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 (178) 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.esm.js +34 -31
  9. package/dist/index.js +34 -31
  10. package/docs/index.md +21 -21
  11. package/lib/assets/drag.svg +17 -17
  12. package/lib/assets/exportFail.svg +37 -37
  13. package/lib/assets/exportProcessing.svg +28 -28
  14. package/lib/assets/exportSuccess.svg +34 -34
  15. package/lib/assets/label_icon_bottom.svg +25 -25
  16. package/lib/assets/upExport.svg +22 -22
  17. package/package.json +77 -77
  18. package/src/assets/32.svg +27 -27
  19. package/src/assets/addIcon.svg +17 -17
  20. package/src/assets/allfunc.svg +27 -27
  21. package/src/assets/arrowRight.svg +24 -24
  22. package/src/assets/arrow_top.svg +17 -17
  23. package/src/assets/btn-delete.svg +29 -29
  24. package/src/assets/btn-edit.svg +19 -19
  25. package/src/assets/btn-more.svg +17 -17
  26. package/src/assets/btn-submit.svg +19 -19
  27. package/src/assets/caidan.svg +11 -11
  28. package/src/assets/close.svg +26 -26
  29. package/src/assets/drag.svg +17 -17
  30. package/src/assets/exportFail.svg +37 -37
  31. package/src/assets/exportProcessing.svg +28 -28
  32. package/src/assets/exportSuccess.svg +34 -34
  33. package/src/assets/fixed-left-active.svg +11 -11
  34. package/src/assets/fixed-left.svg +15 -15
  35. package/src/assets/fixed-right-active.svg +11 -11
  36. package/src/assets/fixed-right.svg +15 -15
  37. package/src/assets/guanbi.svg +15 -15
  38. package/src/assets/icon-quanping.svg +15 -15
  39. package/src/assets/icon-shezhi.svg +17 -17
  40. package/src/assets/label_icon_bottom.svg +25 -25
  41. package/src/assets/list-no-img.svg +21 -21
  42. package/src/assets/morentouxiang-32.svg +23 -23
  43. package/src/assets/scanning.svg +24 -24
  44. package/src/assets/upExport.svg +22 -22
  45. package/src/components/Business/AddSelectBusiness/index.md +129 -129
  46. package/src/components/Business/AddSelectBusiness/index.tsx +835 -835
  47. package/src/components/Business/BsLayouts/Components/AllFunc/drawContent.tsx +111 -111
  48. package/src/components/Business/BsLayouts/Components/AllFunc/index.less +153 -153
  49. package/src/components/Business/BsLayouts/Components/AllFunc/index.tsx +70 -70
  50. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.less +90 -90
  51. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/index.tsx +37 -37
  52. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/leftTree.tsx +242 -242
  53. package/src/components/Business/BsLayouts/Components/CustomerMenu/MenuSetting/rightTree.tsx +384 -384
  54. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/DrawContent.tsx +285 -285
  55. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/customMenuHeader.tsx +74 -74
  56. package/src/components/Business/BsLayouts/Components/CustomerMenu/globalMenu/drawContent.less +170 -170
  57. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.less +64 -64
  58. package/src/components/Business/BsLayouts/Components/CustomerMenu/index.tsx +153 -153
  59. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.less +72 -72
  60. package/src/components/Business/BsLayouts/Components/GlobalHeader/index.tsx +157 -157
  61. package/src/components/Business/BsLayouts/Components/RightContent/LoginModal.tsx +85 -85
  62. package/src/components/Business/BsLayouts/Components/RightContent/home.less +218 -218
  63. package/src/components/Business/BsLayouts/Components/RightContent/index.tsx +155 -155
  64. package/src/components/Business/BsLayouts/Components/SearchFunc/index.less +160 -160
  65. package/src/components/Business/BsLayouts/Components/SearchFunc/index.tsx +75 -75
  66. package/src/components/Business/BsLayouts/index.less +79 -79
  67. package/src/components/Business/BsLayouts/index.tsx +1480 -1479
  68. package/src/components/Business/BsLayouts/service.ts +10 -10
  69. package/src/components/Business/BsLayouts/utils.tsx +203 -203
  70. package/src/components/Business/BsSulaQueryTable/SearchItemSetting.tsx +538 -538
  71. package/src/components/Business/BsSulaQueryTable/index.less +219 -219
  72. package/src/components/Business/BsSulaQueryTable/index.tsx +527 -527
  73. package/src/components/Business/BsSulaQueryTable/setting.tsx +802 -802
  74. package/src/components/Business/BsSulaQueryTable/utils.less +65 -65
  75. package/src/components/Business/BsSulaQueryTable/utils.tsx +688 -688
  76. package/src/components/Business/CommodityEntry/index.md +70 -70
  77. package/src/components/Business/CommodityEntry/index.tsx +80 -80
  78. package/src/components/Business/CommonAlert/index.tsx +23 -23
  79. package/src/components/Business/CommonGuideWrapper/index.less +113 -113
  80. package/src/components/Business/CommonGuideWrapper/index.md +39 -39
  81. package/src/components/Business/CommonGuideWrapper/index.tsx +83 -83
  82. package/src/components/Business/DetailPageWrapper/index.less +79 -79
  83. package/src/components/Business/DetailPageWrapper/index.tsx +313 -313
  84. package/src/components/Business/DetailPageWrapper/utils.tsx +100 -100
  85. package/src/components/Business/HomePageWrapper/index.less +33 -33
  86. package/src/components/Business/HomePageWrapper/index.md +45 -45
  87. package/src/components/Business/HomePageWrapper/index.tsx +162 -162
  88. package/src/components/Business/JsonQueryTable/components/FieldsModifyModal.tsx +824 -824
  89. package/src/components/Business/JsonQueryTable/components/FieldsSettingsTable.tsx +201 -201
  90. package/src/components/Business/JsonQueryTable/components/Formula.tsx +205 -205
  91. package/src/components/Business/JsonQueryTable/components/MaintainOptions.tsx +127 -127
  92. package/src/components/Business/JsonQueryTable/configButton/index.js +20 -20
  93. package/src/components/Business/JsonQueryTable/configTree/component/compactArrayView.js +25 -25
  94. package/src/components/Business/JsonQueryTable/configTree/component/compactObjectView.js +30 -30
  95. package/src/components/Business/JsonQueryTable/configTree/index.js +82 -82
  96. package/src/components/Business/JsonQueryTable/configTree/index.less +44 -44
  97. package/src/components/Business/JsonQueryTable/configTree/parser/highlight.js +57 -57
  98. package/src/components/Business/JsonQueryTable/configTree/parser/index.js +124 -124
  99. package/src/components/Business/JsonQueryTable/configTree/render/iconRender.js +29 -29
  100. package/src/components/Business/JsonQueryTable/configTree/render/nameRender.js +22 -22
  101. package/src/components/Business/JsonQueryTable/configTree/treeNode.js +116 -116
  102. package/src/components/Business/JsonQueryTable/drawer/index.tsx +12 -12
  103. package/src/components/Business/JsonQueryTable/function.ts +62 -62
  104. package/src/components/Business/JsonQueryTable/index.less +16 -16
  105. package/src/components/Business/JsonQueryTable/index.md +328 -328
  106. package/src/components/Business/JsonQueryTable/index.tsx +320 -320
  107. package/src/components/Business/JsonQueryTable/jsonEditor/index.js +346 -346
  108. package/src/components/Business/JsonQueryTable/jsonEditor/index.less +22 -22
  109. package/src/components/Business/JsonQueryTable/jsonEditor/lint/basicType.js +147 -147
  110. package/src/components/Business/JsonQueryTable/jsonEditor/lint/index.js +389 -389
  111. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/actions.js +118 -118
  112. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/dependency.js +22 -22
  113. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/index.js +21 -21
  114. package/src/components/Business/JsonQueryTable/jsonEditor/suggestions/request.js +65 -65
  115. package/src/components/Business/JsonQueryTable/static.ts +390 -390
  116. package/src/components/Business/SearchSelect/BusinessUtils.ts +1730 -1730
  117. package/src/components/Business/SearchSelect/common.ts +53 -53
  118. package/src/components/Business/SearchSelect/index.md +1310 -1310
  119. package/src/components/Business/SearchSelect/index.tsx +51 -51
  120. package/src/components/Business/SearchSelect/utils.ts +100 -100
  121. package/src/components/Business/StateFlow/index.less +151 -151
  122. package/src/components/Business/StateFlow/index.md +60 -60
  123. package/src/components/Business/StateFlow/index.tsx +32 -32
  124. package/src/components/Business/TreeSearchSelect/index.md +154 -154
  125. package/src/components/Business/TreeSearchSelect/index.tsx +34 -34
  126. package/src/components/Business/TreeSearchSelect/utils.ts +69 -69
  127. package/src/components/Business/columnSettingTable/columnSetting.tsx +764 -764
  128. package/src/components/Business/columnSettingTable/index.less +247 -247
  129. package/src/components/Business/columnSettingTable/index.md +357 -357
  130. package/src/components/Business/columnSettingTable/index.tsx +232 -232
  131. package/src/components/Business/columnSettingTable/sulaSettingTable.tsx +240 -240
  132. package/src/components/Business/columnSettingTable/utils.tsx +68 -68
  133. package/src/components/Business/moreTreeTable/index.less +99 -99
  134. package/src/components/Business/moreTreeTable/index.md +448 -448
  135. package/src/components/Business/moreTreeTable/index.tsx +361 -361
  136. package/src/components/Business/moreTreeTable/utils.ts +126 -126
  137. package/src/components/Functional/AddSelect/index.less +367 -367
  138. package/src/components/Functional/AddSelect/index.md +155 -155
  139. package/src/components/Functional/AddSelect/index.tsx +1203 -1203
  140. package/src/components/Functional/BillEntry/index.less +371 -371
  141. package/src/components/Functional/BillEntry/index.md +39 -39
  142. package/src/components/Functional/BillEntry/index.tsx +766 -766
  143. package/src/components/Functional/DataImport/index.less +63 -63
  144. package/src/components/Functional/DataImport/index.md +44 -44
  145. package/src/components/Functional/DataImport/index.tsx +695 -695
  146. package/src/components/Functional/DataValidation/index.less +63 -63
  147. package/src/components/Functional/DataValidation/index.md +39 -39
  148. package/src/components/Functional/DataValidation/index.tsx +687 -687
  149. package/src/components/Functional/ExportFunctions/ExportIcon/index.md +37 -37
  150. package/src/components/Functional/ExportFunctions/ExportIcon/index.tsx +59 -59
  151. package/src/components/Functional/QueryMutipleInput/index.less +37 -37
  152. package/src/components/Functional/QueryMutipleInput/index.md +33 -33
  153. package/src/components/Functional/QueryMutipleInput/index.tsx +128 -128
  154. package/src/components/Functional/SearchSelect/index.less +115 -115
  155. package/src/components/Functional/SearchSelect/index.md +141 -141
  156. package/src/components/Functional/SearchSelect/index.tsx +846 -846
  157. package/src/components/Functional/SearchSelect/utils.ts +3 -3
  158. package/src/components/Functional/TreeSearchSelect/index.md +47 -47
  159. package/src/components/Functional/TreeSearchSelect/index.tsx +162 -160
  160. package/src/index.ts +34 -34
  161. package/src/plugin/TableColumnSetting/index.less +247 -247
  162. package/src/plugin/TableColumnSetting/index.md +50 -50
  163. package/src/plugin/TableColumnSetting/index.tsx +724 -724
  164. package/src/plugin/TableColumnSetting/utils.ts +19 -19
  165. package/src/styles/bsDefault.less +1912 -1912
  166. package/src/utils/CheckOneUser/index.md +39 -39
  167. package/src/utils/CheckOneUser/index.ts +51 -51
  168. package/src/utils/LocalstorageUtils.ts +90 -90
  169. package/src/utils/TableUtils.tsx +18 -18
  170. package/src/utils/checkUtils.ts +39 -39
  171. package/src/utils/enumConfig.ts +11 -11
  172. package/src/utils/getFormMode.js +12 -12
  173. package/src/utils/index.ts +3 -3
  174. package/src/utils/requestUtils.ts +34 -34
  175. package/src/utils/serialize.js +7 -7
  176. package/src/utils/utils.ts +183 -183
  177. package/tsconfig.json +29 -29
  178. 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
+ };