@aloudata/aloudata-design 0.2.0-beta.9 → 0.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 (318) hide show
  1. package/README.md +188 -51
  2. package/es/Alert/index.d.ts +4 -0
  3. package/es/Alert/index.js +3 -0
  4. package/es/Alert/style/index.d.ts +2 -0
  5. package/es/Alert/style/index.js +2 -0
  6. package/es/Alert/style/index.less +1 -0
  7. package/es/Button/index.js +1 -1
  8. package/es/Button/style/index.less +90 -50
  9. package/es/Checkbox/index.d.ts +11 -0
  10. package/es/Checkbox/index.js +32 -0
  11. package/es/Checkbox/style/index.d.ts +2 -0
  12. package/es/Checkbox/style/index.js +2 -0
  13. package/es/Checkbox/style/index.less +79 -0
  14. package/es/Col/index.d.ts +4 -0
  15. package/es/Col/index.js +3 -0
  16. package/es/Col/style/index.d.ts +2 -0
  17. package/es/Col/style/index.js +2 -0
  18. package/es/Col/style/index.less +1 -0
  19. package/es/ConfigProvider/index.d.ts +3 -0
  20. package/es/ConfigProvider/index.js +3 -0
  21. package/es/ConfigProvider/style/index.d.ts +2 -0
  22. package/es/ConfigProvider/style/index.js +2 -0
  23. package/es/ConfigProvider/style/index.less +1 -0
  24. package/es/DatePicker/index.d.ts +4 -0
  25. package/es/DatePicker/index.js +3 -0
  26. package/es/DatePicker/style/index.d.ts +2 -0
  27. package/es/DatePicker/style/index.js +2 -0
  28. package/es/DatePicker/style/index.less +1 -0
  29. package/es/Divider/index.d.ts +3 -0
  30. package/es/Divider/index.js +3 -0
  31. package/es/Divider/style/index.d.ts +2 -0
  32. package/es/Divider/style/index.js +2 -0
  33. package/es/Divider/style/index.less +1 -0
  34. package/es/Dropdown/Button.d.ts +1 -0
  35. package/es/Dropdown/Button.js +3 -8
  36. package/es/Dropdown/index.d.ts +27 -0
  37. package/es/Dropdown/index.js +1 -7
  38. package/es/Dropdown/style/index.d.ts +1 -0
  39. package/es/Dropdown/style/index.js +1 -0
  40. package/es/Empty/style/index.less +6 -6
  41. package/es/Form/index.d.ts +8 -0
  42. package/es/Form/index.js +3 -0
  43. package/es/Form/style/index.d.ts +2 -0
  44. package/es/Form/style/index.js +2 -0
  45. package/es/Form/style/index.less +1 -0
  46. package/es/Icon/index.d.ts +3 -0
  47. package/es/Icon/index.js +3 -2
  48. package/es/Input/components/Group/index.d.ts +1 -2
  49. package/es/Input/components/Group/index.js +1 -7
  50. package/es/Input/components/Input/index.d.ts +67 -0
  51. package/es/Input/components/Input/index.js +32 -0
  52. package/es/Input/components/Password/index.d.ts +5 -5
  53. package/es/Input/components/Password/index.js +6 -11
  54. package/es/Input/components/TextArea/index.d.ts +10 -4
  55. package/es/Input/components/TextArea/index.js +13 -9
  56. package/es/Input/index.d.ts +14 -62
  57. package/es/Input/index.js +4 -40
  58. package/es/Input/style/index.d.ts +1 -0
  59. package/es/Input/style/index.js +1 -0
  60. package/es/Input/style/index.less +40 -10
  61. package/es/Layout/index.d.ts +4 -0
  62. package/es/Layout/index.js +3 -0
  63. package/es/Layout/style/index.d.ts +2 -0
  64. package/es/Layout/style/index.js +2 -0
  65. package/es/Layout/style/index.less +1 -0
  66. package/es/Menu/Divider.js +1 -8
  67. package/es/Menu/MenuItem.d.ts +7 -1
  68. package/es/Menu/MenuItem.js +1 -8
  69. package/es/Menu/SubMenu.js +1 -7
  70. package/es/Menu/index.js +1 -7
  71. package/es/Menu/style/index.d.ts +1 -0
  72. package/es/Menu/style/index.js +1 -0
  73. package/es/Menu/style/index.less +9 -5
  74. package/es/Message/index.d.ts +4 -0
  75. package/es/Message/index.js +3 -0
  76. package/es/Message/style/index.d.ts +2 -0
  77. package/es/Message/style/index.js +2 -0
  78. package/es/Message/style/index.less +1 -0
  79. package/es/Navigator/components/Menu/index.js +2 -2
  80. package/es/Notification/index.d.ts +3 -0
  81. package/es/Notification/index.js +3 -0
  82. package/es/Notification/style/index.d.ts +2 -0
  83. package/es/Notification/style/index.js +2 -0
  84. package/es/Notification/style/index.less +1 -0
  85. package/es/Radio/index.d.ts +4 -0
  86. package/es/Radio/index.js +3 -0
  87. package/es/Radio/style/index.d.ts +2 -0
  88. package/es/Radio/style/index.js +2 -0
  89. package/es/Radio/style/index.less +1 -0
  90. package/es/Row/index.d.ts +3 -0
  91. package/es/Row/index.js +3 -0
  92. package/es/Row/style/index.d.ts +2 -0
  93. package/es/Row/style/index.js +2 -0
  94. package/es/Row/style/index.less +1 -0
  95. package/es/Select/BaseSelect.js +18 -5
  96. package/es/Select/OptionsList/OptionItem/RenderLabelIcon.d.ts +3 -1
  97. package/es/Select/OptionsList/OptionItem/RenderLabelIcon.js +1 -0
  98. package/es/Select/OptionsList/index.js +14 -25
  99. package/es/Select/Selector/index.js +14 -14
  100. package/es/Select/interface.d.ts +10 -2
  101. package/es/Select/style/index.less +63 -30
  102. package/es/Skeleton/index.d.ts +3 -0
  103. package/es/Skeleton/index.js +2 -0
  104. package/es/Skeleton/style/index.d.ts +2 -0
  105. package/es/Skeleton/style/index.js +2 -0
  106. package/es/Skeleton/style/index.less +1 -0
  107. package/es/Space/index.d.ts +4 -0
  108. package/es/Space/index.js +3 -0
  109. package/es/Space/style/index.d.ts +2 -0
  110. package/es/Space/style/index.js +2 -0
  111. package/es/Space/style/index.less +1 -0
  112. package/es/Spin/index.d.ts +4 -0
  113. package/es/Spin/index.js +2 -0
  114. package/es/Spin/style/index.d.ts +2 -0
  115. package/es/Spin/style/index.js +2 -0
  116. package/es/Spin/style/index.less +1 -0
  117. package/es/Steps/index.d.ts +3 -0
  118. package/es/Steps/index.js +2 -0
  119. package/es/Steps/style/index.d.ts +2 -0
  120. package/es/Steps/style/index.js +2 -0
  121. package/es/Steps/style/index.less +1 -0
  122. package/es/Switch/index.d.ts +4 -0
  123. package/es/Switch/index.js +2 -0
  124. package/es/Switch/style/index.d.ts +2 -0
  125. package/es/Switch/style/index.js +2 -0
  126. package/es/Switch/style/index.less +1 -0
  127. package/es/Table/index.d.ts +3 -3
  128. package/es/Table/index.js +255 -142
  129. package/es/Table/interface.d.ts +10 -4
  130. package/es/Table/react-table-config.d.ts +45 -45
  131. package/es/Table/style/index.less +88 -40
  132. package/es/Tabs/TabPane.js +1 -7
  133. package/es/Tabs/index.d.ts +5 -0
  134. package/es/Tabs/index.js +7 -4
  135. package/es/Tabs/style/index.d.ts +1 -0
  136. package/es/Tabs/style/index.js +1 -0
  137. package/es/Tabs/style/index.less +9 -2
  138. package/es/Tooltip/style/index.less +1 -1
  139. package/es/Tree/index.d.ts +5 -0
  140. package/es/Tree/index.js +2 -0
  141. package/es/Tree/style/index.d.ts +2 -0
  142. package/es/Tree/style/index.js +2 -0
  143. package/es/Tree/style/index.less +1 -0
  144. package/es/Typography/index.d.ts +3 -0
  145. package/es/Typography/index.js +3 -0
  146. package/es/Typography/style/index.d.ts +2 -0
  147. package/es/Typography/style/index.js +2 -0
  148. package/es/Typography/style/index.less +1 -0
  149. package/es/Upload/index.d.ts +4 -0
  150. package/es/Upload/index.js +3 -0
  151. package/es/Upload/style/index.d.ts +2 -0
  152. package/es/Upload/style/index.js +2 -0
  153. package/es/Upload/style/index.less +1 -0
  154. package/es/_utils/hooks/useControlledState.d.ts +1 -1
  155. package/es/_utils/hooks/useControlledState.js +11 -11
  156. package/es/index.d.ts +39 -1
  157. package/es/index.js +21 -1
  158. package/es/locale/zh_CN.d.ts +2 -0
  159. package/es/locale/zh_CN.js +2 -0
  160. package/lib/Alert/index.d.ts +4 -0
  161. package/lib/Alert/index.js +15 -0
  162. package/lib/Alert/style/index.d.ts +2 -0
  163. package/lib/Alert/style/index.js +5 -0
  164. package/lib/Alert/style/index.less +1 -0
  165. package/lib/Button/index.js +1 -1
  166. package/lib/Button/style/index.less +90 -50
  167. package/lib/Checkbox/index.d.ts +11 -0
  168. package/lib/Checkbox/index.js +46 -0
  169. package/lib/Checkbox/style/index.d.ts +2 -0
  170. package/lib/Checkbox/style/index.js +5 -0
  171. package/lib/Checkbox/style/index.less +79 -0
  172. package/lib/Col/index.d.ts +4 -0
  173. package/lib/Col/index.js +15 -0
  174. package/lib/Col/style/index.d.ts +2 -0
  175. package/lib/Col/style/index.js +5 -0
  176. package/lib/Col/style/index.less +1 -0
  177. package/lib/ConfigProvider/index.d.ts +3 -0
  178. package/lib/ConfigProvider/index.js +15 -0
  179. package/lib/ConfigProvider/style/index.d.ts +2 -0
  180. package/lib/ConfigProvider/style/index.js +5 -0
  181. package/lib/ConfigProvider/style/index.less +1 -0
  182. package/lib/DatePicker/index.d.ts +4 -0
  183. package/lib/DatePicker/index.js +15 -0
  184. package/lib/DatePicker/style/index.d.ts +2 -0
  185. package/lib/DatePicker/style/index.js +5 -0
  186. package/lib/DatePicker/style/index.less +1 -0
  187. package/lib/Divider/index.d.ts +3 -0
  188. package/lib/Divider/index.js +15 -0
  189. package/lib/Divider/style/index.d.ts +2 -0
  190. package/lib/Divider/style/index.js +5 -0
  191. package/lib/Divider/style/index.less +1 -0
  192. package/lib/Dropdown/Button.d.ts +1 -0
  193. package/lib/Dropdown/Button.js +3 -7
  194. package/lib/Dropdown/index.d.ts +27 -0
  195. package/lib/Dropdown/index.js +1 -7
  196. package/lib/Dropdown/style/index.d.ts +1 -0
  197. package/lib/Dropdown/style/index.js +2 -0
  198. package/lib/Empty/style/index.less +6 -6
  199. package/lib/Form/index.d.ts +8 -0
  200. package/lib/Form/index.js +15 -0
  201. package/lib/Form/style/index.d.ts +2 -0
  202. package/lib/Form/style/index.js +5 -0
  203. package/lib/Form/style/index.less +1 -0
  204. package/lib/Icon/index.d.ts +3 -0
  205. package/lib/Icon/index.js +7 -1
  206. package/lib/Input/components/Group/index.d.ts +1 -2
  207. package/lib/Input/components/Group/index.js +1 -7
  208. package/lib/Input/components/Input/index.d.ts +67 -0
  209. package/lib/Input/components/Input/index.js +45 -0
  210. package/lib/Input/components/Password/index.d.ts +5 -5
  211. package/lib/Input/components/Password/index.js +10 -14
  212. package/lib/Input/components/TextArea/index.d.ts +10 -4
  213. package/lib/Input/components/TextArea/index.js +16 -11
  214. package/lib/Input/index.d.ts +14 -62
  215. package/lib/Input/index.js +4 -42
  216. package/lib/Input/style/index.d.ts +1 -0
  217. package/lib/Input/style/index.js +2 -0
  218. package/lib/Input/style/index.less +40 -10
  219. package/lib/Layout/index.d.ts +4 -0
  220. package/lib/Layout/index.js +15 -0
  221. package/lib/Layout/style/index.d.ts +2 -0
  222. package/lib/Layout/style/index.js +5 -0
  223. package/lib/Layout/style/index.less +1 -0
  224. package/lib/Menu/Divider.js +1 -7
  225. package/lib/Menu/MenuItem.d.ts +7 -1
  226. package/lib/Menu/MenuItem.js +1 -7
  227. package/lib/Menu/SubMenu.js +1 -7
  228. package/lib/Menu/index.js +1 -7
  229. package/lib/Menu/style/index.d.ts +1 -0
  230. package/lib/Menu/style/index.js +2 -0
  231. package/lib/Menu/style/index.less +9 -5
  232. package/lib/Message/index.d.ts +4 -0
  233. package/lib/Message/index.js +15 -0
  234. package/lib/Message/style/index.d.ts +2 -0
  235. package/lib/Message/style/index.js +5 -0
  236. package/lib/Message/style/index.less +1 -0
  237. package/lib/Navigator/components/Menu/index.js +2 -2
  238. package/lib/Notification/index.d.ts +3 -0
  239. package/lib/Notification/index.js +15 -0
  240. package/lib/Notification/style/index.d.ts +2 -0
  241. package/lib/Notification/style/index.js +5 -0
  242. package/lib/Notification/style/index.less +1 -0
  243. package/lib/Radio/index.d.ts +4 -0
  244. package/lib/Radio/index.js +15 -0
  245. package/lib/Radio/style/index.d.ts +2 -0
  246. package/lib/Radio/style/index.js +5 -0
  247. package/lib/Radio/style/index.less +1 -0
  248. package/lib/Row/index.d.ts +3 -0
  249. package/lib/Row/index.js +15 -0
  250. package/lib/Row/style/index.d.ts +2 -0
  251. package/lib/Row/style/index.js +5 -0
  252. package/lib/Row/style/index.less +1 -0
  253. package/lib/Select/BaseSelect.js +18 -5
  254. package/lib/Select/OptionsList/OptionItem/RenderLabelIcon.d.ts +3 -1
  255. package/lib/Select/OptionsList/OptionItem/RenderLabelIcon.js +2 -0
  256. package/lib/Select/OptionsList/index.js +13 -25
  257. package/lib/Select/Selector/index.js +14 -14
  258. package/lib/Select/interface.d.ts +10 -2
  259. package/lib/Select/style/index.less +63 -30
  260. package/lib/Skeleton/index.d.ts +3 -0
  261. package/lib/Skeleton/index.js +13 -0
  262. package/lib/Skeleton/style/index.d.ts +2 -0
  263. package/lib/Skeleton/style/index.js +5 -0
  264. package/lib/Skeleton/style/index.less +1 -0
  265. package/lib/Space/index.d.ts +4 -0
  266. package/lib/Space/index.js +23 -0
  267. package/lib/Space/style/index.d.ts +2 -0
  268. package/lib/Space/style/index.js +5 -0
  269. package/lib/Space/style/index.less +1 -0
  270. package/lib/Spin/index.d.ts +4 -0
  271. package/lib/Spin/index.js +13 -0
  272. package/lib/Spin/style/index.d.ts +2 -0
  273. package/lib/Spin/style/index.js +5 -0
  274. package/lib/Spin/style/index.less +1 -0
  275. package/lib/Steps/index.d.ts +3 -0
  276. package/lib/Steps/index.js +13 -0
  277. package/lib/Steps/style/index.d.ts +2 -0
  278. package/lib/Steps/style/index.js +5 -0
  279. package/lib/Steps/style/index.less +1 -0
  280. package/lib/Switch/index.d.ts +4 -0
  281. package/lib/Switch/index.js +13 -0
  282. package/lib/Switch/style/index.d.ts +2 -0
  283. package/lib/Switch/style/index.js +5 -0
  284. package/lib/Switch/style/index.less +1 -0
  285. package/lib/Table/index.d.ts +3 -3
  286. package/lib/Table/index.js +264 -150
  287. package/lib/Table/interface.d.ts +10 -4
  288. package/lib/Table/react-table-config.d.ts +45 -45
  289. package/lib/Table/style/index.less +88 -40
  290. package/lib/Tabs/TabPane.js +1 -7
  291. package/lib/Tabs/index.d.ts +5 -0
  292. package/lib/Tabs/index.js +7 -4
  293. package/lib/Tabs/style/index.d.ts +1 -0
  294. package/lib/Tabs/style/index.js +2 -0
  295. package/lib/Tabs/style/index.less +9 -2
  296. package/lib/Tooltip/style/index.less +1 -1
  297. package/lib/Tree/index.d.ts +5 -0
  298. package/lib/Tree/index.js +13 -0
  299. package/lib/Tree/style/index.d.ts +2 -0
  300. package/lib/Tree/style/index.js +5 -0
  301. package/lib/Tree/style/index.less +1 -0
  302. package/lib/Typography/index.d.ts +3 -0
  303. package/lib/Typography/index.js +15 -0
  304. package/lib/Typography/style/index.d.ts +2 -0
  305. package/lib/Typography/style/index.js +5 -0
  306. package/lib/Typography/style/index.less +1 -0
  307. package/lib/Upload/index.d.ts +4 -0
  308. package/lib/Upload/index.js +15 -0
  309. package/lib/Upload/style/index.d.ts +2 -0
  310. package/lib/Upload/style/index.js +5 -0
  311. package/lib/Upload/style/index.less +1 -0
  312. package/lib/_utils/hooks/useControlledState.d.ts +1 -1
  313. package/lib/_utils/hooks/useControlledState.js +11 -11
  314. package/lib/index.d.ts +39 -1
  315. package/lib/index.js +160 -0
  316. package/lib/locale/zh_CN.d.ts +2 -0
  317. package/lib/locale/zh_CN.js +13 -0
  318. package/package.json +15 -4
