@teamix/pro 1.5.24 → 1.5.26-beta-2
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/dist/pro.all.min.css +1 -1
- package/dist/pro.css +1 -1
- package/dist/pro.js +25836 -22015
- package/dist/pro.min.css +1 -1
- package/dist/pro.min.js +1 -1
- package/dist/pro.xconsole.min.css +1 -1
- package/es/card/index.scss +4 -0
- package/es/form/Components/FormItem2/index.js +1 -2
- package/es/form/SchemaForm/adapterType.js +3 -0
- package/es/form/fieldTypeMap.js +3 -0
- package/es/form/global.scss +7 -0
- package/es/index.d.ts +1 -1
- package/es/index.js +10 -1
- package/es/table/components/Cell/index.d.ts +17 -0
- package/es/table/components/Cell/index.js +191 -0
- package/es/table/components/Filter/index.js +3 -3
- package/es/table/components/Layout/index.js +9 -7
- package/es/table/components/Pagination/index.d.ts +5 -4
- package/es/table/components/Pagination/index.js +5 -3
- package/es/table/components/TableContent/index.d.ts +8 -0
- package/es/table/components/TableContent/index.js +23 -0
- package/es/table/components/ToolBar/index.js +1 -1
- package/es/table/index.js +172 -136
- package/es/table/index.scss +27 -0
- package/es/table/typing.d.ts +9 -1
- package/es/table/utils/columnRender.d.ts +1 -0
- package/es/table/utils/columnRender.js +41 -1
- package/es/table/utils/genAutoWidthColumns.d.ts +30 -0
- package/es/table/utils/genAutoWidthColumns.js +353 -0
- package/es/table/utils/genProColumnToColumn.js +11 -2
- package/es/table/utils/processColumns.d.ts +8 -0
- package/es/table/utils/processColumns.js +39 -0
- package/es/table/xconsole.scss +6 -0
- package/lib/card/index.scss +4 -0
- package/lib/form/Components/FormItem2/index.js +1 -2
- package/lib/form/SchemaForm/adapterType.js +3 -0
- package/lib/form/fieldTypeMap.js +3 -0
- package/lib/form/global.scss +7 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.js +11 -2
- package/lib/table/components/Cell/index.d.ts +17 -0
- package/lib/table/components/Cell/index.js +196 -0
- package/lib/table/components/Filter/index.js +3 -3
- package/lib/table/components/Layout/index.js +8 -6
- package/lib/table/components/Pagination/index.d.ts +5 -4
- package/lib/table/components/Pagination/index.js +4 -2
- package/lib/table/components/TableContent/index.d.ts +8 -0
- package/lib/table/components/TableContent/index.js +34 -0
- package/lib/table/components/ToolBar/index.js +1 -1
- package/lib/table/index.js +174 -138
- package/lib/table/index.scss +27 -0
- package/lib/table/typing.d.ts +9 -1
- package/lib/table/utils/columnRender.d.ts +1 -0
- package/lib/table/utils/columnRender.js +44 -3
- package/lib/table/utils/genAutoWidthColumns.d.ts +30 -0
- package/lib/table/utils/genAutoWidthColumns.js +368 -0
- package/lib/table/utils/genProColumnToColumn.js +10 -1
- package/lib/table/utils/processColumns.d.ts +8 -0
- package/lib/table/utils/processColumns.js +46 -0
- package/lib/table/xconsole.scss +6 -0
- package/package.json +1 -1
package/es/table/index.js
CHANGED
@@ -1,10 +1,13 @@
|
|
1
|
-
var _excluded = ["header", "className", "tableClassName", "mainAction", "extra", "dataFilter", "afterDataFilter", "toolBar", "columns", "useRowSelection", "rowSelection", "onChangeRowSelection", "getRowSelection", "primaryKey", "footerAction", "footer", "url", "pageKey", "pageSizeKey", "method", "params", "formatSort", "formatParams", "formatResult", "requestConfig", "requestWhenMount", "showPagination", "pageSizeList", "responsivePaginationType", "showSkeleton", "skeletonSize", "actionRef", "dataSource", "filterDebounce", "footerSuction", "autoRefresh", "autoRefreshProps", "customRequest", "filterColumnType", "defaultFilterParams", "reserveSelectedRecords", "size", "disableSelectAll", "context", "fixedTableBody", "isTree", "toolBarAutoWidth", "data-teamix-spm", "switchCardView", "cardViewProps", "defaultView", "emptyProps", "bindUrlProps", "bindUrl", "autoRedirect", "useMaxData"],
|
2
|
-
_excluded2 = ["onChange"];
|
1
|
+
var _excluded = ["header", "className", "tableClassName", "mainAction", "extra", "dataFilter", "afterDataFilter", "toolBar", "columns", "useRowSelection", "rowSelection", "onChangeRowSelection", "getRowSelection", "primaryKey", "footerAction", "footer", "url", "pageKey", "pageSizeKey", "method", "params", "formatSort", "formatParams", "formatResult", "requestConfig", "requestWhenMount", "showPagination", "pageSizeList", "responsivePaginationType", "showSkeleton", "skeletonSize", "actionRef", "dataSource", "filterDebounce", "footerSuction", "autoRefresh", "autoRefreshProps", "customRequest", "filterColumnType", "defaultFilterParams", "reserveSelectedRecords", "size", "disableSelectAll", "context", "autoWidth", "fixedTableBody", "isTree", "toolBarAutoWidth", "data-teamix-spm", "switchCardView", "cardViewProps", "defaultView", "emptyProps", "bindUrlProps", "bindUrl", "autoRedirect", "useMaxData"],
|
2
|
+
_excluded2 = ["onChange", "onPageSizeChange"];
|
3
3
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
4
4
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
5
5
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
6
6
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
7
7
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
8
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
9
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
10
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
8
11
|
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
9
12
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
10
13
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
@@ -13,12 +16,10 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
13
16
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
14
17
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
15
18
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
16
|
-
|
17
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
18
|
-
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
19
|
-
import React, { useState, useEffect, useRef, useMemo } from 'react';
|
19
|
+
import React, { useState, useEffect, useRef, useMemo, useCallback } from 'react';
|
20
20
|
import { Table, Checkbox } from '@alicloudfe/components';
|
21
21
|
import Pagination from './components/Pagination';
|
22
|
+
import TableContent from './components/TableContent';
|
22
23
|
import genProColumnToColumn from './utils/genProColumnToColumn';
|
23
24
|
import { getGlobalConfig, useRequest, request as utilResquest, getDeepValue, getMessage, pickProps, usePrefixCls, getTargetValue } from '@teamix/utils';
|
24
25
|
import { ProSkeletonRaw as Skeleton } from '../skeleton';
|
@@ -26,53 +27,19 @@ import './index.scss';
|
|
26
27
|
import Layout from './components/Layout';
|
27
28
|
import { actionRefUseStateOn, emit, initActionRef, processDefaultFilter, useActionType } from './utils';
|
28
29
|
import getTableProps from './utils/getTableProps';
|
29
|
-
import getTableSortIcons from './utils/getTableSortIcons';
|
30
30
|
import useTableSelection from './utils/useTableSelection';
|
31
31
|
import FullScreen from './components/ToolBar/Fullscreen';
|
32
|
-
import { EmptyContent } from '@teamix/pro-field';
|
33
32
|
import { ProActionGroup } from '../actions';
|
34
33
|
import classNames from 'classnames';
|
35
34
|
import ProPageContainer from '../page-container';
|
35
|
+
import { genAutoWidthColumns, shadowContainer, shadowActionColumnContainer } from './utils/genAutoWidthColumns';
|
36
36
|
import debounce from 'lodash.debounce';
|
37
37
|
import CardView from './components/CardView';
|
38
38
|
import { useUrlState } from '@teamix/hooks';
|
39
39
|
import { getUrlStateFilter } from './utils/util';
|
40
|
+
import processColumns from './utils/processColumns';
|
40
41
|
export * from './typing';
|
41
42
|
var cls = usePrefixCls('teamix-pro-table');
|
42
|
-
/**
|
43
|
-
* 处理原生传入的 columns 以便于 选择列 方便处理
|
44
|
-
* @param columns 原生传入的 columns
|
45
|
-
* @returns
|
46
|
-
*/
|
47
|
-
var processColumns = function processColumns(columns, initialColumns) {
|
48
|
-
var _getGlobalConfig;
|
49
|
-
var globalFilterColumns = (_getGlobalConfig = getGlobalConfig('ProTable')) === null || _getGlobalConfig === void 0 ? void 0 : _getGlobalConfig.filterColumns;
|
50
|
-
var filterColumns = columns.filter(function (item) {
|
51
|
-
return item.columnFilters !== false && (item === null || item === void 0 ? void 0 : item.hidden) !== true && (!globalFilterColumns || globalFilterColumns(_objectSpread({}, item)));
|
52
|
-
});
|
53
|
-
// 处理只剩一列批量选择的情况下宽度错乱问题
|
54
|
-
if (filterColumns === null || filterColumns === void 0 ? void 0 : filterColumns.length) {
|
55
|
-
var _initialColumns$;
|
56
|
-
if ((filterColumns === null || filterColumns === void 0 ? void 0 : filterColumns.length) === 1) {
|
57
|
-
var _filterColumns$, _filterColumns$2;
|
58
|
-
if ((_filterColumns$ = filterColumns[0]) === null || _filterColumns$ === void 0 ? void 0 : _filterColumns$.width) {
|
59
|
-
delete filterColumns[0].width;
|
60
|
-
}
|
61
|
-
if ((_filterColumns$2 = filterColumns[0]) === null || _filterColumns$2 === void 0 ? void 0 : _filterColumns$2.lock) {
|
62
|
-
filterColumns[0].lock = false;
|
63
|
-
}
|
64
|
-
} else if (((_initialColumns$ = initialColumns[0]) === null || _initialColumns$ === void 0 ? void 0 : _initialColumns$.columnFilters) !== false) {
|
65
|
-
var _initialColumns$2, _initialColumns$3;
|
66
|
-
if ((_initialColumns$2 = initialColumns[0]) === null || _initialColumns$2 === void 0 ? void 0 : _initialColumns$2.width) {
|
67
|
-
filterColumns[0].width = initialColumns[0].width;
|
68
|
-
}
|
69
|
-
if ((_initialColumns$3 = initialColumns[0]) === null || _initialColumns$3 === void 0 ? void 0 : _initialColumns$3.lock) {
|
70
|
-
filterColumns[0].lock = initialColumns[0].lock;
|
71
|
-
}
|
72
|
-
}
|
73
|
-
}
|
74
|
-
return filterColumns;
|
75
|
-
};
|
76
43
|
/** 默认请求翻页参数 */
|
77
44
|
var globalPageKey = 'currentPage';
|
78
45
|
var globalPageSizeKey = 'pageSize';
|
@@ -86,6 +53,7 @@ var globalFormatSort = function globalFormatSort(sort) {
|
|
86
53
|
};
|
87
54
|
var ProTable = function ProTable(props) {
|
88
55
|
var _urlState$currentPage, _rowSelection$selecte;
|
56
|
+
console.log('ProTable 代理成功');
|
89
57
|
var header = props.header,
|
90
58
|
className = props.className,
|
91
59
|
tableClassName = props.tableClassName,
|
@@ -146,6 +114,8 @@ var ProTable = function ProTable(props) {
|
|
146
114
|
propsSize = _props$size === void 0 ? 'medium' : _props$size,
|
147
115
|
disableSelectAll = props.disableSelectAll,
|
148
116
|
context = props.context,
|
117
|
+
_props$autoWidth = props.autoWidth,
|
118
|
+
autoWidthProp = _props$autoWidth === void 0 ? true : _props$autoWidth,
|
149
119
|
_props$fixedTableBody = props.fixedTableBody,
|
150
120
|
fixedTableBody = _props$fixedTableBody === void 0 ? false : _props$fixedTableBody,
|
151
121
|
isTree = props.isTree,
|
@@ -195,7 +165,9 @@ var ProTable = function ProTable(props) {
|
|
195
165
|
_useState12 = _slicedToArray(_useState11, 2),
|
196
166
|
showSkeleton = _useState12[0],
|
197
167
|
setShowSkeleton = _useState12[1]; // 首次加载,渲染骨架屏
|
198
|
-
var skeletonDataSource =
|
168
|
+
var skeletonDataSource = useMemo(function () {
|
169
|
+
return new Array(skeletonSize).fill({});
|
170
|
+
}, [skeletonSize]);
|
199
171
|
var requestDataKey = method.toLowerCase() === 'get' ? 'params' : 'data';
|
200
172
|
// 如果使用 customRequest 的话,内置 loading
|
201
173
|
var _useState13 = useState(requestWhenMount),
|
@@ -209,6 +181,19 @@ var ProTable = function ProTable(props) {
|
|
209
181
|
_useState16 = _slicedToArray(_useState15, 2),
|
210
182
|
filteredColumns = _useState16[0],
|
211
183
|
setFilteredColumns = _useState16[1];
|
184
|
+
// 全局状态 : 自适应表格
|
185
|
+
var autoWidth = useMemo(function () {
|
186
|
+
var _getGlobalConfig;
|
187
|
+
return ((_getGlobalConfig = getGlobalConfig('ProTable')) === null || _getGlobalConfig === void 0 ? void 0 : _getGlobalConfig.autoWidth) || autoWidthProp;
|
188
|
+
}, [autoWidthProp]);
|
189
|
+
// 判断是否有操作列,有的话则渲染一个 shadow dom
|
190
|
+
var hasActionColumn = false;
|
191
|
+
if (autoWidth) {
|
192
|
+
hasActionColumn = filteredColumns.some(function (column) {
|
193
|
+
var _column$actionSchema, _column$actionSchema$;
|
194
|
+
return (column === null || column === void 0 ? void 0 : column.actionSchema) && ((_column$actionSchema = column.actionSchema) === null || _column$actionSchema === void 0 ? void 0 : (_column$actionSchema$ = _column$actionSchema.actions) === null || _column$actionSchema$ === void 0 ? void 0 : _column$actionSchema$.length) > 0;
|
195
|
+
});
|
196
|
+
}
|
212
197
|
var _useState17 = useState(propsSize),
|
213
198
|
_useState18 = _slicedToArray(_useState17, 2),
|
214
199
|
size = _useState18[0],
|
@@ -217,6 +202,13 @@ var ProTable = function ProTable(props) {
|
|
217
202
|
_useState20 = _slicedToArray(_useState19, 2),
|
218
203
|
showLoading = _useState20[0],
|
219
204
|
setShowLoading = _useState20[1];
|
205
|
+
// 自动计算列宽需要的一些hook
|
206
|
+
var _useState21 = useState(false),
|
207
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
208
|
+
showShadowContainer = _useState22[0],
|
209
|
+
setShowShadowContainer = _useState22[1];
|
210
|
+
var shadowContainerRef = useRef(null);
|
211
|
+
var shadowActionColumnContainerRef = useRef(null);
|
220
212
|
// 表格内部用作存储的 Ref,标识 Table 组件是否被第一次渲染。用作 useUrlState filter 第一次渲染时使用 state 数据请求
|
221
213
|
var dataRef = useRef({
|
222
214
|
flag: true
|
@@ -237,19 +229,19 @@ var ProTable = function ProTable(props) {
|
|
237
229
|
}, [currentPage, pageSize, urlState]);
|
238
230
|
// 存储能够被 on 监听到的 ProTable 状态
|
239
231
|
// 因为只做存储用。不需要更新视图以及需要同步更改。所以不使用 setState 更新
|
240
|
-
var
|
232
|
+
var _useState23 = useState({
|
241
233
|
fullScreenState: false,
|
242
234
|
filterRules: {},
|
243
235
|
filterColumns: []
|
244
236
|
}),
|
245
|
-
|
246
|
-
actionRefState =
|
237
|
+
_useState24 = _slicedToArray(_useState23, 1),
|
238
|
+
actionRefState = _useState24[0];
|
247
239
|
// 存储 on 监听事件
|
248
|
-
var
|
240
|
+
var _useState25 = useState({
|
249
241
|
fullScreenState: {}
|
250
242
|
}),
|
251
|
-
|
252
|
-
actionRefCallback =
|
243
|
+
_useState26 = _slicedToArray(_useState25, 1),
|
244
|
+
actionRefCallback = _useState26[0];
|
253
245
|
// 存储定时器 id
|
254
246
|
var autoRefreshTimerRef = useRef();
|
255
247
|
var onResize = null;
|
@@ -361,20 +353,20 @@ var ProTable = function ProTable(props) {
|
|
361
353
|
}, 50);
|
362
354
|
};
|
363
355
|
// header 区域高度。用作全屏计算吸顶吸底高度。默认不做计算
|
364
|
-
var
|
365
|
-
_useState26 = _slicedToArray(_useState25, 2),
|
366
|
-
headerHeight = _useState26[0],
|
367
|
-
setHeaderHeight = _useState26[1];
|
368
|
-
// 全屏显示 className
|
369
|
-
var _useState27 = useState(false),
|
356
|
+
var _useState27 = useState(0),
|
370
357
|
_useState28 = _slicedToArray(_useState27, 2),
|
371
|
-
|
372
|
-
|
373
|
-
//
|
374
|
-
var _useState29 = useState(
|
358
|
+
headerHeight = _useState28[0],
|
359
|
+
setHeaderHeight = _useState28[1];
|
360
|
+
// 全屏显示 className
|
361
|
+
var _useState29 = useState(false),
|
375
362
|
_useState30 = _slicedToArray(_useState29, 2),
|
376
|
-
|
377
|
-
|
363
|
+
fullscreenState = _useState30[0],
|
364
|
+
setFullscreenState = _useState30[1];
|
365
|
+
// 切换视角
|
366
|
+
var _useState31 = useState(defaultView !== null && defaultView !== void 0 ? defaultView : 'table'),
|
367
|
+
_useState32 = _slicedToArray(_useState31, 2),
|
368
|
+
switchViewState = _useState32[0],
|
369
|
+
setSwitchViewState = _useState32[1];
|
378
370
|
// 切换全屏搜索开关
|
379
371
|
var filterEnableRef = useRef({
|
380
372
|
fullscreen: false,
|
@@ -394,10 +386,10 @@ var ProTable = function ProTable(props) {
|
|
394
386
|
var dataFilterFormRef = !fullscreenState ? normalDataFilterFormRef : fullscreenDataFilterFormRef;
|
395
387
|
// let dataFilterForm = dataFilterFormRef.current;
|
396
388
|
// 整个内容区是否超过一屏。用于表格在非全屏模式下的吸底
|
397
|
-
var
|
398
|
-
|
399
|
-
footerSuctionState =
|
400
|
-
setFooterSuctionState =
|
389
|
+
var _useState33 = useState(false),
|
390
|
+
_useState34 = _slicedToArray(_useState33, 2),
|
391
|
+
footerSuctionState = _useState34[0],
|
392
|
+
setFooterSuctionState = _useState34[1];
|
401
393
|
// TODO 获取内容区是否超出一屏(暂时仅支持全家桶)
|
402
394
|
var getFooterSuctionState = function getFooterSuctionState() {
|
403
395
|
if (!footerSuction) {
|
@@ -548,6 +540,9 @@ var ProTable = function ProTable(props) {
|
|
548
540
|
setFullscreenState(state);
|
549
541
|
getHeaderHeight(state);
|
550
542
|
actionRef === null || actionRef === void 0 ? void 0 : (_actionRef$current2 = actionRef.current) === null || _actionRef$current2 === void 0 ? void 0 : (_actionRef$current2$s = _actionRef$current2.setState) === null || _actionRef$current2$s === void 0 ? void 0 : _actionRef$current2$s.call(_actionRef$current2, 'fullScreenState', state);
|
543
|
+
if (autoWidth) {
|
544
|
+
reGenFilteredColumnsByAutoWidth();
|
545
|
+
}
|
551
546
|
return state;
|
552
547
|
},
|
553
548
|
setColumn: function setColumn(newColumns) {
|
@@ -559,10 +554,16 @@ var ProTable = function ProTable(props) {
|
|
559
554
|
if (update) {
|
560
555
|
emit('refreshFilterState', newColumns);
|
561
556
|
}
|
557
|
+
if (autoWidth) {
|
558
|
+
reGenFilteredColumnsByAutoWidth(columns);
|
559
|
+
}
|
562
560
|
},
|
563
561
|
size: size,
|
564
562
|
setSize: function setSize(mode) {
|
565
563
|
_setSize(mode);
|
564
|
+
if (autoWidth) {
|
565
|
+
reGenFilteredColumnsByAutoWidth();
|
566
|
+
}
|
566
567
|
},
|
567
568
|
refresh: function refresh(params) {
|
568
569
|
// card视角的刷新等于重新请求
|
@@ -626,6 +627,9 @@ var ProTable = function ProTable(props) {
|
|
626
627
|
filterEnableRef: filterEnableRef,
|
627
628
|
setData: function setData(data) {
|
628
629
|
_setData(data);
|
630
|
+
if (autoWidth) {
|
631
|
+
reGenFilteredColumnsByAutoWidth();
|
632
|
+
}
|
629
633
|
},
|
630
634
|
resetTableMaxBodyHeight: function resetTableMaxBodyHeight(offset) {
|
631
635
|
getHeaderHeight(fullscreenState, offset);
|
@@ -672,6 +676,21 @@ var ProTable = function ProTable(props) {
|
|
672
676
|
if (propsActionRef) {
|
673
677
|
propsActionRef.current = actionRef.current;
|
674
678
|
}
|
679
|
+
function reGenFilteredColumnsByAutoWidth(columns) {
|
680
|
+
if (!autoWidth) {
|
681
|
+
return;
|
682
|
+
}
|
683
|
+
setShowShadowContainer(true);
|
684
|
+
var authWidthedColumns = genAutoWidthColumns(columns !== null && columns !== void 0 ? columns : filteredColumns, shadowContainerRef, data, size, useRowSelection, shadowActionColumnContainerRef);
|
685
|
+
setFilteredColumns(authWidthedColumns);
|
686
|
+
// 移除 shadow dom
|
687
|
+
// setTimeout(() => {
|
688
|
+
// if (document.querySelector('.teamix-pro-table-shadow-container')) {
|
689
|
+
// document.querySelector('.teamix-pro-table-shadow-container')?.remove();
|
690
|
+
// }
|
691
|
+
// }, 0);
|
692
|
+
}
|
693
|
+
|
675
694
|
function onFormatResult(next) {
|
676
695
|
props.onFormatResult && props.onFormatResult(next);
|
677
696
|
// 如果开启了 autoRedirect 当当前页数不为1,并且data为空的时候,重定向到第一页
|
@@ -711,6 +730,9 @@ var ProTable = function ProTable(props) {
|
|
711
730
|
setTotal(total + (next.total || ((_next$data3 = next.data) === null || _next$data3 === void 0 ? void 0 : _next$data3.length)));
|
712
731
|
}
|
713
732
|
setShowSkeleton(false);
|
733
|
+
if (autoWidth) {
|
734
|
+
reGenFilteredColumnsByAutoWidth();
|
735
|
+
}
|
714
736
|
}
|
715
737
|
// 请求表格数据工具函数
|
716
738
|
var getData = useRequest(function (params) {
|
@@ -777,7 +799,7 @@ var ProTable = function ProTable(props) {
|
|
777
799
|
}
|
778
800
|
});
|
779
801
|
// 请求函数
|
780
|
-
|
802
|
+
var _request = useCallback(function (params, noLoading, filterParams, isReset) {
|
781
803
|
var _dataFilterFormRef$cu2, _actionRef$current$ge, _actionRef$current6, _actionRef$current6$g, _objectSpread3;
|
782
804
|
// 首次渲染表格,获取 urlState 上的 表头 filter 数据
|
783
805
|
if (bindUrl && (bindUrlProps === null || bindUrlProps === void 0 ? void 0 : bindUrlProps.headerFilters) !== false && dataRef.current.flag) {
|
@@ -857,6 +879,9 @@ var ProTable = function ProTable(props) {
|
|
857
879
|
_setData([].concat(_toConsumableArray(data), _toConsumableArray(dataRes || [])));
|
858
880
|
setTotal(total + (totalRes || (dataRes === null || dataRes === void 0 ? void 0 : dataRes.length)));
|
859
881
|
}
|
882
|
+
if (autoWidth) {
|
883
|
+
reGenFilteredColumnsByAutoWidth();
|
884
|
+
}
|
860
885
|
setShowSkeleton(false);
|
861
886
|
setCustomTableLoading(false);
|
862
887
|
}
|
@@ -878,7 +903,7 @@ var ProTable = function ProTable(props) {
|
|
878
903
|
if (Number.isInteger(time) && time >= 1000) {
|
879
904
|
autoRefreshTimerRef.current = setTimeout(function () {
|
880
905
|
// 自动刷新不显示 loading
|
881
|
-
_request(
|
906
|
+
_request(params, true);
|
882
907
|
}, Number(time));
|
883
908
|
emit('PRO_TABLE_REFRESH_TIMER_FLAG', Number(time));
|
884
909
|
}
|
@@ -889,57 +914,64 @@ var ProTable = function ProTable(props) {
|
|
889
914
|
getData.run(requestData);
|
890
915
|
}
|
891
916
|
}
|
892
|
-
}
|
893
|
-
|
917
|
+
}, [bindUrl, bindUrlProps, dataRef, url, customRequest]);
|
918
|
+
var onSort = useCallback(function (dataIndex, order) {
|
894
919
|
var nextSort = _defineProperty({}, dataIndex, order);
|
895
920
|
setSort(nextSort);
|
896
921
|
_request(targetFormatSort(nextSort));
|
897
|
-
}
|
922
|
+
}, [_request, targetFormatSort]);
|
898
923
|
// 处理 dataFilter 中的 onFilter、onReset
|
899
|
-
var dataFilter =
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
filterEnableRef.current.fullscreen
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
filterEnableRef.current.normal
|
920
|
-
|
924
|
+
var dataFilter = useMemo(function () {
|
925
|
+
return _objectSpread(_objectSpread({
|
926
|
+
mode: 'inline',
|
927
|
+
forceClear: true
|
928
|
+
}, propsDataFilter), {}, {
|
929
|
+
onInit: (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onInit) || requestWhenMount ? function (values) {
|
930
|
+
var _propsDataFilter$onIn;
|
931
|
+
// 表单初始化请求处理
|
932
|
+
propsDataFilter === null || propsDataFilter === void 0 ? void 0 : (_propsDataFilter$onIn = propsDataFilter.onInit) === null || _propsDataFilter$onIn === void 0 ? void 0 : _propsDataFilter$onIn.call(propsDataFilter, values);
|
933
|
+
!fullscreenState && requestWhenMount && _request({}, false, values);
|
934
|
+
return true;
|
935
|
+
} : undefined,
|
936
|
+
onFilter: function onFilter(values) {
|
937
|
+
var _actionRef$current7, _actionRef$current7$c;
|
938
|
+
// 全屏状态,判断全屏表单onFilter是否禁用
|
939
|
+
if (fullscreenState && !filterEnableRef.current.fullscreen) {
|
940
|
+
filterEnableRef.current.fullscreen = true;
|
941
|
+
return;
|
942
|
+
}
|
943
|
+
// 非全屏状态,判断普通表单onFiler是否禁用
|
944
|
+
if (!fullscreenState && !filterEnableRef.current.normal) {
|
945
|
+
filterEnableRef.current.normal = true;
|
946
|
+
return;
|
947
|
+
}
|
948
|
+
(propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onFilter) && (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onFilter(values));
|
949
|
+
// 搜索变化时,暂时先清空选择
|
950
|
+
(_actionRef$current7 = actionRef.current) === null || _actionRef$current7 === void 0 ? void 0 : (_actionRef$current7$c = _actionRef$current7.clearRowSelection) === null || _actionRef$current7$c === void 0 ? void 0 : _actionRef$current7$c.call(_actionRef$current7);
|
951
|
+
setCurrentPage(1);
|
952
|
+
_request(_defineProperty({}, targetPageKey, 1), false, values);
|
953
|
+
},
|
954
|
+
onReset: function onReset(values) {
|
955
|
+
var _dataFilterFormRef$cu3;
|
956
|
+
(propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset) && (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset());
|
957
|
+
(_dataFilterFormRef$cu3 = dataFilterFormRef.current) === null || _dataFilterFormRef$cu3 === void 0 ? void 0 : _dataFilterFormRef$cu3.reset();
|
958
|
+
setCurrentPage(1);
|
959
|
+
_request(_defineProperty({}, targetPageKey, 1), false, values);
|
921
960
|
}
|
922
|
-
|
923
|
-
|
924
|
-
|
925
|
-
setCurrentPage(1);
|
926
|
-
_request(_defineProperty({}, targetPageKey, 1), false, values);
|
927
|
-
},
|
928
|
-
onReset: function onReset(values) {
|
929
|
-
var _dataFilterFormRef$cu3;
|
930
|
-
(propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset) && (propsDataFilter === null || propsDataFilter === void 0 ? void 0 : propsDataFilter.onReset());
|
931
|
-
(_dataFilterFormRef$cu3 = dataFilterFormRef.current) === null || _dataFilterFormRef$cu3 === void 0 ? void 0 : _dataFilterFormRef$cu3.reset();
|
932
|
-
setCurrentPage(1);
|
933
|
-
_request(_defineProperty({}, targetPageKey, 1), false, values);
|
934
|
-
}
|
935
|
-
});
|
936
|
-
var getTableLoading = function getTableLoading() {
|
961
|
+
});
|
962
|
+
}, [propsDataFilter, fullscreenState, filterEnableRef, actionRef]);
|
963
|
+
var isLoading = useMemo(function () {
|
937
964
|
if (!customRequest) {
|
938
965
|
return showLoading && !showSkeleton && (getData.loading || props.loading);
|
939
966
|
} else {
|
940
967
|
return showLoading && !showSkeleton && (customTableLoading || props.loading);
|
941
968
|
}
|
942
|
-
};
|
969
|
+
}, [customRequest, showLoading, showSkeleton, customTableLoading, props.loading, getData]);
|
970
|
+
var memorizedGenProColumnToColumn = useMemo(function () {
|
971
|
+
return genProColumnToColumn(filteredColumns, showSkeleton, actionRef, context, dataTeamixSpm, bindUrl, bindUrlProps);
|
972
|
+
}, [
|
973
|
+
// filteredColumns,
|
974
|
+
showSkeleton, actionRef, context, dataTeamixSpm, bindUrl, bindUrlProps]);
|
943
975
|
var renderTable = function renderTable(isFullScreen) {
|
944
976
|
if (propsColumns) {
|
945
977
|
return /*#__PURE__*/React.createElement("div", {
|
@@ -966,11 +998,11 @@ var ProTable = function ProTable(props) {
|
|
966
998
|
autoRefreshProps: autoRefreshProps,
|
967
999
|
bindUrlProps: bindUrlProps,
|
968
1000
|
bindUrl: bindUrl
|
969
|
-
}), switchViewState === 'table' && /*#__PURE__*/React.createElement(
|
1001
|
+
}), switchViewState === 'table' && /*#__PURE__*/React.createElement(TableContent, _objectSpread({
|
970
1002
|
hasBorder: false,
|
971
1003
|
dataSource: showSkeleton ? skeletonDataSource : data || props.dataSource,
|
972
|
-
columns:
|
973
|
-
loading:
|
1004
|
+
columns: memorizedGenProColumnToColumn,
|
1005
|
+
loading: isLoading,
|
974
1006
|
className: classNames('teamix-pro-table', tableClassName, {
|
975
1007
|
'with-row-select': rowSelection,
|
976
1008
|
'teamix-pro-tree-table': isTree
|
@@ -981,14 +1013,12 @@ var ProTable = function ProTable(props) {
|
|
981
1013
|
sort: sort,
|
982
1014
|
primaryKey: primaryKey,
|
983
1015
|
rowSelection: rowSelection,
|
984
|
-
emptyContent: /*#__PURE__*/React.createElement(EmptyContent, _objectSpread({}, emptyProps)),
|
985
|
-
sortIcons: getTableSortIcons(),
|
986
1016
|
fixedHeader: fullscreenState || fixedTableBody,
|
987
1017
|
maxBodyHeight: "calc(100vh - ".concat(headerHeight, "px)")
|
988
1018
|
}, pickProps(getTableProps(), otherProps))), switchViewState === 'card' && /*#__PURE__*/React.createElement(CardView, {
|
989
1019
|
dataSource: showSkeleton ? skeletonDataSource : data || props.dataSource,
|
990
1020
|
showSkeleton: showSkeleton,
|
991
|
-
loading:
|
1021
|
+
loading: isLoading,
|
992
1022
|
originColumns: propsColumns,
|
993
1023
|
cardViewProps: cardViewProps,
|
994
1024
|
scrollHeight: fullscreenState || fixedTableBody ? "calc(100vh - ".concat(headerHeight, "px)") : undefined,
|
@@ -1030,28 +1060,28 @@ var ProTable = function ProTable(props) {
|
|
1030
1060
|
})));
|
1031
1061
|
} else return footerAction;
|
1032
1062
|
};
|
1033
|
-
var
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
(_actionRef$current8 = actionRef.current) === null || _actionRef$current8 === void 0 ? void 0 : (_actionRef$current8$c = _actionRef$current8.clearRowSelection) === null || _actionRef$current8$c === void 0 ? void 0 : _actionRef$current8$c.call(_actionRef$current8);
|
1040
|
-
}
|
1041
|
-
setCurrentPage(currentPage);
|
1042
|
-
_request(_objectSpread(_defineProperty({}, targetPageKey, currentPage), params));
|
1063
|
+
var onChangePagination = useCallback(function (currentPage) {
|
1064
|
+
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
1065
|
+
// 翻页默认清空选择
|
1066
|
+
if (!reserveSelectedRecords) {
|
1067
|
+
var _actionRef$current8, _actionRef$current8$c;
|
1068
|
+
(_actionRef$current8 = actionRef.current) === null || _actionRef$current8 === void 0 ? void 0 : (_actionRef$current8$c = _actionRef$current8.clearRowSelection) === null || _actionRef$current8$c === void 0 ? void 0 : _actionRef$current8$c.call(_actionRef$current8);
|
1043
1069
|
}
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
_request((_request10 = {}, _defineProperty(_request10, targetPageSizeKey, currentPageSize), _defineProperty(_request10, targetPageKey, 1), _request10));
|
1070
|
+
setCurrentPage(currentPage);
|
1071
|
+
_request(_objectSpread(_defineProperty({}, targetPageKey, currentPage), params));
|
1072
|
+
}, [reserveSelectedRecords, targetPageKey, actionRef]);
|
1073
|
+
var onChangePaginationSize = useCallback(function (currentPageSize) {
|
1074
|
+
var _request10;
|
1075
|
+
// 翻页默认清空选择
|
1076
|
+
if (!reserveSelectedRecords) {
|
1077
|
+
var _actionRef$current9, _actionRef$current9$c;
|
1078
|
+
(_actionRef$current9 = actionRef.current) === null || _actionRef$current9 === void 0 ? void 0 : (_actionRef$current9$c = _actionRef$current9.clearRowSelection) === null || _actionRef$current9$c === void 0 ? void 0 : _actionRef$current9$c.call(_actionRef$current9);
|
1054
1079
|
}
|
1080
|
+
setPageSize(currentPageSize);
|
1081
|
+
setCurrentPage(1);
|
1082
|
+
_request((_request10 = {}, _defineProperty(_request10, targetPageSizeKey, currentPageSize), _defineProperty(_request10, targetPageKey, 1), _request10));
|
1083
|
+
}, [reserveSelectedRecords, actionRef, targetPageSizeKey, targetPageKey]);
|
1084
|
+
var renderFooter = function renderFooter() {
|
1055
1085
|
function renderRowSelection() {
|
1056
1086
|
if (rowSelection) {
|
1057
1087
|
if (showSkeleton) {
|
@@ -1085,6 +1115,7 @@ var ProTable = function ProTable(props) {
|
|
1085
1115
|
var _props$paginationProp3;
|
1086
1116
|
var _ref8 = (_props$paginationProp3 = props === null || props === void 0 ? void 0 : props.paginationProps) !== null && _props$paginationProp3 !== void 0 ? _props$paginationProp3 : {},
|
1087
1117
|
onPaginationPropsChange = _ref8.onChange,
|
1118
|
+
onPageSizeChangeProp = _ref8.onPageSizeChange,
|
1088
1119
|
othersPaginationProps = _objectWithoutProperties(_ref8, _excluded2);
|
1089
1120
|
return /*#__PURE__*/React.createElement("div", {
|
1090
1121
|
className: cls('footer', {
|
@@ -1109,7 +1140,8 @@ var ProTable = function ProTable(props) {
|
|
1109
1140
|
pageSizeSelector: total > (props.pageSize || 10) * 2 ? 'dropdown' : false,
|
1110
1141
|
type: total / pageSize <= 2 ? 'simple' : 'normal',
|
1111
1142
|
onPageSizeChange: function onPageSizeChange(number) {
|
1112
|
-
|
1143
|
+
onChangePaginationSize(number);
|
1144
|
+
onPageSizeChangeProp === null || onPageSizeChangeProp === void 0 ? void 0 : onPageSizeChangeProp(number);
|
1113
1145
|
},
|
1114
1146
|
useMaxData: globalUseMaxData !== null && globalUseMaxData !== void 0 ? globalUseMaxData : useMaxData
|
1115
1147
|
}, othersPaginationProps)))));
|
@@ -1147,7 +1179,11 @@ var ProTable = function ProTable(props) {
|
|
1147
1179
|
// 'footer-suction': footerSuctionState && footerSuction,
|
1148
1180
|
}),
|
1149
1181
|
ref: tableRef
|
1150
|
-
},
|
1182
|
+
}, showShadowContainer && shadowContainer({
|
1183
|
+
columns: filteredColumns,
|
1184
|
+
data: data,
|
1185
|
+
shadowContainerRef: shadowContainerRef
|
1186
|
+
}), hasActionColumn && shadowActionColumnContainer(filteredColumns, shadowActionColumnContainerRef), renderTable(isFullScreen), fixFooterState && /*#__PURE__*/React.createElement(ProPageContainer.FixedFooter, null, renderFooter()), !fixFooterState && renderFooter());
|
1151
1187
|
});
|
1152
1188
|
};
|
1153
1189
|
export default ProTable;
|
package/es/table/index.scss
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
@import "xconsole";
|
1
2
|
$prefix: 'teamix-pro-table';
|
2
3
|
$fullscreenPadding: 24px;
|
3
4
|
|
@@ -77,6 +78,32 @@ $fullscreenPadding: 24px;
|
|
77
78
|
transition: all 0.1s;
|
78
79
|
}
|
79
80
|
}
|
81
|
+
&-shadow-container {
|
82
|
+
overflow: hidden;
|
83
|
+
position: absolute;
|
84
|
+
right: 0;
|
85
|
+
left: 0;
|
86
|
+
top: 0;
|
87
|
+
visibility: hidden;
|
88
|
+
pointer-events: none;
|
89
|
+
}
|
90
|
+
&-shadow-container-columns {
|
91
|
+
display: flex;
|
92
|
+
>* {
|
93
|
+
flex-shrink: 0;
|
94
|
+
}
|
95
|
+
}
|
96
|
+
&-action-column-shadow-container {
|
97
|
+
overflow: hidden;
|
98
|
+
position: absolute;
|
99
|
+
right: 0;
|
100
|
+
left: 0;
|
101
|
+
top: 0;
|
102
|
+
visibility: hidden;
|
103
|
+
pointer-events: none;
|
104
|
+
display: flex;
|
105
|
+
}
|
106
|
+
|
80
107
|
// sort icon
|
81
108
|
.next-table-sort.next-table-header-icon {
|
82
109
|
line-height: 16px;
|
package/es/table/typing.d.ts
CHANGED
@@ -13,7 +13,7 @@ import { ProCardProps } from '../card';
|
|
13
13
|
declare type IFieldRenderProps = keyof ProFieldRenderProps;
|
14
14
|
/** 列record函数 */
|
15
15
|
declare type ProTableCellFunProp = (value: any, index: number, record: any, ...others: any) => any;
|
16
|
-
declare type ITableCellRender = {
|
16
|
+
export declare type ITableCellRender = {
|
17
17
|
[key in IFieldRenderProps]?: ProFieldRenderProps[key] | ProTableCellFunProp;
|
18
18
|
} | ((...other: any) => React.ReactNode);
|
19
19
|
declare type TDataService = {
|
@@ -24,6 +24,12 @@ declare type TDataService = {
|
|
24
24
|
};
|
25
25
|
export declare type responsivePaginationType = 'mini' | 'small' | 'simple' | 'normal';
|
26
26
|
export declare type ProTableColumnProps = {
|
27
|
+
/** 是否开启了自动计算宽度 */
|
28
|
+
isAutoWidth?: boolean;
|
29
|
+
/** 自动计算宽度时的被挤占的情况 */
|
30
|
+
shrink?: number;
|
31
|
+
/** 是否自动适应该列宽度 */
|
32
|
+
autoWidth?: boolean;
|
27
33
|
/**
|
28
34
|
* 会在 title 之后展示一个 icon,hover 之后提示一些信息
|
29
35
|
*/
|
@@ -65,6 +71,8 @@ export declare type ProTableColumnProps = {
|
|
65
71
|
} & Omit<ColumnProps, 'filters' | 'dataIndex' | 'filtersMode' | 'children'>;
|
66
72
|
export declare type ProColumnProps = ProTableColumnProps;
|
67
73
|
export declare type ProTableProps = {
|
74
|
+
/** 表格是否自适应宽度 */
|
75
|
+
autoWidth?: boolean;
|
68
76
|
/** ProColums 定义,取代 Table 的 columns */
|
69
77
|
columns: ProTableColumnProps[];
|
70
78
|
/** 请求地址 */
|
@@ -11,3 +11,4 @@ export declare const renderColumnsTitle: (item: ProTableColumnProps, actionRef:
|
|
11
11
|
* 负责单元格的具体渲染
|
12
12
|
*/
|
13
13
|
export declare const renderCell: (value: any, item: ProTableColumnProps, index: number, record: any, actionRef: React.MutableRefObject<ProTableActionType | undefined>, context?: any, dataTeamixSpm?: string) => JSX.Element;
|
14
|
+
export declare const renderCellSmartWidth: (value: any, item: ProTableColumnProps, index: number, record: any) => 0 | import("@teamix/pro-field/lib/autoWidth/typing").ProFieldAutoWidthPropsItem;
|