@teamix/pro 1.5.44 → 1.5.45

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.
@@ -1,2 +1,14 @@
1
- declare const _default: (bindUrl: any, functions: any, formRef: any) => any;
2
- export default _default;
1
+ /// <reference types="react" />
2
+ import { UrlStateOptions } from '@teamix/hooks';
3
+ import type { Form } from '@formily/core';
4
+ export interface BindUrlInitFunctions {
5
+ onInit?: (values: Record<string, any>) => void;
6
+ onFilter?: (values: Record<string, any>) => void;
7
+ onReset?: (values: Record<string, any>) => void;
8
+ }
9
+ export default function useBindUrl(bindUrl: boolean | UrlStateOptions | undefined, functions: BindUrlInitFunctions, formRef: React.MutableRefObject<Form<any> | undefined>): {
10
+ onInit?: ((values: Record<string, any>) => void) | undefined;
11
+ onFilter?: ((values: Record<string, any>) => void) | undefined;
12
+ onReset?: ((values: Record<string, any>) => void) | undefined;
13
+ setValuesByUrlState: (form: any) => void;
14
+ };
@@ -9,7 +9,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
9
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
10
  import { useUrlState } from '@teamix/hooks';
11
11
  import { isUsable, isPlainObj } from '@teamix/utils';