package/es/Table/index.js CHANGED
@@ -23,32 +23,31 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
23
23
 
24
24
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
25
25
 
26
+ /* eslint-disable no-unneeded-ternary */
26
27
  /// <reference types ='./react-table-config' />
27
- import React, { useCallback, useMemo } from 'react';
28
- import { useTable, useBlockLayout, useRowSelect, useSortBy, useResizeColumns } from 'react-table';
29
- import usePrefixCls from '../_utils/hooks/usePrefixCls';
30
- import { FixedSizeList } from 'react-window';
31
- import InfiniteLoader from 'react-window-infinite-loader';
28
+ import _ from 'lodash';
32
29
  import classnames from 'classnames';
33
30
  import Icon from '../Icon';
31
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
32
+ import usePrefixCls from '../_utils/hooks/usePrefixCls';
33
+ import InfiniteScroll from 'react-infinite-scroll-component';
34
34
  import Empty from '../Empty';
35
- import _ from 'lodash';
36
- var DEFAULT_ROW_HEIGHT = 40;
35
+ import ResizeObserver from 'rc-resize-observer';
36
+ import { useTable, useBlockLayout, useRowSelect, useSortBy, useResizeColumns } from 'react-table';
37
37
  var ARRAY_FIRST_INDEX = 0;
