@sheinx/hooks 3.9.14-beta.6 → 3.9.14-beta.8

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 +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,QAqCA;AAED,eAAe,YAAY,CAAC"}
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
- // @ts-ignore
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
- var _t$current;
28
- return (_t$current = t.current) === null || _t$current === void 0 ? void 0 : _t$current.contains(event.target);
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-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;;;;;;;CA6P5D,CAAC;AAEF,eAAe,cAAc,CAAC"}
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"}
@@ -375,6 +375,32 @@ var useTableLayout = function useTableLayout(props) {
375
375
  (_cancelFunc = cancelFunc) === null || _cancelFunc === void 0 || _cancelFunc();
376
376
  };
377
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]);
378
404
  (0, _react.useLayoutEffect)(function () {
379
405
  if (adjust) {
380
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,QAqCA;AAED,eAAe,YAAY,CAAC"}
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
- // @ts-ignore
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
- var _t$current;
20
- return (_t$current = t.current) === null || _t$current === void 0 ? void 0 : _t$current.contains(event.target);
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-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;;;;;;;CA6P5D,CAAC;AAEF,eAAe,cAAc,CAAC"}
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"}
@@ -366,6 +366,32 @@ var useTableLayout = function useTableLayout(props) {
366
366
  (_cancelFunc = cancelFunc) === null || _cancelFunc === void 0 || _cancelFunc();
367
367
  };
368
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]);
369
395
  useLayoutEffect(function () {
370
396
  if (adjust) {
371
397
  getColgroup(adjust === 'drag');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.9.14-beta.6",
3
+ "version": "3.9.14-beta.8",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",