@aloudata/aloudata-design 0.2.0-beta.9 → 0.2.1

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 (306) 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/style/index.less +90 -50
  8. package/es/Checkbox/index.d.ts +11 -0
  9. package/es/Checkbox/index.js +38 -0
  10. package/es/Checkbox/style/index.d.ts +2 -0
  11. package/es/Checkbox/style/index.js +2 -0
  12. package/es/Checkbox/style/index.less +79 -0
  13. package/es/Col/index.d.ts +4 -0
  14. package/es/Col/index.js +3 -0
  15. package/es/Col/style/index.d.ts +2 -0
  16. package/es/Col/style/index.js +2 -0
  17. package/es/Col/style/index.less +1 -0
  18. package/es/ConfigProvider/index.d.ts +3 -0
  19. package/es/ConfigProvider/index.js +3 -0
  20. package/es/ConfigProvider/style/index.d.ts +2 -0
  21. package/es/ConfigProvider/style/index.js +2 -0
  22. package/es/ConfigProvider/style/index.less +1 -0
  23. package/es/DatePicker/index.d.ts +4 -0
  24. package/es/DatePicker/index.js +3 -0
  25. package/es/DatePicker/style/index.d.ts +2 -0
  26. package/es/DatePicker/style/index.js +2 -0
  27. package/es/DatePicker/style/index.less +1 -0
  28. package/es/Divider/index.d.ts +3 -0
  29. package/es/Divider/index.js +3 -0
  30. package/es/Divider/style/index.d.ts +2 -0
  31. package/es/Divider/style/index.js +2 -0
  32. package/es/Divider/style/index.less +1 -0
  33. package/es/Dropdown/Button.d.ts +1 -0
  34. package/es/Dropdown/Button.js +2 -1
  35. package/es/Dropdown/index.d.ts +22 -0
  36. package/es/Dropdown/style/index.d.ts +1 -0
  37. package/es/Dropdown/style/index.js +1 -0
  38. package/es/Empty/style/index.less +6 -6
  39. package/es/Form/index.d.ts +8 -0
  40. package/es/Form/index.js +3 -0
  41. package/es/Form/style/index.d.ts +2 -0
  42. package/es/Form/style/index.js +2 -0
  43. package/es/Form/style/index.less +1 -0
  44. package/es/Icon/index.d.ts +3 -0
  45. package/es/Icon/index.js +2 -1
  46. package/es/Input/components/Group/index.d.ts +1 -2
  47. package/es/Input/components/Input/index.d.ts +67 -0
  48. package/es/Input/components/Input/index.js +38 -0
  49. package/es/Input/components/Password/index.d.ts +5 -5
  50. package/es/Input/components/Password/index.js +5 -4
  51. package/es/Input/components/TextArea/index.d.ts +10 -4
  52. package/es/Input/components/TextArea/index.js +16 -6
  53. package/es/Input/index.d.ts +14 -62
  54. package/es/Input/index.js +4 -40
  55. package/es/Input/style/index.d.ts +1 -0
  56. package/es/Input/style/index.js +1 -0
  57. package/es/Input/style/index.less +40 -10
  58. package/es/Layout/index.d.ts +4 -0
  59. package/es/Layout/index.js +3 -0
  60. package/es/Layout/style/index.d.ts +2 -0
  61. package/es/Layout/style/index.js +2 -0
  62. package/es/Layout/style/index.less +1 -0
  63. package/es/Menu/MenuItem.d.ts +7 -1
  64. package/es/Menu/style/index.d.ts +1 -0
  65. package/es/Menu/style/index.js +1 -0
  66. package/es/Menu/style/index.less +9 -5
  67. package/es/Message/index.d.ts +4 -0
  68. package/es/Message/index.js +3 -0
  69. package/es/Message/style/index.d.ts +2 -0
  70. package/es/Message/style/index.js +2 -0
  71. package/es/Message/style/index.less +1 -0
  72. package/es/Navigator/components/Menu/index.js +2 -2
  73. package/es/Notification/index.d.ts +3 -0
  74. package/es/Notification/index.js +3 -0
  75. package/es/Notification/style/index.d.ts +2 -0
  76. package/es/Notification/style/index.js +2 -0
  77. package/es/Notification/style/index.less +1 -0
  78. package/es/Radio/index.d.ts +4 -0
  79. package/es/Radio/index.js +3 -0
  80. package/es/Radio/style/index.d.ts +2 -0
  81. package/es/Radio/style/index.js +2 -0
  82. package/es/Radio/style/index.less +1 -0
  83. package/es/Row/index.d.ts +3 -0
  84. package/es/Row/index.js +1 -0
  85. package/es/Row/style/index.d.ts +2 -0
  86. package/es/Row/style/index.js +2 -0
  87. package/es/Row/style/index.less +1 -0
  88. package/es/Select/BaseSelect.js +18 -5
  89. package/es/Select/OptionsList/OptionItem/RenderLabelIcon.d.ts +2 -1
  90. package/es/Select/OptionsList/OptionItem/RenderLabelIcon.js +1 -0
  91. package/es/Select/OptionsList/index.js +13 -20
  92. package/es/Select/Selector/index.js +13 -9
  93. package/es/Select/interface.d.ts +10 -2
  94. package/es/Select/style/index.less +63 -30
  95. package/es/Skeleton/index.d.ts +3 -0
  96. package/es/Skeleton/index.js +2 -0
  97. package/es/Skeleton/style/index.d.ts +2 -0
  98. package/es/Skeleton/style/index.js +2 -0
  99. package/es/Skeleton/style/index.less +1 -0
  100. package/es/Space/index.d.ts +4 -0
  101. package/es/Space/index.js +3 -0
  102. package/es/Space/style/index.d.ts +2 -0
  103. package/es/Space/style/index.js +2 -0
  104. package/es/Space/style/index.less +1 -0
  105. package/es/Spin/index.d.ts +4 -0
  106. package/es/Spin/index.js +2 -0
  107. package/es/Spin/style/index.d.ts +2 -0
  108. package/es/Spin/style/index.js +2 -0
  109. package/es/Spin/style/index.less +1 -0
  110. package/es/Steps/index.d.ts +3 -0
  111. package/es/Steps/index.js +2 -0
  112. package/es/Steps/style/index.d.ts +2 -0
  113. package/es/Steps/style/index.js +2 -0
  114. package/es/Steps/style/index.less +1 -0
  115. package/es/Switch/index.d.ts +4 -0
  116. package/es/Switch/index.js +2 -0
  117. package/es/Switch/style/index.d.ts +2 -0
  118. package/es/Switch/style/index.js +2 -0
  119. package/es/Switch/style/index.less +1 -0
  120. package/es/Table/index.d.ts +3 -3
  121. package/es/Table/index.js +253 -139
  122. package/es/Table/interface.d.ts +10 -4
  123. package/es/Table/react-table-config.d.ts +45 -45
  124. package/es/Table/style/index.less +88 -40
  125. package/es/Tabs/index.d.ts +5 -0
  126. package/es/Tabs/index.js +7 -4
  127. package/es/Tabs/style/index.d.ts +1 -0
  128. package/es/Tabs/style/index.js +1 -0
  129. package/es/Tabs/style/index.less +9 -2
  130. package/es/Tooltip/style/index.less +1 -1
  131. package/es/Tree/index.d.ts +5 -0
  132. package/es/Tree/index.js +2 -0
  133. package/es/Tree/style/index.d.ts +2 -0
  134. package/es/Tree/style/index.js +2 -0
  135. package/es/Tree/style/index.less +1 -0
  136. package/es/Typography/index.d.ts +3 -0
  137. package/es/Typography/index.js +3 -0
  138. package/es/Typography/style/index.d.ts +2 -0
  139. package/es/Typography/style/index.js +2 -0
  140. package/es/Typography/style/index.less +1 -0
  141. package/es/Upload/index.d.ts +4 -0
  142. package/es/Upload/index.js +3 -0
  143. package/es/Upload/style/index.d.ts +2 -0
  144. package/es/Upload/style/index.js +2 -0
  145. package/es/Upload/style/index.less +1 -0
  146. package/es/_utils/hooks/useControlledState.d.ts +1 -1
  147. package/es/_utils/hooks/useControlledState.js +11 -11
  148. package/es/index.d.ts +39 -1
  149. package/es/index.js +21 -1
  150. package/es/locale/zh_CN.d.ts +2 -0
  151. package/es/locale/zh_CN.js +2 -0
  152. package/es/style/index.d.ts +1 -1
  153. package/es/style/index.js +1 -1
  154. package/lib/Alert/index.d.ts +4 -0
  155. package/lib/Alert/index.js +15 -0
  156. package/lib/Alert/style/index.d.ts +2 -0
  157. package/lib/Alert/style/index.js +5 -0
  158. package/lib/Alert/style/index.less +1 -0
  159. package/lib/Button/style/index.less +90 -50
  160. package/lib/Checkbox/index.d.ts +11 -0
  161. package/lib/Checkbox/index.js +52 -0
  162. package/lib/Checkbox/style/index.d.ts +2 -0
  163. package/lib/Checkbox/style/index.js +5 -0
  164. package/lib/Checkbox/style/index.less +79 -0
  165. package/lib/Col/index.d.ts +4 -0
  166. package/lib/Col/index.js +15 -0
  167. package/lib/Col/style/index.d.ts +2 -0
  168. package/lib/Col/style/index.js +5 -0
  169. package/lib/Col/style/index.less +1 -0
  170. package/lib/ConfigProvider/index.d.ts +3 -0
  171. package/lib/ConfigProvider/index.js +15 -0
  172. package/lib/ConfigProvider/style/index.d.ts +2 -0
  173. package/lib/ConfigProvider/style/index.js +5 -0
  174. package/lib/ConfigProvider/style/index.less +1 -0
  175. package/lib/DatePicker/index.d.ts +4 -0
  176. package/lib/DatePicker/index.js +15 -0
  177. package/lib/DatePicker/style/index.d.ts +2 -0
  178. package/lib/DatePicker/style/index.js +5 -0
  179. package/lib/DatePicker/style/index.less +1 -0
  180. package/lib/Divider/index.d.ts +3 -0
  181. package/lib/Divider/index.js +15 -0
  182. package/lib/Divider/style/index.d.ts +2 -0
  183. package/lib/Divider/style/index.js +5 -0
  184. package/lib/Divider/style/index.less +1 -0
  185. package/lib/Dropdown/Button.d.ts +1 -0
  186. package/lib/Dropdown/Button.js +2 -0
  187. package/lib/Dropdown/index.d.ts +22 -0
  188. package/lib/Dropdown/style/index.d.ts +1 -0
  189. package/lib/Dropdown/style/index.js +2 -0
  190. package/lib/Empty/style/index.less +6 -6
  191. package/lib/Form/index.d.ts +8 -0
  192. package/lib/Form/index.js +15 -0
  193. package/lib/Form/style/index.d.ts +2 -0
  194. package/lib/Form/style/index.js +5 -0
  195. package/lib/Form/style/index.less +1 -0
  196. package/lib/Icon/index.d.ts +3 -0
  197. package/lib/Icon/index.js +6 -0
  198. package/lib/Input/components/Group/index.d.ts +1 -2
  199. package/lib/Input/components/Input/index.d.ts +67 -0
  200. package/lib/Input/components/Input/index.js +51 -0
  201. package/lib/Input/components/Password/index.d.ts +5 -5
  202. package/lib/Input/components/Password/index.js +10 -8
  203. package/lib/Input/components/TextArea/index.d.ts +10 -4
  204. package/lib/Input/components/TextArea/index.js +18 -7
  205. package/lib/Input/index.d.ts +14 -62
  206. package/lib/Input/index.js +4 -42
  207. package/lib/Input/style/index.d.ts +1 -0
  208. package/lib/Input/style/index.js +2 -0
  209. package/lib/Input/style/index.less +40 -10
  210. package/lib/Layout/index.d.ts +4 -0
  211. package/lib/Layout/index.js +15 -0
  212. package/lib/Layout/style/index.d.ts +2 -0
  213. package/lib/Layout/style/index.js +5 -0
  214. package/lib/Layout/style/index.less +1 -0
  215. package/lib/Menu/MenuItem.d.ts +7 -1
  216. package/lib/Menu/style/index.d.ts +1 -0
  217. package/lib/Menu/style/index.js +2 -0
  218. package/lib/Menu/style/index.less +9 -5
  219. package/lib/Message/index.d.ts +4 -0
  220. package/lib/Message/index.js +15 -0
  221. package/lib/Message/style/index.d.ts +2 -0
  222. package/lib/Message/style/index.js +5 -0
  223. package/lib/Message/style/index.less +1 -0
  224. package/lib/Navigator/components/Menu/index.js +2 -2
  225. package/lib/Notification/index.d.ts +3 -0
  226. package/lib/Notification/index.js +15 -0
  227. package/lib/Notification/style/index.d.ts +2 -0
  228. package/lib/Notification/style/index.js +5 -0
  229. package/lib/Notification/style/index.less +1 -0
  230. package/lib/Radio/index.d.ts +4 -0
  231. package/lib/Radio/index.js +15 -0
  232. package/lib/Radio/style/index.d.ts +2 -0
  233. package/lib/Radio/style/index.js +5 -0
  234. package/lib/Radio/style/index.less +1 -0
  235. package/lib/Row/index.d.ts +3 -0
  236. package/lib/Row/index.js +8 -0
  237. package/lib/Row/style/index.d.ts +2 -0
  238. package/lib/Row/style/index.js +5 -0
  239. package/lib/Row/style/index.less +1 -0
  240. package/lib/Select/BaseSelect.js +18 -5
  241. package/lib/Select/OptionsList/OptionItem/RenderLabelIcon.d.ts +2 -1
  242. package/lib/Select/OptionsList/OptionItem/RenderLabelIcon.js +2 -0
  243. package/lib/Select/OptionsList/index.js +12 -20
  244. package/lib/Select/Selector/index.js +13 -9
  245. package/lib/Select/interface.d.ts +10 -2
  246. package/lib/Select/style/index.less +63 -30
  247. package/lib/Skeleton/index.d.ts +3 -0
  248. package/lib/Skeleton/index.js +13 -0
  249. package/lib/Skeleton/style/index.d.ts +2 -0
  250. package/lib/Skeleton/style/index.js +5 -0
  251. package/lib/Skeleton/style/index.less +1 -0
  252. package/lib/Space/index.d.ts +4 -0
  253. package/lib/Space/index.js +23 -0
  254. package/lib/Space/style/index.d.ts +2 -0
  255. package/lib/Space/style/index.js +5 -0
  256. package/lib/Space/style/index.less +1 -0
  257. package/lib/Spin/index.d.ts +4 -0
  258. package/lib/Spin/index.js +13 -0
  259. package/lib/Spin/style/index.d.ts +2 -0
  260. package/lib/Spin/style/index.js +5 -0
  261. package/lib/Spin/style/index.less +1 -0
  262. package/lib/Steps/index.d.ts +3 -0
  263. package/lib/Steps/index.js +13 -0
  264. package/lib/Steps/style/index.d.ts +2 -0
  265. package/lib/Steps/style/index.js +5 -0
  266. package/lib/Steps/style/index.less +1 -0
  267. package/lib/Switch/index.d.ts +4 -0
  268. package/lib/Switch/index.js +13 -0
  269. package/lib/Switch/style/index.d.ts +2 -0
  270. package/lib/Switch/style/index.js +5 -0
  271. package/lib/Switch/style/index.less +1 -0
  272. package/lib/Table/index.d.ts +3 -3
  273. package/lib/Table/index.js +262 -147
  274. package/lib/Table/interface.d.ts +10 -4
  275. package/lib/Table/react-table-config.d.ts +45 -45
  276. package/lib/Table/style/index.less +88 -40
  277. package/lib/Tabs/index.d.ts +5 -0
  278. package/lib/Tabs/index.js +6 -3
  279. package/lib/Tabs/style/index.d.ts +1 -0
  280. package/lib/Tabs/style/index.js +2 -0
  281. package/lib/Tabs/style/index.less +9 -2
  282. package/lib/Tooltip/style/index.less +1 -1
  283. package/lib/Tree/index.d.ts +5 -0
  284. package/lib/Tree/index.js +13 -0
  285. package/lib/Tree/style/index.d.ts +2 -0
  286. package/lib/Tree/style/index.js +5 -0
  287. package/lib/Tree/style/index.less +1 -0
  288. package/lib/Typography/index.d.ts +3 -0
  289. package/lib/Typography/index.js +15 -0
  290. package/lib/Typography/style/index.d.ts +2 -0
  291. package/lib/Typography/style/index.js +5 -0
  292. package/lib/Typography/style/index.less +1 -0
  293. package/lib/Upload/index.d.ts +4 -0
  294. package/lib/Upload/index.js +15 -0
  295. package/lib/Upload/style/index.d.ts +2 -0
  296. package/lib/Upload/style/index.js +5 -0
  297. package/lib/Upload/style/index.less +1 -0
  298. package/lib/_utils/hooks/useControlledState.d.ts +1 -1
  299. package/lib/_utils/hooks/useControlledState.js +11 -11
  300. package/lib/index.d.ts +39 -1
  301. package/lib/index.js +160 -0
  302. package/lib/locale/zh_CN.d.ts +2 -0
  303. package/lib/locale/zh_CN.js +13 -0
  304. package/lib/style/index.d.ts +1 -1
  305. package/lib/style/index.js +1 -1
  306. 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,65 @@ 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
