@teamix/pro 1.6.0-beta.7 → 1.6.1-beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. package/dist/pro.all.min.css +1 -1
  2. package/dist/pro.css +1 -1
  3. package/dist/pro.js +1662 -619
  4. package/dist/pro.min.css +1 -1
  5. package/dist/pro.min.js +1 -1
  6. package/dist/pro.xconsole.min.css +1 -1
  7. package/es/actions/index.d.ts +6 -6
  8. package/es/actions/index.js +13 -13
  9. package/es/form/Components/FormItem2/index.js +5 -5
  10. package/es/form/Components/__builtins__/hooks/useClickAway.js +1 -1
  11. package/es/form/Components/__builtins__/icons.js +2 -2
  12. package/es/form/Components/__builtins__/index.d.ts +5 -5
  13. package/es/form/Components/__builtins__/index.js +6 -6
  14. package/es/form/Components/form-layout/index.js +2 -2
  15. package/es/form/Components/form-layout/useResponsiveFormLayout.js +1 -1
  16. package/es/form/Filter/AdvancedFilter.js +1 -1
  17. package/es/form/Filter/index2.js +2 -2
  18. package/es/form/ProForm/index.d.ts +2 -2
  19. package/es/form/ProForm/index.js +12 -17
  20. package/es/index.d.ts +1 -1
  21. package/es/index.js +1 -1
  22. package/es/info/index.d.ts +6 -2
  23. package/es/info/index.js +1 -2
  24. package/es/info/utils/utils.d.ts +1 -1
  25. package/es/sidebar/utils/index.d.ts +2 -2
  26. package/es/table/components/Filter/index.js +3 -3
  27. package/es/table/index.d.ts +3 -4
  28. package/es/table/index.js +105 -44
  29. package/es/table/index.scss +26 -0
  30. package/es/table/typing.d.ts +7 -1
  31. package/es/table/utils/columnRender.d.ts +1 -0
  32. package/es/table/utils/columnRender.js +41 -1
  33. package/es/table/utils/genAutoWidthColumns.d.ts +30 -0
  34. package/es/table/utils/genAutoWidthColumns.js +327 -0
  35. package/lib/actions/index.d.ts +6 -6
  36. package/lib/actions/index.js +11 -11
  37. package/lib/form/Components/FormItem2/index.js +39 -39
  38. package/lib/form/Components/__builtins__/icons.js +2 -2
  39. package/lib/form/Components/__builtins__/index.d.ts +5 -5
  40. package/lib/form/Components/__builtins__/index.js +27 -27
  41. package/lib/form/Components/form-layout/index.js +3 -3
  42. package/lib/form/Components/form-layout/useResponsiveFormLayout.js +1 -1
  43. package/lib/form/Filter/AdvancedFilter.js +1 -1
  44. package/lib/form/Filter/index2.js +2 -2
  45. package/lib/form/ProForm/index.d.ts +2 -2
  46. package/lib/form/ProForm/index.js +11 -16
  47. package/lib/index.d.ts +1 -1
  48. package/lib/index.js +1 -1
  49. package/lib/info/index.d.ts +6 -2
  50. package/lib/info/index.js +1 -2
  51. package/lib/info/utils/utils.d.ts +1 -1
  52. package/lib/sidebar/utils/index.d.ts +2 -2
  53. package/lib/table/components/Filter/index.js +3 -3
  54. package/lib/table/index.d.ts +3 -4
  55. package/lib/table/index.js +104 -43
  56. package/lib/table/index.scss +26 -0
  57. package/lib/table/typing.d.ts +7 -1
  58. package/lib/table/utils/columnRender.d.ts +1 -0
  59. package/lib/table/utils/columnRender.js +44 -3
  60. package/lib/table/utils/genAutoWidthColumns.d.ts +30 -0
  61. package/lib/table/utils/genAutoWidthColumns.js +342 -0
  62. package/package.json +1 -1
  63. package/es/form/utils/parseSchema.d.ts +0 -3
  64. package/es/form/utils/parseSchema.js +0 -38
  65. package/es/utils/aspect.d.ts +0 -2
  66. package/es/utils/aspect.js +0 -60
  67. package/lib/form/utils/parseSchema.d.ts +0 -3
  68. package/lib/form/utils/parseSchema.js +0 -45
  69. package/lib/utils/aspect.d.ts +0 -2
  70. package/lib/utils/aspect.js +0 -67
