@teamix/pro 1.5.45 → 1.5.46
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/pro.js +46 -27
- package/dist/pro.min.js +1 -1
- package/es/form/Filter/useBindUrl.d.ts +1 -1
- package/es/form/Filter/useBindUrl.js +23 -19
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/table/utils/genAutoWidthColumns.js +4 -1
- package/lib/form/Filter/useBindUrl.d.ts +1 -1
- package/lib/form/Filter/useBindUrl.js +22 -18
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/table/utils/genAutoWidthColumns.js +4 -1
- package/package.json +1 -1
package/dist/pro.js
CHANGED
@@ -97698,6 +97698,13 @@ var baseStringifyConfig = {
|
|
97698
97698
|
skipNull: false,
|
97699
97699
|
skipEmptyString: false
|
97700
97700
|
};
|
97701
|
+
|
97702
|
+
// 柯里化
|
97703
|
+
function curryingStringify(options) {
|
97704
|
+
return function (input) {
|
97705
|
+
return (0,query_string__WEBPACK_IMPORTED_MODULE_0__.stringify)(input, options);
|
97706
|
+
};
|
97707
|
+
}
|
97701
97708
|
var useUrlState = function useUrlState(initialState, options) {
|
97702
97709
|
var _ref = options || {},
|
97703
97710
|
_ref$navigateMode = _ref.navigateMode,
|
@@ -97745,7 +97752,7 @@ var useUrlState = function useUrlState(initialState, options) {
|
|
97745
97752
|
});
|
97746
97753
|
}
|
97747
97754
|
};
|
97748
|
-
return [targetQuery, (0,ahooks__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(setState), queryFromUrl];
|
97755
|
+
return [targetQuery, (0,ahooks__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(setState), queryFromUrl, curryingStringify(mergedStringifyOptions)];
|
97749
97756
|
};
|
97750
97757
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (useUrlState);
|
97751
97758
|
|
@@ -97788,7 +97795,6 @@ var mergedOptions = function mergedOptions(options, globalOptions) {
|
|
97788
97795
|
}, globalOptions == null ? void 0 : globalOptions.parseOptions, options == null ? void 0 : options.parseOptions)
|
97789
97796
|
});
|
97790
97797
|
};
|
97791
|
-
|
97792
97798
|
/**
|
97793
97799
|
* 解析值类型
|
97794
97800
|
* @param values 值
|
@@ -97813,9 +97819,12 @@ var parseValueType = function parseValueType(values, valueType, mode) {
|
|
97813
97819
|
Object.entries(value).forEach(function (_ref2) {
|
97814
97820
|
var kk = _ref2[0],
|
97815
97821
|
vv = _ref2[1];
|
97816
|
-
newValues[k + "." + kk] = vv;
|
97822
|
+
newValues[String(k) + "." + kk] = vv; // add String() to make typescript happy
|
97817
97823
|
});
|
97824
|
+
|
97818
97825
|
delete newValues[k];
|
97826
|
+
} else {
|
97827
|
+
console.warn("valueType's object type must be a plain object");
|
97819
97828
|
}
|
97820
97829
|
break;
|
97821
97830
|
default:
|
@@ -97842,7 +97851,8 @@ var parseValueType = function parseValueType(values, valueType, mode) {
|
|
97842
97851
|
Object.entries(newValues).forEach(function (_ref3) {
|
97843
97852
|
var kk = _ref3[0],
|
97844
97853
|
vv = _ref3[1];
|
97845
|
-
|
97854
|
+
// add String() to make typescript happy
|
97855
|
+
if (kk.startsWith(String(k) + ".")) {
|
97846
97856
|
var _kk$split = kk.split('.'),
|
97847
97857
|
_ = _kk$split[0],
|
97848
97858
|
subKey = _kk$split[1];
|
@@ -97860,10 +97870,10 @@ var parseValueType = function parseValueType(values, valueType, mode) {
|
|
97860
97870
|
};
|
97861
97871
|
|
97862
97872
|
/**
|
97863
|
-
* 基于useUrlState
|
97873
|
+
* 基于 ahooks 的 useUrlState,增加默认配置和额外参数,以及幂等判断避免重复 update 的能力
|
97864
97874
|
* @param initialState 同useUrlState
|
97865
97875
|
* @param urlStateOptions 新增beforeStringify、beforeParse、valueType参数和默认配置
|
97866
|
-
* @returns `[urlState, setUrlState, queryFromUrl]` 注意 queryFromUrl 完全对应 url 中参数的情况、用于幂等判断,而 urlState 包含不在 url 中的(初次 use
|
97876
|
+
* @returns `[urlState, setUrlState, queryFromUrl, stringify]` 注意 queryFromUrl 完全对应 url 中参数的情况、用于幂等判断,而 urlState 包含不在 url 中的(初次 use 时提供的)默认值;stringify 是根据 options 柯里化得到的参数转字符串函数,也用于幂等判断。
|
97867
97877
|
*/
|
97868
97878
|
var useUrlState = function useUrlState(initialState, urlStateOptions) {
|
97869
97879
|
var _getGlobalConfig;
|
@@ -97898,7 +97908,8 @@ var useUrlState = function useUrlState(initialState, urlStateOptions) {
|
|
97898
97908
|
var _useUrlStateAhooks = (0,_ahooksUseUrlState__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z)(initialState, options),
|
97899
97909
|
state = _useUrlStateAhooks[0],
|
97900
97910
|
setState = _useUrlStateAhooks[1],
|
97901
|
-
queryFromUrl = _useUrlStateAhooks[2]
|
97911
|
+
queryFromUrl = _useUrlStateAhooks[2],
|
97912
|
+
stringify = _useUrlStateAhooks[3];
|
97902
97913
|
var setUrlStateCalls = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)([]);
|
97903
97914
|
|
97904
97915
|
// 配置url参数
|
@@ -97918,7 +97929,7 @@ var useUrlState = function useUrlState(initialState, urlStateOptions) {
|
|
97918
97929
|
|
97919
97930
|
// 输出url参数
|
97920
97931
|
var urlState = parseValueType(mergedBeforeParse(state), mergedValueType, 'post');
|
97921
|
-
return [urlState, setUrlState, queryFromUrl];
|
97932
|
+
return [urlState, setUrlState, queryFromUrl, stringify];
|
97922
97933
|
};
|
97923
97934
|
|
97924
97935
|
|
@@ -102609,6 +102620,8 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
102609
102620
|
|
102610
102621
|
|
102611
102622
|
function useBindUrl(bindUrl, functions, formRef) {
|
102623
|
+
var update = (0,_teamix_hooks__WEBPACK_IMPORTED_MODULE_0__.useUpdate)();
|
102624
|
+
|
102612
102625
|
// 预处理 bindUrl 参数(主要兼容 SelectGroup 组件)
|
102613
102626
|
var initializeBindUrl = function initializeBindUrl(options) {
|
102614
102627
|
return options ? _extends({}, options, {
|
@@ -102640,7 +102653,8 @@ function useBindUrl(bindUrl, functions, formRef) {
|
|
102640
102653
|
var _ref3 = bindUrl ? (0,_teamix_hooks__WEBPACK_IMPORTED_MODULE_0__.useUrlState)(undefined, initializeBindUrl((0,_teamix_utils__WEBPACK_IMPORTED_MODULE_1__.isPlainObj)(bindUrl) ? bindUrl : {})) : [],
|
102641
102654
|
urlState = _ref3[0],
|
102642
102655
|
setUrlState = _ref3[1],
|
102643
|
-
queryFromUrl = _ref3[2]
|
102656
|
+
queryFromUrl = _ref3[2],
|
102657
|
+
stringify = _ref3[3];
|
102644
102658
|
|
102645
102659
|
// 输出配置url参数的函数
|
102646
102660
|
var initializedFunctions = Object.entries(functions).reduce(function (prev, _ref4) {
|
@@ -102650,31 +102664,33 @@ function useBindUrl(bindUrl, functions, formRef) {
|
|
102650
102664
|
originalFunction == null ? void 0 : originalFunction(values);
|
102651
102665
|
if (bindUrl) {
|
102652
102666
|
// guard: onInit 会在 mount 时被自动调用,需要避免其在任何情况下都调用 setUrlState。故增加幂等判断
|
102653
|
-
var
|
102667
|
+
var hasStringifiedDiff = false;
|
102668
|
+
var hasValuesDiff = false;
|
102654
102669
|
for (var paramName in values) {
|
102655
102670
|
if (Object.hasOwn(values, paramName)) {
|
102656
|
-
var simpleTransform = function simpleTransform(value) {
|
102657
|
-
if (value instanceof Array) {
|
102658
|
-
return value.join(',');
|
102659
|
-
}
|
102660
|
-
if (value === undefined || value === null) {
|
102661
|
-
return '';
|
102662
|
-
}
|
102663
|
-
if (value instanceof Object) {
|
102664
|
-
console.warn('useBindUrl: 无法处理对象类型的 url 参数');
|
102665
|
-
}
|
102666
|
-
return value;
|
102667
|
-
};
|
102668
102671
|
var oldValue = queryFromUrl == null ? void 0 : queryFromUrl[paramName];
|
102669
102672
|
var newValue = values[paramName];
|
102670
|
-
|
102671
|
-
|
102673
|
+
// 这里我们必须使用 stringify 来判断是否有变化,因为 special case 太多。例如,默认配置下:
|
102674
|
+
// { a: [undefined, undefined], b: undefined, c: [], d: null, e: ''} 会生成 'd=&e='
|
102675
|
+
// 类似地,{ a: [''], b: [null], c: [undefined] } 会生成 'a=&b='。更不用说还有非默认配置的情况
|
102676
|
+
// 想要避免这种 hazard,我们必须使用钩子内部导出的、经过柯里化的 stringify 来判断生成的字符串是否无变化。
|
102677
|
+
if (stringify({
|
102678
|
+
v: newValue
|
102679
|
+
}) !== stringify({
|
102680
|
+
v: oldValue
|
102681
|
+
})) {
|
102682
|
+
hasStringifiedDiff = true;
|
102672
102683
|
break;
|
102684
|
+
} else if (oldValue !== newValue) {
|
102685
|
+
hasValuesDiff = true;
|
102673
102686
|
}
|
102674
102687
|
}
|
102675
102688
|
}
|
102676
|
-
if (
|
102689
|
+
if (hasStringifiedDiff) {
|
102677
102690
|
setUrlState(values);
|
102691
|
+
} else if (hasValuesDiff) {
|
102692
|
+
// guard: 虽然 url 字符串没有变化,但是 values 变化了,还是需要触发组件的 update 以保证行为一致。
|
102693
|
+
update();
|
102678
102694
|
}
|
102679
102695
|
}
|
102680
102696
|
};
|
@@ -105649,7 +105665,7 @@ if (!((_window = window) != null && _window.TEAMIXPRO_WITHOUT_ICON)) {
|
|
105649
105665
|
|
105650
105666
|
|
105651
105667
|
|
105652
|
-
var version = '1.5.
|
105668
|
+
var version = '1.5.46';
|
105653
105669
|
|
105654
105670
|
// By TeamixTest
|
105655
105671
|
window.postMessage({
|
@@ -114455,7 +114471,10 @@ function genAutoWidthColumns(columns, ref, data, size, useRowSelection, actionCo
|
|
114455
114471
|
return columns;
|
114456
114472
|
}
|
114457
114473
|
var finalColumns = [];
|
114458
|
-
|
114474
|
+
// @FIXME: lodash 的 cloneDeep 无法正确处理 columns 内部含有 ReactNode 的情况。我们也不该用 React 以外的工具来复制 ReactNode
|
114475
|
+
// 因为它里面的 fiber node id 等等的在复制后并不会变,对于 React 来讲这就意味着两个 ReactNode 有相同的 fiber node id,不符合预期。
|
114476
|
+
// 先注释掉,后续再想办法
|
114477
|
+
var filterdColumnsResult = columns; // _.cloneDeep(columns);
|
114459
114478
|
filterdColumnsResult.forEach(function (column, index) {
|
114460
114479
|
var render = column.render,
|
114461
114480
|
_column$valueType = column.valueType,
|