@sheinx/base 3.6.4-beta.8 → 3.7.0-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.
Files changed (91) hide show
  1. package/cjs/popover/popover.d.ts +1 -1
  2. package/cjs/popover/popover.d.ts.map +1 -1
  3. package/cjs/popover/popover.js +10 -8
  4. package/cjs/popover/popover.type.d.ts +6 -0
  5. package/cjs/popover/popover.type.d.ts.map +1 -1
  6. package/cjs/sticky/sticky.d.ts.map +1 -1
  7. package/cjs/sticky/sticky.js +6 -3
  8. package/cjs/sticky/sticky.type.d.ts +2 -2
  9. package/cjs/sticky/sticky.type.d.ts.map +1 -1
  10. package/cjs/table/table.d.ts.map +1 -1
  11. package/cjs/table/table.js +156 -98
  12. package/cjs/table/table.type.d.ts +15 -2
  13. package/cjs/table/table.type.d.ts.map +1 -1
  14. package/cjs/table/tbody.d.ts +1 -1
  15. package/cjs/table/tbody.d.ts.map +1 -1
  16. package/cjs/table/tbody.js +28 -10
  17. package/cjs/table/tbody.type.d.ts +2 -3
  18. package/cjs/table/tbody.type.d.ts.map +1 -1
  19. package/cjs/table/td.d.ts +21 -0
  20. package/cjs/table/td.d.ts.map +1 -0
  21. package/cjs/table/td.js +74 -0
  22. package/cjs/table/tfoot.d.ts.map +1 -1
  23. package/cjs/table/tfoot.js +0 -10
  24. package/cjs/table/tfoot.type.d.ts +0 -2
  25. package/cjs/table/tfoot.type.d.ts.map +1 -1
  26. package/cjs/table/thead.d.ts.map +1 -1
  27. package/cjs/table/thead.js +7 -19
  28. package/cjs/table/thead.type.d.ts +0 -2
  29. package/cjs/table/thead.type.d.ts.map +1 -1
  30. package/cjs/table/tr.d.ts +1 -2
  31. package/cjs/table/tr.d.ts.map +1 -1
  32. package/cjs/table/tr.js +33 -29
  33. package/cjs/tabs/tabs.d.ts.map +1 -1
  34. package/cjs/tabs/tabs.js +10 -1
  35. package/cjs/tabs/tabs.type.d.ts +6 -0
  36. package/cjs/tabs/tabs.type.d.ts.map +1 -1
  37. package/cjs/tag/tag.d.ts.map +1 -1
  38. package/cjs/tag/tag.js +1 -1
  39. package/cjs/tooltip/tooltip.d.ts.map +1 -1
  40. package/cjs/tooltip/tooltip.js +10 -2
  41. package/cjs/virtual-scroll/scroll-table.d.ts +28 -0
  42. package/cjs/virtual-scroll/scroll-table.d.ts.map +1 -0
  43. package/cjs/virtual-scroll/scroll-table.js +155 -0
  44. package/cjs/virtual-scroll/scroll.d.ts.map +1 -1
  45. package/cjs/virtual-scroll/scroll.js +4 -4
  46. package/esm/popover/popover.d.ts +1 -1
  47. package/esm/popover/popover.d.ts.map +1 -1
  48. package/esm/popover/popover.js +10 -8
  49. package/esm/popover/popover.type.d.ts +6 -0
  50. package/esm/popover/popover.type.d.ts.map +1 -1
  51. package/esm/sticky/sticky.d.ts.map +1 -1
  52. package/esm/sticky/sticky.js +6 -3
  53. package/esm/sticky/sticky.type.d.ts +2 -2
  54. package/esm/sticky/sticky.type.d.ts.map +1 -1
  55. package/esm/table/table.d.ts.map +1 -1
  56. package/esm/table/table.js +157 -99
  57. package/esm/table/table.type.d.ts +15 -2
  58. package/esm/table/table.type.d.ts.map +1 -1
  59. package/esm/table/tbody.d.ts +1 -1
  60. package/esm/table/tbody.d.ts.map +1 -1
  61. package/esm/table/tbody.js +29 -11
  62. package/esm/table/tbody.type.d.ts +2 -3
  63. package/esm/table/tbody.type.d.ts.map +1 -1
  64. package/esm/table/td.d.ts +21 -0
  65. package/esm/table/td.d.ts.map +1 -0
  66. package/esm/table/td.js +66 -0
  67. package/esm/table/tfoot.d.ts.map +1 -1
  68. package/esm/table/tfoot.js +0 -10
  69. package/esm/table/tfoot.type.d.ts +0 -2
  70. package/esm/table/tfoot.type.d.ts.map +1 -1
  71. package/esm/table/thead.d.ts.map +1 -1
  72. package/esm/table/thead.js +7 -19
  73. package/esm/table/thead.type.d.ts +0 -2
  74. package/esm/table/thead.type.d.ts.map +1 -1
  75. package/esm/table/tr.d.ts +1 -2
  76. package/esm/table/tr.d.ts.map +1 -1
  77. package/esm/table/tr.js +33 -29
  78. package/esm/tabs/tabs.d.ts.map +1 -1
  79. package/esm/tabs/tabs.js +10 -1
  80. package/esm/tabs/tabs.type.d.ts +6 -0
  81. package/esm/tabs/tabs.type.d.ts.map +1 -1
  82. package/esm/tag/tag.d.ts.map +1 -1
  83. package/esm/tag/tag.js +1 -1
  84. package/esm/tooltip/tooltip.d.ts.map +1 -1
  85. package/esm/tooltip/tooltip.js +11 -3
  86. package/esm/virtual-scroll/scroll-table.d.ts +28 -0
  87. package/esm/virtual-scroll/scroll-table.d.ts.map +1 -0
  88. package/esm/virtual-scroll/scroll-table.js +148 -0
  89. package/esm/virtual-scroll/scroll.d.ts.map +1 -1
  90. package/esm/virtual-scroll/scroll.js +4 -4
  91. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
