@autobest-ui/components 1.1.1 → 1.1.8

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 (146) hide show
  1. package/README.md +10 -10
  2. package/esm/accordion/__stories__/style.scss +58 -58
  3. package/esm/affix/__stories__/style.scss +13 -13
  4. package/esm/affix/style/index.scss +34 -34
  5. package/esm/base.scss +42 -42
  6. package/esm/carousel/__stories__/style.scss +41 -41
  7. package/esm/carousel/style/index.scss +37 -37
  8. package/esm/checkbox/style/index.scss +117 -117
  9. package/esm/collapse/__stories__/style.scss +18 -18
  10. package/esm/collapse/style/index.scss +42 -42
  11. package/esm/confirm/style/index.scss +44 -44
  12. package/esm/date-picker/calendar/grid/index.scss +85 -85
  13. package/esm/date-picker/calendar/index.scss +57 -57
  14. package/esm/date-picker/index.d.ts +1 -0
  15. package/esm/date-picker/index.js +17 -7
  16. package/esm/date-picker/style/index.css +1 -1
  17. package/esm/date-picker/style/index.scss +23 -19
  18. package/esm/drawer/style/index.scss +44 -44
  19. package/esm/ellipsis/style/index.scss +35 -35
  20. package/esm/guide/__stories__/style.scss +13 -13
  21. package/esm/guide/style/index.scss +17 -17
  22. package/esm/icon/__stories__/style.scss +39 -39
  23. package/esm/icon/style/index.scss +6 -6
  24. package/esm/index.d.ts +2 -1
  25. package/esm/input-number/style/index.scss +86 -86
  26. package/esm/lazy-image/__stories__/style.scss +9 -9
  27. package/esm/lazy-image/style/index.scss +24 -24
  28. package/esm/link-list/style/index.scss +125 -125
  29. package/esm/loading/style/index.scss +30 -30
  30. package/esm/loading-bar/style/index.scss +62 -62
  31. package/esm/loading-container/__stories__/style.scss +5 -5
  32. package/esm/loading-container/style/index.scss +27 -27
  33. package/esm/loading-icon/style/index.scss +23 -23
  34. package/esm/mask/style/index.scss +34 -34
  35. package/esm/message/style/index.scss +70 -70
  36. package/esm/modal/style/index.scss +112 -112
  37. package/esm/move/__stories__/style.scss +6 -6
  38. package/esm/move/style/index.scss +7 -7
  39. package/esm/popover/__stories__/style.scss +15 -15
  40. package/esm/popover/style/index.scss +59 -59
  41. package/esm/select/__stories__/style.scss +8 -8
  42. package/esm/select/style/index.scss +126 -126
  43. package/esm/show-more/style/index.scss +22 -22
  44. package/esm/skeleton/__stories__/style.scss +2 -2
  45. package/esm/skeleton/style/index.scss +26 -26
  46. package/esm/style.css +14 -14
  47. package/esm/table/__stories__/style.css +1 -1
  48. package/esm/table/__stories__/style.scss +33 -2
  49. package/esm/table/body/BodyRow.d.ts +19 -0
  50. package/esm/table/body/BodyRow.js +98 -0
  51. package/esm/table/body/CheckIcon.d.ts +16 -0
  52. package/esm/table/body/CheckIcon.js +35 -0
  53. package/esm/table/body/index.d.ts +24 -0
  54. package/esm/table/body/index.js +62 -0
  55. package/esm/table/header/CheckIcon.d.ts +13 -0
  56. package/esm/table/header/CheckIcon.js +37 -0
  57. package/esm/table/header/HeaderCell.d.ts +18 -0
  58. package/esm/table/{HeaderCell.js → header/HeaderCell.js} +11 -4
  59. package/esm/table/header/HeaderRow.d.ts +16 -0
  60. package/esm/table/header/HeaderRow.js +76 -0
  61. package/esm/table/index.d.ts +52 -27
  62. package/esm/table/index.js +178 -155
  63. package/esm/table/interface.d.ts +16 -3
  64. package/esm/table/style/index.css +1 -1
  65. package/esm/table/style/index.scss +51 -70
  66. package/esm/tabs/__stories__/style.scss +8 -8
  67. package/esm/tabs/style/index.css +1 -1
  68. package/esm/tabs/style/index.scss +62 -62
  69. package/esm/tooltip/style/index.scss +61 -61
  70. package/esm/trigger/style/index.scss +79 -79
  71. package/lib/accordion/__stories__/style.scss +58 -58
  72. package/lib/affix/__stories__/style.scss +13 -13
  73. package/lib/affix/style/index.scss +34 -34
  74. package/lib/base.scss +42 -42
  75. package/lib/carousel/__stories__/style.scss +41 -41
  76. package/lib/carousel/style/index.scss +37 -37
  77. package/lib/checkbox/style/index.scss +117 -117
  78. package/lib/collapse/__stories__/style.scss +18 -18
  79. package/lib/collapse/style/index.scss +42 -42
  80. package/lib/confirm/style/index.scss +44 -44
  81. package/lib/date-picker/calendar/grid/index.scss +85 -85
  82. package/lib/date-picker/calendar/index.scss +57 -57
  83. package/lib/date-picker/index.d.ts +1 -0
  84. package/lib/date-picker/index.js +17 -7
  85. package/lib/date-picker/style/index.css +1 -1
  86. package/lib/date-picker/style/index.scss +23 -19
  87. package/lib/drawer/style/index.scss +44 -44
  88. package/lib/ellipsis/style/index.scss +35 -35
  89. package/lib/guide/__stories__/style.scss +13 -13
  90. package/lib/guide/style/index.scss +17 -17
  91. package/lib/icon/__stories__/style.scss +39 -39
  92. package/lib/icon/style/index.scss +6 -6
  93. package/lib/index.d.ts +2 -1
  94. package/lib/input-number/style/index.scss +86 -86
  95. package/lib/lazy-image/__stories__/style.scss +9 -9
  96. package/lib/lazy-image/style/index.scss +24 -24
  97. package/lib/link-list/style/index.scss +125 -125
  98. package/lib/loading/style/index.scss +30 -30
  99. package/lib/loading-bar/style/index.scss +62 -62
  100. package/lib/loading-container/__stories__/style.scss +5 -5
  101. package/lib/loading-container/style/index.scss +27 -27
  102. package/lib/loading-icon/style/index.scss +23 -23
  103. package/lib/mask/style/index.scss +34 -34
  104. package/lib/message/style/index.scss +70 -70
  105. package/lib/modal/style/index.scss +112 -112
  106. package/lib/move/__stories__/style.scss +6 -6
  107. package/lib/move/style/index.scss +7 -7
  108. package/lib/popover/__stories__/style.scss +15 -15
  109. package/lib/popover/style/index.scss +59 -59
  110. package/lib/select/__stories__/style.scss +8 -8
  111. package/lib/select/style/index.scss +126 -126
  112. package/lib/show-more/style/index.scss +22 -22
  113. package/lib/skeleton/__stories__/style.scss +2 -2
  114. package/lib/skeleton/style/index.scss +26 -26
  115. package/lib/style.css +14 -14
  116. package/lib/table/__stories__/style.css +1 -1
  117. package/lib/table/__stories__/style.scss +33 -2
  118. package/lib/table/body/BodyRow.d.ts +19 -0
  119. package/lib/table/body/BodyRow.js +112 -0
  120. package/lib/table/body/CheckIcon.d.ts +16 -0
  121. package/lib/table/body/CheckIcon.js +47 -0
  122. package/lib/table/body/index.d.ts +24 -0
  123. package/lib/table/body/index.js +74 -0
  124. package/lib/table/header/CheckIcon.d.ts +13 -0
  125. package/lib/table/header/CheckIcon.js +49 -0
  126. package/lib/table/header/HeaderCell.d.ts +18 -0
  127. package/lib/table/{HeaderCell.js → header/HeaderCell.js} +11 -4
  128. package/lib/table/header/HeaderRow.d.ts +16 -0
  129. package/lib/table/header/HeaderRow.js +89 -0
  130. package/lib/table/index.d.ts +52 -27
  131. package/lib/table/index.js +177 -155
  132. package/lib/table/interface.d.ts +16 -3
  133. package/lib/table/style/index.css +1 -1
  134. package/lib/table/style/index.scss +51 -70
  135. package/lib/tabs/__stories__/style.scss +8 -8
  136. package/lib/tabs/style/index.css +1 -1
  137. package/lib/tabs/style/index.scss +62 -62
  138. package/lib/tooltip/style/index.scss +61 -61
  139. package/lib/trigger/style/index.scss +79 -79
  140. package/package.json +2 -2
  141. package/esm/table/BodyCell.d.ts +0 -6
  142. package/esm/table/BodyCell.js +0 -12
  143. package/esm/table/HeaderCell.d.ts +0 -13
  144. package/lib/table/BodyCell.d.ts +0 -6
  145. package/lib/table/BodyCell.js +0 -22
  146. package/lib/table/HeaderCell.d.ts +0 -13
