@teamix/pro 1.5.45 → 1.5.46-beta.1
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.js +65 -35
- 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/form/SchemaForm/index.d.ts +1 -1
- package/es/form/SchemaForm/index.js +19 -8
- 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/form/SchemaForm/index.d.ts +1 -1
- package/lib/form/SchemaForm/index.js +19 -8
- 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
|
};
|
@@ -103805,10 +103821,12 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
103805
103821
|
return schemaProperties;
|
103806
103822
|
}, []);
|
103807
103823
|
var formilySchema = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {
|
103808
|
-
return {
|
103809
|
-
|
103810
|
-
|
103811
|
-
|
103824
|
+
return schema == null ? void 0 : schema.map(function (item) {
|
103825
|
+
return {
|
103826
|
+
type: 'object',
|
103827
|
+
properties: formatSchema([item])
|
103828
|
+
};
|
103829
|
+
});
|
103812
103830
|
}, [schema]);
|
103813
103831
|
var mergedScope = _extends({}, scope, {
|
103814
103832
|
$request: _reactions__WEBPACK_IMPORTED_MODULE_12__/* .$request */ .bE,
|
@@ -103816,10 +103834,19 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function
|
|
103816
103834
|
$dataSource: _reactions__WEBPACK_IMPORTED_MODULE_12__/* .$dataSource */ .Sv,
|
103817
103835
|
$validator: _reactions__WEBPACK_IMPORTED_MODULE_12__/* .$validator */ .fn
|
103818
103836
|
}, schemaScopeRef.current);
|
103819
|
-
return
|
103820
|
-
|
103821
|
-
|
103822
|
-
|
103837
|
+
return formilySchema == null ? void 0 : formilySchema.map(function (item) {
|
103838
|
+
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(SchemaField, {
|
103839
|
+
key: JSON.stringify(item, function (key, value) {
|
103840
|
+
if (key.startsWith('x-') || key.startsWith('_')) return '';
|
103841
|
+
if (typeof value === 'function') {
|
103842
|
+
return value.toString();
|
103843
|
+
}
|
103844
|
+
return value;
|
103845
|
+
}),
|
103846
|
+
schema: item,
|
103847
|
+
components: components,
|
103848
|
+
scope: mergedScope
|
103849
|
+
});
|
103823
103850
|
});
|
103824
103851
|
}));
|
103825
103852
|
|
@@ -105649,7 +105676,7 @@ if (!((_window = window) != null && _window.TEAMIXPRO_WITHOUT_ICON)) {
|
|
105649
105676
|
|
105650
105677
|
|
105651
105678
|
|
105652
|
-
var version = '1.5.
|
105679
|
+
var version = '1.5.46-beta.1';
|
105653
105680
|
|
105654
105681
|
// By TeamixTest
|
105655
105682
|
window.postMessage({
|
@@ -114455,7 +114482,10 @@ function genAutoWidthColumns(columns, ref, data, size, useRowSelection, actionCo
|
|
114455
114482
|
return columns;
|
114456
114483
|
}
|
114457
114484
|
var finalColumns = [];
|
114458
|
-
|
114485
|
+
// @FIXME: lodash 的 cloneDeep 无法正确处理 columns 内部含有 ReactNode 的情况。我们也不该用 React 以外的工具来复制 ReactNode
|
114486
|
+
// 因为它里面的 fiber node id 等等的在复制后并不会变,对于 React 来讲这就意味着两个 ReactNode 有相同的 fiber node id,不符合预期。
|
114487
|
+
// 先注释掉,后续再想办法
|
114488
|
+
var filterdColumnsResult = columns; // _.cloneDeep(columns);
|
114459
114489
|
filterdColumnsResult.forEach(function (column, index) {
|
114460
114490
|
var render = column.render,
|
114461
114491
|
_column$valueType = column.valueType,
|