cloud-b2b 1.1.50 → 1.1.51

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 (309) hide show
  1. package/package.json +44 -22
  2. package/src/Area/Area.js +94 -0
  3. package/src/Card/Card.js +16 -0
  4. package/src/CodeInput/CodeInput.js +76 -0
  5. package/src/Control/Control.js +338 -0
  6. package/src/Control/event.js +45 -0
  7. package/src/Enhance/Dialogs.js +24 -0
  8. package/src/Enhance/Loading.js +83 -0
  9. package/{es → src}/Enhance/index.js +8 -8
  10. package/src/Header/Header.js +149 -0
  11. package/src/Header/Vertical.js +74 -0
  12. package/src/ImageView/ImageView.js +62 -0
  13. package/src/Indent/Indent.js +12 -0
  14. package/src/InpurCascader/InputCascader.js +83 -0
  15. package/src/InputEditor/InputEditor.js +93 -0
  16. package/src/InputSearch/InputSearch.js +186 -0
  17. package/src/InputSelect/InputSelect.js +103 -0
  18. package/src/InputTreeSelect/InputTreeSelect.js +87 -0
  19. package/src/InputWriting/InputWriting.js +65 -0
  20. package/src/Layout/Layout.js +121 -0
  21. package/src/LayoutLink/LayoutLink.js +59 -0
  22. package/src/Link/Link.js +57 -0
  23. package/src/Loading/Loading.js +15 -0
  24. package/src/Loading2/Loading2.js +15 -0
  25. package/src/ModalWithDrag/ModalWithDrag.js +17 -0
  26. package/src/ModalWithDrag/drag.js +128 -0
  27. package/src/NumberInput/NumberInput.js +137 -0
  28. package/src/Search/Search.js +368 -0
  29. package/src/Sidebar/Sidebar.js +111 -0
  30. package/src/Sidebar2/Sidebar.js +143 -0
  31. package/src/SuperForm/SuperForm.js +516 -0
  32. package/src/SuperForm2/SuperForm.js +588 -0
  33. package/src/SuperIcon/SuperIcon.js +14 -0
  34. package/src/SuperPagination/SuperPagination.js +65 -0
  35. package/src/SuperTab/SuperTab.js +84 -0
  36. package/src/SuperTab2/SuperTab2.js +94 -0
  37. package/src/SuperTable/DragSortRow.js +62 -0
  38. package/src/SuperTable/FilterDropDown.js +111 -0
  39. package/src/SuperTable/SuperTable.js +590 -0
  40. package/src/SuperTable/fixed.js +34 -0
  41. package/src/SuperTable2/SuperTable2.js +600 -0
  42. package/src/SuperTable2/SuperTableCell.js +144 -0
  43. package/src/SuperTable3/FilterDropDown.js +111 -0
  44. package/src/SuperTable3/SuperTable.js +498 -0
  45. package/src/SuperTable3/fixed.js +34 -0
  46. package/src/SuperToolbar/SuperToolbar.js +128 -0
  47. package/src/SuperUpload/SuperUpload.js +137 -0
  48. package/src/Title/Title.js +18 -0
  49. package/src/Viewer/ImageViews.js +220 -0
  50. package/src/Viewer/Viewer.js +97 -0
  51. package/src/WingBlank/WingBlank.js +14 -0
  52. package/src/helper.js +185 -0
  53. package/src/history.js +6 -0
  54. package/src/index.js +38 -0
  55. package/src/variables.js +5 -0
  56. package/test/index.html +10 -0
  57. package/test/test.js +16 -0
  58. package/test/test.less +12 -0
  59. package/test/webpack.config.js +71 -0
  60. package/tools/babel.config.js +14 -0
  61. package/tools/build.js +70 -0
  62. package/tools/publish.js +9 -0
  63. package/tools/util.js +53 -0
  64. package/es/Area/Area.js +0 -170
  65. package/es/Card/Card.js +0 -20
  66. package/es/CodeInput/CodeInput.js +0 -152
  67. package/es/Control/Control.js +0 -496
  68. package/es/Control/event.js +0 -57
  69. package/es/Enhance/Dialogs.js +0 -67
  70. package/es/Enhance/Loading.js +0 -151
  71. package/es/Header/Header.js +0 -194
  72. package/es/Header/Vertical.js +0 -129
  73. package/es/ImageView/ImageView.js +0 -117
  74. package/es/Indent/Indent.js +0 -23
  75. package/es/InpurCascader/InputCascader.js +0 -135
  76. package/es/InputEditor/InputEditor.js +0 -113
  77. package/es/InputSearch/InputSearch.js +0 -311
  78. package/es/InputSelect/InputSelect.js +0 -191
  79. package/es/InputTreeSelect/InputTreeSelect.js +0 -147
  80. package/es/InputWriting/InputWriting.js +0 -107
  81. package/es/Layout/Layout.js +0 -232
  82. package/es/LayoutLink/LayoutLink.js +0 -82
  83. package/es/Link/Link.js +0 -108
  84. package/es/Loading/Loading.js +0 -15
  85. package/es/Loading2/Loading2.js +0 -11
  86. package/es/ModalWithDrag/ModalWithDrag.js +0 -34
  87. package/es/ModalWithDrag/drag.js +0 -133
  88. package/es/NumberInput/NumberInput.js +0 -240
  89. package/es/Search/Search.js +0 -595
  90. package/es/Sidebar/Sidebar.js +0 -165
  91. package/es/Sidebar2/Sidebar.js +0 -192
  92. package/es/SuperForm/SuperForm.js +0 -720
  93. package/es/SuperForm2/SuperForm.js +0 -828
  94. package/es/SuperIcon/SuperIcon.js +0 -30
  95. package/es/SuperPagination/SuperPagination.js +0 -126
  96. package/es/SuperTab/SuperTab.js +0 -130
  97. package/es/SuperTab2/SuperTab2.js +0 -167
  98. package/es/SuperTable/DragSortRow.js +0 -125
  99. package/es/SuperTable/FilterDropDown.js +0 -188
  100. package/es/SuperTable/SuperTable.js +0 -940
  101. package/es/SuperTable/fixed.js +0 -42
  102. package/es/SuperTable2/SuperTable2.js +0 -1019
  103. package/es/SuperTable2/SuperTableCell.js +0 -242
  104. package/es/SuperTable3/FilterDropDown.js +0 -188
  105. package/es/SuperTable3/SuperTable.js +0 -790
  106. package/es/SuperTable3/fixed.js +0 -42
  107. package/es/SuperToolbar/SuperToolbar.js +0 -223
  108. package/es/SuperUpload/SuperUpload.js +0 -434
  109. package/es/Title/Title.js +0 -36
  110. package/es/Viewer/ImageViews.js +0 -311
  111. package/es/Viewer/Viewer.js +0 -149
  112. package/es/WingBlank/WingBlank.js +0 -20
  113. package/es/helper.js +0 -169
  114. package/es/history.js +0 -5
  115. package/es/index.js +0 -37
  116. package/es/variables.js +0 -4
  117. package/lib/Area/Area.js +0 -198
  118. package/lib/Area/package.json +0 -6
  119. package/lib/Card/Card.js +0 -38
  120. package/lib/Card/package.json +0 -6
  121. package/lib/CodeInput/CodeInput.js +0 -179
  122. package/lib/CodeInput/package.json +0 -6
  123. package/lib/Control/Control.js +0 -548
  124. package/lib/Control/event.js +0 -68
  125. package/lib/Control/package.json +0 -6
  126. package/lib/Enhance/Dialogs.js +0 -87
  127. package/lib/Enhance/Loading.js +0 -175
  128. package/lib/Enhance/index.js +0 -35
  129. package/lib/Enhance/package.json +0 -6
  130. package/lib/Header/Header.js +0 -215
  131. package/lib/Header/Header.less +0 -95
  132. package/lib/Header/Vertical.js +0 -150
  133. package/lib/Header/Vertical.less +0 -60
  134. package/lib/Header/package.json +0 -6
  135. package/lib/ImageView/ImageView.js +0 -134
  136. package/lib/ImageView/ImageView.less +0 -14
  137. package/lib/ImageView/package.json +0 -6
  138. package/lib/Indent/Indent.js +0 -38
  139. package/lib/Indent/package.json +0 -6
  140. package/lib/InpurCascader/InputCascader.js +0 -156
  141. package/lib/InpurCascader/package.json +0 -6
  142. package/lib/InputEditor/InputEditor.js +0 -131
  143. package/lib/InputEditor/inputEditor.less +0 -8
  144. package/lib/InputEditor/package.json +0 -6
  145. package/lib/InputSearch/InputSearch.js +0 -327
  146. package/lib/InputSearch/package.json +0 -6
  147. package/lib/InputSelect/InputSelect.js +0 -214
  148. package/lib/InputSelect/package.json +0 -6
  149. package/lib/InputTreeSelect/InputTreeSelect.js +0 -169
  150. package/lib/InputTreeSelect/package.json +0 -6
  151. package/lib/InputWriting/InputWriting.js +0 -123
  152. package/lib/InputWriting/package.json +0 -6
  153. package/lib/Layout/Layout.js +0 -258
  154. package/lib/Layout/Layout.less +0 -28
  155. package/lib/Layout/package.json +0 -6
  156. package/lib/LayoutLink/LayoutLink.js +0 -114
  157. package/lib/LayoutLink/LayoutLink.less +0 -53
  158. package/lib/LayoutLink/package.json +0 -6
  159. package/lib/Link/Link.js +0 -130
  160. package/lib/Link/package.json +0 -6
  161. package/lib/Loading/Loading.js +0 -30
  162. package/lib/Loading/Loading.less +0 -13
  163. package/lib/Loading/package.json +0 -6
  164. package/lib/Loading2/Loading2.js +0 -26
  165. package/lib/Loading2/Loading2.less +0 -19
  166. package/lib/Loading2/package.json +0 -6
  167. package/lib/ModalWithDrag/ModalWithDrag.js +0 -53
  168. package/lib/ModalWithDrag/ModalWithDrag.less +0 -6
  169. package/lib/ModalWithDrag/drag.js +0 -147
  170. package/lib/ModalWithDrag/package.json +0 -6
  171. package/lib/NumberInput/NumberInput.js +0 -262
  172. package/lib/NumberInput/package.json +0 -6
  173. package/lib/Search/Search.js +0 -616
  174. package/lib/Search/Search.less +0 -63
  175. package/lib/Search/package.json +0 -6
  176. package/lib/Sidebar/Sidebar.js +0 -186
  177. package/lib/Sidebar/Sidebar.less +0 -78
  178. package/lib/Sidebar/package.json +0 -6
  179. package/lib/Sidebar2/Sidebar.js +0 -213
  180. package/lib/Sidebar2/Sidebar.less +0 -153
  181. package/lib/Sidebar2/package.json +0 -6
  182. package/lib/SuperForm/SuperForm.js +0 -731
  183. package/lib/SuperForm/SuperForm.less +0 -52
  184. package/lib/SuperForm/package.json +0 -6
  185. package/lib/SuperForm2/SuperForm.js +0 -834
  186. package/lib/SuperForm2/SuperForm.less +0 -52
  187. package/lib/SuperForm2/package.json +0 -6
  188. package/lib/SuperIcon/SuperIcon.js +0 -47
  189. package/lib/SuperIcon/package.json +0 -6
  190. package/lib/SuperPagination/SuperPagination.js +0 -145
  191. package/lib/SuperPagination/package.json +0 -6
  192. package/lib/SuperTab/SuperTab.js +0 -146
  193. package/lib/SuperTab/SuperTab.less +0 -43
  194. package/lib/SuperTab/package.json +0 -6
  195. package/lib/SuperTab2/SuperTab2.js +0 -191
  196. package/lib/SuperTab2/SuperTab2.less +0 -18
  197. package/lib/SuperTab2/package.json +0 -6
  198. package/lib/SuperTable/DragSortRow.js +0 -142
  199. package/lib/SuperTable/DragSortRow.less +0 -17
  200. package/lib/SuperTable/FilterDropDown.js +0 -205
  201. package/lib/SuperTable/FilterDropDown.less +0 -30
  202. package/lib/SuperTable/SuperTable.js +0 -945
  203. package/lib/SuperTable/SuperTable.less +0 -132
  204. package/lib/SuperTable/fixed.js +0 -55
  205. package/lib/SuperTable/package.json +0 -6
  206. package/lib/SuperTable2/SuperTable2.js +0 -1047
  207. package/lib/SuperTable2/SuperTable2.less +0 -118
  208. package/lib/SuperTable2/SuperTableCell.js +0 -258
  209. package/lib/SuperTable2/package.json +0 -6
  210. package/lib/SuperTable3/FilterDropDown.js +0 -205
  211. package/lib/SuperTable3/FilterDropDown.less +0 -29
  212. package/lib/SuperTable3/SuperTable.js +0 -795
  213. package/lib/SuperTable3/SuperTable.less +0 -99
  214. package/lib/SuperTable3/fixed.js +0 -55
  215. package/lib/SuperTable3/package.json +0 -6
  216. package/lib/SuperToolbar/SuperToolbar.js +0 -248
  217. package/lib/SuperToolbar/SuperToolbar.less +0 -17
  218. package/lib/SuperToolbar/package.json +0 -6
  219. package/lib/SuperUpload/SuperUpload.js +0 -481
  220. package/lib/SuperUpload/SuperUpload.less +0 -28
  221. package/lib/SuperUpload/package.json +0 -6
  222. package/lib/Title/Title.js +0 -54
  223. package/lib/Title/Title.less +0 -35
  224. package/lib/Title/package.json +0 -6
  225. package/lib/Viewer/ImageViews.js +0 -323
  226. package/lib/Viewer/Viewer.js +0 -167
  227. package/lib/Viewer/Viewer.less +0 -67
  228. package/lib/Viewer/imgView.less +0 -59
  229. package/lib/Viewer/package.json +0 -7
  230. package/lib/WingBlank/WingBlank.js +0 -37
  231. package/lib/WingBlank/WingBlank.less +0 -12
  232. package/lib/WingBlank/package.json +0 -6
  233. package/lib/adjust.less +0 -89
  234. package/lib/helper.js +0 -204
  235. package/lib/history.js +0 -18
  236. package/lib/index.js +0 -347
  237. package/lib/index.less +0 -31
  238. package/lib/style.less +0 -30
  239. package/lib/variables.js +0 -16
  240. package/lib/variables.less +0 -73
  241. /package/{es → src}/Area/package.json +0 -0
  242. /package/{es → src}/Card/package.json +0 -0
  243. /package/{es → src}/CodeInput/package.json +0 -0
  244. /package/{es → src}/Control/package.json +0 -0
  245. /package/{es → src}/Enhance/package.json +0 -0
  246. /package/{es → src}/Header/Header.less +0 -0
  247. /package/{es → src}/Header/Vertical.less +0 -0
  248. /package/{es → src}/Header/package.json +0 -0
  249. /package/{es → src}/ImageView/ImageView.less +0 -0
  250. /package/{es → src}/ImageView/package.json +0 -0
  251. /package/{es → src}/Indent/package.json +0 -0
  252. /package/{es → src}/InpurCascader/package.json +0 -0
  253. /package/{es → src}/InputEditor/inputEditor.less +0 -0
  254. /package/{es → src}/InputEditor/package.json +0 -0
  255. /package/{es → src}/InputSearch/package.json +0 -0
  256. /package/{es → src}/InputSelect/package.json +0 -0
  257. /package/{es → src}/InputTreeSelect/package.json +0 -0
  258. /package/{es → src}/InputWriting/package.json +0 -0
  259. /package/{es → src}/Layout/Layout.less +0 -0
  260. /package/{es → src}/Layout/package.json +0 -0
  261. /package/{es → src}/LayoutLink/LayoutLink.less +0 -0
  262. /package/{es → src}/LayoutLink/package.json +0 -0
  263. /package/{es → src}/Link/package.json +0 -0
  264. /package/{es → src}/Loading/Loading.less +0 -0
  265. /package/{es → src}/Loading/package.json +0 -0
  266. /package/{es → src}/Loading2/Loading2.less +0 -0
  267. /package/{es → src}/Loading2/package.json +0 -0
  268. /package/{es → src}/ModalWithDrag/ModalWithDrag.less +0 -0
  269. /package/{es → src}/ModalWithDrag/package.json +0 -0
  270. /package/{es → src}/NumberInput/package.json +0 -0
  271. /package/{es → src}/Search/Search.less +0 -0
  272. /package/{es → src}/Search/package.json +0 -0
  273. /package/{es → src}/Sidebar/Sidebar.less +0 -0
  274. /package/{es → src}/Sidebar/package.json +0 -0
  275. /package/{es → src}/Sidebar2/Sidebar.less +0 -0
  276. /package/{es → src}/Sidebar2/package.json +0 -0
  277. /package/{es → src}/SuperForm/SuperForm.less +0 -0
  278. /package/{es → src}/SuperForm/package.json +0 -0
  279. /package/{es → src}/SuperForm2/SuperForm.less +0 -0
  280. /package/{es → src}/SuperForm2/package.json +0 -0
  281. /package/{es → src}/SuperIcon/package.json +0 -0
  282. /package/{es → src}/SuperPagination/package.json +0 -0
  283. /package/{es → src}/SuperTab/SuperTab.less +0 -0
  284. /package/{es → src}/SuperTab/package.json +0 -0
  285. /package/{es → src}/SuperTab2/SuperTab2.less +0 -0
  286. /package/{es → src}/SuperTab2/package.json +0 -0
  287. /package/{es → src}/SuperTable/DragSortRow.less +0 -0
  288. /package/{es → src}/SuperTable/FilterDropDown.less +0 -0
  289. /package/{es → src}/SuperTable/SuperTable.less +0 -0
  290. /package/{es → src}/SuperTable/package.json +0 -0
  291. /package/{es → src}/SuperTable2/SuperTable2.less +0 -0
  292. /package/{es → src}/SuperTable2/package.json +0 -0
  293. /package/{es → src}/SuperTable3/FilterDropDown.less +0 -0
  294. /package/{es → src}/SuperTable3/SuperTable.less +0 -0
  295. /package/{es → src}/SuperTable3/package.json +0 -0
  296. /package/{es → src}/SuperToolbar/SuperToolbar.less +0 -0
  297. /package/{es → src}/SuperToolbar/package.json +0 -0
  298. /package/{es → src}/SuperUpload/SuperUpload.less +0 -0
  299. /package/{es → src}/SuperUpload/package.json +0 -0
  300. /package/{es → src}/Title/Title.less +0 -0
  301. /package/{es → src}/Title/package.json +0 -0
  302. /package/{es → src}/Viewer/Viewer.less +0 -0
  303. /package/{es → src}/Viewer/imgView.less +0 -0
  304. /package/{es → src}/Viewer/package.json +0 -0
  305. /package/{es → src}/WingBlank/WingBlank.less +0 -0
  306. /package/{es → src}/WingBlank/package.json +0 -0
  307. /package/{es → src}/adjust.less +0 -0
  308. /package/{es → src}/style.less +0 -0
  309. /package/{es → src}/variables.less +0 -0