1
  import { PopoverProps } from './popover.type';
2
- declare const Popover: (props: PopoverProps) => import("react/jsx-runtime").JSX.Element;
2
+ declare const Popover: (props: PopoverProps) => import("react/jsx-runtime").JSX.Element | undefined;
3
3
  export default Popover;
4
4
  //# sourceMappingURL=popover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["popover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C,QAAA,MAAM,OAAO,UAAW,YAAY,4CA4LnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["popover.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM9C,QAAA,MAAM,OAAO,UAAW,YAAY,wDA8LnC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -39,6 +39,7 @@ var Popover = function Popover(props) {
39
39
  trigger = _props$trigger === void 0 ? 'hover' : _props$trigger,
40
40
  type = props.type,
41
41
  destroy = props.destroy,
42
+ disabled = props.disabled,
42
43
  _props$popupGap = props.popupGap,
43
44
  popupGap = _props$popupGap === void 0 ? 0 : _props$popupGap,
44
45
  _props$showArrow = props.showArrow,
@@ -87,11 +88,11 @@ var Popover = function Popover(props) {
87
88
  _React$useState2 = _slicedToArray(_React$useState, 2),
88
89
  updateKey = _React$useState2[0],
89
90
  setUpdateKey = _React$useState2[1];
90
- var handleUpdateKey = (0, _hooks.usePersistFn)(function () {
91
+ var handleUpdateKey = function handleUpdateKey() {
91
92
  setUpdateKey(function (prev) {
92
93
  return (prev + 1) % 2;
93
94
  });
94
- });
95
+ };
95
96
  var bindEvents = function bindEvents() {
96
97
  var _window;
97
98
  var targetEl = targetRef.current;
@@ -104,9 +105,9 @@ var Popover = function Popover(props) {
104
105
  targetEl.addEventListener('click', closePop);
105
106
  }
106
107
  (_window = window) === null || _window === void 0 || _window.addEventListener('resize', handleUpdateKey);
107
- if (props.adjust) {
108
- var scrollContainer = (0, _hooks.getClosestScrollContainer)(targetEl);
109
- if (scrollContainer) scrollContainer.addEventListener('scroll', handleUpdateKey);
108
+ var scrollContainer = (0, _hooks.getClosestScrollContainer)(targetEl);
109
+ if (scrollContainer) {
110
+ scrollContainer.addEventListener('scroll', handleUpdateKey);
110
111
  }
111
112
  };
112
113
  var unbindEvents = function unbindEvents() {
@@ -119,9 +120,9 @@ var Popover = function Popover(props) {
119
120
  if (events.onClick) targetEl.removeEventListener('click', events.onClick);
120
121
  targetEl.removeEventListener('click', closePop);
121
122
  (_window2 = window) === null || _window2 === void 0 || _window2.removeEventListener('resize', handleUpdateKey);
122
- if (props.adjust) {
123
- var scrollContainer = (0, _hooks.getClosestScrollContainer)(targetEl);
124
- if (scrollContainer) scrollContainer.removeEventListener('scroll', handleUpdateKey);
123
+ var scrollContainer = (0, _hooks.getClosestScrollContainer)(targetEl);
124
+ if (scrollContainer) {
125
+ scrollContainer.addEventListener('scroll', handleUpdateKey);
125
126
  }
126
127
  };
127
128
  (0, _react.useEffect)(function () {
@@ -145,6 +146,7 @@ var Popover = function Popover(props) {
145
146
  }
146
147
  };
147
148
  });
149
+ if (disabled) return;
148
150
  var noRender = props.lazy && !open && !context.rendered;
149
151
  if (!targetRef.current || !children || noRender) {
150
152
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("noscript", {
@@ -180,5 +180,11 @@ export interface PopoverProps extends Pick<CommonType, 'className' | 'style'> {
180
180
  * @version 3.6.0
181
181
  */
182
182
  popupGap?: number;
183
+ /**
184
+ * @en Whether to disable pop-up
185
+ * @cn 是否禁用弹出
186
+ * @version 3.7.0
187
+ */
188
+ disabled?: boolean;
183
189
  }
184
190
  //# sourceMappingURL=popover.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"popover.type.d.ts","sourceRoot":"","sources":["popover.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"popover.type.d.ts","sourceRoot":"","sources":["popover.type.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sticky.d.ts","sourceRoot":"","sources":["sticky.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,eAAO,MAAM,aAAa,MAAM,CAAC;AAmBjC,QAAA,MAAM,MAAM,UAAW,WAAW,4CAoYjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"sticky.d.ts","sourceRoot":"","sources":["sticky.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAI5C,eAAO,MAAM,aAAa,MAAM,CAAC;AAmBjC,QAAA,MAAM,MAAM,UAAW,WAAW,4CAqYjC,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -414,12 +414,15 @@ var Sticky = function Sticky(props) {
414
414
  pointerEvents: 'none'
415
415
  };
416
416
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
417
- children: [isFixed ? StickyEl : context.target && context.div && /*#__PURE__*/(0, _reactDom.createPortal)(StickyEl, context.div), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
417
+ children: [isFixed ? StickyEl : context.target && context.div && /*#__PURE__*/(0, _reactDom.createPortal)(StickyEl, context.div), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({
418
418
  className: props.className,
419
419
  style: _objectSpread(_objectSpread({}, props.style), show && parentVisible ? hideStyle : {}),
420
- ref: handleElementRef,
420
+ ref: handleElementRef
421
+ }, _hooks.util.getDataAttribute({
422
+ sticky: show && parentVisible ? 'true' : 'false'
423
+ })), {}, {
421
424
  children: children
422
- })]
425
+ }))]
423
426
  });
