@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.
- package/README.md +10 -10
- package/esm/accordion/__stories__/style.scss +58 -58
- package/esm/affix/__stories__/style.scss +13 -13
- package/esm/affix/style/index.scss +34 -34
- package/esm/base.scss +42 -42
- package/esm/carousel/__stories__/style.scss +41 -41
- package/esm/carousel/style/index.scss +37 -37
- package/esm/checkbox/style/index.scss +117 -117
- package/esm/collapse/__stories__/style.scss +18 -18
- package/esm/collapse/style/index.scss +42 -42
- package/esm/confirm/style/index.scss +44 -44
- package/esm/date-picker/calendar/grid/index.scss +85 -85
- package/esm/date-picker/calendar/index.scss +57 -57
- package/esm/date-picker/index.d.ts +1 -0
- package/esm/date-picker/index.js +17 -7
- package/esm/date-picker/style/index.css +1 -1
- package/esm/date-picker/style/index.scss +23 -19
- package/esm/drawer/style/index.scss +44 -44
- package/esm/ellipsis/style/index.scss +35 -35
- package/esm/guide/__stories__/style.scss +13 -13
- package/esm/guide/style/index.scss +17 -17
- package/esm/icon/__stories__/style.scss +39 -39
- package/esm/icon/style/index.scss +6 -6
- package/esm/index.d.ts +2 -1
- package/esm/input-number/style/index.scss +86 -86
- package/esm/lazy-image/__stories__/style.scss +9 -9
- package/esm/lazy-image/style/index.scss +24 -24
- package/esm/link-list/style/index.scss +125 -125
- package/esm/loading/style/index.scss +30 -30
- package/esm/loading-bar/style/index.scss +62 -62
- package/esm/loading-container/__stories__/style.scss +5 -5
- package/esm/loading-container/style/index.scss +27 -27
- package/esm/loading-icon/style/index.scss +23 -23
- package/esm/mask/style/index.scss +34 -34
- package/esm/message/style/index.scss +70 -70
- package/esm/modal/style/index.scss +112 -112
- package/esm/move/__stories__/style.scss +6 -6
- package/esm/move/style/index.scss +7 -7
- package/esm/popover/__stories__/style.scss +15 -15
- package/esm/popover/style/index.scss +59 -59
- package/esm/select/__stories__/style.scss +8 -8
- package/esm/select/style/index.scss +126 -126
- package/esm/show-more/style/index.scss +22 -22
- package/esm/skeleton/__stories__/style.scss +2 -2
- package/esm/skeleton/style/index.scss +26 -26
- package/esm/style.css +14 -14
- package/esm/table/__stories__/style.css +1 -1
- package/esm/table/__stories__/style.scss +33 -2
- package/esm/table/body/BodyRow.d.ts +19 -0
- package/esm/table/body/BodyRow.js +98 -0
- package/esm/table/body/CheckIcon.d.ts +16 -0
- package/esm/table/body/CheckIcon.js +35 -0
- package/esm/table/body/index.d.ts +24 -0
- package/esm/table/body/index.js +62 -0
- package/esm/table/header/CheckIcon.d.ts +13 -0
- package/esm/table/header/CheckIcon.js +37 -0
- package/esm/table/header/HeaderCell.d.ts +18 -0
- package/esm/table/{HeaderCell.js → header/HeaderCell.js} +11 -4
- package/esm/table/header/HeaderRow.d.ts +16 -0
- package/esm/table/header/HeaderRow.js +76 -0
- package/esm/table/index.d.ts +52 -27
- package/esm/table/index.js +178 -155
- package/esm/table/interface.d.ts +16 -3
- package/esm/table/style/index.css +1 -1
- package/esm/table/style/index.scss +51 -70
- package/esm/tabs/__stories__/style.scss +8 -8
- package/esm/tabs/style/index.css +1 -1
- package/esm/tabs/style/index.scss +62 -62
- package/esm/tooltip/style/index.scss +61 -61
- package/esm/trigger/style/index.scss +79 -79
- package/lib/accordion/__stories__/style.scss +58 -58
- package/lib/affix/__stories__/style.scss +13 -13
- package/lib/affix/style/index.scss +34 -34
- package/lib/base.scss +42 -42
- package/lib/carousel/__stories__/style.scss +41 -41
- package/lib/carousel/style/index.scss +37 -37
- package/lib/checkbox/style/index.scss +117 -117
- package/lib/collapse/__stories__/style.scss +18 -18
- package/lib/collapse/style/index.scss +42 -42
- package/lib/confirm/style/index.scss +44 -44
- package/lib/date-picker/calendar/grid/index.scss +85 -85
- package/lib/date-picker/calendar/index.scss +57 -57
- package/lib/date-picker/index.d.ts +1 -0
- package/lib/date-picker/index.js +17 -7
- package/lib/date-picker/style/index.css +1 -1
- package/lib/date-picker/style/index.scss +23 -19
- package/lib/drawer/style/index.scss +44 -44
- package/lib/ellipsis/style/index.scss +35 -35
- package/lib/guide/__stories__/style.scss +13 -13
- package/lib/guide/style/index.scss +17 -17
- package/lib/icon/__stories__/style.scss +39 -39
- package/lib/icon/style/index.scss +6 -6
- package/lib/index.d.ts +2 -1
- package/lib/input-number/style/index.scss +86 -86
- package/lib/lazy-image/__stories__/style.scss +9 -9
- package/lib/lazy-image/style/index.scss +24 -24
- package/lib/link-list/style/index.scss +125 -125
- package/lib/loading/style/index.scss +30 -30
- package/lib/loading-bar/style/index.scss +62 -62
- package/lib/loading-container/__stories__/style.scss +5 -5
- package/lib/loading-container/style/index.scss +27 -27
- package/lib/loading-icon/style/index.scss +23 -23
- package/lib/mask/style/index.scss +34 -34
- package/lib/message/style/index.scss +70 -70
- package/lib/modal/style/index.scss +112 -112
- package/lib/move/__stories__/style.scss +6 -6
- package/lib/move/style/index.scss +7 -7
- package/lib/popover/__stories__/style.scss +15 -15
- package/lib/popover/style/index.scss +59 -59
- package/lib/select/__stories__/style.scss +8 -8
- package/lib/select/style/index.scss +126 -126
- package/lib/show-more/style/index.scss +22 -22
- package/lib/skeleton/__stories__/style.scss +2 -2
- package/lib/skeleton/style/index.scss +26 -26
- package/lib/style.css +14 -14
- package/lib/table/__stories__/style.css +1 -1
- package/lib/table/__stories__/style.scss +33 -2
- package/lib/table/body/BodyRow.d.ts +19 -0
- package/lib/table/body/BodyRow.js +112 -0
- package/lib/table/body/CheckIcon.d.ts +16 -0
- package/lib/table/body/CheckIcon.js +47 -0
- package/lib/table/body/index.d.ts +24 -0
- package/lib/table/body/index.js +74 -0
- package/lib/table/header/CheckIcon.d.ts +13 -0
- package/lib/table/header/CheckIcon.js +49 -0
- package/lib/table/header/HeaderCell.d.ts +18 -0
- package/lib/table/{HeaderCell.js → header/HeaderCell.js} +11 -4
- package/lib/table/header/HeaderRow.d.ts +16 -0
- package/lib/table/header/HeaderRow.js +89 -0
- package/lib/table/index.d.ts +52 -27
- package/lib/table/index.js +177 -155
- package/lib/table/interface.d.ts +16 -3
- package/lib/table/style/index.css +1 -1
- package/lib/table/style/index.scss +51 -70
- package/lib/tabs/__stories__/style.scss +8 -8
- package/lib/tabs/style/index.css +1 -1
- package/lib/tabs/style/index.scss +62 -62
- package/lib/tooltip/style/index.scss +61 -61
- package/lib/trigger/style/index.scss +79 -79
- package/package.json +2 -2
- package/esm/table/BodyCell.d.ts +0 -6
- package/esm/table/BodyCell.js +0 -12
- package/esm/table/HeaderCell.d.ts +0 -13
- package/lib/table/BodyCell.d.ts +0 -6
- package/lib/table/BodyCell.js +0 -22
- package/lib/table/HeaderCell.d.ts +0 -13
package/lib/table/index.d.ts
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { ReactText } from 'react';
|
|
2
2
|
import { AddListenerEventHandler } from '@autobest-ui/utils';
|
|
3
3
|
import { Column } from './interface';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import { HeaderRowProps } from './header/HeaderRow';
|
|
5
|
+
import { BodyProps } from './body';
|
|
6
|
+
import { HeaderRowSelectionInfo } from './header/CheckIcon';
|
|
7
|
+
import { BodyRowSelectionInfo } from './body/CheckIcon';
|
|
8
|
+
export interface RowSelectionInfo<T> extends Partial<Pick<HeaderRowSelectionInfo, 'selectAllVisible' | 'onSelectAll'>>, Partial<Pick<BodyRowSelectionInfo<T>, 'checkIcon'>> {
|
|
9
|
+
defaultSelectedRowKeys?: ReactText[];
|
|
10
|
+
getDisabled?: (dataRow: any, selectedRowKeys: ReactText[], selectedRows: T[]) => boolean;
|
|
11
|
+
onSelect?: (checked: boolean, rowData: T, selectedRows: T[]) => void;
|
|
12
|
+
onSelectedRowChange?: (selectedRowKeys: ReactText[], selectedRows: T[]) => void;
|
|
13
|
+
}
|
|
14
|
+
declare type StateRowSelectionInfo<T> = Pick<HeaderRowSelectionInfo, 'selectAllVisible' | 'selectAllChecked' | 'onSelectAll'> & Pick<BodyRowSelectionInfo<T>, 'checkIcon' | 'getDisabled' | 'onSelect'>;
|
|
15
|
+
export interface TableProps<T> extends Pick<HeaderRowProps<T>, 'sortName' | 'sortIcon' | 'onSortChange' | 'isSortedDescending'>, Pick<BodyProps<T>, 'dataSource' | 'expandable'> {
|
|
9
16
|
/**
|
|
10
|
-
*
|
|
17
|
+
* 样式名
|
|
11
18
|
*/
|
|
12
|
-
|
|
19
|
+
className?: string;
|
|
13
20
|
/**
|
|
14
|
-
*
|
|
21
|
+
* 定义每一列数据的格式
|
|
22
|
+
* 具体类型见Column
|
|
15
23
|
*/
|
|
16
|
-
|
|
24
|
+
columns: Column<T>[];
|
|
17
25
|
/**
|
|
18
|
-
*
|
|
26
|
+
* 获取单条记录的唯一主键; 若是string类型,则取当前行数据中对应名称的属性值; 若是函数,则传入当前行数据,获取rowKey值;这也是勾选功能匹配时所用的key值
|
|
19
27
|
*/
|
|
20
|
-
|
|
28
|
+
rowKey?: string | ((rowData: T) => ReactText);
|
|
21
29
|
/**
|
|
22
30
|
* 是否固定表头
|
|
23
31
|
*/
|
|
@@ -26,7 +34,14 @@ export interface TableProps {
|
|
|
26
34
|
* 最大高度,fixedHeader为true时生效
|
|
27
35
|
*/
|
|
28
36
|
maxHeight?: string;
|
|
37
|
+
/**
|
|
38
|
+
* 为true时,Table会显示loading样式
|
|
39
|
+
*/
|
|
29
40
|
loading?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* 表格行是否可勾选,详见RowSelection
|
|
43
|
+
*/
|
|
44
|
+
rowSelection?: RowSelectionInfo<T>;
|
|
30
45
|
/**
|
|
31
46
|
* 默认勾选项数组, 以primaryKey取值
|
|
32
47
|
*/
|
|
@@ -48,43 +63,53 @@ export interface TableProps {
|
|
|
48
63
|
*/
|
|
49
64
|
isSortedDescending?: boolean;
|
|
50
65
|
}
|
|
51
|
-
interface TableState {
|
|
52
|
-
|
|
53
|
-
|
|
66
|
+
interface TableState<T> {
|
|
67
|
+
selectedRowKeys: ReactText[];
|
|
68
|
+
selectedRows: T[];
|
|
69
|
+
rowSelection: StateRowSelectionInfo<T>;
|
|
54
70
|
}
|
|
55
|
-
declare class Table extends React.Component<TableProps
|
|
71
|
+
declare class Table<RowDataType> extends React.Component<TableProps<RowDataType>, TableState<RowDataType>> {
|
|
56
72
|
prefixCls: string;
|
|
57
73
|
headerRef: React.RefObject<HTMLDivElement>;
|
|
58
74
|
bodyRef: React.RefObject<HTMLDivElement>;
|
|
59
75
|
scrollHandler: AddListenerEventHandler;
|
|
76
|
+
getRowKey: (rowData: RowDataType) => ReactText;
|
|
60
77
|
static defaultProps: {
|
|
61
78
|
fixedHeader: boolean;
|
|
62
79
|
loading: boolean;
|
|
80
|
+
rowKey: string;
|
|
63
81
|
};
|
|
64
|
-
|
|
82
|
+
readonly defaultRowSelection: Pick<StateRowSelectionInfo<RowDataType>, 'selectAllVisible' | 'selectAllChecked' | 'getDisabled'>;
|
|
83
|
+
constructor(props: TableProps<RowDataType>);
|
|
65
84
|
/**
|
|
66
85
|
* 清空选项
|
|
67
86
|
*/
|
|
68
87
|
clearSelection: () => void;
|
|
69
88
|
componentDidMount(): void;
|
|
70
|
-
componentDidUpdate(): void;
|
|
71
89
|
componentWillUnmount(): void;
|
|
72
90
|
addScrollListener: () => void;
|
|
91
|
+
getSelectedRows: (selectedKeys: any) => any;
|
|
73
92
|
/**
|
|
74
93
|
* 点击表头的checkbox,全选或全不选
|
|
75
94
|
*/
|
|
76
|
-
onSelectAll: () => void;
|
|
95
|
+
onSelectAll: (checked: any) => void;
|
|
77
96
|
/**
|
|
78
97
|
* 点击某一行的checkbook
|
|
79
98
|
* @param visible
|
|
80
|
-
* @param
|
|
81
|
-
*/
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
99
|
+
* @param rowData
|
|
100
|
+
*/
|
|
101
|
+
onSelect: (visible: boolean, rowData: RowDataType) => void;
|
|
102
|
+
getDisabled: (rowData: any) => boolean;
|
|
103
|
+
getRowSelection: () => {
|
|
104
|
+
onSelect: (visible: boolean, rowData: RowDataType) => void;
|
|
105
|
+
onSelectAll: (checked: any) => void;
|
|
106
|
+
getDisabled: (rowData: any) => boolean;
|
|
107
|
+
defaultSelectedRowKeys?: (string | number)[];
|
|
108
|
+
onSelectedRowChange?: (selectedRowKeys: (string | number)[], selectedRows: RowDataType[]) => void;
|
|
109
|
+
selectAllVisible?: boolean;
|
|
110
|
+
checkIcon?: (checked: boolean, rowData: RowDataType, index: number) => React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)>) | (new (props: any) => React.Component<any, any, any>)>;
|
|
111
|
+
selectAllChecked: boolean;
|
|
112
|
+
};
|
|
88
113
|
/**
|
|
89
114
|
* 用colgroup设置每一列的宽度
|
|
90
115
|
*/
|
package/lib/table/index.js
CHANGED
|
@@ -15,11 +15,9 @@ var _utils = require("@autobest-ui/utils");
|
|
|
15
15
|
|
|
16
16
|
var _loadingContainer = _interopRequireDefault(require("../loading-container"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _HeaderRow = _interopRequireDefault(require("./header/HeaderRow"));
|
|
19
19
|
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
var _BodyCell = _interopRequireDefault(require("./BodyCell"));
|
|
20
|
+
var _body = _interopRequireDefault(require("./body"));
|
|
23
21
|
|
|
24
22
|
var __extends = void 0 && (void 0).__extends || function () {
|
|
25
23
|
var _extendStatics = function extendStatics(d, b) {
|
|
@@ -63,20 +61,6 @@ var __assign = void 0 && (void 0).__assign || function () {
|
|
|
63
61
|
return __assign.apply(this, arguments);
|
|
64
62
|
};
|
|
65
63
|
|
|
66
|
-
var __spreadArrays = void 0 && (void 0).__spreadArrays || function () {
|
|
67
|
-
for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
|
|
68
|
-
s += arguments[i].length;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
for (var r = Array(s), k = 0, i = 0; i < il; i++) {
|
|
72
|
-
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
|
|
73
|
-
r[k] = a[j];
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
return r;
|
|
78
|
-
};
|
|
79
|
-
|
|
80
64
|
var Table =
|
|
81
65
|
/** @class */
|
|
82
66
|
function (_super) {
|
|
@@ -88,14 +72,26 @@ function (_super) {
|
|
|
88
72
|
_this.prefixCls = 'ab-table';
|
|
89
73
|
_this.headerRef = _react.default.createRef();
|
|
90
74
|
_this.bodyRef = _react.default.createRef();
|
|
75
|
+
_this.defaultRowSelection = {
|
|
76
|
+
selectAllVisible: true,
|
|
77
|
+
selectAllChecked: false,
|
|
78
|
+
getDisabled: function getDisabled() {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
91
82
|
/**
|
|
92
83
|
* 清空选项
|
|
93
84
|
*/
|
|
94
85
|
|
|
95
86
|
_this.clearSelection = function () {
|
|
96
|
-
_this.setState({
|
|
97
|
-
|
|
98
|
-
|
|
87
|
+
_this.setState(function (prevState) {
|
|
88
|
+
return {
|
|
89
|
+
selectedRowKeys: [],
|
|
90
|
+
selectedRows: [],
|
|
91
|
+
rowSelection: __assign(__assign({}, prevState.rowSelection), {
|
|
92
|
+
selectAllChecked: false
|
|
93
|
+
})
|
|
94
|
+
};
|
|
99
95
|
});
|
|
100
96
|
};
|
|
101
97
|
|
|
@@ -110,102 +106,167 @@ function (_super) {
|
|
|
110
106
|
}));
|
|
111
107
|
}
|
|
112
108
|
};
|
|
109
|
+
|
|
110
|
+
_this.getSelectedRows = function (selectedKeys) {
|
|
111
|
+
if ((0, _utils.isEmptyArray)(selectedKeys)) {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
var getRowKey = _this.getRowKey;
|
|
116
|
+
var dataSource = _this.props.dataSource;
|
|
117
|
+
return selectedKeys.map(function (key) {
|
|
118
|
+
return dataSource.find(function (item) {
|
|
119
|
+
return getRowKey(item) === key;
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
};
|
|
113
123
|
/**
|
|
114
124
|
* 点击表头的checkbox,全选或全不选
|
|
115
125
|
*/
|
|
116
126
|
|
|
117
127
|
|
|
118
|
-
_this.onSelectAll = function () {
|
|
128
|
+
_this.onSelectAll = function (checked) {
|
|
129
|
+
var getRowKey = _this.getRowKey;
|
|
119
130
|
var _a = _this.props,
|
|
120
131
|
dataSource = _a.dataSource,
|
|
121
|
-
|
|
122
|
-
onSelectedRowChange = _a.onSelectedRowChange;
|
|
123
|
-
var selectedRowKeys = _this.state.selectedRowKeys;
|
|
132
|
+
rowSelection = _a.rowSelection;
|
|
124
133
|
|
|
125
|
-
if (
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
134
|
+
if (checked) {
|
|
135
|
+
var newSelectedRowKeys_1 = dataSource.map(getRowKey);
|
|
136
|
+
|
|
137
|
+
if (rowSelection.onSelectAll) {
|
|
138
|
+
rowSelection.onSelectAll(true);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
_this.setState(function (prevState) {
|
|
142
|
+
return {
|
|
143
|
+
rowSelection: __assign(__assign({}, prevState.rowSelection), {
|
|
144
|
+
selectAllChecked: true
|
|
145
|
+
}),
|
|
146
|
+
selectedRowKeys: newSelectedRowKeys_1
|
|
147
|
+
};
|
|
129
148
|
});
|
|
130
149
|
|
|
131
|
-
onSelectedRowChange
|
|
150
|
+
if (rowSelection.onSelectedRowChange) {
|
|
151
|
+
rowSelection.onSelectedRowChange(newSelectedRowKeys_1, dataSource);
|
|
152
|
+
}
|
|
153
|
+
|
|
132
154
|
return;
|
|
133
155
|
}
|
|
134
156
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
157
|
+
if (rowSelection.onSelectAll) {
|
|
158
|
+
rowSelection.onSelectAll(false);
|
|
159
|
+
}
|
|
138
160
|
|
|
139
|
-
_this.setState({
|
|
140
|
-
|
|
141
|
-
|
|
161
|
+
_this.setState(function (prevState) {
|
|
162
|
+
return {
|
|
163
|
+
rowSelection: __assign(__assign({}, prevState.rowSelection), {
|
|
164
|
+
selectAllChecked: false
|
|
165
|
+
}),
|
|
166
|
+
selectedRowKeys: []
|
|
167
|
+
};
|
|
142
168
|
});
|
|
143
169
|
|
|
144
|
-
onSelectedRowChange
|
|
170
|
+
if (rowSelection.onSelectedRowChange) {
|
|
171
|
+
rowSelection.onSelectedRowChange([], []);
|
|
172
|
+
}
|
|
145
173
|
};
|
|
146
174
|
/**
|
|
147
175
|
* 点击某一行的checkbook
|
|
148
176
|
* @param visible
|
|
149
|
-
* @param
|
|
177
|
+
* @param rowData
|
|
150
178
|
*/
|
|
151
179
|
|
|
152
180
|
|
|
153
|
-
_this.
|
|
181
|
+
_this.onSelect = function (visible, rowData) {
|
|
182
|
+
var getRowKey = _this.getRowKey;
|
|
154
183
|
var _a = _this.props,
|
|
155
184
|
dataSource = _a.dataSource,
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
return j[primaryKey] === item;
|
|
162
|
-
});
|
|
163
|
-
});
|
|
185
|
+
rowSelection = _a.rowSelection;
|
|
186
|
+
var _b = _this.state,
|
|
187
|
+
selectedRowKeys = _b.selectedRowKeys,
|
|
188
|
+
selectedRows = _b.selectedRows;
|
|
189
|
+
var newRowKey = getRowKey(rowData);
|
|
164
190
|
var newSelectedRowKeys = [];
|
|
191
|
+
var newSelectedRows = [];
|
|
165
192
|
|
|
166
193
|
if (visible) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
_this.setState({
|
|
171
|
-
isSelectedAll: true
|
|
172
|
-
});
|
|
194
|
+
if (!selectedRowKeys.includes(newRowKey)) {
|
|
195
|
+
newSelectedRowKeys = selectedRowKeys.concat(newRowKey);
|
|
196
|
+
newSelectedRows = selectedRows.concat(rowData);
|
|
173
197
|
}
|
|
174
|
-
} else {
|
|
175
|
-
|
|
176
|
-
|
|
198
|
+
} else if (selectedRowKeys.includes(newRowKey)) {
|
|
199
|
+
var result = selectedRowKeys.reduce(function (previousValue, currentValue) {
|
|
200
|
+
if (currentValue === newRowKey) {
|
|
201
|
+
return previousValue;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
var data = dataSource.find(function (data) {
|
|
205
|
+
return getRowKey(data) === currentValue;
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
if (data) {
|
|
209
|
+
previousValue.selectedRowKeys.push(currentValue);
|
|
210
|
+
previousValue.selectedRows.push(data);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
return previousValue;
|
|
214
|
+
}, {
|
|
215
|
+
selectedRowKeys: [],
|
|
216
|
+
selectedRows: []
|
|
177
217
|
});
|
|
218
|
+
newSelectedRows = result.selectedRows;
|
|
219
|
+
newSelectedRowKeys = result.selectedRowKeys;
|
|
220
|
+
}
|
|
178
221
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
222
|
+
if (rowSelection.onSelect) {
|
|
223
|
+
rowSelection.onSelect(visible, rowData, selectedRows);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (!visible && _this.state.rowSelection.selectAllChecked) {
|
|
227
|
+
_this.setState(function (prevState) {
|
|
228
|
+
return {
|
|
229
|
+
rowSelection: __assign(__assign({}, prevState.rowSelection), {
|
|
230
|
+
selectAllChecked: false
|
|
231
|
+
})
|
|
232
|
+
};
|
|
233
|
+
});
|
|
184
234
|
}
|
|
185
235
|
|
|
186
236
|
_this.setState({
|
|
187
|
-
selectedRowKeys: newSelectedRowKeys
|
|
237
|
+
selectedRowKeys: newSelectedRowKeys,
|
|
238
|
+
selectedRows: newSelectedRows
|
|
188
239
|
});
|
|
189
240
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}
|
|
241
|
+
if (rowSelection.onSelectedRowChange) {
|
|
242
|
+
rowSelection.onSelectedRowChange(newSelectedRowKeys, newSelectedRows);
|
|
243
|
+
}
|
|
193
244
|
};
|
|
194
|
-
/**
|
|
195
|
-
* 点击某一列的表头,触发排序
|
|
196
|
-
* @param sortName
|
|
197
|
-
*/
|
|
198
245
|
|
|
246
|
+
_this.getDisabled = function (rowData) {
|
|
247
|
+
var rowSelection = _this.props.rowSelection;
|
|
199
248
|
|
|
200
|
-
|
|
201
|
-
|
|
249
|
+
if ('getDisabled' in rowSelection) {
|
|
250
|
+
var _a = _this.state,
|
|
251
|
+
selectedRowKeys = _a.selectedRowKeys,
|
|
252
|
+
selectedRows = _a.selectedRows;
|
|
253
|
+
return rowSelection.getDisabled(rowData, selectedRowKeys, selectedRows);
|
|
254
|
+
}
|
|
202
255
|
|
|
203
|
-
|
|
204
|
-
|
|
256
|
+
return false;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
_this.getRowSelection = function () {
|
|
260
|
+
if (!('rowSelection' in _this.props)) {
|
|
261
|
+
return null;
|
|
205
262
|
}
|
|
206
263
|
|
|
207
|
-
var
|
|
208
|
-
|
|
264
|
+
var propsRowSelection = _this.props.rowSelection;
|
|
265
|
+
return __assign(__assign(__assign({}, _this.defaultRowSelection), propsRowSelection), {
|
|
266
|
+
onSelect: _this.onSelect,
|
|
267
|
+
onSelectAll: _this.onSelectAll,
|
|
268
|
+
getDisabled: _this.getDisabled
|
|
269
|
+
});
|
|
209
270
|
};
|
|
210
271
|
/**
|
|
211
272
|
* 用colgroup设置每一列的宽度
|
|
@@ -215,15 +276,15 @@ function (_super) {
|
|
|
215
276
|
_this.renderColgroup = function () {
|
|
216
277
|
var _a = _this.props,
|
|
217
278
|
columns = _a.columns,
|
|
218
|
-
|
|
219
|
-
return _react.default.createElement("colgroup", null,
|
|
279
|
+
rowSelection = _a.rowSelection;
|
|
280
|
+
return _react.default.createElement("colgroup", null, rowSelection ? _react.default.createElement("col", {
|
|
220
281
|
width: 32
|
|
221
282
|
}) : null, columns.map(function (item) {
|
|
222
283
|
var width = item.width;
|
|
223
284
|
|
|
224
285
|
if (width) {
|
|
225
286
|
return _react.default.createElement("col", {
|
|
226
|
-
key: item.
|
|
287
|
+
key: item.key,
|
|
227
288
|
style: {
|
|
228
289
|
width: width,
|
|
229
290
|
minWidth: width
|
|
@@ -232,7 +293,7 @@ function (_super) {
|
|
|
232
293
|
}
|
|
233
294
|
|
|
234
295
|
return _react.default.createElement("col", {
|
|
235
|
-
key: item.
|
|
296
|
+
key: item.key
|
|
236
297
|
});
|
|
237
298
|
}));
|
|
238
299
|
};
|
|
@@ -241,72 +302,53 @@ function (_super) {
|
|
|
241
302
|
var cls = _this.prefixCls;
|
|
242
303
|
var _a = _this.props,
|
|
243
304
|
columns = _a.columns,
|
|
244
|
-
onSelectedRowChange = _a.onSelectedRowChange,
|
|
245
305
|
sortName = _a.sortName,
|
|
246
|
-
isSortedDescending = _a.isSortedDescending
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
isSortedDescending: isSortedDescending,
|
|
260
|
-
onSort: _this.onSort
|
|
261
|
-
}));
|
|
262
|
-
})));
|
|
306
|
+
isSortedDescending = _a.isSortedDescending,
|
|
307
|
+
sortIcon = _a.sortIcon,
|
|
308
|
+
onSortChange = _a.onSortChange;
|
|
309
|
+
var rowSelection = _this.state.rowSelection;
|
|
310
|
+
return _react.default.createElement("thead", null, _react.default.createElement(_HeaderRow.default, {
|
|
311
|
+
prefixCls: cls,
|
|
312
|
+
columns: columns,
|
|
313
|
+
sortName: sortName,
|
|
314
|
+
isSortedDescending: isSortedDescending,
|
|
315
|
+
sortIcon: sortIcon,
|
|
316
|
+
onSortChange: onSortChange,
|
|
317
|
+
rowSelection: rowSelection
|
|
318
|
+
}));
|
|
263
319
|
};
|
|
264
320
|
|
|
265
321
|
_this.renderBody = function () {
|
|
266
322
|
var cls = _this.prefixCls;
|
|
323
|
+
var getRowKey = _this.getRowKey;
|
|
267
324
|
var _a = _this.props,
|
|
268
325
|
columns = _a.columns,
|
|
269
326
|
dataSource = _a.dataSource,
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
onChange: _this.onChange,
|
|
283
|
-
name: rowKey
|
|
284
|
-
})) : null, columns.map(function (subItem, subIndex) {
|
|
285
|
-
return _react.default.createElement(_BodyCell.default, __assign({
|
|
286
|
-
key: subItem.fieldName,
|
|
287
|
-
index: subIndex,
|
|
288
|
-
rowData: item
|
|
289
|
-
}, subItem));
|
|
290
|
-
}));
|
|
327
|
+
expandable = _a.expandable;
|
|
328
|
+
var _b = _this.state,
|
|
329
|
+
rowSelection = _b.rowSelection,
|
|
330
|
+
selectedRowKeys = _b.selectedRowKeys;
|
|
331
|
+
return _react.default.createElement("tbody", null, _react.default.createElement(_body.default, {
|
|
332
|
+
prefixCls: cls,
|
|
333
|
+
getRowKey: getRowKey,
|
|
334
|
+
columns: columns,
|
|
335
|
+
dataSource: dataSource,
|
|
336
|
+
expandable: expandable,
|
|
337
|
+
rowSelection: rowSelection,
|
|
338
|
+
selectedRowKeys: selectedRowKeys
|
|
291
339
|
}));
|
|
292
340
|
};
|
|
293
341
|
|
|
294
|
-
var
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
selectedRowKeys = defaultSelectedRowKeys.filter(function (item) {
|
|
301
|
-
return !!dataSource.find(function (j) {
|
|
302
|
-
return j[primaryKey] === item;
|
|
303
|
-
});
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
|
|
342
|
+
var rowSelection = props.rowSelection,
|
|
343
|
+
rowKey = props.rowKey;
|
|
344
|
+
_this.getRowKey = typeof rowKey === 'string' ? function (data) {
|
|
345
|
+
return data[rowKey];
|
|
346
|
+
} : rowKey;
|
|
347
|
+
var defaultSelectedRowKeys = rowSelection && rowSelection.defaultSelectedRowKeys ? rowSelection.defaultSelectedRowKeys : [];
|
|
307
348
|
_this.state = {
|
|
308
|
-
|
|
309
|
-
|
|
349
|
+
selectedRowKeys: defaultSelectedRowKeys,
|
|
350
|
+
selectedRows: _this.getSelectedRows(defaultSelectedRowKeys),
|
|
351
|
+
rowSelection: _this.getRowSelection()
|
|
310
352
|
};
|
|
311
353
|
return _this;
|
|
312
354
|
}
|
|
@@ -315,27 +357,6 @@ function (_super) {
|
|
|
315
357
|
this.addScrollListener();
|
|
316
358
|
};
|
|
317
359
|
|
|
318
|
-
Table.prototype.componentDidUpdate = function () {
|
|
319
|
-
var _a = this.props,
|
|
320
|
-
dataSource = _a.dataSource,
|
|
321
|
-
onSelectedRowChange = _a.onSelectedRowChange;
|
|
322
|
-
var _b = this.state,
|
|
323
|
-
isSelectedAll = _b.isSelectedAll,
|
|
324
|
-
selectedRowKeys = _b.selectedRowKeys;
|
|
325
|
-
|
|
326
|
-
if (onSelectedRowChange && !(0, _utils.isEmptyArray)(dataSource)) {
|
|
327
|
-
if ((0, _utils.isEmptyArray)(selectedRowKeys) && isSelectedAll) {
|
|
328
|
-
this.setState({
|
|
329
|
-
isSelectedAll: false
|
|
330
|
-
});
|
|
331
|
-
} else if (selectedRowKeys.length === dataSource.length && !isSelectedAll) {
|
|
332
|
-
this.setState({
|
|
333
|
-
isSelectedAll: true
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
};
|
|
338
|
-
|
|
339
360
|
Table.prototype.componentWillUnmount = function () {
|
|
340
361
|
if (this.scrollHandler) {
|
|
341
362
|
this.scrollHandler.remove();
|
|
@@ -375,7 +396,8 @@ function (_super) {
|
|
|
375
396
|
|
|
376
397
|
Table.defaultProps = {
|
|
377
398
|
fixedHeader: false,
|
|
378
|
-
loading: false
|
|
399
|
+
loading: false,
|
|
400
|
+
rowKey: 'key'
|
|
379
401
|
};
|
|
380
402
|
return Table;
|
|
381
403
|
}(_react.default.Component);
|
package/lib/table/interface.d.ts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export interface
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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%}}
|