@teamix/pro 1.5.25 → 1.5.27

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.
@@ -0,0 +1,327 @@
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 render = column.render,
40
+ _column$valueType = column.valueType,
41
+ valueType = _column$valueType === void 0 ? 'text' : _column$valueType,
42
+ _column$autoWidth = column.autoWidth,
43
+ autoWidth = _column$autoWidth === void 0 ? true : _column$autoWidth,
44
+ actionSchema = column.actionSchema,
45
+ sortable = column.sortable,
46
+ lock = column.lock;
47
+ if (lock) {
48
+ hasLockFlag = true;
49
+ }
50
+ //@ts-ignore
51
+ var type = render === null || render === void 0 ? void 0 : render.type;
52
+ var finalType = type || valueType || '';
53
+ var shrink = fieldTypeShrink[finalType];
54
+ column.shrink = column.shrink || (shrink !== undefined ? shrink : 1);
55
+ //@ts-ignore
56
+ // if (!autoWidth) {
57
+ // finalColumns.push(column);
58
+ // return;
59
+ // }
60
+ if (actionSchema) {
61
+ // TODO 操作列暂时未处理,但是应该根据actionSchema的数量直接推测出操作列的宽度
62
+ // console.log('column', column);
63
+ column.shrink = 0;
64
+ // column.width = 280;
65
+ // console.log(
66
+ // 'actionColumnDom',
67
+ // actionColumnDom?.childNodes[0].scrollWidth,
68
+ // );
69
+ if (actionColumnDom === null || actionColumnDom === void 0 ? void 0 : actionColumnDom.childNodes[0]) {
70
+ //@ts-ignore
71
+ var width = actionColumnDom === null || actionColumnDom === void 0 ? void 0 : actionColumnDom.childNodes[0].scrollWidth;
72
+ if (width >= 280) {
73
+ width = 280;
74
+ }
75
+ column.width = defaultPaddingFixer(width, size, false);
76
+ }
77
+ finalColumns.push(column);
78
+ return;
79
+ }
80
+ // @ts-ignore
81
+ var titleWidth = childNodes[index].children[0].scrollWidth;
82
+ // @ts-ignore
83
+ if (fixedWidthTypeList[finalType]) {
84
+ // console.log(
85
+ // 'fixedWidthTypeList[finalType]',
86
+ // fixedWidthTypeList[finalType],
87
+ // );
88
+ // 固定宽度
89
+ column.width = defaultPaddingFixer(
90
+ // @ts-ignore
91
+ Math.max(titleWidth, fixedWidthTypeList[finalType]), size, index === 0 && useRowSelection);
92
+ // @ts-ignore
93
+ } else if (computeableWidthTypeList[finalType]) {
94
+ // 可计算宽度
95
+ column.width = defaultPaddingFixer(
96
+ // @ts-ignore
97
+ Math.max(titleWidth, computeableWidthTypeList[finalType](data, render)), size, index === 0 && useRowSelection);
98
+ } else {
99
+ // 直接根据 dom 计算
100
+ column.width = defaultPaddingFixer(Math.max(titleWidth,
101
+ // @ts-ignore
102
+ calcWidthWithParentDOM(childNodes[index], column.shrink)), size, index === 0 && useRowSelection);
103
+ }
104
+ if (index === 0) {
105
+ // 首列不会被挤占
106
+ column.shrink = 0;
107
+ }
108
+ finalColumns.push(column);
109
+ });
110
+ if (!hasLockFlag) {
111
+ // 如果没有锁列的情况,需要将所有列放到一屏内,此时需要将所有列放到一起计算一次
112
+ var containerWidth = dom.offsetWidth;
113
+ var comboColumns = calcMultiColumnLength(finalColumns, useRowSelection ? containerWidth - 50 : containerWidth);
114
+ return comboColumns;
115
+ }
116
+ return finalColumns;
117
+ }
118
+ export var shadowContainer = function shadowContainer(props) {
119
+ var ref = /*#__PURE__*/createRef();
120
+ var columns = props.columns,
121
+ data = props.data,
122
+ shadowContainerRef = props.shadowContainerRef;
123
+ return /*#__PURE__*/React.createElement("div", {
124
+ ref: shadowContainerRef,
125
+ className: "teamix-pro-table-shadow-container"
126
+ }, columns.map(function (column, index) {
127
+ var dataIndex = column.dataIndex,
128
+ valueType = column.valueType;
129
+ if (!(column === null || column === void 0 ? void 0 : column.actionSchema)) {
130
+ return /*#__PURE__*/React.createElement("div", {
131
+ className: "teamix-pro-table-shadow-container-columns",
132
+ key: index
133
+ }, /*#__PURE__*/React.createElement("div", null, renderColumnsTitle(column, ref)),
134
+ //@ts-ignore
135
+ !computeableWidthTypeList[valueType] &&
136
+ //@ts-ignore
137
+ !fixedWidthTypeList[valueType] && data.map(function (item, index) {
138
+ // @ts-ignore
139
+ column.smartWidth = renderCellSmartWidth(getValueFromRecord(dataIndex, item), column, index, item);
140
+ return renderCell(getValueFromRecord(dataIndex, item), column, index, item);
141
+ }));
142
+ }
143
+ }));
144
+ };
145
+ export var shadowActionColumnContainer = function shadowActionColumnContainer(columns, shadowActionColumnContainerRef) {
146
+ var actionColumn = columns.find(function (column) {
147
+ return column === null || column === void 0 ? void 0 : column.actionSchema;
148
+ });
149
+ if (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema) {
150
+ return /*#__PURE__*/React.createElement("div", {
151
+ ref: shadowActionColumnContainerRef,
152
+ className: "teamix-pro-table-action-column-shadow-container"
153
+ }, /*#__PURE__*/React.createElement(ProActionGroup, _objectSpread(_objectSpread({
154
+ type: "text"
155
+ }, actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema), {}, {
156
+ context: _objectSpread({}, actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema.context)
157
+ })));
158
+ }
159
+ };
160
+ // 计算操作列的宽度
161
+ function getValueFromRecord(dataIndex, record) {
162
+ if (!dataIndex) {
163
+ return null;
164
+ }
165
+ if (Array.isArray(dataIndex)) {
166
+ var value = dataIndex.map(function (item) {
167
+ return getTargetValue("{{".concat(item, "}}"), _objectSpread(_objectSpread({}, record), {}, {
168
+ record: record
169
+ }));
170
+ });
171
+ return value;
172
+ } else {
173
+ var result = record;
174
+ var array = dataIndex.split('.');
175
+ array.forEach(function (item) {
176
+ return result = result ? result[item] : undefined;
177
+ });
178
+ return result;
179
+ }
180
+ }
181
+ // TODO 某些可以直接算出结果的 profield 类型白名单,待补充,每个类型下支持一个函数,用当前值和渲染类型算出一个结果
182
+ export var computeableWidthTypeList = {
183
+ dateTime: function dateTime(data, render) {
184
+ var result = getProFieldWidth('dateTime', render);
185
+ // @ts-ignore
186
+ return (result === null || result === void 0 ? void 0 : result.minWidth) || 0;
187
+ }
188
+ };
189
+ // TODO 某些固定宽度的 profield 类型白名单,这里的数据可能需要综合考虑 dataFold 和 render.rows
190
+ export var fixedWidthTypeList = {
191
+ // 时间日期
192
+ // dateTime: 142,
193
+ // dateMonth: 74, // 60
194
+ // dateWeek: 74,
195
+ // date: 100,
196
+ // dateYear: 46,
197
+ // dateQuarter: 64,
198
+ // dateRange: 212,
199
+ dateWeekRange: 156,
200
+ dateMonthRange: 156,
201
+ dateYearRange: 102,
202
+ dateQuarterRange: 136,
203
+ dateTimeRange: 326,
204
+ time: 38,
205
+ timeRange: 124
206
+ };
207
+ // TODO 不同类型的 profield 的 shrink,0表示不可以省略号,数字越大越容易被挤占空间
208
+ export var fieldTypeShrink = {
209
+ tag: 0,
210
+ statusTag: 0,
211
+ statusIconTag: 0,
212
+ circle: 0,
213
+ rank: 0,
214
+ progress: 0,
215
+ money: 0,
216
+ number: 0,
217
+ percent: 0,
218
+ dateTime: 0,
219
+ ip: 0
220
+ };
221
+ function calcWidthWithParentDOM(dom, shrink) {
222
+ var childNodes = _toConsumableArray(dom.children);
223
+ childNodes.shift();
224
+ return calcSingleColumnLength(childNodes.map(function (node) {
225
+ return node.scrollWidth;
226
+ }), shrink);
227
+ }
228
+ function calcSingleColumnLength() {
229
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
230
+ var shrink = arguments.length > 1 ? arguments[1] : undefined;
231
+ if (shrink === 0) {
232
+ return Math.ceil(Math.max.apply(null, list));
233
+ }
234
+ return getConfidence90UpperBound(list);
235
+ }
236
+ /**
237
+ * 根据所有列的宽度和权重,结合总宽度,计算出各个列合适的宽度
238
+ * 目前算法:
239
+ * 当前需要的总宽度-总宽度=需要降低的宽度
240
+ * 从后往前,将shrink不为0的列,降低一些宽度到最小宽度
241
+ * 最小宽度可以用百分比去算
242
+ * TODO 当前shrink只用了0,其他的权重也要考虑一下
243
+ * @param list
244
+ * @param max
245
+ * @returns
246
+ */
247
+ function calcMultiColumnLength() {
248
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
249
+ var max = arguments.length > 1 ? arguments[1] : undefined;
250
+ var result = _toConsumableArray(list);
251
+ var targetList = [];
252
+ var needWidth = 0;
253
+ var canShrink = 0;
254
+ list.forEach(function (item) {
255
+ //@ts-ignore
256
+ needWidth += item.width;
257
+ if (item.shrink !== 0) {
258
+ targetList.push(item);
259
+ //@ts-ignore
260
+ canShrink += Math.min(item.width - minColumnWidth, columnShrinkMaxWidth);
261
+ }
262
+ });
263
+ var widthToBeRemoved = needWidth - max;
264
+ if (widthToBeRemoved <= 0) {
265
+ return list;
266
+ }
267
+ // TODO 超过的特别多直接加锁列,这个逻辑怎么设计
268
+ // 目前用可以缩小的宽度加起来比较一下
269
+ if (canShrink < widthToBeRemoved) {
270
+ list[0].lock = 'left';
271
+ if (list[list.length - 1].actionSchema) {
272
+ list[list.length - 1].lock = 'right';
273
+ }
274
+ return list;
275
+ }
276
+ //@ts-ignore
277
+ var sortedList = targetList.sort(function (a, b) {
278
+ return a.width - b.width;
279
+ });
280
+ var shrinkedWidth = 0;
281
+ for (var i = sortedList.length - 1; i >= 0; i--) {
282
+ if (shrinkedWidth >= widthToBeRemoved) {
283
+ break;
284
+ }
285
+ var singleShrinkedWidth = Math.min(sortedList[i].width - minColumnWidth, columnShrinkMaxWidth, widthToBeRemoved - shrinkedWidth);
286
+ sortedList[i].width = sortedList[i].width - singleShrinkedWidth;
287
+ shrinkedWidth += singleShrinkedWidth;
288
+ }
289
+ return result;
290
+ }
291
+ /**
292
+ * 修正内容放在table中默认的padding
293
+ * @param width
294
+ * @returns
295
+ */
296
+ function defaultPaddingFixer(width) {
297
+ var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'medium';
298
+ var half = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
299
+ return size === 'medium' ? width + (half ? 16 : 32) + 0.5 : width + (half ? 8 : 16) + 0.5;
300
+ }
301
+ function sum() {
302
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
303
+ return list.reduce(function (a, b) {
304
+ return a + b;
305
+ });
306
+ }
307
+ /**
308
+ * 假设样本正态分布,取 90% 置信区间的上界
309
+ * 当上界与最大值差距不大(目前是20)的时候,直接用最大值
310
+ * TODO 这里没考虑是否可以直接用标准差做评判依据,如标准差过大时,直接排序并展示前90%,或标准差很小时直接用最大值
311
+ * TODO 这里极限情况是不是会挂? 如:长度为9个100和2个10000,估计会挂,是否置信区间这个不靠谱。。。最差情况就直接展示90%的数据算了
312
+ */
313
+ function getConfidence90UpperBound() {
314
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
315
+ var max = Math.max.apply(null, list);
316
+ var length = list.length;
317
+ var mean = sum(list) / length;
318
+ var std = Math.sqrt(sum(list.map(function (n) {
319
+ return (n - mean) * (n - mean);
320
+ })) / length);
321
+ var interval = length > 30 ? 1.65 * std / Math.sqrt(length) : 2.2622 * std / Math.sqrt(length);
322
+ var bound = Math.ceil(mean + interval);
323
+ if (max - bound < 20) {
324
+ return Math.min(max, maxColumnWidth);
325
+ }
326
+ return Math.min(bound, maxColumnWidth);
327
+ }
@@ -310,4 +310,8 @@
310
310
  background: transparent;