@@ -40,27 +40,12 @@ var __assign = this && this.__assign || function () {
40
40
  return __assign.apply(this, arguments);
41
41
  };
42
42
 
43
- var __spreadArrays = this && this.__spreadArrays || function () {
44
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
45
- s += arguments[i].length;
46
- }
47
-
48
- for (var r = Array(s), k = 0, i = 0; i < il; i++) {
49
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
50
- r[k] = a[j];
51
- }
52
- }
53
-
54
- return r;
55
- };
56
-
57
43
  import React from 'react';
58
44
  import classNames from 'classnames';
59
- import { throttleWithRAF, isEmptyArray, addEventListener } from '@autobest-ui/utils';
45
+ import { addEventListener, isEmptyArray, throttleWithRAF } from '@autobest-ui/utils';
60
46
  import LoadingContainer from '../loading-container';
61
- import Checkbox from '../checkbox';
62
- import HeaderCell from './HeaderCell';
63
- import BodyCell from './BodyCell';
47
+ import HeaderRow from './header/HeaderRow';
48
+ import Body from './body';
64
49
 
65
50
  var Table =
66
51
  /** @class */
@@ -73,14 +58,26 @@ function (_super) {
73
58
  _this.prefixCls = 'ab-table';
74
59
  _this.headerRef = React.createRef();
75
60
  _this.bodyRef = React.createRef();
61
+ _this.defaultRowSelection = {
62
+ selectAllVisible: true,
63
+ selectAllChecked: false,
64
+ getDisabled: function getDisabled() {
65
+ return false;
66
+ }
67
+ };
76
68
  /**
77
69
  * 清空选项
78
70
  */
79
71
 
80
72
  _this.clearSelection = function () {
81
- _this.setState({
82
- selectedRowKeys: [],
83
- isSelectedAll: false
73
+ _this.setState(function (prevState) {
74
+ return {
75
+ selectedRowKeys: [],
76
+ selectedRows: [],
77
+ rowSelection: __assign(__assign({}, prevState.rowSelection), {
78
+ selectAllChecked: false
79
+ })
80
+ };
84
81
  });
85
82
  };
86
83
 
@@ -95,102 +92,167 @@ function (_super) {
95
92
  }));
96
93
  }