@@ -78,6 +78,32 @@ $fullscreenPadding: 24px;
78
78
  transition: all 0.1s;
79
79
  }
80
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
+
81
107
  // sort icon
82
108
  .next-table-sort.next-table-header-icon {
83
109
  line-height: 16px;
@@ -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,10 @@ declare type TDataService = {
24
24
  };
25
25
  export declare type responsivePaginationType = 'mini' | 'small' | 'simple' | 'normal';
26
26
  export declare type ProTableColumnProps = {
27
+ /** 自动计算宽度时的被挤占的情况 */
28
+ shrink?: number;
29
+ /** 是否自动适应该列宽度 */
30
+ autoWidth?: boolean;
27
31
  /**
28
32
  * 会在 title 之后展示一个 icon,hover 之后提示一些信息
29
33
  */
@@ -65,6 +69,8 @@ export declare type ProTableColumnProps = {
65
69
  } & Omit<ColumnProps, 'filters' | 'dataIndex' | 'filtersMode' | 'children'>;
66
70
  export declare type ProColumnProps = ProTableColumnProps;
67
71
  export declare type ProTableProps = {
72
+ /** 表格是否自适应宽度 */
73
+ autoWidth?: boolean;
68
74
  /** ProColums 定义,取代 Table 的 columns */
69
75
  columns: ProTableColumnProps[];
70
76
  /** 请求地址 */
@@ -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;
@@ -4,12 +4,13 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.renderColumnsTitle = exports.renderCell = void 0;
7
+ exports.renderColumnsTitle = exports.renderCellSmartWidth = exports.renderCell = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _utils = require("@teamix/utils");
10
10
  var _actions = require("../../actions");
11
11
  var _field = _interopRequireWildcard(require("../../field"));
12
12
  var _Filter = _interopRequireDefault(require("../components/Filter"));
13
+ var _proField = require("@teamix/pro-field");
13
14
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
14
15
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -191,9 +192,49 @@ dataTeamixSpm) {
191
192
  value: value,
192
193
  render: newRender,
193
194
  dataSource: newDataSource,
194
- format: format
195
+ format: format,
196
+ proFieldWidthType: valueType
195
197
  }, props));
196
198
  };
199
+ exports.renderCell = renderCell;
200
+ var renderCellSmartWidth = function renderCellSmartWidth(value, item, index, record) {
201
+ var _item$valueType2 = item.valueType,
202
+ valueType = _item$valueType2 === void 0 ? 'text' : _item$valueType2,
203
+ render = item.render;
204
+ var newRender = null;
205
+ var newDataSource = null;
206
+ var props = item.props;
207
+ // 如果 render 直接传函数
208
+ if (typeof render === 'function') {
209
+ newRender = function newRender() {
210
+ return render === null || render === void 0 ? void 0 : render(value, index, record);
211
+ };
212
+ } else {
213
+ newRender = processBuriedPoint(processRenderFunction(render, value, index, record), record, value, index);
214
+ if (valueType === 'selectGroup') {
215
+ newRender = _objectSpread(_objectSpread({
216
+ maxShowNumber: 'auto',
217
+ foldText: 'more',
218
+ editOnClick: function editOnClick() {},
219
+ edit: true
220
+ }, newRender), {}, {
221
+ ellipsis: false
222
+ });
223
+ props = _objectSpread({
224
+ valueAlias: {
225
+ value: 'TagValue',
226
+ key: 'TagKey'
227
+ }
228
+ }, props);
229
+ }
230
+ if ((render === null || render === void 0 ? void 0 : render.type) === 'step') {
231
+ newRender = _objectSpread(_objectSpread({}, newRender), {}, {
232
+ ellipsis: false
233
+ });
234
+ }
235
+ }
236
+ return (0, _proField.getProFieldWidth)(valueType, newRender);
237
+ };
197
238
  /**
198
239
  * 处理 render 配置项是函数的情况
199
240
  * @param render ProFieldRender
@@ -202,7 +243,7 @@ dataTeamixSpm) {
202
243
  * @param record table cell record
203
244
  * @returns
204
245
  */