+ };
238
+ var isSameCol = sortDirection.id === id;
199
239
  var descMap = new Map([['ascend', false], ['descend', true]]);
200
- var directions = allSortDirections || sortDirections;
240
+ var directions = allSortDirections || sortDirections; // 如果不是同一列 则返回默认排序 或者排序顺序的第一个
241
+
242
+ if (!isSameCol) {
243
+ if (sortOrder === 'ascend' || sortOrder === 'descend') {
244
+ res.desc = descMap.get(sortOrder);
245
+ } else {
246
+ res.desc = sortOrder ? sortOrder : descMap.get(directions[ARRAY_FIRST_INDEX]);
247
+ }
248
+
249
+ return res;
250
+ } // 如果是同一列
251
+ // 如果列给了默认的sortOrder则不在变化
252
+
201
253
 
202
254
  if (sortOrder === 'ascend' || sortOrder === 'descend') {
203
- return descMap.get(sortOrder);
204
- }
255
+ res.desc = descMap.get(sortOrder);
256
+ return res;
257
+ } // 在所有方向上 往后取一个
205
258
 
206
- if (typeof currentDesc === 'undefined') {
207
- return descMap.get(directions[ARRAY_FIRST_INDEX]);
208
- }
209
259
 
210
- var direction = currentDesc ? 'descend' : 'ascend';
260
+ var lastSortDirection = sortDirection.desc ? 'descend' : 'ascend';
211
261
 
