@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
@@ -19,6 +19,7 @@ import { getTargetValue } from '@teamix/utils';
|
|
19
19
|
import { ProActionGroup } from '../../actions';
|
20
20
|
import ProField, { LabelIconTip } from '../../field';
|
21
21
|
import Filter from '../components/Filter';
|
22
|
+
import { getProFieldWidth } from '@teamix/pro-field';
|
22
23
|
/**
|
23
24
|
* 增加了 icon 的功能 render title
|
24
25
|
*/
|
@@ -183,9 +184,48 @@ dataTeamixSpm) {
|
|
183
184
|
value: value,
|
184
185
|
render: newRender,
|
185
186
|
dataSource: newDataSource,
|
186
|
-
format: format
|
187
|
+
format: format,
|
188
|
+
proFieldWidthType: valueType
|
187
189
|
}, props));
|
188
190
|
};
|
191
|
+
export var renderCellSmartWidth = function renderCellSmartWidth(value, item, index, record) {
|
192
|
+
var _item$valueType2 = item.valueType,
|
193
|
+
valueType = _item$valueType2 === void 0 ? 'text' : _item$valueType2,
|
194
|
+
render = item.render;
|
195
|
+
var newRender = null;
|
196
|
+
var newDataSource = null;
|
197
|
+
var props = item.props;
|
198
|
+
// 如果 render 直接传函数
|
199
|
+
if (typeof render === 'function') {
|
200
|
+
newRender = function newRender() {
|
201
|
+
return render === null || render === void 0 ? void 0 : render(value, index, record);
|
202
|
+
};
|
203
|
+
} else {
|
204
|
+
newRender = processBuriedPoint(processRenderFunction(render, value, index, record), record, value, index);
|
205
|
+
if (valueType === 'selectGroup') {
|
206
|
+
newRender = _objectSpread(_objectSpread({
|
207
|
+
maxShowNumber: 'auto',
|
208
|
+
foldText: 'more',
|
209
|
+
editOnClick: function editOnClick() {},
|
210
|
+
edit: true
|
211
|
+
}, newRender), {}, {
|
212
|
+
ellipsis: false
|
213
|
+
});
|
214
|
+
props = _objectSpread({
|
215
|
+
valueAlias: {
|
216
|
+
value: 'TagValue',
|
217
|
+
key: 'TagKey'
|
218
|
+
}
|
219
|
+
}, props);
|
220
|
+
}
|
221
|
+
if ((render === null || render === void 0 ? void 0 : render.type) === 'step') {
|
222
|
+
newRender = _objectSpread(_objectSpread({}, newRender), {}, {
|
223
|
+
ellipsis: false
|
224
|
+
});
|
225
|
+
}
|
226
|
+
}
|
227
|
+
return getProFieldWidth(valueType, newRender);
|
228
|
+
};
|
189
229
|
/**
|
190
230
|
* 处理 render 配置项是函数的情况
|
191
231
|
* @param render ProFieldRender
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { MutableRefObject } from 'react';
|
2
|
+
import { ProTableColumnProps, ITableCellRender } from '../typing';
|
3
|
+
/**
|
4
|
+
* @param fileteredColumns
|
5
|
+
* @param ref
|
6
|
+
* @param data
|
7
|
+
* @returns
|
8
|
+
*/
|
9
|
+
export declare function genAutoWidthColumns(fileteredColumns: ProTableColumnProps[], ref: MutableRefObject<HTMLDivElement | null>, data: any[], size: 'small' | 'medium', useRowSelection?: boolean | undefined, actionColumnRef?: MutableRefObject<HTMLDivElement | null>): ProTableColumnProps[];
|
10
|
+
interface IShadowContainerProps {
|
11
|
+
columns: ProTableColumnProps[];
|
12
|
+
data: any[];
|
13
|
+
shadowContainerRef: MutableRefObject<null>;
|
14
|
+
}
|
15
|
+
export declare const shadowContainer: (props: IShadowContainerProps) => JSX.Element;
|
16
|
+
export declare const shadowActionColumnContainer: (columns: ProTableColumnProps[], shadowActionColumnContainerRef: MutableRefObject<null>) => JSX.Element | undefined;
|
17
|
+
export declare const computeableWidthTypeList: {
|
18
|
+
dateTime: (data: any[], render: ITableCellRender) => any;
|
19
|
+
};
|
20
|
+
export declare const fixedWidthTypeList: {
|
21
|
+
dateWeekRange: number;
|
22
|
+
dateMonthRange: number;
|
23
|
+
dateYearRange: number;
|
24
|
+
dateQuarterRange: number;
|
25
|
+
dateTimeRange: number;
|
26
|
+
time: number;
|
27
|
+
timeRange: number;
|
28
|
+
};
|
29
|
+
export declare const fieldTypeShrink: any;
|
30
|
+
export {};
|
@@ -0,0 +1,353 @@
|
|
1
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
2
|
+
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."); }
|
3
|
+
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); }
|
4
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
5
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
6
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
7
|
+
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; }
|
8
|
+
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; }
|
9
|
+
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; }
|
10
|
+
import React, { createRef } from 'react';
|
11
|
+
import { getTargetValue } from '@teamix/utils';
|
12
|
+
import { renderCell } from './pureColumnRender';
|
13
|
+
import { renderColumnsTitle } from './columnRender';
|
14
|
+
import { ProActionGroup } from '../../actions';
|
15
|
+
import { getProFieldWidth } from '@teamix/pro-field';
|
16
|
+
import { renderCellSmartWidth } from './columnRender';
|
17
|
+
// 最大宽度
|
18
|
+
var maxColumnWidth = 600;
|
19
|
+
// 最小宽度
|
20
|
+
var minColumnWidth = 48;
|
21
|
+
// 每个列可以缩减的最大宽度
|
22
|
+
var columnShrinkMaxWidth = 100;
|
23
|
+
/**
|
24
|
+
* @param fileteredColumns
|
25
|
+
* @param ref
|
26
|
+
* @param data
|
27
|
+
* @returns
|
28
|
+
*/
|
29
|
+
export function genAutoWidthColumns(fileteredColumns, ref, data, size, useRowSelection, actionColumnRef) {
|
30
|
+
if (!ref.current) {
|
31
|
+
return fileteredColumns;
|
32
|
+
}
|
33
|
+
var hasLockFlag = false;
|
34
|
+
var dom = ref.current;
|
35
|
+
var actionColumnDom = actionColumnRef === null || actionColumnRef === void 0 ? void 0 : actionColumnRef.current;
|
36
|
+
var childNodes = dom.children;
|
37
|
+
var finalColumns = [];
|
38
|
+
fileteredColumns.forEach(function (column, index) {
|
39
|
+
var _childNodes$index;
|
40
|
+
var render = column.render,
|
41
|
+
_column$valueType = column.valueType,
|
42
|
+
valueType = _column$valueType === void 0 ? 'text' : _column$valueType,
|
43
|
+
_column$autoWidth = column.autoWidth,
|
44
|
+
autoWidth = _column$autoWidth === void 0 ? true : _column$autoWidth,
|
45
|
+
actionSchema = column.actionSchema,
|
46
|
+
sortable = column.sortable,
|
47
|
+
lock = column.lock;
|
48
|
+
if (lock) {
|
49
|
+
hasLockFlag = true;
|
50
|
+
}
|
51
|
+
//@ts-ignore
|
52
|
+
var type = render === null || render === void 0 ? void 0 : render.type;
|
53
|
+
var finalType = type || valueType || '';
|
54
|
+
var shrink = fieldTypeShrink[finalType];
|
55
|
+
column.shrink = column.shrink || (shrink !== undefined ? shrink : 1);
|
56
|
+
if (column.isAutoWidth === true) {
|
57
|
+
console.log(column.title, 'isAutoWidth');
|
58
|
+
finalColumns.push(column);
|
59
|
+
return;
|
60
|
+
}
|
61
|
+
;
|
62
|
+
if ((column === null || column === void 0 ? void 0 : column.columnFilters) === false) {
|
63
|
+
finalColumns.push(column);
|
64
|
+
return;
|
65
|
+
}
|
66
|
+
// column.isAutoWidth = true
|
67
|
+
//@ts-ignore
|
68
|
+
// if (!autoWidth) {
|
69
|
+
// finalColumns.push(column);
|
70
|
+
// return;
|
71
|
+
// }
|
72
|
+
if (actionSchema) {
|
73
|
+
// TODO 操作列暂时未处理,但是应该根据actionSchema的数量直接推测出操作列的宽度
|
74
|
+
// console.log('column', column);
|
75
|
+
column.shrink = 0;
|
76
|
+
// column.width = 280;
|
77
|
+
// console.log(
|
78
|
+
// 'actionColumnDom',
|
79
|
+
// actionColumnDom?.childNodes[0].scrollWidth,
|
80
|
+
// );
|
81
|
+
if (actionColumnDom === null || actionColumnDom === void 0 ? void 0 : actionColumnDom.childNodes[0]) {
|
82
|
+
//@ts-ignore
|
83
|
+
var width = actionColumnDom === null || actionColumnDom === void 0 ? void 0 : actionColumnDom.childNodes[0].scrollWidth;
|
84
|
+
if (width >= 280) {
|
85
|
+
width = 280;
|
86
|
+
}
|
87
|
+
column.isAutoWidth = true;
|
88
|
+
column.width = defaultPaddingFixer(width, size, false);
|
89
|
+
}
|
90
|
+
finalColumns.push(column);
|
91
|
+
return;
|
92
|
+
}
|
93
|
+
// 当列没出来的时候不比较
|
94
|
+
// @ts-ignore
|
95
|
+
if ((column === null || column === void 0 ? void 0 : column.columnFilters) === false) {
|
96
|
+
finalColumns.push(column);
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
// @ts-ignore
|
100
|
+
var titleWidth = (_childNodes$index = childNodes[index]) === null || _childNodes$index === void 0 ? void 0 : _childNodes$index.children[0].scrollWidth;
|
101
|
+
// @ts-ignore
|
102
|
+
if (fixedWidthTypeList[finalType]) {
|
103
|
+
// console.log(
|
104
|
+
// 'fixedWidthTypeList[finalType]',
|
105
|
+
// fixedWidthTypeList[finalType],
|
106
|
+
// );
|
107
|
+
// 固定宽度
|
108
|
+
column.isAutoWidth = true;
|
109
|
+
column.width = defaultPaddingFixer(
|
110
|
+
// @ts-ignore
|
111
|
+
Math.max(titleWidth, fixedWidthTypeList[finalType]), size, index === 0 && useRowSelection);
|
112
|
+
// @ts-ignore
|
113
|
+
} else if (computeableWidthTypeList[finalType]) {
|
114
|
+
// 可计算宽度
|
115
|
+
column.isAutoWidth = true;
|
116
|
+
column.width = defaultPaddingFixer(
|
117
|
+
// @ts-ignore
|
118
|
+
Math.max(titleWidth, computeableWidthTypeList[finalType](data, render)), size, index === 0 && useRowSelection);
|
119
|
+
} else {
|
120
|
+
// 直接根据 dom 计算
|
121
|
+
column.isAutoWidth = true;
|
122
|
+
column.width = defaultPaddingFixer(Math.max(titleWidth,
|
123
|
+
// @ts-ignore
|
124
|
+
calcWidthWithParentDOM(childNodes[index], column.shrink)), size, index === 0 && useRowSelection);
|
125
|
+
if ((column === null || column === void 0 ? void 0 : column.sortable) && (column === null || column === void 0 ? void 0 : column.tooltip)) {
|
126
|
+
// 检测有 sortable 和 tooltip 的时候增加宽度
|
127
|
+
column.width = column.width + 40;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
if (index === 0) {
|
131
|
+
// 首列不会被挤占
|
132
|
+
column.shrink = 0;
|
133
|
+
}
|
134
|
+
finalColumns.push(column);
|
135
|
+
});
|
136
|
+
if (!hasLockFlag) {
|
137
|
+
// 如果没有锁列的情况,需要将所有列放到一屏内,此时需要将所有列放到一起计算一次
|
138
|
+
var containerWidth = dom.offsetWidth;
|
139
|
+
var comboColumns = calcMultiColumnLength(finalColumns, useRowSelection ? containerWidth - 50 : containerWidth);
|
140
|
+
return comboColumns;
|
141
|
+
}
|
142
|
+
return finalColumns;
|
143
|
+
}
|
144
|
+
export var shadowContainer = function shadowContainer(props) {
|
145
|
+
var ref = /*#__PURE__*/createRef();
|
146
|
+
var columns = props.columns,
|
147
|
+
data = props.data,
|
148
|
+
shadowContainerRef = props.shadowContainerRef;
|
149
|
+
return /*#__PURE__*/React.createElement("div", {
|
150
|
+
ref: shadowContainerRef,
|
151
|
+
className: "teamix-pro-table-shadow-container"
|
152
|
+
}, columns.map(function (column, index) {
|
153
|
+
var dataIndex = column.dataIndex,
|
154
|
+
valueType = column.valueType;
|
155
|
+
if (!(column === null || column === void 0 ? void 0 : column.actionSchema)) {
|
156
|
+
return /*#__PURE__*/React.createElement("div", {
|
157
|
+
className: "teamix-pro-table-shadow-container-columns",
|
158
|
+
key: index
|
159
|
+
}, /*#__PURE__*/React.createElement("div", null, renderColumnsTitle(column, ref)),
|
160
|
+
//@ts-ignore
|
161
|
+
!computeableWidthTypeList[valueType] &&
|
162
|
+
//@ts-ignore
|
163
|
+
!fixedWidthTypeList[valueType] && data.map(function (item, index) {
|
164
|
+
// @ts-ignore
|
165
|
+
column.smartWidth = renderCellSmartWidth(getValueFromRecord(dataIndex, item), column, index, item);
|
166
|
+
return renderCell(getValueFromRecord(dataIndex, item), column, index, item);
|
167
|
+
}));
|
168
|
+
}
|
169
|
+
}));
|
170
|
+
};
|
171
|
+
export var shadowActionColumnContainer = function shadowActionColumnContainer(columns, shadowActionColumnContainerRef) {
|
172
|
+
var actionColumn = columns.find(function (column) {
|
173
|
+
return column === null || column === void 0 ? void 0 : column.actionSchema;
|
174
|
+
});
|
175
|
+
if (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema) {
|
176
|
+
return /*#__PURE__*/React.createElement("div", {
|
177
|
+
ref: shadowActionColumnContainerRef,
|
178
|
+
className: "teamix-pro-table-action-column-shadow-container"
|
179
|
+
}, /*#__PURE__*/React.createElement(ProActionGroup, _objectSpread(_objectSpread({
|
180
|
+
type: "text"
|
181
|
+
}, actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema), {}, {
|
182
|
+
context: _objectSpread({}, actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema.context)
|
183
|
+
})));
|
184
|
+
}
|
185
|
+
};
|
186
|
+
// 计算操作列的宽度
|
187
|
+
function getValueFromRecord(dataIndex, record) {
|
188
|
+
if (!dataIndex) {
|
189
|
+
return null;
|
190
|
+
}
|
191
|
+
if (Array.isArray(dataIndex)) {
|
192
|
+
var value = dataIndex.map(function (item) {
|
193
|
+
return getTargetValue("{{".concat(item, "}}"), _objectSpread(_objectSpread({}, record), {}, {
|
194
|
+
record: record
|
195
|
+
}));
|
196
|
+
});
|
197
|
+
return value;
|
198
|
+
} else {
|
199
|
+
var result = record;
|
200
|
+
var array = dataIndex.split('.');
|
201
|
+
array.forEach(function (item) {
|
202
|
+
return result = result ? result[item] : undefined;
|
203
|
+
});
|
204
|
+
return result;
|
205
|
+
}
|
206
|
+
}
|
207
|
+
// TODO 某些可以直接算出结果的 profield 类型白名单,待补充,每个类型下支持一个函数,用当前值和渲染类型算出一个结果
|
208
|
+
export var computeableWidthTypeList = {
|
209
|
+
dateTime: function dateTime(data, render) {
|
210
|
+
var result = getProFieldWidth('dateTime', render);
|
211
|
+
// @ts-ignore
|
212
|
+
return (result === null || result === void 0 ? void 0 : result.minWidth) || 0;
|
213
|
+
}
|
214
|
+
};
|
215
|
+
// TODO 某些固定宽度的 profield 类型白名单,这里的数据可能需要综合考虑 dataFold 和 render.rows
|
216
|
+
export var fixedWidthTypeList = {
|
217
|
+
// 时间日期
|
218
|
+
// dateTime: 142,
|
219
|
+
// dateMonth: 74, // 60
|
220
|
+
// dateWeek: 74,
|
221
|
+
// date: 100,
|
222
|
+
// dateYear: 46,
|
223
|
+
// dateQuarter: 64,
|
224
|
+
// dateRange: 212,
|
225
|
+
dateWeekRange: 156,
|
226
|
+
dateMonthRange: 156,
|
227
|
+
dateYearRange: 102,
|
228
|
+
dateQuarterRange: 136,
|
229
|
+
dateTimeRange: 326,
|
230
|
+
time: 38,
|
231
|
+
timeRange: 124
|
232
|
+
};
|
233
|
+
// TODO 不同类型的 profield 的 shrink,0表示不可以省略号,数字越大越容易被挤占空间
|
234
|
+
export var fieldTypeShrink = {
|
235
|
+
tag: 0,
|
236
|
+
statusTag: 0,
|
237
|
+
statusIconTag: 0,
|
238
|
+
circle: 0,
|
239
|
+
rank: 0,
|
240
|
+
progress: 0,
|
241
|
+
money: 0,
|
242
|
+
number: 0,
|
243
|
+
percent: 0,
|
244
|
+
dateTime: 0,
|
245
|
+
ip: 0
|
246
|
+
};
|
247
|
+
function calcWidthWithParentDOM(dom, shrink) {
|
248
|
+
var childNodes = _toConsumableArray(dom.children);
|
249
|
+
childNodes.shift();
|
250
|
+
return calcSingleColumnLength(childNodes.map(function (node) {
|
251
|
+
return node.scrollWidth;
|
252
|
+
}), shrink);
|
253
|
+
}
|
254
|
+
function calcSingleColumnLength() {
|
255
|
+
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
256
|
+
var shrink = arguments.length > 1 ? arguments[1] : undefined;
|
257
|
+
if (shrink === 0) {
|
258
|
+
return Math.ceil(Math.max.apply(null, list));
|
259
|
+
}
|
260
|
+
return getConfidence90UpperBound(list);
|
261
|
+
}
|
262
|
+
/**
|
263
|
+
* 根据所有列的宽度和权重,结合总宽度,计算出各个列合适的宽度
|
264
|
+
* 目前算法:
|
265
|
+
* 当前需要的总宽度-总宽度=需要降低的宽度
|
266
|
+
* 从后往前,将shrink不为0的列,降低一些宽度到最小宽度
|
267
|
+
* 最小宽度可以用百分比去算
|
268
|
+
* TODO 当前shrink只用了0,其他的权重也要考虑一下
|
269
|
+
* @param list
|
270
|
+
* @param max
|
271
|
+
* @returns
|
272
|
+
*/
|
273
|
+
function calcMultiColumnLength() {
|
274
|
+
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
275
|
+
var max = arguments.length > 1 ? arguments[1] : undefined;
|
276
|
+
var result = _toConsumableArray(list);
|
277
|
+
var targetList = [];
|
278
|
+
var needWidth = 0;
|
279
|
+
var canShrink = 0;
|
280
|
+
list.forEach(function (item) {
|
281
|
+
//@ts-ignore
|
282
|
+
needWidth += item.width;
|
283
|
+
if (item.shrink !== 0) {
|
284
|
+
targetList.push(item);
|
285
|
+
//@ts-ignore
|
286
|
+
canShrink += Math.min(item.width - minColumnWidth, columnShrinkMaxWidth);
|
287
|
+
}
|
288
|
+
});
|
289
|
+
var widthToBeRemoved = needWidth - max;
|
290
|
+
if (widthToBeRemoved <= 0) {
|
291
|
+
return list;
|
292
|
+
}
|
293
|
+
// TODO 超过的特别多直接加锁列,这个逻辑怎么设计
|
294
|
+
// 目前用可以缩小的宽度加起来比较一下
|
295
|
+
if (canShrink < widthToBeRemoved) {
|
296
|
+
list[0].lock = 'left';
|
297
|
+
if (list[list.length - 1].actionSchema) {
|
298
|
+
list[list.length - 1].lock = 'right';
|
299
|
+
}
|
300
|
+
return list;
|
301
|
+
}
|
302
|
+
//@ts-ignore
|
303
|
+
var sortedList = targetList.sort(function (a, b) {
|
304
|
+
return a.width - b.width;
|
305
|
+
});
|
306
|
+
var shrinkedWidth = 0;
|
307
|
+
for (var i = sortedList.length - 1; i >= 0; i--) {
|
308
|
+
if (shrinkedWidth >= widthToBeRemoved) {
|
309
|
+
break;
|
310
|
+
}
|
311
|
+
var singleShrinkedWidth = Math.min(sortedList[i].width - minColumnWidth, columnShrinkMaxWidth, widthToBeRemoved - shrinkedWidth);
|
312
|
+
sortedList[i].width = sortedList[i].width - singleShrinkedWidth;
|
313
|
+
shrinkedWidth += singleShrinkedWidth;
|
314
|
+
}
|
315
|
+
return result;
|
316
|
+
}
|
317
|
+
/**
|
318
|
+
* 修正内容放在table中默认的padding
|
319
|
+
* @param width
|
320
|
+
* @returns
|
321
|
+
*/
|
322
|
+
function defaultPaddingFixer(width) {
|
323
|
+
var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'medium';
|
324
|
+
var half = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
325
|
+
return size === 'medium' ? width + (half ? 16 : 32) + 0.5 : width + (half ? 8 : 16) + 0.5;
|
326
|
+
}
|
327
|
+
function sum() {
|
328
|
+
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
329
|
+
return list.reduce(function (a, b) {
|
330
|
+
return a + b;
|
331
|
+
});
|
332
|
+
}
|
333
|
+
/**
|
334
|
+
* 假设样本正态分布,取 90% 置信区间的上界
|
335
|
+
* 当上界与最大值差距不大(目前是20)的时候,直接用最大值
|
336
|
+
* TODO 这里没考虑是否可以直接用标准差做评判依据,如标准差过大时,直接排序并展示前90%,或标准差很小时直接用最大值
|
337
|
+
* TODO 这里极限情况是不是会挂? 如:长度为9个100和2个10000,估计会挂,是否置信区间这个不靠谱。。。最差情况就直接展示90%的数据算了
|
338
|
+
*/
|
339
|
+
function getConfidence90UpperBound() {
|
340
|
+
var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
341
|
+
var max = Math.max.apply(null, list);
|
342
|
+
var length = list.length;
|
343
|
+
var mean = sum(list) / length;
|
344
|
+
var std = Math.sqrt(sum(list.map(function (n) {
|
345
|
+
return (n - mean) * (n - mean);
|
346
|
+
})) / length);
|
347
|
+
var interval = length > 30 ? 1.65 * std / Math.sqrt(length) : 2.2622 * std / Math.sqrt(length);
|
348
|
+
var bound = Math.ceil(mean + interval);
|
349
|
+
if (max - bound < 20) {
|
350
|
+
return Math.min(max, maxColumnWidth);
|
351
|
+
}
|
352
|
+
return Math.min(bound, maxColumnWidth);
|
353
|
+
}
|
@@ -5,9 +5,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
5
5
|
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; }
|
6
6
|
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; }
|
7
7
|
import React from 'react';
|
8
|
-
import { renderColumnsTitle
|
8
|
+
import { renderColumnsTitle } from './columnRender';
|
9
9
|
import { ProSkeletonRaw as Skeleton } from '../../skeleton';
|
10
10
|
import { getLanguage } from '@teamix/utils';
|
11
|
+
import Cell from '../components/Cell';
|
11
12
|
/**
|
12
13
|
* ProColumn => Column
|
13
14
|
*/
|
@@ -44,7 +45,15 @@ showSkeleton, actionRef) {
|
|
44
45
|
dataIndex: dataIndex === null || dataIndex === void 0 ? void 0 : dataIndex.toString(),
|
45
46
|
title: renderColumnsTitle(columnProps, actionRef, bindUrl, bindUrlProps),
|
46
47
|
cell: function cell(value, index, record) {
|
47
|
-
return
|
48
|
+
return /*#__PURE__*/React.createElement(Cell, {
|
49
|
+
value: value,
|
50
|
+
item: columnProps,
|
51
|
+
index: index,
|
52
|
+
record: record,
|
53
|
+
actionRef: actionRef,
|
54
|
+
context: context,
|
55
|
+
dataTeamixSpm: dataTeamixSpm
|
56
|
+
});
|
48
57
|
}
|
49
58
|
});
|
50
59
|
});
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { ProTableColumnProps } from '../typing';
|
2
|
+
/**
|
3
|
+
* 处理原生传入的 columns 以便于 选择列 方便处理
|
4
|
+
* @param columns 原生传入的 columns
|
5
|
+
* @returns
|
6
|
+
*/
|
7
|
+
declare const processColumns: (columns: ProTableColumnProps[], initialColumns: ProTableColumnProps[]) => ProTableColumnProps[];
|
8
|
+
export default processColumns;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
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; }
|
2
|
+
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; }
|
3
|
+
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; }
|
4
|
+
import { getGlobalConfig } from '@teamix/utils';
|
5
|
+
/**
|
6
|
+
* 处理原生传入的 columns 以便于 选择列 方便处理
|
7
|
+
* @param columns 原生传入的 columns
|
8
|
+
* @returns
|
9
|
+
*/
|
10
|
+
var processColumns = function processColumns(columns, initialColumns) {
|
11
|
+
var _getGlobalConfig;
|
12
|
+
var globalFilterColumns = (_getGlobalConfig = getGlobalConfig('ProTable')) === null || _getGlobalConfig === void 0 ? void 0 : _getGlobalConfig.filterColumns;
|
13
|
+
var filterColumns = columns.filter(function (item) {
|
14
|
+
return item.columnFilters !== false && (item === null || item === void 0 ? void 0 : item.hidden) !== true && (!globalFilterColumns || globalFilterColumns(_objectSpread({}, item)));
|
15
|
+
});
|
16
|
+
// 处理只剩一列批量选择的情况下宽度错乱问题
|
17
|
+
if (filterColumns === null || filterColumns === void 0 ? void 0 : filterColumns.length) {
|
18
|
+
var _initialColumns$;
|
19
|
+
if ((filterColumns === null || filterColumns === void 0 ? void 0 : filterColumns.length) === 1) {
|
20
|
+
var _filterColumns$, _filterColumns$2;
|
21
|
+
if ((_filterColumns$ = filterColumns[0]) === null || _filterColumns$ === void 0 ? void 0 : _filterColumns$.width) {
|
22
|
+
delete filterColumns[0].width;
|
23
|
+
}
|
24
|
+
if ((_filterColumns$2 = filterColumns[0]) === null || _filterColumns$2 === void 0 ? void 0 : _filterColumns$2.lock) {
|
25
|
+
filterColumns[0].lock = false;
|
26
|
+
}
|
27
|
+
} else if (((_initialColumns$ = initialColumns[0]) === null || _initialColumns$ === void 0 ? void 0 : _initialColumns$.columnFilters) !== false) {
|
28
|
+
var _initialColumns$2, _initialColumns$3;
|
29
|
+
if ((_initialColumns$2 = initialColumns[0]) === null || _initialColumns$2 === void 0 ? void 0 : _initialColumns$2.width) {
|
30
|
+
filterColumns[0].width = initialColumns[0].width;
|
31
|
+
}
|
32
|
+
if ((_initialColumns$3 = initialColumns[0]) === null || _initialColumns$3 === void 0 ? void 0 : _initialColumns$3.lock) {
|
33
|
+
filterColumns[0].lock = initialColumns[0].lock;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
37
|
+
return filterColumns;
|
38
|
+
};
|
39
|
+
export default processColumns;
|
package/lib/card/index.scss
CHANGED
@@ -153,8 +153,7 @@ var BaseItem = function BaseItem(props) {
|
|
153
153
|
}
|
154
154
|
var prefixCls = (0, _builtins__.usePrefixCls)('formily-item', props);
|
155
155
|
var prefix = (0, _builtins__.usePrefixCls)();
|
156
|
-
|
157
|
-
var formatChildren = feedbackLayout === 'popover' || feedbackLayout === 'hover-popover' ? /*#__PURE__*/_react.default.createElement(_components.Balloon, _objectSpread({
|
156
|
+
var formatChildren = (feedbackLayout === 'popover' || feedbackLayout === 'hover-popover') && !!feedbackText ? /*#__PURE__*/_react.default.createElement(_components.Balloon, _objectSpread({
|
158
157
|
needAdjust: true,
|
159
158
|
align: "t",
|
160
159
|
closable: false,
|
@@ -18,7 +18,10 @@ var typeMap = (_typeMap = {
|
|
18
18
|
Money: 'number',
|
19
19
|
Select: 'string',
|
20
20
|
MenuSelect: 'string',
|
21
|
+
MultipleMenuSelect: 'array',
|
21
22
|
MultipleSelect: 'array',
|
23
|
+
MenuCascaderSelect: 'string',
|
24
|
+
MultipleMenuCascaderSelect: 'array',
|
22
25
|
TreeSelect: 'string',
|
23
26
|
Cascader: 'string',
|
24
27
|
MultipleCascader: 'array',
|
package/lib/form/fieldTypeMap.js
CHANGED
@@ -13,6 +13,9 @@ var fieldTypeMap = {
|
|
13
13
|
Money: 'money',
|
14
14
|
Select: 'select',
|
15
15
|
MenuSelect: 'menuSelect',
|
16
|
+
MultipleMenuSelect: 'multipleMenuSelect',
|
17
|
+
MenuCascaderSelect: 'menuCascaderSelect',
|
18
|
+
MultipleMenuCascaderSelect: 'multipleMenuCascaderSelect',
|
16
19
|
MultipleSelect: 'multipleSelect',
|
17
20
|
TreeSelect: 'treeSelect',
|
18
21
|
Cascader: 'cascader',
|
package/lib/form/global.scss
CHANGED
@@ -12,3 +12,10 @@ $inset-font-weight-medium: calc(
|
|
12
12
|
$noborder-font-weight-medium: calc(
|
13
13
|
var(--form-element-medium-height, 32px) - var(--input-border-width, 1px) * 2
|
14
14
|
);
|
15
|
+
.next-formily-item.next-formily-item.next-formily-item {
|
16
|
+
display: flex;
|
17
|
+
font-size: var(--font-size-body-1,12px);
|
18
|
+
}
|
19
|
+
.next-formily-item-inset.next-formily-item-inset.next-formily-item-inset {
|
20
|
+
line-height: calc(var(--form-element-medium-height, 32px) - var(--input-border-width, 1px)*2);
|
21
|
+
}
|
package/lib/index.d.ts
CHANGED
@@ -30,5 +30,5 @@ export * from './sidebar';
|
|
30
30
|
export * from './utils';
|
31
31
|
export * from './timeline';
|
32
32
|
export * from './image';
|
33
|
-
declare const version = "1.5.
|
33
|
+
declare const version = "1.5.26-beta-2";
|
34
34
|
export { version, ProAction, ProCard, ProField, ProForm, ProInfo, ProPageContainer, ProPageHeader, ProSkeleton, ProTable, ProSidebar, ProTimeline, TeamixIcon, ProImage, hooks, nocode, templates, utils, };
|
package/lib/index.js
CHANGED
@@ -299,7 +299,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
299
299
|
if (!((_window = window) === null || _window === void 0 ? void 0 : _window.TEAMIXPRO_WITHOUT_ICON)) {
|
300
300
|
_icon.default.setConfig(_utils.default.getTeamixIconConfig());
|
301
301
|
}
|
302
|
-
var version = '1.5.
|
302
|
+
var version = '1.5.26-beta-2';
|
303
303
|
// By TeamixTest
|
304
304
|
exports.version = version;
|
305
305
|
window.postMessage({
|
@@ -310,4 +310,13 @@ window.postMessage({
|
|
310
310
|
moduleVersion: version,
|
311
311
|
moduleType: 'TeamixPro',
|
312
312
|
componentName: 'TeamixPro'
|
313
|
-
}, '*');
|
313
|
+
}, '*');
|
314
|
+
// window.TeamixMaterial = {
|
315
|
+
// ...window.TeamixMaterial,
|
316
|
+
// ProTable: ProTable
|
317
|
+
// }
|
318
|
+
// window.TeamixPro = {
|
319
|
+
// ...window.TeamixPro,
|
320
|
+
// ProTable: ProTable
|
321
|
+
// }
|
322
|
+
// console.log('TeamixPro')
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/**
|
2
|
+
* 渲染列的逻辑函数
|
3
|
+
*/
|
4
|
+
import React from 'react';
|
5
|
+
import { ProTableColumnProps, ProTableActionType } from '../../typing';
|
6
|
+
interface ICellProps {
|
7
|
+
value: any;
|
8
|
+
item: ProTableColumnProps;
|
9
|
+
index: number;
|
10
|
+
record: any;
|
11
|
+
actionRef: React.MutableRefObject<ProTableActionType | undefined>;
|
12
|
+
/** 接收外部比如 dialog-table 传过来的 context,用于弹窗关闭等 */
|
13
|
+
context?: any;
|
14
|
+
dataTeamixSpm?: string;
|
15
|
+
}
|
16
|
+
declare const _default: React.MemoExoticComponent<(props: ICellProps) => JSX.Element>;
|
17
|
+
export default _default;
|