424
427
  };
425
428
  var _default = exports.default = Sticky;
@@ -21,12 +21,12 @@ export interface StickyProps extends Pick<CommonType, 'className' | 'style'> {
21
21
  /**
22
22
  * @deprecated use scrollContainer
23
23
  */
24
- target?: string | HTMLElement | null;
24
+ target?: string | Element | null;
25
25
  /**
26
26
  * @en Custom attachment target. You can pass in HTMLElement or css selector. The target must be an ancestor node of the Sticky component
27
27
  * @cn 自定义附着的目标。可以传入 HTMLElement 或者 css selector,target 必须为 Sticky 组件的祖先节点
28
28
  */
29
- scrollContainer?: string | HTMLElement | null;
29
+ scrollContainer?: string | HTMLElement | Element | null;
30
30
  /**
31
31
  * @cn sticky 父级元素, 当父元素离开视窗时,sticky 将失效
32
32
  * @en sticky parent, when the parent element leaves the viewport, the sticky will be invalid
@@ -1 +1 @@
1
- {"version":3,"file":"sticky.type.d.ts","sourceRoot":"","sources":["sticky.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC;IAC1E,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,aAAa,CAAC;KAC7B,CAAC;IAEF;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAErC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAE9C;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B"}
1
+ {"version":3,"file":"sticky.type.d.ts","sourceRoot":"","sources":["sticky.type.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,OAAO,CAAC;IAC1E,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,aAAa,CAAC;KAC7B,CAAC;IAEF;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAEjC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC;IAExD;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAEvC;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["table.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;AAwB1C,wBAykBE"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["table.tsx"],"names":[],"mappings":"AAyBA,OAAO,EAAgB,UAAU,EAAE,MAAM,cAAc,CAAC;;AAexD,wBAmoBE"}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
- var _scroll = _interopRequireDefault(require("../virtual-scroll/scroll"));
8
+ var _scrollTable = _interopRequireDefault(require("../virtual-scroll/scroll-table"));
9
9
  var _classnames = _interopRequireDefault(require("classnames"));
10
10
  var _spin = _interopRequireDefault(require("../spin"));
11
11
  var _pagination = _interopRequireDefault(require("../pagination"));
@@ -27,27 +27,20 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
27
27
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
28
28
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
29
29
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
30
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
31
30
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
32
31
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
33
32
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
34
33
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
35
34
  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); }
35
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
36
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
38
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
40
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
41
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
42
  var devUseWarning = _hooks.util.devUseWarning;
37
43
  var emptyArr = [];
38
- var virtualScrollerStyle = {
39
- flex: 1,
40
- minWidth: 0,
41
- minHeight: 0,
42
- overflow: 'auto',
43
- width: '100%'
44
- };
45
- var scrollWrapperStyle = {
46
- flex: 1,
47
- minHeight: 0,
48
- minWidth: 0,
49
- display: 'flex'
50
- };
51
44
  var emptyRef = {
52
45
  current: null
53
46
  };
@@ -66,18 +59,14 @@ var _default = exports.default = function _default(props) {
66
59
  var theadRef = (0, _react.useRef)(null);
67
60
  var tfootRef = (0, _react.useRef)(null);
68
61
  var scrollRef = (0, _react.useRef)(null);
69
- var mirrorScrollRef = (0, _react.useRef)(null);
62
+ var headMirrorScrollRef = (0, _react.useRef)(null);
63
+ var bottomMirrorScrollRef = (0, _react.useRef)(null);
70
64
  var tableRef = (0, _react.useRef)(null);
65
+ var _useState = (0, _react.useState)(false),
66
+ _useState2 = _slicedToArray(_useState, 2),
67
+ scrolling = _useState2[0],
68
+ setScrolling = _useState2[1];
71
69
  var browserScrollbarWidth = (0, _hooks.useScrollbarWidth)();
72
- var emptyStyle = _objectSpread(_objectSpread({}, virtualScrollerStyle), {}, {
73
- overflow: 'auto hidden',
74
- position: 'absolute',
75
- zIndex: 1,
76
- bottom: 0,
77
- left: 0,
78
- right: 0,
79
- height: browserScrollbarWidth
80
- });
81
70
  if (props.fixed) {
82
71
  devUseWarning.deprecated('fixed', 'virtual', 'Table');
83
72
  }
@@ -98,7 +87,9 @@ var _default = exports.default = function _default(props) {
98
87
  };
99
88
  };
100
89
  var _useRef = (0, _react.useRef)({
101
- emptyHeight: 0
90
+ emptyHeight: 0,
91
+ theadAndTfootHeight: 0,
92
+ scrollingTimer: null
102
93
  }),
103
94
  context = _useRef.current;
104
95
  var virtual = ((_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.length) && props.rowsInView !== 0 && (!!props.virtual || props.fixed === 'both' || props.fixed === 'y' || props.fixed === 'auto');
@@ -147,7 +138,6 @@ var _default = exports.default = function _default(props) {
147
138
  floatRight = _useTableLayout.floatRight,
148
139
  width = _useTableLayout.width,
149
140
  shouldLastColAuto = _useTableLayout.shouldLastColAuto,
150
- maxScrollLeft = _useTableLayout.maxScrollLeft,
151
141
  scrollBarWidth = _useTableLayout.scrollBarWidth,
152
142
  scrollWidth = _useTableLayout.scrollWidth,
153
143
  resizeFlag = _useTableLayout.resizeFlag;
@@ -231,6 +221,10 @@ var _default = exports.default = function _default(props) {
231
221
  onChange: inputableData.onChange,
232
222
  disabled: props.disabled
233
223
  });
224
+ (0, _react.useEffect)(function () {
225
+ var _theadRef$current, _tfootRef$current;
226
+ context.theadAndTfootHeight = ((theadRef === null || theadRef === void 0 || (_theadRef$current = theadRef.current) === null || _theadRef$current === void 0 ? void 0 : _theadRef$current.clientHeight) || 0) + (((_tfootRef$current = tfootRef.current) === null || _tfootRef$current === void 0 ? void 0 : _tfootRef$current.clientHeight) || 0);
227
+ }, [theadRef.current, tfootRef.current]);
234
228
  var virtualInfo = (0, _hooks.useTableVirtual)({
235
229
  disabled: !virtual,
236
230
  data: treeData,
@@ -241,27 +235,26 @@ var _default = exports.default = function _default(props) {
241
235
  scrollRef: scrollRef,
242
236
  innerRef: tbodyRef,
243
237
  scrollLeft: props.scrollLeft,
244
- isRtl: isRtl
238
+ isRtl: isRtl,
239
+ theadAndTfootHeight: context.theadAndTfootHeight
245
240
  });
246
-
247
- // handle head and foot scroll
248
- var handleHeaderWheel = (0, _hooks.usePersistFn)(function (e) {
249
- var scrollEl = scrollRef.current;
250
- if (!scrollEl) return;
251
- var max = scrollEl.scrollWidth - scrollEl.clientWidth;
252
- var scrollLeft = scrollEl.scrollLeft + e.deltaX;
253
- if (scrollLeft === scrollEl.scrollLeft) {
254
- return;
255
- }
256
- e.preventDefault();
257
- scrollEl.scrollLeft = Math.min(Math.max(scrollLeft, 0), max);
241
+ var syncHeaderScroll = (0, _hooks.usePersistFn)(function (left) {
242
+ var _theadRef$current2;
243
+ if (props.hideHeader || !props.sticky) return;
244
+ if (!(theadRef !== null && theadRef !== void 0 && (_theadRef$current2 = theadRef.current) !== null && _theadRef$current2 !== void 0 && _theadRef$current2.parentElement)) return;
245
+ theadRef.current.parentElement.scrollLeft = left;
258
246
  });
247
+
248
+ // 简单表格的滚动事件
259
249
  var handleBodyScroll = (0, _hooks.usePersistFn)(function (e) {
260
250
  var target = e.currentTarget;
261
251
  if (!target) return;
262
252
  layoutFunc.checkFloat();
263
- if (mirrorScrollRef.current) {
264
- mirrorScrollRef.current.scrollLeft = target.scrollLeft;
253
+ if (headMirrorScrollRef.current) {
254
+ headMirrorScrollRef.current.scrollLeft = target.scrollLeft;
255
+ }
256
+ if (bottomMirrorScrollRef.current) {
257
+ bottomMirrorScrollRef.current.scrollLeft = target.scrollLeft;
265
258
  }
266
259
  if (props.onScroll && typeof props.onScroll === 'function') {
267
260
  var maxWidth = target.scrollWidth - target.clientWidth;
@@ -270,22 +263,36 @@ var _default = exports.default = function _default(props) {
270
263
  var y = Math.min(target.scrollTop / maxHeight, 1);
271
264
  props.onScroll(x, y, target.scrollLeft, target.scrollTop);
272
265
  }
266
+ syncHeaderScroll(target.scrollLeft);
273
267
  });
268
+
269
+ // 虚拟表格的滚动事件
274
270
  var handleVirtualScroll = (0, _hooks.usePersistFn)(function (info) {
275
271
  virtualInfo.handleScroll(info);
276
272
  layoutFunc.checkFloat();
277
- if (mirrorScrollRef.current) {
278
- mirrorScrollRef.current.scrollLeft = info.scrollLeft;
273
+ if (headMirrorScrollRef.current) {
274
+ headMirrorScrollRef.current.scrollLeft = info.scrollLeft;
275
+ }
276
+ if (bottomMirrorScrollRef.current) {
277
+ bottomMirrorScrollRef.current.scrollLeft = info.scrollLeft;
279
278
  }
280
279
  if (props.onScroll && typeof props.onScroll === 'function') {
281
280
  props.onScroll(info.x, info.y, info.scrollLeft, info.scrollTop);
282
281
  }
282
+ syncHeaderScroll(info.scrollLeft);
283
+ if (context.scrollingTimer) {
284
+ clearTimeout(context.scrollingTimer);
285
+ }
286
+ setScrolling(true);
287
+ context.scrollingTimer = setTimeout(function () {
288
+ setScrolling(false);
289
+ }, 100);
283
290
  });
284
291
  var renderEmpty = function renderEmpty() {
285
292
  var _props$data2;
286
293
  if (!((_props$data2 = props.data) !== null && _props$data2 !== void 0 && _props$data2.length) || filteredData !== undefined && filteredData.length === 0) {
287
294
  return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
288
- className: tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.emptyWrapper,
295
+ className: (0, _classnames.default)(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.emptyWrapper, isScrollX && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.emptyNoBorder)),
289
296
  ref: function ref(el) {
290
297
  context.emptyHeight = (el === null || el === void 0 ? void 0 : el.clientHeight) || 0;
291
298
  },
@@ -332,7 +339,8 @@ var _default = exports.default = function _default(props) {
332
339
  bodyScrollWidth: scrollWidth,
333
340
  resizeFlag: resizeFlag,
334
341
  treeCheckAll: props.treeCheckAll,
335
- onCellClick: props.onCellClick
342
+ onCellClick: props.onCellClick,
343
+ shouldCellUpdate: props.shouldCellUpdate
336
344
  };
337
345
  var headCommonProps = {
338
346
  disabled: props.disabled,
@@ -363,7 +371,6 @@ var _default = exports.default = function _default(props) {
363
371
  jssStyle: props.jssStyle,
364
372
  colgroup: colgroup
365
373
  };
366
- var fixRightNum = (isRtl ? -1 * maxScrollLeft : maxScrollLeft) - virtualInfo.innerLeft;
367
374
  var StickyWrapper = props.sticky ? _sticky.default : _react.default.Fragment;
368
375
  var sticky = _typeof(props.sticky) === 'object' ? props.sticky : {
369
376
  top: 0
@@ -376,8 +383,8 @@ var _default = exports.default = function _default(props) {
376
383
  parent: tableRef === null || tableRef === void 0 ? void 0 : tableRef.current
377
384
  };
378
385
  var isRenderVirtualTable = virtual || props.sticky || !((_props$data3 = props.data) !== null && _props$data3 !== void 0 && _props$data3.length);
379
- var headWrapperClass = (0, _classnames.default)(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.headWrapper, isScrollY && scrollBarWidth && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.scrollY));
380
- var footWrapperClass = (0, _classnames.default)(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.footWrapper, isScrollY && scrollBarWidth && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.scrollY));
386
+ var headWrapperClass = (0, _classnames.default)(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.headWrapper);
387
+ var footWrapperClass = (0, _classnames.default)(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.footWrapper);
381
388
  var renderHeadMirrorScroller = function renderHeadMirrorScroller() {
382
389
  var _scrollRef$current, _scrollRef$current2, _scrollRef$current3;
383
390
  if (!props.showTopScrollbar) return null;
@@ -393,7 +400,7 @@ var _default = exports.default = function _default(props) {
393
400
  });
394
401
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(StickyWrapper, _objectSpread(_objectSpread({}, props.sticky ? scrollerStickyProps : {}), {}, {
395
402
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
396
- className: tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.headMirrorScroller,
403
+ className: tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.mirrorScroller,
397
404
  style: {
398
405
  height: browserScrollbarWidth,
399
406
  width: mirrorScrollRefWidth
@@ -404,7 +411,7 @@ var _default = exports.default = function _default(props) {
404
411
  scrollRef.current.scrollLeft = target.scrollLeft;
405
412
  }
406
413
  },
407
- ref: mirrorScrollRef,
414
+ ref: headMirrorScrollRef,
408
415
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
409
416
  style: {
410
417
  width: scrollRef === null || scrollRef === void 0 || (_scrollRef$current3 = scrollRef.current) === null || _scrollRef$current3 === void 0 ? void 0 : _scrollRef$current3.scrollWidth,
@@ -414,61 +421,103 @@ var _default = exports.default = function _default(props) {
414
421
  })
415
422
  }));
416
423
  };
424
+ var renderBottomMirrorScroller = function renderBottomMirrorScroller() {
425
+ var _scrollRef$current4, _scrollRef$current5, _scrollRef$current6;
426
+ if (!props.showBottomScrollbar) return null;
427
+ var scrollRefWidth = (scrollRef === null || scrollRef === void 0 || (_scrollRef$current4 = scrollRef.current) === null || _scrollRef$current4 === void 0 ? void 0 : _scrollRef$current4.clientWidth) || 0;
428
+ var scrollRefScrollWidth = (scrollRef === null || scrollRef === void 0 || (_scrollRef$current5 = scrollRef.current) === null || _scrollRef$current5 === void 0 ? void 0 : _scrollRef$current5.scrollWidth) || 0;
429
+ var mirrorScrollRefWidth = scrollRefWidth + scrollBarWidth;
430
+ var showScroll = scrollRefScrollWidth > scrollRefWidth;
431
+ // 开启了双滚,但是没有滚动条,不显示
432
+ if (!scrollRefWidth || !mirrorScrollRefWidth || !showScroll) return null;
433
+ var options = props.showBottomScrollbar === true ? {} : props.showBottomScrollbar;
434
+ var scrollerStickyProps = {
435
+ scrollContainer: options.scrollContainer || document.body,
436
+ bottom: options.bottom || 0,
437
+ zIndex: options.zIndex || _sticky.defaultZIndex + 1,
438
+ parent: tableRef === null || tableRef === void 0 ? void 0 : tableRef.current
439
+ };
440
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sticky.default, _objectSpread(_objectSpread({}, scrollerStickyProps), {}, {
441
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
442
+ className: tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.mirrorScroller,
443
+ style: {
444
+ height: browserScrollbarWidth,
445
+ width: mirrorScrollRefWidth,
446
+ marginTop: -browserScrollbarWidth
447
+ },
448
+ onScroll: function onScroll(e) {
449
+ var target = e.currentTarget;
450
+ if (scrollRef !== null && scrollRef !== void 0 && scrollRef.current && scrollRef.current.scrollLeft !== target.scrollLeft) {
451
+ scrollRef.current.scrollLeft = target.scrollLeft;
452
+ }
453
+ },
454
+ ref: bottomMirrorScrollRef,
455
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
456
+ style: {
457
+ width: scrollRef === null || scrollRef === void 0 || (_scrollRef$current6 = scrollRef.current) === null || _scrollRef$current6 === void 0 ? void 0 : _scrollRef$current6.scrollWidth,
458
+ height: 1
459
+ }
460
+ })
461
+ })
462
+ }));
463
+ };
464
+ var $headTable = /*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
465
+ style: {
466
+ width: width
467
+ },
468
+ ref: theadRef,
469
+ children: [Group, /*#__PURE__*/(0, _jsxRuntime.jsx)(_thead.default, _objectSpread({}, headCommonProps))]
470
+ });
417
471
  if (isRenderVirtualTable) {
418
472
  var _props$data4;
419
473
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
420
- children: [renderHeadMirrorScroller(), !props.hideHeader && /*#__PURE__*/(0, _jsxRuntime.jsx)(StickyWrapper, _objectSpread(_objectSpread({}, props.sticky ? stickyProps : {}), {}, {
474
+ children: [renderHeadMirrorScroller(), !props.hideHeader && props.sticky && /*#__PURE__*/(0, _jsxRuntime.jsx)(StickyWrapper, _objectSpread(_objectSpread({}, stickyProps), {}, {
421
475
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
422
476
  className: headWrapperClass,
423
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
424
- style: {
425
- width: width,
426
- transform: "translate3d(".concat(0 - virtualInfo.innerLeft, "px, 0, 0)")
427
- },
428
- ref: theadRef,
429
- children: [Group, /*#__PURE__*/(0, _jsxRuntime.jsx)(_thead.default, _objectSpread(_objectSpread({}, headCommonProps), {}, {
430
- fixLeftNum: virtualInfo.innerLeft,
431
- fixRightNum: fixRightNum
432
- }))]
433
- })
477
+ style: {
478
+ overflow: 'hidden'
479
+ },
480
+ children: $headTable
434
481
  })
435
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_scroll.default, {
436
- style: scrollWrapperStyle,
437
- scrollerStyle: (_props$data4 = props.data) !== null && _props$data4 !== void 0 && _props$data4.length ? virtualScrollerStyle : emptyStyle,
482
+ })), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_scrollTable.default, {
483
+ style: {
484
+ display: 'flex',
485
+ minWidth: 0,
486
+ minHeight: 0,
487
+ flex: 1
488
+ },
438
489
  wrapperRef: scrollRef,
439
490
  scrollWidth: width || 1,
440
491
  scrollHeight: virtual ? virtualInfo.scrollHeight : tbodyHeight,
441
492
  onScroll: handleVirtualScroll,
442
493
  defaultHeight: context.emptyHeight,
443
494
  isScrollY: isScrollY,
444
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
495
+ children: [!props.hideHeader && !props.sticky && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
496
+ className: headWrapperClass,
497
+ children: $headTable
498
+ }), !!((_props$data4 = props.data) !== null && _props$data4 !== void 0 && _props$data4.length) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
445
499
  style: {
446
500
  width: width,
447
- transform: virtualInfo.getTranslate()
501
+ transform: virtualInfo.translateStyle
448
502
  },
449
503
  ref: tbodyRef,
450
504
  children: [Group, /*#__PURE__*/(0, _jsxRuntime.jsx)(_tbody.default, _objectSpread(_objectSpread({}, bodyCommonProps), {}, {
451
505
  currentIndex: virtualInfo.startIndex,
452
506
  data: virtualInfo.data,
453
507
  setRowHeight: virtualInfo.setRowHeight,
454
- fixLeftNum: virtualInfo.innerLeft,
455
- fixRightNum: fixRightNum
456
- }))]
457
- })
458
- }), renderEmpty(), showFoot ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
459
- className: footWrapperClass,
460
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
461
- style: {
462
- width: width,
463
- transform: "translate3d(-".concat(virtualInfo.innerLeft, "px, 0, 0)")
464
- },
465
- ref: tfootRef,
466
- children: [Group, /*#__PURE__*/(0, _jsxRuntime.jsx)(_tfoot.default, _objectSpread(_objectSpread({}, footCommonProps), {}, {
467
- fixLeftNum: virtualInfo.innerLeft,
468
- fixRightNum: fixRightNum
508
+ scrolling: scrolling
469
509
  }))]