38
38
  var DEFAULT_ROW_WIDTH = 0;
39
+ var DEFAULT_BODY_HEIGHT = 0;
39
40
 
40
- function Table(_ref) {
41
+ function Table(_ref, ref) {
41
42
  var columns = _ref.columns,
42
43
  data = _ref.data,
43
44
  total = _ref.total,
44
45
  renderHeaderLeft = _ref.renderHeaderLeft,
45
46
  renderHeaderRight = _ref.renderHeaderRight,
46
- scrollY = _ref.scrollY,
47
47
  onRowSelected = _ref.onRowSelected,
48
- _ref$loadMore = _ref.loadMore,
49
- loadMore = _ref$loadMore === void 0 ? function () {} : _ref$loadMore,
50
- hasNextPage = _ref.hasNextPage,
48
+ loadMore = _ref.loadMore,
51
49
  loading = _ref.loading,
50
+ hasNextPage = _ref.hasNextPage,
52
51
  _ref$sortable = _ref.sortable,
53
52
  sortable = _ref$sortable === void 0 ? false : _ref$sortable,
54
53
  defaultSort = _ref.defaultSort,
@@ -58,17 +57,82 @@ function Table(_ref) {
58
57
  _ref$showHeader = _ref.showHeader,
59
58
  showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
60
59
  _ref$onChange = _ref.onChange,
61
- onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange;
60
+ onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
61
+ _ref$innerScroll = _ref.innerScroll,
62
+ innerScroll = _ref$innerScroll === void 0 ? false : _ref$innerScroll,
63
+ _ref$scrollThreshold = _ref.scrollThreshold,
64
+ scrollThreshold = _ref$scrollThreshold === void 0 ? '150px' : _ref$scrollThreshold,
65
+ _ref$rowClassName = _ref.rowClassName,
66
+ rowClassName = _ref$rowClassName === void 0 ? '' : _ref$rowClassName,
67
+ _ref$ellipsis = _ref.ellipsis,
68
+ ellipsis = _ref$ellipsis === void 0 ? true : _ref$ellipsis,
69
+ renderEmpty = _ref.renderEmpty,
70
+ rowKey = _ref.rowKey;
62
71
 
63
72
  var _React$useState = React.useState(null),
64
73
  _React$useState2 = _slicedToArray(_React$useState, 2),
65
74
  selectedRowId = _React$useState2[0],
66
75
  setSelectedRowId = _React$useState2[1];
67
76
 
77
+ var tableBodyListRef = useRef(null);
78
+ var tableRef = useRef(null);
79
+
80
+ var _useState = useState(DEFAULT_BODY_HEIGHT),
81
+ _useState2 = _slicedToArray(_useState, 2),
82
+ tableClientWidth = _useState2[0],
83
+ setTableClientWidth = _useState2[1];
84
+
85
+ var RANDOM_ID = "INNER_SCROLL_ID_".concat(Math.random());
86
+
87
+ var _useState3 = useState(DEFAULT_ROW_WIDTH),
88
+ _useState4 = _slicedToArray(_useState3, 2),
89
+ width = _useState4[0],
90
+ setWidth = _useState4[1]; // 如果页面整体宽度变化则重新计算
91
+
92
+
93
+ useEffect(function () {
94
+ if (tableRef.current) {
95
+ setTableClientWidth(tableRef.current.clientWidth);
96
+ }
97
+ }, [width]);
98
+ var initialColumnsWidthMap = useMemo(function () {
99
+ var map = new Map();
100
+
101
+ if (tableClientWidth !== DEFAULT_BODY_HEIGHT) {
102
+ var noGivenColumns = 0;
103
+ var givenColumnsTotalWidth = 0;
104
+ columns.forEach(function (column) {
105
+ if (column.width) {
106
+ map.set(column.dataIndex, column.width);
107
+ givenColumnsTotalWidth += column.width;
108
+ } else {
109
+ noGivenColumns += 1;
110
+ }
111
+ });
112
+ var averageWidth = (tableClientWidth - givenColumnsTotalWidth) / noGivenColumns;
113
+ return {
114
+ columnMap: map,
115
+ averageWidth: averageWidth
116
+ };
117
+ }
118
+
119
+ columns.forEach(function (column) {
120
+ if (column.width) {
121
+ map.set(column.dataIndex, column.width);
122
+ }
123
+ });
124
+ return {
125
+ columnMap: map,
126
+ averageWidth: DEFAULT_ROW_WIDTH
127
+ };
128
+ }, [columns, tableClientWidth]);
68
129
  var newColumns = useMemo(function () {
69
130
  return columns.map(function (column) {
70
131
  return _objectSpread(_objectSpread({}, column), {}, {
71
- Header: column.title,
132
+ width: initialColumnsWidthMap.columnMap.get(column.dataIndex) || initialColumnsWidthMap.averageWidth,
133
+ Header: column.title ? column.title : function () {
134
+ return null;
135
+ },
72
136
  disableSortBy: !sortable || typeof column.sorter === 'boolean',
73
137
  accessor: column.dataIndex,
74
138
  Cell: function Cell(_ref2) {
@@ -78,7 +142,12 @@ function Table(_ref) {
78
142
  }
79
143
  });
80
144
  });
81
- }, [columns, sortable]);
145
+ }, [columns, sortable, initialColumnsWidthMap]); // 默认排序的对象
146
+
147
+ var defaultSortObject = {
148
+ id: newColumns[ARRAY_FIRST_INDEX].accessor,
149
+ desc: newColumns[ARRAY_FIRST_INDEX].sortOrder && newColumns[ARRAY_FIRST_INDEX].sortOrder === 'descend' ? true : false
150
+ }; // 如果支持排序 但是没有默认排序 则默认按第一列倒叙排序
82
151
 
83
152
  var getInitialSortDirection = function getInitialSortDirection() {
84
153
  if (defaultSort && defaultSort.id) {
@@ -86,10 +155,7 @@ function Table(_ref) {
86
155
  }
87
156
 
88
157
  if (sortable) {
89
- return {
90
- id: newColumns[ARRAY_FIRST_INDEX].accessor,
91
- desc: false
92
- };
158
+ return defaultSortObject;
93
159
  }
94
160
 
95
161
  return {
@@ -103,13 +169,30 @@ function Table(_ref) {
103
169
  sortDirection = _React$useState4[0],
104
170
  setSortDirection = _React$useState4[1];
105
171
 
172
+ var getInitSortBy = function getInitSortBy() {
173
+ if (!(sortDirection === null || sortDirection === void 0 ? void 0 : sortDirection.id)) {
174
+ return [];
175
+ }
176
+
177
+ var sortColumn = newColumns.find(function (column) {
178
+ return column.accessor === sortDirection.id;
179
+ });
180
+
181
+ if (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sorter) {
182
+ return [];
183
+ }
184
+
185
+ return [sortDirection];
186
+ };
187
+
106
188
  var _useTable = useTable({
107
189
  columns: newColumns,
108
190
  data: data,
109
191
  disableMultiSort: true,
110
192
  disableSortBy: !sortable,
193
+ getRowId: rowKey,
111
194
  initialState: {
112
- sortBy: sortDirection.id ? [sortDirection] : []
195
+ sortBy: getInitSortBy()
113
196
  }
114
197
  }, useBlockLayout, useSortBy, useRowSelect, useResizeColumns),
115
198
  getTableProps = _useTable.getTableProps,
@@ -117,21 +200,11 @@ function Table(_ref) {
117
200
  headerGroups = _useTable.headerGroups,
118
201
  rows = _useTable.rows,
119
202
  prepareRow = _useTable.prepareRow,
120
- setSortBy = _useTable.setSortBy;
203
+ setSortBy = _useTable.setSortBy,
204
+ totalColumnsWidth = _useTable.totalColumnsWidth;
121
205
 
122
206
  var theadRowWidthRef = React.useRef(DEFAULT_ROW_WIDTH);
123
207
  var prefixCls = usePrefixCls('block-table');
124
-
125
- function getTbodyStyle() {
126
- if (scrollY) {
127
- return {
128
- height: "".concat(scrollY, "px")
129
- };
130
- }
131
-
132
- return {};
133
- }
134
-
135
208
  var onRowClick = useCallback(function (row) {
136
209
  if (!onRowSelected) {
137
210
  return;
@@ -140,48 +213,6 @@ function Table(_ref) {
140
213
  setSelectedRowId(row.id);
141
214
  onRowSelected(row.original);
142
215
  }, [onRowSelected]);
143
- var itemCount = hasNextPage ? data.length + 1 : data.length;
144
- var loadMoreItems = loading ? function () {} : loadMore;
145
-
146
- var isItemLoaded = function isItemLoaded(index) {
147
- return !hasNextPage || index < data.length;
148
- };
149
-
150
- var RenderRow = function RenderRow(_ref3) {
151
- var index = _ref3.index,
152
- style = _ref3.style;
153
-
154
- if (!isItemLoaded(index)) {
155
- return /*#__PURE__*/React.createElement("div", {
156
- style: style,
157
- className: classnames("".concat(prefixCls, "-loading"))
158
- }, /*#__PURE__*/React.createElement(Icon, {
159
- type: "waiting",
160
- size: 16
161
- }), "Loading");
162
- }
163
-
164
- var row = rows[index];
165
- prepareRow(row);
166
-
167
- var _row$getRowProps = row.getRowProps(),
168
- rowStyle = _row$getRowProps.style,
169
- rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
170
-
171
- return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
172
- style: _objectSpread(_objectSpread(_objectSpread({}, style), rowStyle), {}, {
173
- width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
174
- }),
175
- className: classnames("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
176
- onClick: function onClick() {
177
- return onRowClick(row);
178
- }
179
- }), row.cells.map(function (cell) {
180
- return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
181
- className: classnames("".concat(prefixCls, "-cell"))
182
- }), cell.render('Cell'));
183
- }));
184
- };
185
216
 
186
217
  var renderHeader = function renderHeader(len) {
187
218
  return /*#__PURE__*/React.createElement("div", {
@@ -191,41 +222,64 @@ function Table(_ref) {
191
222
  }, "\u5171\u8BA1", total || len, "\u6761"), /*#__PURE__*/React.createElement("div", {
192
223
  className: classnames("".concat(prefixCls, "-header-right"))
193
224
  }, renderHeaderRight ? renderHeaderRight() : null));
194
- };
225
+ }; // 排序的方向 倒叙{ id: 'xx', desc: true }、正序{ id: 'xx', desc: false }、无序 { id: '', desc: undefined }
226
+ // 获取排序方向以及排序的id
227
+
195
228
 
196
- var getNextSortDesc = function getNextSortDesc(currentDesc) {
229
+ var getSortBy = function getSortBy(id) {
197
230
  var sortDirections = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['ascend', 'descend'];
198
- var sortOrder = arguments.length > 2 ? arguments[2] : undefined;
231
+ var // 如果传了sortDirections,则使用传入的,否则使用默认的
232
+ sortOrder = arguments.length > 2 ? arguments[2] : undefined;
233
+ var res = {
234
+ id: id,
235
+ desc: undefined
236
+ };
237
+ var isSameCol = sortDirection.id === id;
199
238
  var descMap = new Map([['ascend', false], ['descend', true]]);
200
- var directions = allSortDirections || sortDirections;
239
+ var directions = allSortDirections || sortDirections; // 如果不是同一列 则返回默认排序 或者排序顺序的第一个
240
+
241
+ if (!isSameCol) {
242
+ if (sortOrder === 'ascend' || sortOrder === 'descend') {
243
+ res.desc = descMap.get(sortOrder);
244
+ } else {
245
+ res.desc = sortOrder ? sortOrder : descMap.get(directions[ARRAY_FIRST_INDEX]);
246
+ }
247
+
248
+ return res;
249
+ } // 如果是同一列
250
+ // 如果列给了默认的sortOrder则不在变化
251
+
201
252
 
202
253
  if (sortOrder === 'ascend' || sortOrder === 'descend') {
203
- return descMap.get(sortOrder);
204
- }
254
+ res.desc = descMap.get(sortOrder);
255
+ return res;
256
+ } // 在所有方向上 往后取一个
205
257
 
206
- if (typeof currentDesc === 'undefined') {
207
- return descMap.get(directions[ARRAY_FIRST_INDEX]);
208
- }
209
258
 
210
- var direction = currentDesc ? 'descend' : 'ascend';
259
+ var lastSortDirection = sortDirection.desc ? 'descend' : 'ascend';
211
260
 
212
261
  var index = _.findIndex(directions, function (item) {
213
- return item === direction;
262
+ return item === lastSortDirection;
214
263
  });
215
264
 
216
265
  var nextIndex = index + 1;
217
- return descMap.get(directions[nextIndex]);
266
+ res.desc = descMap.get(directions[nextIndex]); // 如果没有排序方向,则返回默认排序对象
267
+
268
+ if (res.desc === undefined) {
269
+ res.id = '';
270
+ }
271
+
272
+ return res;
218
273
  };
219
274
 
220
275
  var getHeaderProps = function getHeaderProps(column) {
221
276
  // @ts-ignore
222
277
  var id = column.id,
223
- isSortedDesc = column.isSortedDesc,
224
278
  canSort = column.canSort,
225
279
  sorter = column.sorter,
226
280
  sortOrder = column.sortOrder,
227
281
  sortDirections = column.sortDirections;
228
- var toggleProps = column.getSortByToggleProps();
282
+ var toggleProps = column.getSortByToggleProps(); // 仅在Table设置sortable时,所有列的canSort为true,此时为前端排序
229
283
 
230
284
  if (canSort) {
231
285
  // client sort
@@ -234,19 +288,16 @@ function Table(_ref) {
234
288
  e.stopPropagation();
235
289
 
236
290
  if (typeof toggleProps.onClick === 'function') {
237
- // toggleProps.onClick(e);
238
- var desc = getNextSortDesc(isSortedDesc, sortDirections, sortOrder);
239
- var sortBy = {
240
- id: typeof desc === 'undefined' ? '' : id,
241
- desc: desc
242
- };
243
- setSortBy(typeof desc === 'undefined' ? [] : [sortBy]);
291
+ var sortBy = getSortBy(id, sortDirections, sortOrder);
292
+ setSortBy(sortBy.desc === undefined ? [defaultSortObject] : [sortBy]); // 客户端排序时 需要重新设置排序
293
+
244
294
  setSortDirection(sortBy);
245
295
  onChange(sortBy);
246
296
  }
247
297
  }
248
298
  });
249
- }
299
+ } // 当列设置sorter属性时,则为服务端排序
300
+
250
301
 
251
302
  if (sorter) {
252
303
  // server sort
@@ -256,14 +307,8 @@ function Table(_ref) {
256
307
  }
257
308
  })), {}, {
258
309
  onClick: function onClick(e) {
259
- e.stopPropagation(); // 需要触发onChange
260
- // debugger;
261
-
262
- var desc = getNextSortDesc(sortDirection.desc, sortDirections, sortOrder);
263
- var sortBy = {
264
- id: typeof desc === 'boolean' ? id : '',
265
- desc: desc
266
- };
310
+ e.stopPropagation();
311
+ var sortBy = getSortBy(id, sortDirections, sortOrder);
267
312
  setSortDirection(sortBy);
268
313
  onChange(sortBy);
269
314
  }
@@ -273,8 +318,8 @@ function Table(_ref) {
273
318
  return column.getHeaderProps();
274
319
  };
275
320
 
276
- var SortIcons = function SortIcons(_ref4) {
277
- var id = _ref4.id;
321
+ var SortIcons = function SortIcons(_ref3) {
322
+ var id = _ref3.id;
278
323
  var currentSortId = sortDirection.id,
279
324
  desc = sortDirection.desc;
280
325
 
@@ -293,10 +338,89 @@ function Table(_ref) {
293
338
  });
294
339
  };
295
340
 
296
- return /*#__PURE__*/React.createElement("div", {
297
- className: prefixCls
298
- }, showHeader && renderHeader(data.length), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableProps()), {}, {
299
- className: classnames(_defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
341
+ var scrollToTop = function scrollToTop() {
342
+ var INITIAL_OFFSET_TOP = 0;
343
+
344
+ if (tableBodyListRef && tableBodyListRef.current) {
345
+ tableBodyListRef.current.scrollTop = INITIAL_OFFSET_TOP;
346
+ }
347
+ };
348
+
349
+ React.useImperativeHandle(ref, function () {
350
+ return {
351
+ backToTop: function backToTop() {
352
+ scrollToTop();
353
+ }
354
+ };
355
+ });
356
+ var LoadingNode = /*#__PURE__*/React.createElement("div", {
357
+ className: classnames("".concat(prefixCls, "-loading"))
358
+ }, /*#__PURE__*/React.createElement(Icon, {
359
+ type: "waiting",
360
+ size: 16
361
+ }), "Loading");
362
+
363
+ var renderTableBody = function renderTableBody() {
364
+ if (loading && !rows.length) {
365
+ return LoadingNode;
366
+ }
367
+
368
+ if (!loading && !rows.length) {
369
+ return renderEmpty ? renderEmpty() : /*#__PURE__*/React.createElement(Empty, {
370
+ description: "\u5F53\u524D\u65E0\u6570\u636E"
371
+ });
372
+ }
373
+
374
+ var renderRowList = function renderRowList() {
375
+ return data.map(function (item, index) {
376
+ var _classnames;
377
+
378
+ var row = rows[index];
379
+ prepareRow(row);
380
+
381
+ var _row$getRowProps = row.getRowProps(),
382
+ rowStyle = _row$getRowProps.style,
383
+ rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
384
+
385
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, rowProps, {
386
+ style: _objectSpread({}, rowStyle),
387
+ className: classnames("".concat(prefixCls, "-row"), (_classnames = {}, _defineProperty(_classnames, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId), _defineProperty(_classnames, rowClassName, rowClassName), _defineProperty(_classnames, "".concat(prefixCls, "-row-ellipsis"), ellipsis), _classnames)),
388
+ onClick: function onClick() {
389
+ return onRowClick(row);
390
+ },
391
+ key: row.id
392
+ }), row.cells.map(function (cell) {
393
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, cell.getCellProps(), {
394
+ className: classnames("".concat(prefixCls, "-cell"))
395
+ }), cell.render('Cell'));
396
+ }));
397
+ });
398
+ };
399
+
400
+ return /*#__PURE__*/React.createElement("div", {
401
+ className: classnames("".concat(prefixCls, "-list"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
402
+ id: RANDOM_ID,
403
+ ref: tableBodyListRef
404
+ }, innerScroll ? /*#__PURE__*/React.createElement(InfiniteScroll, {
405
+ dataLength: rows.length,
406
+ next: loadMore,
407
+ hasMore: !!hasNextPage,
408
+ loader: LoadingNode,
409
+ scrollableTarget: RANDOM_ID,
410
+ scrollThreshold: scrollThreshold
411
+ }, renderRowList()) : renderRowList());
412
+ };
413
+
414
+ return /*#__PURE__*/React.createElement(ResizeObserver, {
415
+ onResize: function onResize(_ref4) {
416
+ var domWidth = _ref4.width;
417
+ setWidth(domWidth);
418
+ }
419
+ }, /*#__PURE__*/React.createElement("div", {
420
+ className: prefixCls,
421
+ ref: tableRef
422
+ }, showHeader && renderHeader(data.length), /*#__PURE__*/React.createElement("div", Object.assign({}, getTableProps(), {
423
+ className: classnames("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
300
424
  }), /*#__PURE__*/React.createElement("div", {
301
425
  className: "".concat(prefixCls, "-thead")
302
426
  }, headerGroups.map(function (headerGroup) {
@@ -305,46 +429,35 @@ function Table(_ref) {
305
429
  headerGroupProps = _objectWithoutProperties(_headerGroup$getHeade, _excluded2);
306
430
 
307
431
  theadRowWidthRef.current = (style === null || style === void 0 ? void 0 : style.width) || DEFAULT_ROW_WIDTH;
308
- return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, headerGroupProps), {}, {
432
+ return /*#__PURE__*/React.createElement("div", Object.assign({}, headerGroupProps, {
309
433
  style: _objectSpread(_objectSpread({}, style), {}, {
310
434
  width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
311
435
  }),
312
436
  className: "".concat(prefixCls, "-row")
313
437
  }), headerGroup.headers.map(function (column) {
314
438
  var barPorps = resizeColumn ? column.getResizerProps() : {};
315
- return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({
316
- // {...column.getHeaderProps(column.getSortByToggleProps())}
317
- className: classnames(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell"))
318
- }, getHeaderProps(column)), {}, {
439
+ return /*#__PURE__*/React.createElement("div", {
440
+ className: classnames(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
441
+ style: getHeaderProps(column).style,
319
442
  key: column.id
320
- }), column.render('Header'), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
321
- className: classnames(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
322
- })), /*#__PURE__*/React.createElement(SortIcons, {
443
+ }, /*#__PURE__*/React.createElement("div", Object.assign({
444
+ className: "".concat(prefixCls, "-cell-content")
445
+ }, getHeaderProps(column), {
446
+ style: {
447
+ width: '100%'
448
+ }
449
+ }), column.render('Header'), /*#__PURE__*/React.createElement(SortIcons, {
323
450
  id: column.id
324
- }));
451
+ })), /*#__PURE__*/React.createElement("div", Object.assign({}, barPorps, {
452
+ className: classnames(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
453
+ })));
325
454
  }));
326
- })), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableBodyProps()), {}, {
327
- className: classnames("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-tbody-scroll"), !loadMoreItems)),
328
- style: getTbodyStyle()
329
- }), !loading && !rows.length && /*#__PURE__*/React.createElement(Empty, {
330
- description: "\u5F53\u524D\u65E0\u6570\u636E"
331
- }), /*#__PURE__*/React.createElement(InfiniteLoader, {
332
- isItemLoaded: isItemLoaded,
333
- itemCount: itemCount,
334
- loadMoreItems: loadMoreItems
335
- }, function (_ref5) {
336
- var onItemsRendered = _ref5.onItemsRendered,
337
- ref = _ref5.ref;
338
- return /*#__PURE__*/React.createElement(FixedSizeList, {
339
- itemCount: itemCount,
340
- onItemsRendered: onItemsRendered,
341
- height: scrollY || data.length * DEFAULT_ROW_HEIGHT,
342
- itemSize: DEFAULT_ROW_HEIGHT,
343
- width: resizeColumn ? theadRowWidthRef.current : '100%',
344
- ref: ref,
345
- className: "".concat(prefixCls, "-list")
346
- }, RenderRow);
347
- }))));
455
+ })), /*#__PURE__*/React.createElement("div", Object.assign({}, getTableBodyProps(), {
456
+ className: classnames("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
457
+ style: {
458
+ width: totalColumnsWidth
459
+ }
460
+ }), renderTableBody()))));
348
461
  }