12
- export default (function (bindUrl, functions, formRef) {
12
+ export default function useBindUrl(bindUrl, functions, formRef) {
13
13
  // 预处理 bindUrl 参数(主要兼容 SelectGroup 组件)
14
14
  var initializeBindUrl = function initializeBindUrl(options) {
15
15
  return options ? _objectSpread(_objectSpread({}, options), {}, {
@@ -23,8 +23,9 @@ export default (function (bindUrl, functions, formRef) {
23
23
  key = _ref2[0],
24
24
  value = _ref2[1];
25
25
  var form = formRef.current;
26
- var field = (_form$query = form.query(key)) === null || _form$query === void 0 ? void 0 : _form$query.take();
27
- if ((field === null || field === void 0 ? void 0 : field.component[0]) === 'SelectGroup') {
26
+ var field = form === null || form === void 0 ? void 0 : (_form$query = form.query(key)) === null || _form$query === void 0 ? void 0 : _form$query.take();
27
+ var component = field === null || field === void 0 ? void 0 : field.component;
28
+ if (component instanceof Array && component[0] === 'SelectGroup') {
28
29
  newValues[key] = value.map(function (_ref3) {
29
30
  var key = _ref3.key,
30
31
  value = _ref3.value;
@@ -38,17 +39,46 @@ export default (function (bindUrl, functions, formRef) {
38
39
  };
39
40
  // 通过 useUrlState 获取 url 上的参数和 url 配置方法
40
41
  var _ref4 = bindUrl ? useUrlState(undefined, initializeBindUrl(isPlainObj(bindUrl) ? bindUrl : {})) : [],
41
- _ref5 = _slicedToArray(_ref4, 2),
42
+ _ref5 = _slicedToArray(_ref4, 3),
42
43
  urlState = _ref5[0],
43
- setUrlState = _ref5[1];
44
+ setUrlState = _ref5[1],
45
+ queryFromUrl = _ref5[2];
44
46
  // 输出配置url参数的函数
45
47
  var initializedFunctions = Object.entries(functions).reduce(function (prev, _ref6) {
46
48
  var _ref7 = _slicedToArray(_ref6, 2),
47
- key = _ref7[0],
48
- fun = _ref7[1];
49
- prev[key] = function (values) {
50
- fun === null || fun === void 0 ? void 0 : fun(values);
51
- setUrlState === null || setUrlState === void 0 ? void 0 : setUrlState(values);
49
+ listenerKey = _ref7[0],
50
+ originalFunction = _ref7[1];
51
+ prev[listenerKey] = function (values) {
52
+ originalFunction === null || originalFunction === void 0 ? void 0 : originalFunction(values);
53
+ if (bindUrl) {
54
+ // guard: onInit 会在 mount 时被自动调用,需要避免其在任何情况下都调用 setUrlState。故增加幂等判断
55
+ var hasDifference = false;
56
+ for (var paramName in values) {
57
+ if (Object.hasOwn(values, paramName)) {
58
+ var simpleTransform = function simpleTransform(value) {
59
+ if (value instanceof Array) {
60
+ return value.join(',');
61
+ }
62
+ if (value === undefined || value === null) {
63
+ return '';
64
+ }
65
+ if (value instanceof Object) {
66
+ console.warn('useBindUrl: 无法处理对象类型的 url 参数');
67
+ }
68
+ return value;
69
+ };
70
+ var oldValue = queryFromUrl === null || queryFromUrl === void 0 ? void 0 : queryFromUrl[paramName];
71
+ var newValue = values[paramName];
72
+ if (simpleTransform(newValue) !== simpleTransform(oldValue)) {
73
+ hasDifference = true;
74
+ break;
75
+ }
76
+ }
77
+ }
78
+ if (hasDifference) {
79
+ setUrlState(values);
80
+ }
81
+ }
52
82
  };
53
83
  return prev;
54
84
  }, {});
@@ -87,4 +117,4 @@ export default (function (bindUrl, functions, formRef) {
87
117
  return _objectSpread({
88
118
  setValuesByUrlState: setValuesByUrlState
89
119
  }, initializedFunctions);
90
- });
120
+ }
package/es/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.44";
33
+ declare const version = "1.5.45";
34
34
  export { version, ProAction, ProCard, ProField, ProForm, ProInfo, ProPageContainer, ProPageHeader, ProSkeleton, ProTable, ProSidebar, ProTimeline, TeamixIcon, ProImage, hooks, nocode, templates, utils, };
package/es/index.js CHANGED
@@ -37,7 +37,7 @@ export * from './sidebar';
37
37
  export * from './utils';
38
38
  export * from './timeline';
39
39
  export * from './image';
40
- var version = '1.5.44';
40
+ var version = '1.5.45';
41
41
  // By TeamixTest
42
42
  window.postMessage({
43
43
  source: 'teamix-test-devtools',
@@ -189,11 +189,31 @@ var processBuriedPoint = function processBuriedPoint() {
189
189
  }))));
190
190
  };
191
191
  var equalColumns = function equalColumns(prevProps, nextProps) {
192
- var preValue = prevProps.value;
192
+ var preValue = prevProps.value,
193
+ preItem = prevProps.item,
194
+ preRecord = prevProps.record,
195
+ preContext = prevProps.context;
193
196
  var nextValue = nextProps.value,
194
- item = nextProps.item;
197
+ nextItem = nextProps.item,
198
+ nextRecord = nextProps.record,
199
+ nextContext = nextProps.context;
200
+ // if (nextItem?.render) {
201
+ // let renderCache = true;
202
+ // Object.keys(nextItem?.render).forEach((key) => {
203
+ // // 如果 preItem 不包含 render 的属性,则强制刷新
204
+ // if (!preItem?.render[key]) {
205
+ // renderCache = false;
206
+ // return false
207
+ // }
208
+ // let preRenderValue = getTargetValue(preItem?.render[key], {...preRecord, ...preContext});
209
+ // let nextRenderValue = getTargetValue(nextItem?.render[key], {...nextRecord, ...nextContext})
210
+ // if (preRenderValue !== nextRenderValue) {
211
+ // renderCache = false;
212
+ // }
213
+ // })
214
+ // }
195
215
  // columns 强制更新参数
196
- if (item === null || item === void 0 ? void 0 : item.forcedUpdate) {
216
+ if (nextItem === null || nextItem === void 0 ? void 0 : nextItem.forcedUpdate) {
197
217
  return false;
198
218
  }
199
219
  // 操作列的时候强制刷新 || 当 value 值拿不到的时候
package/es/table/index.js CHANGED
@@ -337,9 +337,9 @@ var ProTable = function ProTable(props) {
337
337
  setFooterSuctionState(false);
338
338
  }
339
339
  // 如果有切换区tab,那么重新计算
340
- if (headerFixedTopSectionDom.clientHeight) {
340
+ if (headerFixedTopSectionDom === null || headerFixedTopSectionDom === void 0 ? void 0 : headerFixedTopSectionDom.clientHeight) {
341
341
  var _headerFixedTopSectio;
342
- var headerFixedTopSectionHeight = (_headerFixedTopSectio = headerFixedTopSectionDom.clientHeight) !== null && _headerFixedTopSectio !== void 0 ? _headerFixedTopSectio : 0;
342
+ var headerFixedTopSectionHeight = (_headerFixedTopSectio = headerFixedTopSectionDom === null || headerFixedTopSectionDom === void 0 ? void 0 : headerFixedTopSectionDom.clientHeight) !== null && _headerFixedTopSectio !== void 0 ? _headerFixedTopSectio : 0;
343
343
  // const clientTableBodyHeight =
344
344
  // document.body.clientHeight - offsetHeaderHeight;
345
345
  setHeaderHeight(headerFixedTopSectionHeight + teamixNavHeight + footerRowSelectionHeight + tableHeaderHeight + 1);
@@ -41,6 +41,10 @@ function useTableSelection() {
41
41
  var dataRef = useRef({
42
42
  selectedRowKeys: config.selectedRowKeys || defaultSelectedRowKeys
43
43
  });
44
+ var onSetSelectedRowKeys = function onSetSelectedRowKeys(keys) {
45
+ setSelectedRowKeys(keys);
46
+ dataRef.current.selectedRowKeys = keys;
47
+ };
44
48
  useEffect(function () {
45
49
  var _config$selectedRowKe, _config$selectedRowKe2;
46
50
  setSelectedRowKeys((_config$selectedRowKe = config === null || config === void 0 ? void 0 : config.selectedRowKeys) !== null && _config$selectedRowKe !== void 0 ? _config$selectedRowKe : []);
@@ -148,7 +152,7 @@ function useTableSelection() {
148
152
  return {
149
153
  rowSelection: rowSelection,
150
154
  selectedRowKeys: selectedRowKeys,
151
- setSelectedRowKeys: setSelectedRowKeys,
155
+ setSelectedRowKeys: onSetSelectedRowKeys,
152
156
  selectedRecords: selectedRecords,
153
157
  setSelectedRecords: setSelectedRecords
154
158
  };
@@ -1,2 +1,14 @@
1
- declare const _default: (bindUrl: any, functions: any, formRef: any) => any;
2
- export default _default;
1
+ /// <reference types="react" />
2
+ import { UrlStateOptions } from '@teamix/hooks';
3
+ import type { Form } from '@formily/core';
4
+ export interface BindUrlInitFunctions {
5
+ onInit?: (values: Record<string, any>) => void;
6
+ onFilter?: (values: Record<string, any>) => void;
7
+ onReset?: (values: Record<string, any>) => void;
8
+ }
9
+ export default function useBindUrl(bindUrl: boolean | UrlStateOptions | undefined, functions: BindUrlInitFunctions, formRef: React.MutableRefObject<Form<any> | undefined>): {
10
+ onInit?: ((values: Record<string, any>) => void) | undefined;
11
+ onFilter?: ((values: Record<string, any>) => void) | undefined;
12
+ onReset?: ((values: Record<string, any>) => void) | undefined;
13
+ setValuesByUrlState: (form: any) => void;
14
+ };
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = useBindUrl;
7
7
  var _hooks = require("@teamix/hooks");
8
8
  var _utils = require("@teamix/utils");
9
9
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -15,7 +15,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
15
  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; }
16
16
  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; }
17
17
  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; }
18
- var _default = function _default(bindUrl, functions, formRef) {
18
+ function useBindUrl(bindUrl, functions, formRef) {
19
19
  // 预处理 bindUrl 参数(主要兼容 SelectGroup 组件)
20
20
  var initializeBindUrl = function initializeBindUrl(options) {
21
21
  return options ? _objectSpread(_objectSpread({}, options), {}, {
@@ -29,8 +29,9 @@ var _default = function _default(bindUrl, functions, formRef) {
29
29
  key = _ref2[0],
30
30
  value = _ref2[1];
31
31
  var form = formRef.current;
32
- var field = (_form$query = form.query(key)) === null || _form$query === void 0 ? void 0 : _form$query.take();
33
- if ((field === null || field === void 0 ? void 0 : field.component[0]) === 'SelectGroup') {
32
+ var field = form === null || form === void 0 ? void 0 : (_form$query = form.query(key)) === null || _form$query === void 0 ? void 0 : _form$query.take();
33
+ var component = field === null || field === void 0 ? void 0 : field.component;
34
+ if (component instanceof Array && component[0] === 'SelectGroup') {
34
35
  newValues[key] = value.map(function (_ref3) {
35
36
  var key = _ref3.key,
36
37
  value = _ref3.value;
@@ -44,17 +45,46 @@ var _default = function _default(bindUrl, functions, formRef) {
44
45
  };
45
46
  // 通过 useUrlState 获取 url 上的参数和 url 配置方法
46
47
  var _ref4 = bindUrl ? (0, _hooks.useUrlState)(undefined, initializeBindUrl((0, _utils.isPlainObj)(bindUrl) ? bindUrl : {})) : [],
47
- _ref5 = _slicedToArray(_ref4, 2),
48
+ _ref5 = _slicedToArray(_ref4, 3),
48
49
  urlState = _ref5[0],
49
- setUrlState = _ref5[1];
50
+ setUrlState = _ref5[1],
51
+ queryFromUrl = _ref5[2];
50
52
  // 输出配置url参数的函数
51
53
  var initializedFunctions = Object.entries(functions).reduce(function (prev, _ref6) {
52
54
  var _ref7 = _slicedToArray(_ref6, 2),
53
- key = _ref7[0],
54
- fun = _ref7[1];
55
- prev[key] = function (values) {
56
- fun === null || fun === void 0 ? void 0 : fun(values);
57
- setUrlState === null || setUrlState === void 0 ? void 0 : setUrlState(values);
55
+ listenerKey = _ref7[0],
56
+ originalFunction = _ref7[1];
57
+ prev[listenerKey] = function (values) {
58
+ originalFunction === null || originalFunction === void 0 ? void 0 : originalFunction(values);
59
+ if (bindUrl) {
60
+ // guard: onInit 会在 mount 时被自动调用,需要避免其在任何情况下都调用 setUrlState。故增加幂等判断
61
+ var hasDifference = false;
62
+ for (var paramName in values) {
63
+ if (Object.hasOwn(values, paramName)) {
64
+ var simpleTransform = function simpleTransform(value) {
65
+ if (value instanceof Array) {
66
+ return value.join(',');
67
+ }
68
+ if (value === undefined || value === null) {
69
+ return '';
70
+ }
71
+ if (value instanceof Object) {
72
+ console.warn('useBindUrl: 无法处理对象类型的 url 参数');
73
+ }
74
+ return value;
75
+ };
76
+ var oldValue = queryFromUrl === null || queryFromUrl === void 0 ? void 0 : queryFromUrl[paramName];
77
+ var newValue = values[paramName];
78
+ if (simpleTransform(newValue) !== simpleTransform(oldValue)) {
79
+ hasDifference = true;
80
+ break;
81
+ }
82
+ }
83
+ }
84
+ if (hasDifference) {
85
+ setUrlState(values);
86
+ }
87
+ }
58
88
  };
59
89
  return prev;
60
90
  }, {});
@@ -93,5 +123,4 @@ var _default = function _default(bindUrl, functions, formRef) {
93
123
  return _objectSpread({
94
124
  setValuesByUrlState: setValuesByUrlState
95
125
  }, initializedFunctions);
96
- };
97
- exports.default = _default;
126
+ }
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.44";
33
+ declare const version = "1.5.45";
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.44';
302
+ var version = '1.5.45';
303
303
  // By TeamixTest
304
304
  exports.version = version;
305
305
  window.postMessage({
@@ -193,11 +193,31 @@ var processBuriedPoint = function processBuriedPoint() {
193
193
  }))));
194
194
  };
195
195
  var equalColumns = function equalColumns(prevProps, nextProps) {
196
- var preValue = prevProps.value;
196
+ var preValue = prevProps.value,
197
+ preItem = prevProps.item,
198
+ preRecord = prevProps.record,
199
+ preContext = prevProps.context;
197
200
  var nextValue = nextProps.value,
198
- item = nextProps.item;
201
+ nextItem = nextProps.item,
202
+ nextRecord = nextProps.record,
203
+ nextContext = nextProps.context;
204
+ // if (nextItem?.render) {
205
+ // let renderCache = true;
206
+ // Object.keys(nextItem?.render).forEach((key) => {
207
+ // // 如果 preItem 不包含 render 的属性,则强制刷新
208
+ // if (!preItem?.render[key]) {
209
+ // renderCache = false;
210
+ // return false
211
+ // }
212
+ // let preRenderValue = getTargetValue(preItem?.render[key], {...preRecord, ...preContext});
213
+ // let nextRenderValue = getTargetValue(nextItem?.render[key], {...nextRecord, ...nextContext})
214
+ // if (preRenderValue !== nextRenderValue) {
215
+ // renderCache = false;
216
+ // }
217
+ // })
218
+ // }
199
219
  // columns 强制更新参数
200
- if (item === null || item === void 0 ? void 0 : item.forcedUpdate) {
220
+ if (nextItem === null || nextItem === void 0 ? void 0 : nextItem.forcedUpdate) {
201
221
  return false;
202
222
  }
203
223
  // 操作列的时候强制刷新 || 当 value 值拿不到的时候
@@ -358,9 +358,9 @@ var ProTable = function ProTable(props) {
358
358
  setFooterSuctionState(false);
359
359
  }
360
360
  // 如果有切换区tab,那么重新计算
361
- if (headerFixedTopSectionDom.clientHeight) {
361
+ if (headerFixedTopSectionDom === null || headerFixedTopSectionDom === void 0 ? void 0 : headerFixedTopSectionDom.clientHeight) {
362
362
  var _headerFixedTopSectio;
363
- var headerFixedTopSectionHeight = (_headerFixedTopSectio = headerFixedTopSectionDom.clientHeight) !== null && _headerFixedTopSectio !== void 0 ? _headerFixedTopSectio : 0;
363
+ var headerFixedTopSectionHeight = (_headerFixedTopSectio = headerFixedTopSectionDom === null || headerFixedTopSectionDom === void 0 ? void 0 : headerFixedTopSectionDom.clientHeight) !== null && _headerFixedTopSectio !== void 0 ? _headerFixedTopSectio : 0;
364
364
  // const clientTableBodyHeight =
365
365
  // document.body.clientHeight - offsetHeaderHeight;
366
366
  setHeaderHeight(headerFixedTopSectionHeight + teamixNavHeight + footerRowSelectionHeight + tableHeaderHeight + 1);
@@ -46,6 +46,10 @@ function useTableSelection() {
46
46
  var dataRef = (0, _react.useRef)({
47
47
  selectedRowKeys: config.selectedRowKeys || defaultSelectedRowKeys
48
48
  });
49
+ var onSetSelectedRowKeys = function onSetSelectedRowKeys(keys) {
50
+ setSelectedRowKeys(keys);
51
+ dataRef.current.selectedRowKeys = keys;
52
+ };
49
53
  (0, _react.useEffect)(function () {
50
54
  var _config$selectedRowKe, _config$selectedRowKe2;
51
55
  setSelectedRowKeys((_config$selectedRowKe = config === null || config === void 0 ? void 0 : config.selectedRowKeys) !== null && _config$selectedRowKe !== void 0 ? _config$selectedRowKe : []);
@@ -153,7 +157,7 @@ function useTableSelection() {
153
157
  return {
154
158
  rowSelection: rowSelection,
155
159
  selectedRowKeys: selectedRowKeys,
156
- setSelectedRowKeys: setSelectedRowKeys,
160
+ setSelectedRowKeys: onSetSelectedRowKeys,
157
161
  selectedRecords: selectedRecords,
158
162
  setSelectedRecords: setSelectedRecords
159
163
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamix/pro",
3
- "version": "1.5.44",
3
+ "version": "1.5.45",
4
4
  "description": "TeamixPro大包",
5
5
  "keywords": [
6
6
  "aliyun",