470
- })
471
- }) : null]
510
+ }), showFoot ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
511
+ className: footWrapperClass,
512
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("table", {
513
+ style: {
514
+ width: width
515
+ },
516
+ ref: tfootRef,
517
+ children: [Group, /*#__PURE__*/(0, _jsxRuntime.jsx)(_tfoot.default, _objectSpread({}, footCommonProps))]
518
+ })
519
+ }) : null, renderEmpty()]
520
+ }), renderBottomMirrorScroller()]
472
521
  });
473
522
  }
474
523
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
@@ -485,7 +534,7 @@ var _default = exports.default = function _default(props) {
485
534
  children: renderEmpty()
486
535
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_tbody.default, _objectSpread({}, bodyCommonProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_tfoot.default, _objectSpread({}, footCommonProps))]
487
536
  })
488
- })]
537
+ }), renderBottomMirrorScroller()]
489
538
  });
490
539
  };
491
540
  var renderLoading = function renderLoading() {
@@ -505,27 +554,36 @@ var _default = exports.default = function _default(props) {
505
554
  align: "right"
506
555
  }, pagination), paginationInfo));
507
556
  };
557
+
558
+ // handle head and foot scroll
559
+ var handleHeaderWheel = (0, _hooks.usePersistFn)(function (e) {
560
+ var _theadRef$current3;
561
+ var scrollEl = scrollRef.current;
562
+ if (!scrollEl) return;
563
+ if (!(theadRef !== null && theadRef !== void 0 && (_theadRef$current3 = theadRef.current) !== null && _theadRef$current3 !== void 0 && _theadRef$current3.parentElement)) return;
564
+ var max = scrollEl.scrollWidth - scrollEl.clientWidth;
565
+ var scrollLeft = scrollEl.scrollLeft + e.deltaX;
566
+ if (scrollLeft === scrollEl.scrollLeft) {
567
+ return;
568
+ }
569
+ e.preventDefault();
570
+ var left = Math.min(Math.max(scrollLeft, 0), max);
571
+ scrollEl.scrollLeft = left;
572
+ theadRef.current.parentElement.scrollLeft = left;
573
+ });
508
574
  (0, _react.useEffect)(function () {
509
575
  // 绑定 wheel 事件
510
- if (theadRef.current && theadRef.current.parentElement) {
576
+ if (props.sticky && theadRef.current && theadRef.current.parentElement) {
511
577
  theadRef.current.parentElement.addEventListener('wheel', handleHeaderWheel, {
512
578
  passive: false
513
579
  });
514
580
  }
515
- if (tfootRef.current && tfootRef.current.parentElement) {
516
- tfootRef.current.parentElement.addEventListener('wheel', handleHeaderWheel, {
517
- passive: false
518
- });
519
- }
520
581
  return function () {
521
- if (theadRef.current && theadRef.current.parentElement) {
582
+ if (props.sticky && theadRef.current && theadRef.current.parentElement) {
522
583
  theadRef.current.parentElement.removeEventListener('wheel', handleHeaderWheel);
523
584
  }
524
- if (tfootRef.current && tfootRef.current.parentElement) {
525
- tfootRef.current.parentElement.removeEventListener('wheel', handleHeaderWheel);
526
- }
527
585
  };
528
- }, [theadRef.current, isScrollY]);
586
+ }, [theadRef.current, props.sticky, isScrollY]);
529
587
  var getRenderIndexByData = function getRenderIndexByData(data) {
530
588
  var originKey = typeof data === 'string' ? data : _hooks.util.getKey(props.keygen, data);
531
589
  var index = treeData.findIndex(function (item) {
@@ -561,7 +619,7 @@ var _default = exports.default = function _default(props) {
561
619
  });
562
620
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
563
621
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", _objectSpread(_objectSpread({
564
- className: (0, _classnames.default)(tableWrapperClass, floatLeft && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.floatLeft), floatRight && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.floatRight), props.sticky && (tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.sticky)),
622
+ className: (0, _classnames.default)(tableWrapperClass, _defineProperty(_defineProperty(_defineProperty({}, tableClasses.sticky, props.sticky), tableClasses.floatLeft, floatLeft), tableClasses.floatRight, floatRight)),
565
623
  style: _objectSpread({
566
624
  height: defaultHeight
567
625
  }, props.style)