@@ -0,0 +1,111 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Link from '../Link';
4
+ import SuperIcon from '../SuperIcon';
5
+ import {Menu} from 'antd';
6
+ import variables from '../variables';
7
+
8
+ const SubMenu = Menu.SubMenu;
9
+ const MenuItem = Menu.Item;
10
+
11
+ /** 侧边栏二级条目的类型
12
+ * key: 唯一标识一个条目
13
+ * title:条目的标题
14
+ * href: 为跳转页面的url
15
+ */
16
+ const ChildType = {
17
+ key: PropTypes.string.isRequired,
18
+ title: PropTypes.string.isRequired,
19
+ href: PropTypes.string.isRequired
20
+ };
21
+
22
+ /** 侧边栏一级条目的类型
23
+ * key: 唯一标识一个条目
24
+ * title:条目的标题
25
+ * icon:条目左边图标url,大小为20*20px
26
+ * isFolder:为true表明有下级菜单,此时href被忽略,children存放下级菜单的信息
27
+ * href: isFolder为false时,为跳转页面的url,否则被忽略
28
+ * children:isFolder为true时,存放下级菜单的信息,否则被忽略
29
+ */
30
+ const ItemType = {
31
+ key: PropTypes.string.isRequired,
32
+ title: PropTypes.string.isRequired,
33
+ icon: PropTypes.string,
34
+ isFolder: PropTypes.bool,
35
+ href: PropTypes.string,
36
+ children: PropTypes.arrayOf(PropTypes.shape(ChildType))
37
+ };
38
+
39
+ /**
40
+ * activeKey:指定被选中的一级条目的key,不能是二级条目的key
41
+ * items:存放所有侧边栏条目的信息
42
+ * style: 样式
43
+ */
44
+ class Sidebar extends React.Component {
45
+ static propTypes = {
46
+ activeKey: PropTypes.string.isRequired,
47
+ items: PropTypes.arrayOf(PropTypes.shape(ItemType)).isRequired,
48
+ style: PropTypes.object
49
+ };
50
+
51
+ onOpenChange = (openKeys) => {
52
+ const {onOpenChange} = this.props;
53
+ if (onOpenChange) {
54
+ onOpenChange(openKeys);
55
+ }
56
+ };
57
+
58
+ toIcon = (type) => {
59
+ if (type) {
60
+ return <SuperIcon type={type} style={{fontSize: 16, verticalAlign: -2}} />
61
+ } else {
62
+ return null;
63
+ }
64
+ };
65
+
66
+ toItem = ({key, title, isFolder, children, href, icon, unreadTotal}) => {
67
+ if (isFolder) {
68
+ const t = <div>{this.toIcon(icon)}{title}</div>;
69
+ return (
70
+ <SubMenu key={key} title={t}>
71
+ {this.toItems(children)}
72
+ </SubMenu>
73
+ );
74
+ } else {
75
+ return (
76
+ <MenuItem key={key}>
77
+ <Link to={href} title={title} className={variables('Sidebar').unreadTotalLink}>
78
+ {this.toIcon(icon)}
79
+ {title}
80
+ {unreadTotal && unreadTotal>0 && <span className={variables('Sidebar').unreadTotalLink.unreadTotal}>{unreadTotal}</span>}
81
+ </Link>
82
+ </MenuItem>
83
+ );
84
+ }
85
+ };
86
+
87
+ toItems = (items) => {
88
+ return items.map(this.toItem);
89
+ };
90
+
91
+ getProps = () => {
92
+ const {style, activeKey, openKeys=[]} = this.props;
93
+ return {
94
+ style, openKeys,
95
+ selectedKeys: [activeKey],
96
+ mode: 'inline',
97
+ onOpenChange: this.onOpenChange,
98
+ className: variables('Sidebar')
99
+ }
100
+ };
101
+
102
+ render() {
103
+ return (
104
+ <Menu {...this.getProps()}>
105
+ {this.toItems(this.props.items)}
106
+ </Menu>
107
+ );
108
+ }
109
+ }
110
+
111
+ export default Sidebar;
@@ -0,0 +1,143 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import Link from '../Link';
4
+ import {Icon} from 'antd';
5
+ import variables from '../variables';
6
+
7
+ const ITEM_HEIGHT = 40;
8
+
9
+ /** 侧边栏二级条目的类型
10
+ * key: 唯一标识一个条目
11
+ * title:条目的标题
12
+ * href: 为跳转页面的url
13
+ */
14
+ const ChildType = {
15
+ key: PropTypes.string.isRequired,
16
+ title: PropTypes.string.isRequired,
17
+ href: PropTypes.string.isRequired
18
+ };
19
+
20
+ /** 侧边栏一级条目的类型
21
+ * key: 唯一标识一个条目
22
+ * title:条目的标题
23
+ * isFolder:为true表明有下级菜单,此时href被忽略,children存放下级菜单的信息
24
+ * href: isFolder为false时,为跳转页面的url,否则被忽略
25
+ * children:isFolder为true时,存放下级菜单的信息,否则被忽略
26
+ */
27
+ const ItemType = {
28
+ key: PropTypes.string.isRequired,
29
+ title: PropTypes.string.isRequired,
30
+ isFolder: PropTypes.bool,
31
+ href: PropTypes.string,
32
+ children: PropTypes.arrayOf(PropTypes.shape(ChildType))
33
+ };
34
+
35
+ /**
36
+ * title: 侧边栏的标题
37
+ * mode: 显示模式,默认为expand(展开)
38
+ * activeKey:指定被选中的一级条目的key,不能是二级条目的key
39
+ * items:存放所有侧边栏条目的信息
40
+ * openKeys: 展开条目的key
41
+ * style: 样式
42
+ * onOpenChange: 展开条目信息改变时触发,原型为func(openKeys)
43
+ * onModeChange: 模式改变时触发,原型为func(mode)
44
+ */
45
+ class Sidebar extends React.Component {
46
+ static propTypes = {
47
+ title: PropTypes.string,
48
+ mode: PropTypes.oneOf(['collapse', 'expand']),
49
+ activeKey: PropTypes.string,
50
+ items: PropTypes.arrayOf(PropTypes.shape(ItemType)),
51
+ openKeys: PropTypes.array,
52
+ style: PropTypes.object,
53
+ onOpenChange: PropTypes.func,
54
+ onModeChange: PropTypes.func
55
+ };
56
+
57
+ onModeChange = () => {
58
+ const mode = this.props.mode || 'expand';
59
+ this.props.onModeChange(mode === 'expand' ? 'collapse' : 'expand');
60
+ };
61
+
62
+ isSelect = (item) => {
63
+ return this.props.activeKey === item.key;
64
+ };
65
+
66
+ isOpen = (item) => {
67
+ return this.props.openKeys.includes(item.key);
68
+ };
69
+
70
+ getHeight = (item) => {
71
+ if (item.isFolder && this.isOpen(item)) {
72
+ return (item.children.length + 1) * ITEM_HEIGHT;
73
+ } else {
74
+ return ITEM_HEIGHT;
75
+ }
76
+ };
77
+
78
+ linkProps = (item) => {
79
+ if (item.isFolder) {
80
+ return {
81
+ title: item.title,
82
+ onClick: () => {
83
+ if (this.isOpen(item)) {
84
+ this.props.onOpenChange(this.props.openKeys.filter(key => item.key !== key));
85
+ } else {
86
+ this.props.onOpenChange([...this.props.openKeys, item.key]);
87
+ }
88
+ }
89
+ }
90
+ } else {
91
+ return {
92
+ title: item.title,
93
+ to: item.href,
94
+ 'data-select': this.isSelect(item)
95
+ };
96
+ }
97
+ };
98
+
99
+ renderChild = (item, index) => {
100
+ return (
101
+ <li key={index}>
102
+ <Link {...this.linkProps(item)} data-role='child-item'>
103
+ <span>{item.title}</span>
104
+ {item.unreadTotal && item.unreadTotal>0 && <span className={variables('Sidebar2').unreadTotal}>{item.unreadTotal}</span>}
105
+ </Link>
106
+ </li>
107
+ );
108
+ };
109
+
110
+ renderItem = (item, index) => {
111
+ return (
112
+ <li key={index} style={{height: this.getHeight(item)}}>
113
+ <Link {...this.linkProps(item)} data-role='parent-item'>
114
+ <span>{item.isFolder ? <Icon type='caret-right' data-open={this.isOpen(item)} /> : null}</span>
115
+ <span>{item.title}</span>
116
+ </Link>
117
+ {item.isFolder && this.isOpen(item) ? <ul>{item.children.map(this.renderChild)}</ul> : null}
118
+ </li>
119
+ );
120
+ };
121
+
122
+ render() {
123
+ return (
124
+ <div className={variables('Sidebar2')} data-mode={this.props.mode || 'expand'}>
125
+ <div>
126
+ <span> </span>
127
+ <span>{this.props.title}</span>
128
+ </div>
129
+ <ul>{this.props.items.map(this.renderItem)}</ul>
130
+ {!this.props.onModeChange ? null : (
131
+ <div data-role='shousuo' onClick={this.onModeChange}>
132
+ <div>
133
+ <i />
134
+ <div><Icon type={this.props.mode === 'expand' ? 'left' : 'right'} /></div>
135
+ </div>
136
+ </div>
137
+ )}
138
+ </div>
139
+ );
140
+ }
141
+ }
142
+
143
+ export default Sidebar;