205
- exports.renderCell = renderCell;
246
+ exports.renderCellSmartWidth = renderCellSmartWidth;
206
247
  var processRenderFunction = function processRenderFunction() {
207
248
  var render = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
208
249
  var value = arguments.length > 1 ? arguments[1] : undefined;
@@ -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,342 @@
1
+ "use strict";
2
+
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
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.fixedWidthTypeList = exports.fieldTypeShrink = exports.computeableWidthTypeList = void 0;
8
+ exports.genAutoWidthColumns = genAutoWidthColumns;
9
+ exports.shadowContainer = exports.shadowActionColumnContainer = void 0;
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _utils = require("@teamix/utils");
12
+ var _pureColumnRender = require("./pureColumnRender");
13
+ var _columnRender = require("./columnRender");
14
+ var _actions = require("../../actions");
15
+ var _proField = require("@teamix/pro-field");
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
19
+ 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."); }
20
+ 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); }
21
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
22
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
23
+ 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; }
24
+ 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; }
25
+ 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; }
26
+ 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; }
27
+ // 最大宽度
28
+ var maxColumnWidth = 600;
29
+ // 最小宽度
30
+ var minColumnWidth = 48;
31
+ // 每个列可以缩减的最大宽度
32
+ var columnShrinkMaxWidth = 100;
33
+ /**
34
+ * @param fileteredColumns
35
+ * @param ref
36
+ * @param data
37
+ * @returns
38
+ */
39
+ function genAutoWidthColumns(fileteredColumns, ref, data, size, useRowSelection, actionColumnRef) {
40
+ if (!ref.current) {
41
+ return fileteredColumns;
42
+ }
43
+ var hasLockFlag = false;
44
+ var dom = ref.current;
45
+ var actionColumnDom = actionColumnRef === null || actionColumnRef === void 0 ? void 0 : actionColumnRef.current;
46
+ var childNodes = dom.children;
47
+ var finalColumns = [];
48
+ fileteredColumns.forEach(function (column, index) {
49
+ var render = column.render,
50
+ _column$valueType = column.valueType,
51
+ valueType = _column$valueType === void 0 ? 'text' : _column$valueType,
52
+ _column$autoWidth = column.autoWidth,
53
+ autoWidth = _column$autoWidth === void 0 ? true : _column$autoWidth,
54
+ actionSchema = column.actionSchema,
55
+ sortable = column.sortable,
56
+ lock = column.lock;
57
+ if (lock) {
58
+ hasLockFlag = true;
59
+ }
60
+ //@ts-ignore
61
+ var type = render === null || render === void 0 ? void 0 : render.type;
62
+ var finalType = type || valueType || '';
63
+ var shrink = fieldTypeShrink[finalType];
64
+ column.shrink = column.shrink || (shrink !== undefined ? shrink : 1);
65
+ //@ts-ignore
66
+ // if (!autoWidth) {
67
+ // finalColumns.push(column);
68
+ // return;
69
+ // }
70
+ if (actionSchema) {
71
+ // TODO 操作列暂时未处理,但是应该根据actionSchema的数量直接推测出操作列的宽度
72
+ // console.log('column', column);
73
+ column.shrink = 0;
74
+ // column.width = 280;
75
+ // console.log(
76
+ // 'actionColumnDom',
77
+ // actionColumnDom?.childNodes[0].scrollWidth,
78
+ // );
79
+ if (actionColumnDom === null || actionColumnDom === void 0 ? void 0 : actionColumnDom.childNodes[0]) {
80
+ //@ts-ignore
81
+ var width = actionColumnDom === null || actionColumnDom === void 0 ? void 0 : actionColumnDom.childNodes[0].scrollWidth;
82
+ if (width >= 280) {
83
+ width = 280;
84
+ }
85
+ column.width = defaultPaddingFixer(width, size, false);
86
+ }
87
+ finalColumns.push(column);
88
+ return;
89
+ }
90
+ // @ts-ignore
91
+ var titleWidth = childNodes[index].children[0].scrollWidth;
92
+ // @ts-ignore
93
+ if (fixedWidthTypeList[finalType]) {
94
+ // console.log(
95
+ // 'fixedWidthTypeList[finalType]',
96
+ // fixedWidthTypeList[finalType],
97
+ // );
98
+ // 固定宽度
99
+ column.width = defaultPaddingFixer(
100
+ // @ts-ignore
101
+ Math.max(titleWidth, fixedWidthTypeList[finalType]), size, index === 0 && useRowSelection);
102
+ // @ts-ignore
103
+ } else if (computeableWidthTypeList[finalType]) {
104
+ // 可计算宽度
105
+ column.width = defaultPaddingFixer(
106
+ // @ts-ignore
107
+ Math.max(titleWidth, computeableWidthTypeList[finalType](data, render)), size, index === 0 && useRowSelection);
108
+ } else {
109
+ // 直接根据 dom 计算
110
+ column.width = defaultPaddingFixer(Math.max(titleWidth,
111
+ // @ts-ignore
112
+ calcWidthWithParentDOM(childNodes[index], column.shrink)), size, index === 0 && useRowSelection);
113
+ }
114
+ if (index === 0) {
115
+ // 首列不会被挤占
116
+ column.shrink = 0;
117
+ }
118
+ finalColumns.push(column);
119
+ });
120
+ if (!hasLockFlag) {
121
+ // 如果没有锁列的情况,需要将所有列放到一屏内,此时需要将所有列放到一起计算一次
122
+ var containerWidth = dom.offsetWidth;
123
+ var comboColumns = calcMultiColumnLength(finalColumns, useRowSelection ? containerWidth - 50 : containerWidth);
124
+ return comboColumns;
125
+ }
126
+ return finalColumns;
127
+ }
128
+ var shadowContainer = function shadowContainer(props) {
129
+ var ref = /*#__PURE__*/(0, _react.createRef)();
130
+ var columns = props.columns,
131
+ data = props.data,
132
+ shadowContainerRef = props.shadowContainerRef;
133
+ return /*#__PURE__*/_react.default.createElement("div", {
134
+ ref: shadowContainerRef,
135
+ className: "teamix-pro-table-shadow-container"
136
+ }, columns.map(function (column, index) {
137
+ var dataIndex = column.dataIndex,
138
+ valueType = column.valueType;
139
+ if (!(column === null || column === void 0 ? void 0 : column.actionSchema)) {
140
+ return /*#__PURE__*/_react.default.createElement("div", {
141
+ className: "teamix-pro-table-shadow-container-columns",
142
+ key: index
143
+ }, /*#__PURE__*/_react.default.createElement("div", null, (0, _columnRender.renderColumnsTitle)(column, ref)),
144
+ //@ts-ignore
145
+ !computeableWidthTypeList[valueType] &&
146
+ //@ts-ignore
147
+ !fixedWidthTypeList[valueType] && data.map(function (item, index) {
148
+ // @ts-ignore
149
+ column.smartWidth = (0, _columnRender.renderCellSmartWidth)(getValueFromRecord(dataIndex, item), column, index, item);
150
+ return (0, _pureColumnRender.renderCell)(getValueFromRecord(dataIndex, item), column, index, item);
151
+ }));
152
+ }
153
+ }));
154
+ };
155
+ exports.shadowContainer = shadowContainer;
156
+ var shadowActionColumnContainer = function shadowActionColumnContainer(columns, shadowActionColumnContainerRef) {
157
+ var actionColumn = columns.find(function (column) {
158
+ return column === null || column === void 0 ? void 0 : column.actionSchema;
159
+ });
160
+ if (actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema) {
161
+ return /*#__PURE__*/_react.default.createElement("div", {
162
+ ref: shadowActionColumnContainerRef,
163
+ className: "teamix-pro-table-action-column-shadow-container"
164
+ }, /*#__PURE__*/_react.default.createElement(_actions.ProActionGroup, _objectSpread(_objectSpread({
165
+ type: "text"
166
+ }, actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema), {}, {
167
+ context: _objectSpread({}, actionColumn === null || actionColumn === void 0 ? void 0 : actionColumn.actionSchema.context)
168
+ })));
169
+ }
170
+ };
171
+ // 计算操作列的宽度
172
+ exports.shadowActionColumnContainer = shadowActionColumnContainer;
173
+ function getValueFromRecord(dataIndex, record) {
174
+ if (!dataIndex) {
175
+ return null;
176
+ }
177
+ if (Array.isArray(dataIndex)) {
178
+ var value = dataIndex.map(function (item) {
179
+ return (0, _utils.getTargetValue)("{{".concat(item, "}}"), _objectSpread(_objectSpread({}, record), {}, {
180
+ record: record
181
+ }));
182
+ });
183
+ return value;
184
+ } else {
185
+ var result = record;
186
+ var array = dataIndex.split('.');
187
+ array.forEach(function (item) {
188
+ return result = result ? result[item] : undefined;
189
+ });
190
+ return result;
191
+ }
192
+ }
193
+ // TODO 某些可以直接算出结果的 profield 类型白名单,待补充,每个类型下支持一个函数,用当前值和渲染类型算出一个结果
194
+ var computeableWidthTypeList = {
195
+ dateTime: function dateTime(data, render) {
196
+ var result = (0, _proField.getProFieldWidth)('dateTime', render);
197
+ // @ts-ignore
198
+ return (result === null || result === void 0 ? void 0 : result.minWidth) || 0;
199
+ }
200
+ };
201
+ // TODO 某些固定宽度的 profield 类型白名单,这里的数据可能需要综合考虑 dataFold 和 render.rows
202
+ exports.computeableWidthTypeList = computeableWidthTypeList;
203
+ var fixedWidthTypeList = {
204
+ // 时间日期
205
+ // dateTime: 142,
206
+ // dateMonth: 74, // 60
207
+ // dateWeek: 74,
208
+ // date: 100,
209
+ // dateYear: 46,
210
+ // dateQuarter: 64,
211
+ // dateRange: 212,
212
+ dateWeekRange: 156,
213
+ dateMonthRange: 156,
214
+ dateYearRange: 102,
215
+ dateQuarterRange: 136,
216
+ dateTimeRange: 326,
217
+ time: 38,
218
+ timeRange: 124
219
+ };
220
+ // TODO 不同类型的 profield 的 shrink,0表示不可以省略号,数字越大越容易被挤占空间
221
+ exports.fixedWidthTypeList = fixedWidthTypeList;
222
+ var fieldTypeShrink = {
223
+ tag: 0,
224
+ statusTag: 0,
225
+ statusIconTag: 0,
226
+ circle: 0,
227
+ rank: 0,
228
+ progress: 0,
229
+ money: 0,
230
+ number: 0,
231
+ percent: 0,
232
+ dateTime: 0,
233
+ ip: 0
234
+ };
235
+ exports.fieldTypeShrink = fieldTypeShrink;
236
+ function calcWidthWithParentDOM(dom, shrink) {
237
+ var childNodes = _toConsumableArray(dom.children);
238
+ childNodes.shift();
239
+ return calcSingleColumnLength(childNodes.map(function (node) {
240
+ return node.scrollWidth;
241
+ }), shrink);
242
+ }
243
+ function calcSingleColumnLength() {
244
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
245
+ var shrink = arguments.length > 1 ? arguments[1] : undefined;
246
+ if (shrink === 0) {
247
+ return Math.ceil(Math.max.apply(null, list));
248
+ }
249
+ return getConfidence90UpperBound(list);
250
+ }
251
+ /**
252
+ * 根据所有列的宽度和权重,结合总宽度,计算出各个列合适的宽度
253
+ * 目前算法:
254
+ * 当前需要的总宽度-总宽度=需要降低的宽度
255
+ * 从后往前,将shrink不为0的列,降低一些宽度到最小宽度
256
+ * 最小宽度可以用百分比去算
257
+ * TODO 当前shrink只用了0,其他的权重也要考虑一下
258
+ * @param list
259
+ * @param max
260
+ * @returns
261
+ */
262
+ function calcMultiColumnLength() {
263
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
264
+ var max = arguments.length > 1 ? arguments[1] : undefined;
265
+ var result = _toConsumableArray(list);
266
+ var targetList = [];
267
+ var needWidth = 0;
268
+ var canShrink = 0;
269
+ list.forEach(function (item) {
270
+ //@ts-ignore
271
+ needWidth += item.width;
272
+ if (item.shrink !== 0) {
273
+ targetList.push(item);
274
+ //@ts-ignore
275
+ canShrink += Math.min(item.width - minColumnWidth, columnShrinkMaxWidth);
276
+ }
277
+ });
278
+ var widthToBeRemoved = needWidth - max;
279
+ if (widthToBeRemoved <= 0) {
280
+ return list;
281
+ }
282
+ // TODO 超过的特别多直接加锁列,这个逻辑怎么设计
283
+ // 目前用可以缩小的宽度加起来比较一下
284
+ if (canShrink < widthToBeRemoved) {
285
+ list[0].lock = 'left';
286
+ if (list[list.length - 1].actionSchema) {
287
+ list[list.length - 1].lock = 'right';
288
+ }
289
+ return list;
290
+ }
291
+ //@ts-ignore
292
+ var sortedList = targetList.sort(function (a, b) {
293
+ return a.width - b.width;
294
+ });
295
+ var shrinkedWidth = 0;
296
+ for (var i = sortedList.length - 1; i >= 0; i--) {
297
+ if (shrinkedWidth >= widthToBeRemoved) {
298
+ break;
299
+ }
300
+ var singleShrinkedWidth = Math.min(sortedList[i].width - minColumnWidth, columnShrinkMaxWidth, widthToBeRemoved - shrinkedWidth);
301
+ sortedList[i].width = sortedList[i].width - singleShrinkedWidth;
302
+ shrinkedWidth += singleShrinkedWidth;
303
+ }
304
+ return result;
305
+ }
306
+ /**
307
+ * 修正内容放在table中默认的padding
308
+ * @param width
309
+ * @returns
310
+ */
311
+ function defaultPaddingFixer(width) {
312
+ var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'medium';
313
+ var half = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
314
+ return size === 'medium' ? width + (half ? 16 : 32) + 0.5 : width + (half ? 8 : 16) + 0.5;
315
+ }
316
+ function sum() {
317
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
318
+ return list.reduce(function (a, b) {
319
+ return a + b;
320
+ });
321
+ }
322
+ /**
323
+ * 假设样本正态分布,取 90% 置信区间的上界
324
+ * 当上界与最大值差距不大(目前是20)的时候,直接用最大值
325
+ * TODO 这里没考虑是否可以直接用标准差做评判依据,如标准差过大时,直接排序并展示前90%,或标准差很小时直接用最大值
326
+ * TODO 这里极限情况是不是会挂? 如:长度为9个100和2个10000,估计会挂,是否置信区间这个不靠谱。。。最差情况就直接展示90%的数据算了
327
+ */
328
+ function getConfidence90UpperBound() {
329
+ var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
330
+ var max = Math.max.apply(null, list);
331
+ var length = list.length;
332
+ var mean = sum(list) / length;
333
+ var std = Math.sqrt(sum(list.map(function (n) {
334
+ return (n - mean) * (n - mean);
335
+ })) / length);
336
+ var interval = length > 30 ? 1.65 * std / Math.sqrt(length) : 2.2622 * std / Math.sqrt(length);
337
+ var bound = Math.ceil(mean + interval);
338
+ if (max - bound < 20) {
339
+ return Math.min(max, maxColumnWidth);
340
+ }
341
+ return Math.min(bound, maxColumnWidth);
342
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamix/pro",
3
- "version": "1.6.0-beta.7",
3
+ "version": "1.6.1-beta",
4
4
  "description": "TeamixPro大包",
5
5
  "keywords": [
6
6
  "aliyun",
@@ -1,3 +0,0 @@
1
- import { ProFormSchema } from '../typing';
2
- export declare function parseSchema(schema: ProFormSchema): ProFormSchema;
3
- export declare function parseSchemaObject(props: Object): Object;
@@ -1,38 +0,0 @@
1
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
- 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."); }
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 _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; }
5
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
6
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
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
- export function parseSchema(schema) {
11
- return schema.map(function (item) {
12
- var _item$reactions;
13
- if ((_item$reactions = item.reactions) === null || _item$reactions === void 0 ? void 0 : _item$reactions.fulfill) {
14
- var _item$reactions2;
15
- return _objectSpread(_objectSpread({}, item), {}, {
16
- reactions: _objectSpread(_objectSpread({}, item.reactions), {}, {
17
- fulfill: parseSchemaObject(item === null || item === void 0 ? void 0 : (_item$reactions2 = item.reactions) === null || _item$reactions2 === void 0 ? void 0 : _item$reactions2.fulfill)
18
- })
19
- });
20
- }
21
- return item;
22
- });
23
- }
24
- export function parseSchemaObject(props) {
25
- var result = Object.entries(props).map(function (_ref) {
26
- var _ref2 = _slicedToArray(_ref, 2),
27
- k = _ref2[0],
28
- v = _ref2[1];
29
- if (k === 'state') {
30
- return [k, parseSchemaObject(v)];
31
- }
32
- if (typeof v === 'function') {
33
- return [k, "{{ (".concat(v.toString(), ")({deps: $deps, self: $self, form: $form, values: $values, target: $target, index: $index}) }}")];
34
- }
35
- return [k, v];
36
- });
37
- return Object.fromEntries(result);
38
- }
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare function ProComponentAspect<T>(WrapComponent: React.FC | Function, componentName: string): React.FC<T>;
@@ -1,60 +0,0 @@
1
- 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); }
2
- 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; }
3
- 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; }
4
- 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; }
5
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
7
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
9
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
10
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
- function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
12
- function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
13
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
14
- function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
15
- import React from 'react';
16
- export function ProComponentAspect(WrapComponent, componentName) {
17
- return /*#__PURE__*/function (_React$Component) {
18
- _inherits(ProComponent, _React$Component);
19
- var _super = _createSuper(ProComponent);
20
- function ProComponent() {
21
- var _this;
22
- _classCallCheck(this, ProComponent);
23
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
24
- args[_key] = arguments[_key];
25
- }
26
- _this = _super.call.apply(_super, [this].concat(args));
27
- _this.state = {
28
- name: 'alien'
29
- };
30
- return _this;
31
- }
32
- _createClass(ProComponent, [{
33
- key: "componentDidMount",
34
- value: function componentDidMount() {
35
- // @ts-ignore
36
- if (!!window.ProComponentBeforeAspectDebugger) {
37
- console.log('HOC', componentName);
38
- console.log('Props', this.props);
39
- }
40
- }
41
- }, {
42
- key: "render",
43
- value: function render() {
44
- // @ts-ignore
45
- if (window.ProComponentBeforeAspect) {
46
- var _window$ProComponentB, _window;
47
- // @ts-ignore
48
- var props = (_window$ProComponentB = (_window = window).ProComponentBeforeAspect) === null || _window$ProComponentB === void 0 ? void 0 : _window$ProComponentB.call(_window, componentName, this.props);
49
- // @ts-ignore
50
- if (!!window.ProComponentBeforeAspectDebugger) {
51
- console.log('NewProps', props);
52
- }
53
- return /*#__PURE__*/React.createElement(WrapComponent, _objectSpread({}, props));
54
- }
55
- return /*#__PURE__*/React.createElement(WrapComponent, _objectSpread({}, this.props));
56
- }
57
- }]);
58
- return ProComponent;
59
- }(React.Component);
60
- }
@@ -1,3 +0,0 @@
1
- import { ProFormSchema } from '../typing';
2
- export declare function parseSchema(schema: ProFormSchema): ProFormSchema;
3
- export declare function parseSchemaObject(props: Object): Object;