@sheinx/hooks 3.9.13 → 3.9.14-beta.10
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/cjs/common/use-click-away/index.d.ts.map +1 -1
- package/cjs/common/use-click-away/index.js +6 -3
- package/cjs/common/use-list-select/use-list-select-multiple.d.ts.map +1 -1
- package/cjs/common/use-list-select/use-list-select-multiple.js +11 -0
- package/cjs/components/use-form/use-form.d.ts.map +1 -1
- package/cjs/components/use-form/use-form.js +4 -1
- package/cjs/components/use-input/use-input-number.d.ts +1 -0
- package/cjs/components/use-input/use-input-number.d.ts.map +1 -1
- package/cjs/components/use-input/use-input-number.js +10 -5
- package/cjs/components/use-input/use-input-number.type.d.ts +1 -0
- package/cjs/components/use-input/use-input-number.type.d.ts.map +1 -1
- package/cjs/components/use-table/use-table-layout.d.ts.map +1 -1
- package/cjs/components/use-table/use-table-layout.js +41 -3
- package/esm/common/use-click-away/index.d.ts.map +1 -1
- package/esm/common/use-click-away/index.js +6 -3
- package/esm/common/use-list-select/use-list-select-multiple.d.ts.map +1 -1
- package/esm/common/use-list-select/use-list-select-multiple.js +11 -0
- package/esm/components/use-form/use-form.d.ts.map +1 -1
- package/esm/components/use-form/use-form.js +4 -1
- package/esm/components/use-input/use-input-number.d.ts +1 -0
- package/esm/components/use-input/use-input-number.d.ts.map +1 -1
- package/esm/components/use-input/use-input-number.js +10 -5
- package/esm/components/use-input/use-input-number.type.d.ts +1 -0
- package/esm/components/use-input/use-input-number.type.d.ts.map +1 -1
- package/esm/components/use-table/use-table-layout.d.ts.map +1 -1
- package/esm/components/use-table/use-table-layout.js +41 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAI7C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AACnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE;IAE5D,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC/B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAI7C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AACnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE;IAE5D,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC/B,QAsCA;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -22,10 +22,13 @@ function useClickAway(params) {
|
|
|
22
22
|
});
|
|
23
23
|
var target = Array.isArray(t) ? t : [t];
|
|
24
24
|
var handleClickAway = (0, _usePersistFn.default)(function (event) {
|
|
25
|
-
|
|
25
|
+
var _composedPath, _composedPath2, _ref;
|
|
26
|
+
// composedPath() 兼容 Shadow DOM,包含事件传播路径上的所有元素
|
|
27
|
+
var path = (_composedPath = (_composedPath2 = (_ref = event).composedPath) === null || _composedPath2 === void 0 ? void 0 : _composedPath2.call(_ref)) !== null && _composedPath !== void 0 ? _composedPath : [event.target];
|
|
26
28
|
if (target.findIndex(function (t) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
+
return t.current && path.some(function (n) {
|
|
30
|
+
return n instanceof Node && t.current.contains(n);
|
|
31
|
+
});
|
|
29
32
|
}) > -1) {
|
|
30
33
|
return;
|
|
31
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA6MK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BAjNzB,GAAG;;
|
|
1
|
+
{"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA6MK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BAjNzB,GAAG;;qCAwQqB,MAAM;;CAoC5D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -241,11 +241,22 @@ var useListSelectMultiple = function useListSelectMultiple(props) {
|
|
|
241
241
|
for (var j = 0; j < raws.length; j++) {
|
|
242
242
|
var _item2 = raws[j];
|
|
243
243
|
if (props.prediction(values[_i], _item2)) {
|
|
244
|
+
if (props.keepCache) context.valueDataCache.set(values[_i], _item2);
|
|
244
245
|
result.push(_item2);
|
|
245
246
|
raws.splice(j, 1);
|
|
246
247
|
continue outer;
|
|
247
248
|
}
|
|
248
249
|
}
|
|
250
|
+
// 当前 data 找不到,从 valueDataCache 中回退匹配
|
|
251
|
+
if (props.keepCache && context.valueDataCache) {
|
|
252
|
+
var cacheValues = Array.from(context.valueDataCache.values());
|
|
253
|
+
for (var k = 0; k < cacheValues.length; k++) {
|
|
254
|
+
if (props.prediction(values[_i], cacheValues[k])) {
|
|
255
|
+
result.push(cacheValues[k]);
|
|
256
|
+
continue outer;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
249
260
|
result.push({
|
|
250
261
|
IS_NOT_MATCHED_VALUE: true,
|
|
251
262
|
value: values[_i]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AA6BtE,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAuTC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,WAAW,CAAC,EAAE,OAAO,CAAA;aAAE;8BArQnB,MAAM;oCAsVD,OAAO,aAAoB,MAAM,IAAI;;6BAf3C,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAjTxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAiXvB,MAAM,WAAW,gBAAgB;gCA7CzB,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCA3JpD,MAAM,0BAAyB,qBAAqB;;;;;;;;oBA+EjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,WAAW,CAAC,EAAE,OAAO,CAAA;SAAE;0BArQnB,MAAM;gCAsVD,OAAO,aAAoB,MAAM,IAAI;;yBAf3C,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAjTxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAiXvB,MAAM,WAAW,gBAAgB;4BA7CzB,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BA3JpD,MAAM,0BAAyB,qBAAqB;;;CAic9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -28,6 +28,7 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
28
28
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
29
29
|
var globalKey = '__global__&&@@';
|
|
30
30
|
var SUBMIT_TIMEOUT = 10;
|
|
31
|
+
var RESET_TIMEOUT = 500;
|
|
31
32
|
var emptyObj = {};
|
|
32
33
|
var useForm = function useForm(props) {
|
|
33
34
|
var _props$defaultValue = props.defaultValue,
|
|
@@ -324,6 +325,8 @@ var useForm = function useForm(props) {
|
|
|
324
325
|
var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
325
326
|
validate: false
|
|
326
327
|
};
|
|
328
|
+
// 重置保护期内(500ms),忽略子组件延迟 onChange 写回的旧值
|
|
329
|
+
if (context.resetTime && Date.now() - context.resetTime < RESET_TIMEOUT) return;
|
|
327
330
|
onChange(function (draft) {
|
|
328
331
|
var values = Object.keys(vals);
|
|
329
332
|
// 针对 name 为数组模式,如 datepicker 的 name={['startTime', 'endTime']} 时,前者校验可能需要依赖后者,因此需要提前将后者数据整合至 draft 用于多字段整合校验
|
|
@@ -491,7 +494,7 @@ var useForm = function useForm(props) {
|
|
|
491
494
|
onChange(getDefaultValue());
|
|
492
495
|
clearValidate();
|
|
493
496
|
update();
|
|
494
|
-
context.resetTime =
|
|
497
|
+
context.resetTime = Date.now();
|
|
495
498
|
(_props$onReset = props.onReset) === null || _props$onReset === void 0 || _props$onReset.call(props);
|
|
496
499
|
other === null || other === void 0 || (_other$onReset = other.onReset) === null || _other$onReset === void 0 || _other$onReset.call(other, e);
|
|
497
500
|
};
|
|
@@ -3,6 +3,7 @@ import { InputNumberProps } from './use-input-number.type';
|
|
|
3
3
|
declare const useNumberFormat: (props: InputNumberProps) => {
|
|
4
4
|
onPlus: () => void;
|
|
5
5
|
onMinus: () => void;
|
|
6
|
+
onClear: () => void;
|
|
6
7
|
onChange: (v: string | undefined) => void;
|
|
7
8
|
onBlur: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
|
|
8
9
|
onFocus: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB
|
|
1
|
+
{"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;;CAiM/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -34,6 +34,7 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
34
34
|
min = props.min,
|
|
35
35
|
max = props.max,
|
|
36
36
|
allowNull = props.allowNull,
|
|
37
|
+
clearToUndefined = props.clearToUndefined,
|
|
37
38
|
_props$step = props.step,
|
|
38
39
|
step = _props$step === void 0 ? 1 : _props$step,
|
|
39
40
|
cancelBlurChange = props.cancelBlurChange,
|
|
@@ -54,10 +55,9 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
54
55
|
setInternalInputValue = _React$useState2[1];
|
|
55
56
|
var focusedRef = _react.default.useRef(false);
|
|
56
57
|
(0, _react.useEffect)(function () {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
setInternalInputValue(getStringValue(props.value));
|
|
58
|
+
var stringValue = getStringValue(props.value);
|
|
59
|
+
if (stringValue !== inernalInputValue && (!focusedRef.current || props.value == null)) {
|
|
60
|
+
setInternalInputValue(stringValue);
|
|
61
61
|
}
|
|
62
62
|
}, [props.value]);
|
|
63
63
|
var getNumberValue = function getNumberValue(value) {
|
|
@@ -183,6 +183,10 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
183
183
|
var num = changeValue(-step);
|
|
184
184
|
if (num !== undefined) setInternalInputValue(getStringValue(num));
|
|
185
185
|
});
|
|
186
|
+
var handleClear = (0, _usePersistFn.default)(function () {
|
|
187
|
+
setInternalInputValue('');
|
|
188
|
+
onChange === null || onChange === void 0 || onChange(clearToUndefined ? undefined : allowNull ? null : '');
|
|
189
|
+
});
|
|
186
190
|
return _objectSpread(_objectSpread({}, (0, _useInputFormat.default)({
|
|
187
191
|
value: inernalInputValue,
|
|
188
192
|
type: 'number',
|
|
@@ -196,7 +200,8 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
196
200
|
cancelBlurChange: true
|
|
197
201
|
})), {}, {
|
|
198
202
|
onPlus: handlePlus,
|
|
199
|
-
onMinus: handleMinus
|
|
203
|
+
onMinus: handleMinus,
|
|
204
|
+
onClear: handleClear
|
|
200
205
|
});
|
|
201
206
|
};
|
|
202
207
|
var _default = exports.default = useNumberFormat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;;;yBA+CX,MAAM,UAAU,MAAM;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;;;yBA+CX,MAAM,UAAU,MAAM;;;;;;;CA2R5D,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -180,7 +180,20 @@ var useTableLayout = function useTableLayout(props) {
|
|
|
180
180
|
if (cols && cols.every(function (v) {
|
|
181
181
|
return v === 0;
|
|
182
182
|
})) return;
|
|
183
|
-
|
|
183
|
+
var shifted = shiftDecimalToLastColumn(cols);
|
|
184
|
+
// 当 colgroup 中存在 undefined(说明从未被成功测量过),跳过相等判断,强制触发重新测量
|
|
185
|
+
// 场景:Table 在 display:none 容器中挂载时 getColgroup 测量失败,
|
|
186
|
+
// 后续 resetColGroup 产出值与初始值相同会被跳过,导致未设 width 的列永远无法获得实际宽度
|
|
187
|
+
var hasUndefined = shifted.some(function (v) {
|
|
188
|
+
return v === undefined;
|
|
189
|
+
});
|
|
190
|
+
// 值未变化时跳过,避免触发不必要的 useLayoutEffect
|
|
191
|
+
if (!hasUndefined && colgroup && shifted.length === colgroup.length && shifted.every(function (v, i) {
|
|
192
|
+
return v === colgroup[i];
|
|
193
|
+
})) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
setColgroup(shifted);
|
|
184
197
|
setAdjust(adjust);
|
|
185
198
|
if (!adjust) {
|
|
186
199
|
updateResizeFlag();
|
|
@@ -234,8 +247,7 @@ var useTableLayout = function useTableLayout(props) {
|
|
|
234
247
|
var index = 0;
|
|
235
248
|
var sum = 0;
|
|
236
249
|
var _loop = function _loop() {
|
|
237
|
-
var
|
|
238
|
-
width = _items$i$getBoundingC.width;
|
|
250
|
+
var width = items[i].offsetWidth;
|
|
239
251
|
sum += width;
|
|
240
252
|
var colspan = items[i].getAttribute('colspan');
|
|
241
253
|
var colspanNum = parseInt(colspan || '1', 10);
|
|
@@ -363,6 +375,32 @@ var useTableLayout = function useTableLayout(props) {
|
|
|
363
375
|
(_cancelFunc = cancelFunc) === null || _cancelFunc === void 0 || _cancelFunc();
|
|
364
376
|
};
|
|
365
377
|
}, [scrollRef.current]);
|
|
378
|
+
|
|
379
|
+
// 当祖先元素的 CSS 动画结束时(如 Modal 入场动画),重新测量列宽
|
|
380
|
+
// 解决 Table 在动画容器(如 Modal)中渲染时,动画期间测量的列宽不准确导致 sticky 表头与表体列宽错位的问题
|
|
381
|
+
(0, _react.useEffect)(function () {
|
|
382
|
+
var scrollEl = scrollRef.current;
|
|
383
|
+
if (!scrollEl) return;
|
|
384
|
+
|
|
385
|
+
// 查找最近的 fixed 定位祖先(如 Modal wrapper),仅在该元素上监听动画结束
|
|
386
|
+
var fixedAncestor = null;
|
|
387
|
+
var parent = scrollEl.parentElement;
|
|
388
|
+
while (parent) {
|
|
389
|
+
if (window.getComputedStyle(parent).position === 'fixed') {
|
|
390
|
+
fixedAncestor = parent;
|
|
391
|
+
break;
|
|
392
|
+
}
|
|
393
|
+
parent = parent.parentElement;
|
|
394
|
+
}
|
|
395
|
+
if (!fixedAncestor) return;
|
|
396
|
+
var handleAnimationEnd = function handleAnimationEnd() {
|
|
397
|
+
getColgroup(false);
|
|
398
|
+
};
|
|
399
|
+
fixedAncestor.addEventListener('animationend', handleAnimationEnd);
|
|
400
|
+
return function () {
|
|
401
|
+
fixedAncestor.removeEventListener('animationend', handleAnimationEnd);
|
|
402
|
+
};
|
|
403
|
+
}, [scrollRef.current]);
|
|
366
404
|
(0, _react.useLayoutEffect)(function () {
|
|
367
405
|
if (adjust) {
|
|
368
406
|
getColgroup(adjust === 'drag');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAI7C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AACnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE;IAE5D,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC/B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAI7C,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAElD,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;AACnD,wBAAgB,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE;IAE5D,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE9B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;CAC/B,QAsCA;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -14,10 +14,13 @@ export function useClickAway(params) {
|
|
|
14
14
|
});
|
|
15
15
|
var target = Array.isArray(t) ? t : [t];
|
|
16
16
|
var handleClickAway = usePersistFn(function (event) {
|
|
17
|
-
|
|
17
|
+
var _composedPath, _composedPath2, _ref;
|
|
18
|
+
// composedPath() 兼容 Shadow DOM,包含事件传播路径上的所有元素
|
|
19
|
+
var path = (_composedPath = (_composedPath2 = (_ref = event).composedPath) === null || _composedPath2 === void 0 ? void 0 : _composedPath2.call(_ref)) !== null && _composedPath !== void 0 ? _composedPath : [event.target];
|
|
18
20
|
if (target.findIndex(function (t) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
return t.current && path.some(function (n) {
|
|
22
|
+
return n instanceof Node && t.current.contains(n);
|
|
23
|
+
});
|
|
21
24
|
}) > -1) {
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA6MK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BAjNzB,GAAG;;
|
|
1
|
+
{"version":3,"file":"use-list-select-multiple.d.ts","sourceRoot":"","sources":["use-list-select-multiple.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAMtE,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;sDA6MK;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;;;;4BAjNzB,GAAG;;qCAwQqB,MAAM;;CAoC5D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -231,11 +231,22 @@ var useListSelectMultiple = function useListSelectMultiple(props) {
|
|
|
231
231
|
for (var j = 0; j < raws.length; j++) {
|
|
232
232
|
var _item2 = raws[j];
|
|
233
233
|
if (props.prediction(values[_i], _item2)) {
|
|
234
|
+
if (props.keepCache) context.valueDataCache.set(values[_i], _item2);
|
|
234
235
|
result.push(_item2);
|
|
235
236
|
raws.splice(j, 1);
|
|
236
237
|
continue outer;
|
|
237
238
|
}
|
|
238
239
|
}
|
|
240
|
+
// 当前 data 找不到,从 valueDataCache 中回退匹配
|
|
241
|
+
if (props.keepCache && context.valueDataCache) {
|
|
242
|
+
var cacheValues = Array.from(context.valueDataCache.values());
|
|
243
|
+
for (var k = 0; k < cacheValues.length; k++) {
|
|
244
|
+
if (props.prediction(values[_i], cacheValues[k])) {
|
|
245
|
+
result.push(cacheValues[k]);
|
|
246
|
+
continue outer;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
239
250
|
result.push({
|
|
240
251
|
IS_NOT_MATCHED_VALUE: true,
|
|
241
252
|
value: values[_i]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"use-form.d.ts","sourceRoot":"","sources":["use-form.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AA6BtE,OAAO,EAEL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAGhB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI5D,QAAA,MAAM,OAAO;;;;;;;;;wBAuTC;gBAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;gBAAC,WAAW,CAAC,EAAE,OAAO,CAAA;aAAE;8BArQnB,MAAM;oCAsVD,OAAO,aAAoB,MAAM,IAAI;;6BAf3C,MAAM,KAAK,KAAK,GAAG,SAAS;;oCAdrB,MAAM,EAAE;sCAjTxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;qCAiXvB,MAAM,WAAW,gBAAgB;gCA7CzB,MAAM,SAAS,MAAM,UAAU,KAAK;gCAKpC,MAAM,SAAS,MAAM;kCA3JpD,MAAM,0BAAyB,qBAAqB;;;;;;;;oBA+EjD;YAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;YAAC,WAAW,CAAC,EAAE,OAAO,CAAA;SAAE;0BArQnB,MAAM;gCAsVD,OAAO,aAAoB,MAAM,IAAI;;yBAf3C,MAAM,KAAK,KAAK,GAAG,SAAS;;gCAdrB,MAAM,EAAE;kCAjTxC,MAAM,GAAG,MAAM,EAAE,WAAU,gBAAgB;iCAiXvB,MAAM,WAAW,gBAAgB;4BA7CzB,MAAM,SAAS,MAAM,UAAU,KAAK;4BAKpC,MAAM,SAAS,MAAM;8BA3JpD,MAAM,0BAAyB,qBAAqB;;;CAic9D,CAAC;AAEF,eAAe,OAAO,CAAC"}
|
|
@@ -17,6 +17,7 @@ import { usePrevious } from "../../common/use-default-value";
|
|
|
17
17
|
import { SchemaBuilder } from "./use-form-schema/form-schema-builder";
|
|
18
18
|
var globalKey = '__global__&&@@';
|
|
19
19
|
var SUBMIT_TIMEOUT = 10;
|
|
20
|
+
var RESET_TIMEOUT = 500;
|
|
20
21
|
import { current, produce } from "../../utils/immer";
|
|
21
22
|
import { deepGet, deepRemove, deepSet, docScroll, extractEventHandlers, isArray, isObject, shallowEqual, wrapFormError, deepClone, getAllKeyPaths, getParentKeys, getCompleteFieldKeys, devUseWarning, getFieldId, getClosestScrollContainer } from "../../utils";
|
|
22
23
|
var emptyObj = {};
|
|
@@ -315,6 +316,8 @@ var useForm = function useForm(props) {
|
|
|
315
316
|
var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
316
317
|
validate: false
|
|
317
318
|
};
|
|
319
|
+
// 重置保护期内(500ms),忽略子组件延迟 onChange 写回的旧值
|
|
320
|
+
if (context.resetTime && Date.now() - context.resetTime < RESET_TIMEOUT) return;
|
|
318
321
|
onChange(function (draft) {
|
|
319
322
|
var values = Object.keys(vals);
|
|
320
323
|
// 针对 name 为数组模式,如 datepicker 的 name={['startTime', 'endTime']} 时,前者校验可能需要依赖后者,因此需要提前将后者数据整合至 draft 用于多字段整合校验
|
|
@@ -482,7 +485,7 @@ var useForm = function useForm(props) {
|
|
|
482
485
|
onChange(getDefaultValue());
|
|
483
486
|
clearValidate();
|
|
484
487
|
update();
|
|
485
|
-
context.resetTime =
|
|
488
|
+
context.resetTime = Date.now();
|
|
486
489
|
(_props$onReset = props.onReset) === null || _props$onReset === void 0 || _props$onReset.call(props);
|
|
487
490
|
other === null || other === void 0 || (_other$onReset = other.onReset) === null || _other$onReset === void 0 || _other$onReset.call(other, e);
|
|
488
491
|
};
|
|
@@ -3,6 +3,7 @@ import { InputNumberProps } from './use-input-number.type';
|
|
|
3
3
|
declare const useNumberFormat: (props: InputNumberProps) => {
|
|
4
4
|
onPlus: () => void;
|
|
5
5
|
onMinus: () => void;
|
|
6
|
+
onClear: () => void;
|
|
6
7
|
onChange: (v: string | undefined) => void;
|
|
7
8
|
onBlur: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
|
|
8
9
|
onFocus: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB
|
|
1
|
+
{"version":3,"file":"use-input-number.d.ts","sourceRoot":"","sources":["use-input-number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAK3D,QAAA,MAAM,eAAe,UAAW,gBAAgB;;;;;;;;;CAiM/C,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -25,6 +25,7 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
25
25
|
min = props.min,
|
|
26
26
|
max = props.max,
|
|
27
27
|
allowNull = props.allowNull,
|
|
28
|
+
clearToUndefined = props.clearToUndefined,
|
|
28
29
|
_props$step = props.step,
|
|
29
30
|
step = _props$step === void 0 ? 1 : _props$step,
|
|
30
31
|
cancelBlurChange = props.cancelBlurChange,
|
|
@@ -45,10 +46,9 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
45
46
|
setInternalInputValue = _React$useState2[1];
|
|
46
47
|
var focusedRef = React.useRef(false);
|
|
47
48
|
useEffect(function () {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
setInternalInputValue(getStringValue(props.value));
|
|
49
|
+
var stringValue = getStringValue(props.value);
|
|
50
|
+
if (stringValue !== inernalInputValue && (!focusedRef.current || props.value == null)) {
|
|
51
|
+
setInternalInputValue(stringValue);
|
|
52
52
|
}
|
|
53
53
|
}, [props.value]);
|
|
54
54
|
var getNumberValue = function getNumberValue(value) {
|
|
@@ -174,6 +174,10 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
174
174
|
var num = changeValue(-step);
|
|
175
175
|
if (num !== undefined) setInternalInputValue(getStringValue(num));
|
|
176
176
|
});
|
|
177
|
+
var handleClear = usePersistFn(function () {
|
|
178
|
+
setInternalInputValue('');
|
|
179
|
+
onChange === null || onChange === void 0 || onChange(clearToUndefined ? undefined : allowNull ? null : '');
|
|
180
|
+
});
|
|
177
181
|
return _objectSpread(_objectSpread({}, useInputFormat({
|
|
178
182
|
value: inernalInputValue,
|
|
179
183
|
type: 'number',
|
|
@@ -187,7 +191,8 @@ var useNumberFormat = function useNumberFormat(props) {
|
|
|
187
191
|
cancelBlurChange: true
|
|
188
192
|
})), {}, {
|
|
189
193
|
onPlus: handlePlus,
|
|
190
|
-
onMinus: handleMinus
|
|
194
|
+
onMinus: handleMinus,
|
|
195
|
+
onClear: handleClear
|
|
191
196
|
});
|
|
192
197
|
};
|
|
193
198
|
export default useNumberFormat;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"use-input-number.type.d.ts","sourceRoot":"","sources":["use-input-number.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;AAC7D,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAClF,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,SAAS,CAAC;IACnD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;;;yBA+CX,MAAM,UAAU,MAAM;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-table-layout.d.ts","sourceRoot":"","sources":["use-table-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0CrE,MAAM,WAAW,mBACf,SAAQ,IAAI,CACV,cAAc,CAAC,GAAG,CAAC,EACnB,MAAM,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,OAAO,CAC7E;IACD,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,QAAA,MAAM,cAAc,UAAW,mBAAmB;;;;;;;;;;;yBA+CX,MAAM,UAAU,MAAM;;;;;;;CA2R5D,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -171,7 +171,20 @@ var useTableLayout = function useTableLayout(props) {
|
|
|
171
171
|
if (cols && cols.every(function (v) {
|
|
172
172
|
return v === 0;
|
|
173
173
|
})) return;
|
|
174
|
-
|
|
174
|
+
var shifted = shiftDecimalToLastColumn(cols);
|
|
175
|
+
// 当 colgroup 中存在 undefined(说明从未被成功测量过),跳过相等判断,强制触发重新测量
|
|
176
|
+
// 场景:Table 在 display:none 容器中挂载时 getColgroup 测量失败,
|
|
177
|
+
// 后续 resetColGroup 产出值与初始值相同会被跳过,导致未设 width 的列永远无法获得实际宽度
|
|
178
|
+
var hasUndefined = shifted.some(function (v) {
|
|
179
|
+
return v === undefined;
|
|
180
|
+
});
|
|
181
|
+
// 值未变化时跳过,避免触发不必要的 useLayoutEffect
|
|
182
|
+
if (!hasUndefined && colgroup && shifted.length === colgroup.length && shifted.every(function (v, i) {
|
|
183
|
+
return v === colgroup[i];
|
|
184
|
+
})) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
setColgroup(shifted);
|
|
175
188
|
setAdjust(adjust);
|
|
176
189
|
if (!adjust) {
|
|
177
190
|
updateResizeFlag();
|
|
@@ -225,8 +238,7 @@ var useTableLayout = function useTableLayout(props) {
|
|
|
225
238
|
var index = 0;
|
|
226
239
|
var sum = 0;
|
|
227
240
|
var _loop = function _loop() {
|
|
228
|
-
var
|
|
229
|
-
width = _items$i$getBoundingC.width;
|
|
241
|
+
var width = items[i].offsetWidth;
|
|
230
242
|
sum += width;
|
|
231
243
|
var colspan = items[i].getAttribute('colspan');
|
|
232
244
|
var colspanNum = parseInt(colspan || '1', 10);
|
|
@@ -354,6 +366,32 @@ var useTableLayout = function useTableLayout(props) {
|
|
|
354
366
|
(_cancelFunc = cancelFunc) === null || _cancelFunc === void 0 || _cancelFunc();
|
|
355
367
|
};
|
|
356
368
|
}, [scrollRef.current]);
|
|
369
|
+
|
|
370
|
+
// 当祖先元素的 CSS 动画结束时(如 Modal 入场动画),重新测量列宽
|
|
371
|
+
// 解决 Table 在动画容器(如 Modal)中渲染时,动画期间测量的列宽不准确导致 sticky 表头与表体列宽错位的问题
|
|
372
|
+
useEffect(function () {
|
|
373
|
+
var scrollEl = scrollRef.current;
|
|
374
|
+
if (!scrollEl) return;
|
|
375
|
+
|
|
376
|
+
// 查找最近的 fixed 定位祖先(如 Modal wrapper),仅在该元素上监听动画结束
|
|
377
|
+
var fixedAncestor = null;
|
|
378
|
+
var parent = scrollEl.parentElement;
|
|
379
|
+
while (parent) {
|
|
380
|
+
if (window.getComputedStyle(parent).position === 'fixed') {
|
|
381
|
+
fixedAncestor = parent;
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
parent = parent.parentElement;
|
|
385
|
+
}
|
|
386
|
+
if (!fixedAncestor) return;
|
|
387
|
+
var handleAnimationEnd = function handleAnimationEnd() {
|
|
388
|
+
getColgroup(false);
|
|
389
|
+
};
|
|
390
|
+
fixedAncestor.addEventListener('animationend', handleAnimationEnd);
|
|
391
|
+
return function () {
|
|
392
|
+
fixedAncestor.removeEventListener('animationend', handleAnimationEnd);
|
|
393
|
+
};
|
|
394
|
+
}, [scrollRef.current]);
|
|
357
395
|
useLayoutEffect(function () {
|
|
358
396
|
if (adjust) {
|
|
359
397
|
getColgroup(adjust === 'drag');
|