311
311
  }
312
312
 
313
+ .next-card-content-container:has(.cloud-wnumbercard-data-overview-container) {
314
+ margin-top: -4px;
315
+ }
316
+
313
317
  }
@@ -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',
@@ -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',
@@ -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.25";
33
+ declare const version = "1.5.27";
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.25';
302
+ var version = '1.5.27';
303
303
  // By TeamixTest
304
304
  exports.version = version;
305
305
  window.postMessage({
@@ -86,7 +86,7 @@ var Filter = function Filter(props) {
86
86
  }
87
87
  // console.log(filters);
88
88
  return filters;
89
- }, []);
89
+ }, [column]);
90
90
  // 点击确定回调
91
91
  var onFilterOk = function onFilterOk() {
92
92
  var _actionRef$current2, _actionRef$current2$f, _actionRef$current$ge6, _actionRef$current3, _actionRef$current3$g, _actionRef$current3$g2, _actionRef$current4, _actionRef$current4$s, _actionRef$current5, _actionRef$current7, _actionRef$current7$r, _actionRef$current8, _actionRef$current8$r, _actionRef$current9, _actionRef$current9$c;
@@ -168,7 +168,7 @@ var Filter = function Filter(props) {
168
168
  setSelected([valueStr]);
169
169
  }
170
170
  }, /*#__PURE__*/_react.default.createElement(_field.default, {
171
- type: 'text',
171
+ type: "text",
172
172
  value: label,
173
173
  render: {
174
174
  ellipsis: true
@@ -196,7 +196,7 @@ var Filter = function Filter(props) {
196
196
  }
197
197
  }
198
198
  }, /*#__PURE__*/_react.default.createElement(_field.default, {
199
- type: 'text',
199
+ type: "text",
200
200
  value: label,
201
201
  render: {
202
202
  ellipsis: true