@@ -18,6 +18,7 @@ import { RadioClasses } from '../radio/radio.type';
18
18
  import { PopoverClasses } from '../popover/popover.type';
19
19
  import { TreeClasses } from '../tree/tree.type';
20
20
  import { KeygenResult } from '@sheinx/hooks';
21
+ import { StickyProps } from '../sticky';
21
22
  export type ListDatum = ReturnType<typeof useListSelect<any, any>>;
22
23
  export type UseTreeResult = ReturnType<typeof useTableTree>;
23
24
  export interface TableClasses {
@@ -26,7 +27,6 @@ export interface TableClasses {
26
27
  small: string;
27
28
  large: string;
28
29
  default: string;
29
- scrollY: string;
30
30
  floatLeft: string;
31
31
  floatRight: string;
32
32
  bordered: string;
@@ -36,11 +36,12 @@ export interface TableClasses {
36
36
  simple: string;
37
37
  striped: string;
38
38
  loading: string;
39
- headMirrorScroller: string;
39
+ mirrorScroller: string;
40
40
  headWrapper: string;
41
41
  bodyWrapper: string;
42
42
  footWrapper: string;
43
43
  emptyWrapper: string;
44
+ emptyNoBorder: string;
44
45
  cellAlignLeft: string;
45
46
  cellAlignRight: string;
46
47
  cellAlignCenter: string;
@@ -333,6 +334,7 @@ export interface TableProps<DataItem, Value> extends Pick<CommonType, 'className
333
334
  sticky?: boolean | {
334
335
  top?: number;
335
336
  css?: boolean;
337
+ target?: Element | null;
336
338
  };
337
339
  /**
338
340
  * @en Whether to show the top scroller
@@ -341,6 +343,13 @@ export interface TableProps<DataItem, Value> extends Pick<CommonType, 'className
341
343
  * @version 3.4.0
342
344
  */
343
345
  showTopScrollbar?: boolean;
346
+ /**
347
+ * @en Whether to show the bottom scroller
348
+ * @cn 是否开启底部自定吸附的滚动条
349
+ * @default false
350
+ * @version 3.7.0
351
+ */
352
+ showBottomScrollbar?: boolean | BottomScrollbarOption;
344
353
  /**
345
354
  * @en Table instance (please use with caution: only fixed Table)
346
355
  * @cn Table 实例(请谨慎使用:仅虚拟列表支持)
@@ -352,6 +361,9 @@ export interface TableProps<DataItem, Value> extends Pick<CommonType, 'className
352
361
  */
353
362
  onRowSelect?: (rows: Value) => void;
354
363
  }
364
+ interface BottomScrollbarOption extends Pick<StickyProps, 'scrollContainer' | 'bottom'> {
365
+ zIndex?: number;
366
+ }
355
367
  export interface SorterInfo {
356
368
  order?: ColumnOrder;
357
369
  /**
@@ -389,4 +401,5 @@ export interface SummaryItem {
389
401
  * @title TableColumn
390
402
  */
391
403
  export type ColumnItem<DataItem> = TableColumnItem<DataItem>;
404
+ export {};
392
405
  //# sourceMappingURL=table.type.d.ts.map