349
462
 
350
- export default Table;
463
+ export default /*#__PURE__*/React.forwardRef(Table);
@@ -6,9 +6,9 @@ export interface ISort<T> {
6
6
  desc?: boolean;
7
7
  }
8
8
  export interface IColumn<T extends object> {
9
- title: string;
9
+ title: string | null;
10
10
  dataIndex: string;
11
- render?: (value: any, row: Record<string, T>, index: number) => React.ReactNode;
11
+ render?: (value: any, row: any, index: number) => React.ReactNode;
12
12
  width?: number;
13
13
  minWidth?: number;
14
14
  sorter?: boolean | 'string' | 'number' | 'basic' | 'datetime' | 'alphanumeric' | ((rowA: Row<T>, rowB: Row<T>, columnId: IdType<T>, desc?: boolean) => number);
@@ -20,9 +20,8 @@ export interface ITableProps<T extends object> {
20
20
  columns: IColumn<T>[];
21
21
  data: T[];
22
22
  total?: number;
23
- scrollY?: number;
24
23
  onRowSelected?: (row: T) => void;
25
- loadMore?: (startIndex: number, stopIndex: number) => void | Promise<void>;
24
+ loadMore?: () => void | Promise<void>;
26
25
  hasNextPage?: boolean;
27
26
  loading?: boolean;
28
27
  renderHeaderLeft?: () => React.ReactNode;
@@ -33,4 +32,11 @@ export interface ITableProps<T extends object> {
33
32
  sortDirections?: Array<'ascend' | 'descend'>;
34
33
  resizeColumn?: boolean;
35
34
  showHeader?: boolean;
35
+ innerScroll?: boolean;
36
+ ref?: React.RefObject<unknown>;
37
+ scrollThreshold?: string | number;
38
+ rowKey?: (row: any) => string;
39
+ rowClassName?: string;
40
+ ellipsis?: boolean;
41
+ renderEmpty?: () => React.ReactNode;
36
42
  }