212
262
  var index = _.findIndex(directions, function (item) {
213
- return item === direction;
263
+ return item === lastSortDirection;
214
264
  });
215
265
 
216
266
  var nextIndex = index + 1;
217
- return descMap.get(directions[nextIndex]);
267
+ res.desc = descMap.get(directions[nextIndex]); // 如果没有排序方向,则返回默认排序对象
268
+
269
+ if (res.desc === undefined) {
270
+ res.id = '';
271
+ }
272
+
273
+ return res;
218
274
  };
219
275
 
220
276
  var getHeaderProps = function getHeaderProps(column) {
221
277
  // @ts-ignore
222
278
  var id = column.id,
223
- isSortedDesc = column.isSortedDesc,
224
279
  canSort = column.canSort,
225
280
  sorter = column.sorter,
226
281
  sortOrder = column.sortOrder,
227
282
  sortDirections = column.sortDirections;
228
- var toggleProps = column.getSortByToggleProps();
283
+ var toggleProps = column.getSortByToggleProps(); // 仅在Table设置sortable时,所有列的canSort为true,此时为前端排序
229
284
 
230
285
  if (canSort) {
231
286
  // client sort
@@ -234,19 +289,16 @@ function Table(_ref) {
234
289
  e.stopPropagation();
235
290
 
236
291
  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]);
292
+ var sortBy = getSortBy(id, sortDirections, sortOrder);
293
+ setSortBy(sortBy.desc === undefined ? [defaultSortObject] : [sortBy]); // 客户端排序时 需要重新设置排序
294
+
244
295
  setSortDirection(sortBy);
245
296
  onChange(sortBy);
246
297
  }