97
94
  };
95
+
96
+ _this.getSelectedRows = function (selectedKeys) {
97
+ if (isEmptyArray(selectedKeys)) {
98
+ return [];
99
+ }
100
+
101
+ var getRowKey = _this.getRowKey;
102
+ var dataSource = _this.props.dataSource;
103
+ return selectedKeys.map(function (key) {
104
+ return dataSource.find(function (item) {
105
+ return getRowKey(item) === key;
106
+ });
107
+ });
108
+ };
98
109
  /**
99
110
  * 点击表头的checkbox,全选或全不选
100
111
  */
101
112
 
102
113
 
103
- _this.onSelectAll = function () {
114
+ _this.onSelectAll = function (checked) {
115
+ var getRowKey = _this.getRowKey;
104
116
  var _a = _this.props,
105
117
  dataSource = _a.dataSource,
106
- primaryKey = _a.primaryKey,
107
- onSelectedRowChange = _a.onSelectedRowChange;
108
- var selectedRowKeys = _this.state.selectedRowKeys;
118
+ rowSelection = _a.rowSelection;
109
119
 
110
- if (selectedRowKeys.length === dataSource.length) {
111
- _this.setState({
112
- isSelectedAll: false,
113
- selectedRowKeys: []
120
+ if (checked) {
121
+ var newSelectedRowKeys_1 = dataSource.map(getRowKey);
122
+
123
+ if (rowSelection.onSelectAll) {
124
+ rowSelection.onSelectAll(true);
125
+ }
126
+
127
+ _this.setState(function (prevState) {
128
+ return {
129
+ rowSelection: __assign(__assign({}, prevState.rowSelection), {
130
+ selectAllChecked: true
131
+ }),
132
+ selectedRowKeys: newSelectedRowKeys_1
133
+ };
114
134
  });
115
135
 
116
- onSelectedRowChange([], []);
136
+ if (rowSelection.onSelectedRowChange) {
137
+ rowSelection.onSelectedRowChange(newSelectedRowKeys_1, dataSource);
138
+ }
139
+
117
140
  return;
118
141
  }
119
142
 
120
- var newSelectedRowKeys = dataSource.map(function (item) {
121
- return item[primaryKey];
122
- });
143
+ if (rowSelection.onSelectAll) {
144
+ rowSelection.onSelectAll(false);
145
+ }
123
146
 
124
- _this.setState({
125
- isSelectedAll: true,
126
- selectedRowKeys: newSelectedRowKeys
147
+ _this.setState(function (prevState) {
148
+ return {
149
+ rowSelection: __assign(__assign({}, prevState.rowSelection), {
150
+ selectAllChecked: false
151
+ }),
152
+ selectedRowKeys: []
153
+ };
127
154
  });
128
155
 
129
- onSelectedRowChange(newSelectedRowKeys, dataSource);
156
+ if (rowSelection.onSelectedRowChange) {
157
+ rowSelection.onSelectedRowChange([], []);
158
+ }
130
159
  };
131
160
  /**
132
161
  * 点击某一行的checkbook
133
162
  * @param visible
134
- * @param name
163
+ * @param rowData
135
164
  */
136
165
 
137
166
 
138
- _this.onChange = function (visible, name) {
167
+ _this.onSelect = function (visible, rowData) {
168
+ var getRowKey = _this.getRowKey;
139
169
  var _a = _this.props,
140
170
  dataSource = _a.dataSource,
141
- primaryKey = _a.primaryKey,
142
- onSelectedRowChange = _a.onSelectedRowChange;
143
- var selectedRowKeys = _this.state.selectedRowKeys;
144
- var legalResults = selectedRowKeys.filter(function (item) {
145
- return !!dataSource.find(function (j) {
146
- return j[primaryKey] === item;
147
- });
148
- });
171
+ rowSelection = _a.rowSelection;
172
+ var _b = _this.state,
173
+ selectedRowKeys = _b.selectedRowKeys,
174
+ selectedRows = _b.selectedRows;
175
+ var newRowKey = getRowKey(rowData);
149
176
  var newSelectedRowKeys = [];
177
+ var newSelectedRows = [];
150
178
 
151
179
  if (visible) {
152
- newSelectedRowKeys = __spreadArrays(legalResults, [name]);
153
-
154
- if (newSelectedRowKeys.length === dataSource.length) {
155
- _this.setState({
156
- isSelectedAll: true
157
- });
180
+ if (!selectedRowKeys.includes(newRowKey)) {
181
+ newSelectedRowKeys = selectedRowKeys.concat(newRowKey);
182
+ newSelectedRows = selectedRows.concat(rowData);
158
183
  }
159
- } else {
160
- newSelectedRowKeys = legalResults.filter(function (item) {
161
- return item !== name;
184
+ } else if (selectedRowKeys.includes(newRowKey)) {
185
+ var result = selectedRowKeys.reduce(function (previousValue, currentValue) {
186
+ if (currentValue === newRowKey) {
187
+ return previousValue;
188
+ }
189
+
190
+ var data = dataSource.find(function (data) {
191
+ return getRowKey(data) === currentValue;
192
+ });
193
+
194
+ if (data) {
195
+ previousValue.selectedRowKeys.push(currentValue);
196
+ previousValue.selectedRows.push(data);
197
+ }
198
+
199
+ return previousValue;
200
+ }, {
201
+ selectedRowKeys: [],
202
+ selectedRows: []
162
203
  });
204
+ newSelectedRows = result.selectedRows;
205
+ newSelectedRowKeys = result.selectedRowKeys;
206
+ }
163
207
 
164
- if (legalResults.length === dataSource.length) {
165
- _this.setState({
166
- isSelectedAll: false
167
- });
168
- }
208
+ if (rowSelection.onSelect) {
209
+ rowSelection.onSelect(visible, rowData, selectedRows);
210
+ }
211
+
212
+ if (!visible && _this.state.rowSelection.selectAllChecked) {
213
+ _this.setState(function (prevState) {
214
+ return {
215
+ rowSelection: __assign(__assign({}, prevState.rowSelection), {
216
+ selectAllChecked: false
217
+ })
218
+ };
219
+ });
169
220
  }
170
221
 
171
222
  _this.setState({
172
- selectedRowKeys: newSelectedRowKeys
223
+ selectedRowKeys: newSelectedRowKeys,
224
+ selectedRows: newSelectedRows
173
225
  });
174
226
 
175
- onSelectedRowChange(newSelectedRowKeys, dataSource.filter(function (item) {
176
- return newSelectedRowKeys.includes(item[primaryKey]);
177
- }));
227
+ if (rowSelection.onSelectedRowChange) {
228
+ rowSelection.onSelectedRowChange(newSelectedRowKeys, newSelectedRows);
229
+ }
178
230
  };
179
- /**
180
- * 点击某一列的表头,触发排序
181
- * @param sortName
182
- */
183
231
 
232
+ _this.getDisabled = function (rowData) {
233
+ var rowSelection = _this.props.rowSelection;
184
234
 
185
- _this.onSort = function (sortName) {
186
- var onHeaderClick = _this.props.onHeaderClick;
235
+ if ('getDisabled' in rowSelection) {
236
+ var _a = _this.state,
237
+ selectedRowKeys = _a.selectedRowKeys,
238
+ selectedRows = _a.selectedRows;
239
+ return rowSelection.getDisabled(rowData, selectedRowKeys, selectedRows);
240
+ }
187
241
 
188
- if (!onHeaderClick) {
189
- return;
242
+ return false;
243
+ };
244
+
245
+ _this.getRowSelection = function () {
246
+ if (!('rowSelection' in _this.props)) {
247
+ return null;
190
248
  }
191
249
 
192
- var isSortedDescending = _this.props.sortName === sortName ? !_this.props.isSortedDescending : true;
193
- onHeaderClick(isSortedDescending, sortName);
250
+ var propsRowSelection = _this.props.rowSelection;
251
+ return __assign(__assign(__assign({}, _this.defaultRowSelection), propsRowSelection), {
252
+ onSelect: _this.onSelect,
253
+ onSelectAll: _this.onSelectAll,
254
+ getDisabled: _this.getDisabled
255
+ });
194
256
  };
195
257
  /**
196
258
  * 用colgroup设置每一列的宽度
@@ -200,15 +262,15 @@ function (_super) {
200
262
  _this.renderColgroup = function () {
201
263
  var _a = _this.props,
202
264
  columns = _a.columns,
203
- onSelectedRowChange = _a.onSelectedRowChange;
204
- return React.createElement("colgroup", null, onSelectedRowChange ? React.createElement("col", {
265
+ rowSelection = _a.rowSelection;
266
+ return React.createElement("colgroup", null, rowSelection ? React.createElement("col", {
205
267
  width: 32
206
268
  }) : null, columns.map(function (item) {
207
269
  var width = item.width;
208
270
 
209
271
  if (width) {
210
272
  return React.createElement("col", {
211
- key: item.fieldName,
273
+ key: item.key,
212
274
  style: {
213
275
  width: width,
214
276
  minWidth: width
@@ -217,7 +279,7 @@ function (_super) {
217
279
  }
218
280
 
219
281
  return React.createElement("col", {
220
- key: item.fieldName
282
+ key: item.key
221
283
  });
222
284
  }));
223
285
  };
@@ -226,72 +288,53 @@ function (_super) {
226
288
  var cls = _this.prefixCls;
227
289
  var _a = _this.props,
228
290
  columns = _a.columns,
229
- onSelectedRowChange = _a.onSelectedRowChange,
230
291
  sortName = _a.sortName,
231
- isSortedDescending = _a.isSortedDescending;
232
- var isSelectedAll = _this.state.isSelectedAll;
233
- return React.createElement("thead", null, React.createElement("tr", null, onSelectedRowChange ? React.createElement("th", {
234
- className: cls + "-checkbox"
235
- }, React.createElement(Checkbox, {
236
- checked: isSelectedAll,
237
- onChange: _this.onSelectAll
238
- })) : null, columns.map(function (item) {
239
- return React.createElement(HeaderCell, __assign({
240
- key: item.fieldName
241
- }, item, {
242
- prefixCls: cls,
243
- isSort: sortName && sortName === item.sortName,
244
- isSortedDescending: isSortedDescending,
245
- onSort: _this.onSort
246
- }));
247
- })));
292
+ isSortedDescending = _a.isSortedDescending,
293
+ sortIcon = _a.sortIcon,
294
+ onSortChange = _a.onSortChange;
295
+ var rowSelection = _this.state.rowSelection;
296
+ return React.createElement("thead", null, React.createElement(HeaderRow, {
297
+ prefixCls: cls,
298
+ columns: columns,
299
+ sortName: sortName,
300
+ isSortedDescending: isSortedDescending,
301
+ sortIcon: sortIcon,
302
+ onSortChange: onSortChange,
303
+ rowSelection: rowSelection
304
+ }));
248
305
  };
249
306
 
250
307
  _this.renderBody = function () {
251
308
  var cls = _this.prefixCls;
309
+ var getRowKey = _this.getRowKey;
252
310
  var _a = _this.props,
253
311
  columns = _a.columns,
254
312
  dataSource = _a.dataSource,
255
- primaryKey = _a.primaryKey,
256
- onSelectedRowChange = _a.onSelectedRowChange;
257
- var selectedRowKeys = _this.state.selectedRowKeys;
258
- return React.createElement("tbody", null, dataSource.map(function (item) {
259
- var rowKey = item[primaryKey];
260
- var checked = selectedRowKeys.includes(rowKey);
261
- return React.createElement("tr", {
262
- key: rowKey
263
- }, onSelectedRowChange ? React.createElement("td", {
264
- className: cls + "-checkbox"
265
- }, React.createElement(Checkbox, {
266
- checked: checked,
267
- onChange: _this.onChange,
268
- name: rowKey
269
- })) : null, columns.map(function (subItem, subIndex) {
270
- return React.createElement(BodyCell, __assign({
271
- key: subItem.fieldName,
272
- index: subIndex,
273
- rowData: item
274
- }, subItem));
275
- }));
313
+ expandable = _a.expandable;
314
+ var _b = _this.state,
315
+ rowSelection = _b.rowSelection,
316
+ selectedRowKeys = _b.selectedRowKeys;
317
+ return React.createElement("tbody", null, React.createElement(Body, {
318
+ prefixCls: cls,
319
+ getRowKey: getRowKey,
320
+ columns: columns,
321
+ dataSource: dataSource,
322
+ expandable: expandable,
323
+ rowSelection: rowSelection,
324
+ selectedRowKeys: selectedRowKeys
276
325
  }));
277
326
  };
278
327
 
279
- var defaultSelectedRowKeys = props.defaultSelectedRowKeys,
280
- dataSource = props.dataSource,
281
- primaryKey = props.primaryKey;
282
- var selectedRowKeys = [];
283
-
284
- if (!isEmptyArray(defaultSelectedRowKeys) && !isEmptyArray(dataSource)) {
285
- selectedRowKeys = defaultSelectedRowKeys.filter(function (item) {
286
- return !!dataSource.find(function (j) {
287
- return j[primaryKey] === item;
288
- });
289
- });
290
- }
291
-
328
+ var rowSelection = props.rowSelection,
329
+ rowKey = props.rowKey;
330
+ _this.getRowKey = typeof rowKey === 'string' ? function (data) {
331
+ return data[rowKey];
332
+ } : rowKey;
333
+ var defaultSelectedRowKeys = rowSelection && rowSelection.defaultSelectedRowKeys ? rowSelection.defaultSelectedRowKeys : [];
292
334
  _this.state = {
293
- isSelectedAll: false,
294
- selectedRowKeys: selectedRowKeys
335
+ selectedRowKeys: defaultSelectedRowKeys,
336
+ selectedRows: _this.getSelectedRows(defaultSelectedRowKeys),
337
+ rowSelection: _this.getRowSelection()
295
338
  };
296
339
  return _this;
297
340
  }
@@ -300,27 +343,6 @@ function (_super) {
300
343
  this.addScrollListener();
301
344
  };
302
345
 
303
- Table.prototype.componentDidUpdate = function () {
304
- var _a = this.props,
305
- dataSource = _a.dataSource,
306
- onSelectedRowChange = _a.onSelectedRowChange;
307
- var _b = this.state,
308
- isSelectedAll = _b.isSelectedAll,
309
- selectedRowKeys = _b.selectedRowKeys;
310
-
311
- if (onSelectedRowChange && !isEmptyArray(dataSource)) {
312
- if (isEmptyArray(selectedRowKeys) && isSelectedAll) {
313
- this.setState({
314
- isSelectedAll: false
315
- });
316
- } else if (selectedRowKeys.length === dataSource.length && !isSelectedAll) {
317
- this.setState({
318
- isSelectedAll: true
319
- });
320
- }
321
- }
322
- };
323
-
324
346
  Table.prototype.componentWillUnmount = function () {
325
347
  if (this.scrollHandler) {
326
348
  this.scrollHandler.remove();
@@ -360,7 +382,8 @@ function (_super) {
360
382
 
361
383
  Table.defaultProps = {
362
384
  fixedHeader: false,
363
- loading: false
385
+ loading: false,
386
+ rowKey: 'key'
364
387
  };
365
388
  return Table;
366
389
  }(React.Component);
@@ -1,9 +1,22 @@
1
1
  import React from 'react';
2
- export interface Column {
2
+ export interface ColumnOnRenderReturnObjectInfo {
3
+ children: React.ReactNode | React.ReactNode[];
4
+ props: {
5
+ className?: string;
6
+ rowSpan?: number;
7
+ colSpan?: number;
8
+ };
9
+ }
10
+ export interface Column<T> {
3
11
  title: React.ReactNode | React.ReactNode[];
4
- fieldName: string;
12
+ key: string;
13
+ dataIndex?: string;
14
+ /**
15
+ * 当前触发排序的Column的sortName
16
+ */
5
17
  sortName?: string;
6
18
  width?: string | number;
7
19
  className?: string;
8
- onRender?: (rowData: any, index: number) => React.ReactNode | React.ReactNode[];
20
+ colSpan?: number;
21
+ onRender?: (rowData: T, rowIndex: number, colIndex: number) => React.ReactNode | React.ReactNode[] | ColumnOnRenderReturnObjectInfo;
9
22
  }
@@ -1 +1 @@
1
- .ab-table{overflow-x:auto}.ab-table table{border-spacing:0;width:100%;table-layout:fixed}.ab-table thead{background-color:#2b5797;color:#fff}.ab-table tbody tr:nth-child(2n){background-color:#f7f6f3}.ab-table-header{background-color:#2b5797;color:#fff;overflow:hidden}.ab-table-header table{width:calc(100% - .17rem)}.ab-table-body{overflow:auto scroll}.ab-table tr td,.ab-table tr th{padding:.16rem}.ab-table tr td.ab-table-checkbox,.ab-table tr th.ab-table-checkbox{width:.32rem;text-align:center;padding-left:.08rem;padding-right:.08rem}.ab-table-title{display:flex;align-items:center;text-align:left}.ab-table-title.ab-table-point{cursor:pointer}.ab-table-arrow{padding:0 .05rem}@media only screen and (max-width:767px){.ab-table-header table{width:100%}}
1
+ .ab-table{overflow-x:auto}.ab-table table{border-spacing:0;width:100%;table-layout:fixed}.ab-table-header{overflow:hidden}.ab-table-header table{width:calc(100% - .17rem)}.ab-table-body{overflow:auto scroll}.ab-table-checkbox{width:.32rem;text-align:center}.ab-table-title{display:flex;align-items:center;text-align:left}.ab-table-title.ab-table-point{cursor:pointer}.ab-table-arrow{padding:0 .05rem}@media only screen and (max-width:767px){.ab-table-header table{width:100%}}
@@ -1,71 +1,52 @@
1
- $namespace: ab-table;
2
-
3
- .#{$namespace} {
4
- overflow-x: auto;
5
-
6
- table {
7
- border-spacing: 0;
8
- width: 100%;
9
- table-layout: fixed;
10
- }
11
-
12
- thead {
13
- background-color: #2b5797;
14
- color: #fff;
15
- }
16
-
17
- tbody tr {
18
- &:nth-child(2n) {
19
- background-color: #f7f6f3;
20
- }
21
- }
22
-
23
- &-header {
24
- background-color: #2b5797;
25
- color: #fff;
26
- overflow: hidden;
27
-
28
- table {
29
- width: calc(100% - .17rem);
30
- }
31
- }
32
-
33
- &-body {
34
- overflow: auto scroll;
35
- }
36
-
37
- tr th, tr td {
38
- padding: .16rem;
39
-
40
- &.#{$namespace}-checkbox {
41
- width: .32rem;
42
- text-align: center;
43
- padding-left: .08rem;
44
- padding-right: .08rem;
45
- }
46
- }
47
-
48
- &-title {
49
- display: flex;
50
- align-items: center;
51
- text-align: left;
52
-
53
- &.#{$namespace}-point {
54
- cursor: pointer;
55
- }
56
- }
57
-
58
- &-arrow {
59
- padding: 0 .05rem;
60
- }
61
- }
62
-
63
- @media only screen and (max-width: 767px) {
64
- .#{$namespace} {
65
- &-header {
66
- table {
67
- width: 100%;
68
- }
69
- }
70
- }
1
+ $namespace: ab-table;
2
+
3
+ .#{$namespace} {
4
+ overflow-x: auto;
5
+
6
+ table {
7
+ border-spacing: 0;
8
+ width: 100%;
9
+ table-layout: fixed;
10
+ }
11
+
12
+ &-header {
13
+ overflow: hidden;
14
+
15
+ table {
16
+ width: calc(100% - .17rem);
17
+ }
18
+ }
19
+
20
+ &-body {
21
+ overflow: auto scroll;
22
+ }
23
+
24
+ &-checkbox {
25
+ width: .32rem;
26
+ text-align: center;
27
+ }
28
+
29
+ &-title {
30
+ display: flex;
31
+ align-items: center;
32
+ text-align: left;
33
+
34
+ &.#{$namespace}-point {
35
+ cursor: pointer;
36
+ }
37
+ }
38
+
39
+ &-arrow {
40
+ padding: 0 .05rem;
41
+ }
42
+ }
43
+
44
+ @media only screen and (max-width: 767px) {
45
+ .#{$namespace} {
46
+ &-header {
47
+ table {
48
+ width: 100%;
49
+ }
50
+ }
51
+ }
71
52
  }
@@ -1,8 +1,8 @@
1
- .tabs-demo {
2
- width: 500px;
3
- margin: 20px auto;
4
-
5
- .ab-tabs-item {
6
- padding: 2px 6px;
7
- }
8
- }
1
+ .tabs-demo {
2
+ width: 500px;
3
+ margin: 20px auto;
4
+
5
+ .ab-tabs-item {
6
+ padding: 2px 6px;
7
+ }
8
+ }
@@ -1 +1 @@
1
- .ab-tabs{position:relative;display:flex}.ab-tabs-item{cursor:pointer}.ab-tabs-item.ab-tabs-active{font-weight:700}.ab-tabs-item.ab-tabs-disabled{cursor:not-allowed;opacity:.7}.ab-tabs-bar{position:absolute;background-color:#b22222;transition:all .25s;width:0;height:0;overflow:hidden;margin:0;padding:0}.ab-tabs-bottom,.ab-tabs-top{flex-direction:row}.ab-tabs-left,.ab-tabs-right{flex-direction:column}.ab-tabs-top>.ab-tabs-bar{bottom:0}.ab-tabs-bottom>.ab-tabs-bar{top:0}.ab-tabs-left>.ab-tabs-bar{right:0}.ab-tabs-right>.ab-tabs-bar{left:0}
1
+ .ab-tabs{position:relative;display:flex}.ab-tabs-item{cursor:pointer}.ab-tabs-item.ab-tabs-active{font-weight:700}.ab-tabs-item.ab-tabs-disabled{cursor:not-allowed;opacity:.7}.ab-tabs-bar{position:absolute;background-color:#b22222;transition:all .25s;width:0;height:0;overflow:hidden;margin:0;padding:0}.ab-tabs-bottom,.ab-tabs-top{flex-direction:row}.ab-tabs-bottom>.ab-tabs-bar,.ab-tabs-top>.ab-tabs-bar{left:0}.ab-tabs-left,.ab-tabs-right{flex-direction:column}.ab-tabs-left>.ab-tabs-bar,.ab-tabs-right>.ab-tabs-bar{top:0}.ab-tabs-top>.ab-tabs-bar{bottom:0}.ab-tabs-bottom>.ab-tabs-bar{top:0}.ab-tabs-left>.ab-tabs-bar{right:0}.ab-tabs-right>.ab-tabs-bar{left:0}