247
298
  }
248
299
  });
249
- }
300
+ } // 当列设置sorter属性时,则为服务端排序
301
+
250
302
 
251
303
  if (sorter) {
252
304
  // server sort
@@ -256,14 +308,8 @@ function Table(_ref) {
256
308
  }
257
309
  })), {}, {
258
310
  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
- };
311
+ e.stopPropagation();
312
+ var sortBy = getSortBy(id, sortDirections, sortOrder);
267
313
  setSortDirection(sortBy);
268
314
  onChange(sortBy);
269
315
  }
@@ -273,8 +319,8 @@ function Table(_ref) {
273
319
  return column.getHeaderProps();
274
320
  };
275
321
 
276
- var SortIcons = function SortIcons(_ref4) {
277
- var id = _ref4.id;
322
+ var SortIcons = function SortIcons(_ref3) {
323
+ var id = _ref3.id;
278
324
  var currentSortId = sortDirection.id,
279
325
  desc = sortDirection.desc;
280
326
 
@@ -293,10 +339,89 @@ function Table(_ref) {
293
339
  });
294
340
  };
295
341
 
296
- return /*#__PURE__*/React.createElement("div", {
297
- className: prefixCls
342
+ var scrollToTop = function scrollToTop() {
343
+ var INITIAL_OFFSET_TOP = 0;
344
+
345
+ if (tableBodyListRef && tableBodyListRef.current) {
346
+ tableBodyListRef.current.scrollTop = INITIAL_OFFSET_TOP;
347
+ }
348
+ };
349
+
350
+ React.useImperativeHandle(ref, function () {
351
+ return {
352
+ backToTop: function backToTop() {
353
+ scrollToTop();
354
+ }
355
+ };
356
+ });
357
+ var LoadingNode = /*#__PURE__*/React.createElement("div", {
358
+ className: classnames("".concat(prefixCls, "-loading"))
359
+ }, /*#__PURE__*/React.createElement(Icon, {
360
+ type: "waiting",
361
+ size: 16
362
+ }), "Loading");
363
+
364
+ var renderTableBody = function renderTableBody() {
365
+ if (loading && !rows.length) {
366
+ return LoadingNode;
367
+ }
368
+
369
+ if (!loading && !rows.length) {
370
+ return renderEmpty ? renderEmpty() : /*#__PURE__*/React.createElement(Empty, {
371
+ description: "\u5F53\u524D\u65E0\u6570\u636E"
372
+ });
373
+ }
374
+
375
+ var renderRowList = function renderRowList() {
376
+ return data.map(function (item, index) {
377
+ var _classnames;
378
+
379
+ var row = rows[index];
380
+ prepareRow(row);
381
+
382
+ var _row$getRowProps = row.getRowProps(),
383
+ rowStyle = _row$getRowProps.style,
384
+ rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
385
+
386
+ return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
387
+ style: _objectSpread({}, rowStyle),
388
+ 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)),
389
+ onClick: function onClick() {
390
+ return onRowClick(row);
391
+ },
392
+ key: row.id
393
+ }), row.cells.map(function (cell) {
394
+ return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
395
+ className: classnames("".concat(prefixCls, "-cell"))
396
+ }), cell.render('Cell'));
397
+ }));
398
+ });
399
+ };
400
+
401
+ return /*#__PURE__*/React.createElement("div", {
402
+ className: classnames("".concat(prefixCls, "-list"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
403
+ id: RANDOM_ID,
404
+ ref: tableBodyListRef
405
+ }, innerScroll ? /*#__PURE__*/React.createElement(InfiniteScroll, {
406
+ dataLength: rows.length,
407
+ next: loadMore,
408
+ hasMore: !!hasNextPage,
409
+ loader: LoadingNode,
410
+ scrollableTarget: RANDOM_ID,
411
+ scrollThreshold: scrollThreshold
412
+ }, renderRowList()) : renderRowList());
413
+ };
414
+
415
+ return /*#__PURE__*/React.createElement(ResizeObserver, {
416
+ onResize: function onResize(_ref4) {
417
+ var domWidth = _ref4.width;
418
+ setWidth(domWidth);
419
+ }
420
+ }, /*#__PURE__*/React.createElement("div", {
421
+ className: prefixCls,
422
+ ref: tableRef
298
423
  }, showHeader && renderHeader(data.length), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableProps()), {}, {
299
- className: classnames(_defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
424
+ className: classnames("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
300
425
  }), /*#__PURE__*/React.createElement("div", {
301
426
  className: "".concat(prefixCls, "-thead")
302
427
  }, headerGroups.map(function (headerGroup) {
@@ -312,39 +437,28 @@ function Table(_ref) {
312
437
  className: "".concat(prefixCls, "-row")
313
438
  }), headerGroup.headers.map(function (column) {
314
439
  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)), {}, {
440
+ return /*#__PURE__*/React.createElement("div", {
441
+ className: classnames(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
442
+ style: getHeaderProps(column).style,
319
443
  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, {
444
+ }, /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({
445
+ className: "".concat(prefixCls, "-cell-content")
446
+ }, getHeaderProps(column)), {}, {
447
+ style: {
448
+ width: '100%'
449
+ }
450
+ }), column.render('Header'), /*#__PURE__*/React.createElement(SortIcons, {
323
451
  id: column.id
324
- }));
452
+ })), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
453
+ className: classnames(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
454
+ })));
325
455
  }));
326
456
  })), /*#__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
- }))));
457
+ className: classnames("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
458
+ style: {
459
+ width: totalColumnsWidth
460
+ }
461
+ }), renderTableBody()))));
348
462
  }
349
463
 
350
- export default Table;
464
+ 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
  }