shineout 3.9.14 → 3.9.15-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/cjs/index.js CHANGED
@@ -522,5 +522,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
522
522
  // 此文件由脚本自动生成,请勿直接修改。
523
523
  // This file was generated automatically by a script. Please do not modify it directly.
524
524
  var _default = exports.default = {
525
- version: '3.9.14'
525
+ version: '3.9.15-beta.1'
526
526
  };
package/dist/shineout.js CHANGED
@@ -12326,7 +12326,7 @@ var handleStyle = function handleStyle(style) {
12326
12326
  };
12327
12327
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12328
12328
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12329
- /* harmony default export */ var version = ('3.9.14');
12329
+ /* harmony default export */ var version = ('3.9.15-beta.1');
12330
12330
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12331
12331
 
12332
12332
 
@@ -66294,12 +66294,89 @@ var useTableSort = function useTableSort(props) {
66294
66294
  };
66295
66295
  };
66296
66296
  /* harmony default export */ var use_table_sort = (useTableSort);
66297
+ ;// CONCATENATED MODULE: ../hooks/src/components/use-table/use-table-virtual-external.tsx
66298
+
66299
+
66300
+
66301
+ var useTableVirtualExternal = function useTableVirtualExternal(props) {
66302
+ var _useState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(0),
66303
+ _useState2 = slicedToArray_default()(_useState, 2),
66304
+ headerOffset = _useState2[0],
66305
+ setHeaderOffset = _useState2[1];
66306
+ var externalStickyRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
66307
+ var tableOffsetRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(0);
66308
+ var handleExternalScroll = usePersistFn(function () {
66309
+ var _props$tableRef, _externalStickyRef$cu;
66310
+ if (props.disabled) return;
66311
+ var container = props.virtualScrollContainer();
66312
+ var tableEl = (_props$tableRef = props.tableRef) === null || _props$tableRef === void 0 ? void 0 : _props$tableRef.current;
66313
+ if (!container || !tableEl) return;
66314
+ if (tableOffsetRef.current === 0) {
66315
+ if (container === document.documentElement || container === document.body) {
66316
+ tableOffsetRef.current = tableEl.getBoundingClientRect().top + window.scrollY;
66317
+ } else {
66318
+ tableOffsetRef.current = tableEl.getBoundingClientRect().top - container.getBoundingClientRect().top + container.scrollTop;
66319
+ }
66320
+ }
66321
+ var rawScrollTop;
66322
+ if (container === document.documentElement || container === document.body) {
66323
+ var rect = tableEl.getBoundingClientRect();
66324
+ rawScrollTop = -rect.top;
66325
+ } else {
66326
+ var containerRect = container.getBoundingClientRect();
66327
+ var tableRect = tableEl.getBoundingClientRect();
66328
+ rawScrollTop = containerRect.top - tableRect.top;
66329
+ }
66330
+ if (rawScrollTop < 0) rawScrollTop = 0;
66331
+ var sumHeight = props.getContentHeight(props.dataLength - 1);
66332
+ var viewportHeight = ((_externalStickyRef$cu = externalStickyRef.current) === null || _externalStickyRef$cu === void 0 ? void 0 : _externalStickyRef$cu.clientHeight) || container.clientHeight;
66333
+ var scrollTop;
66334
+ var max;
66335
+ if (props.externalStickyHeader) {
66336
+ max = sumHeight - props.tfootHeight - viewportHeight;
66337
+ scrollTop = rawScrollTop;
66338
+ } else {
66339
+ var newHeaderOffset = Math.min(rawScrollTop, props.theadHeight);
66340
+ if (newHeaderOffset !== headerOffset) {
66341
+ setHeaderOffset(newHeaderOffset);
66342
+ }
66343
+ max = sumHeight - props.theadHeight - props.tfootHeight - viewportHeight;
66344
+ scrollTop = rawScrollTop - props.theadHeight;
66345
+ if (scrollTop < 0) scrollTop = 0;
66346
+ }
66347
+ if (max > 0 && scrollTop > max) {
66348
+ scrollTop = max;
66349
+ }
66350
+ props.updateIndexAndTopFromTop(scrollTop);
66351
+ });
66352
+ (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
66353
+ if (props.disabled) return;
66354
+ var container = props.virtualScrollContainer();
66355
+ if (!container) return;
66356
+ var scrollTarget = container === document.documentElement || container === document.body ? window : container;
66357
+ scrollTarget.addEventListener('scroll', handleExternalScroll, {
66358
+ passive: true
66359
+ });
66360
+ handleExternalScroll();
66361
+ return function () {
66362
+ scrollTarget.removeEventListener('scroll', handleExternalScroll);
66363
+ };
66364
+ }, [props.disabled, props.dataLength]);
66365
+ return {
66366
+ externalStickyRef: externalStickyRef,
66367
+ headerOffset: headerOffset,
66368
+ tableOffsetRef: tableOffsetRef
66369
+ };
66370
+ };
66371
+ /* harmony default export */ var use_table_virtual_external = (useTableVirtualExternal);
66297
66372
  ;// CONCATENATED MODULE: ../hooks/src/components/use-table/use-table-virtual.tsx
66298
66373
 
66299
66374
 
66300
66375
 
66301
66376
 
66302
66377
 
66378
+
66379
+
66303
66380
  // 找出最大的连续数字的个数
66304
66381
  function getMaxRowSpanLength(input) {
66305
66382
  var map = new Map();
@@ -66438,8 +66515,8 @@ var useTableVirtual = function useTableVirtual(props) {
66438
66515
  setHeight(getContentHeight(props.data.length - 1));
66439
66516
  }
66440
66517
  var preIndex = context.preIndex;
66441
- // 解决: 从下往上滚 由于高度变化会导致滚动条跳动
66442
- if (preIndex && preIndex > startIndex && startIndex === index) {
66518
+ // 解决: 从下往上滚 由于高度变化会导致滚动条跳动(仅内部滚动需要)
66519
+ if (!props.virtualScrollContainer && preIndex && preIndex > startIndex && startIndex === index) {
66443
66520
  // 发生在顶部
66444
66521
  if (context.heightCallback) return;
66445
66522
  var offset = height - (beforeHeight || props.rowHeight);
@@ -66689,6 +66766,20 @@ var useTableVirtual = function useTableVirtual(props) {
66689
66766
  }
66690
66767
  return "translate3d(0, ".concat(0 - t, "px, 0)");
66691
66768
  }, [innerTop]);
66769
+ var isExternalScroll = !!props.virtualScrollContainer;
66770
+ var externalInfo = use_table_virtual_external({
66771
+ disabled: props.disabled || !isExternalScroll,
66772
+ dataLength: props.data.length,
66773
+ theadHeight: props.theadHeight,
66774
+ tfootHeight: props.tfootHeight,
66775
+ externalStickyHeader: props.externalStickyHeader,
66776
+ virtualScrollContainer: props.virtualScrollContainer || function () {
66777
+ return null;
66778
+ },
66779
+ tableRef: props.tableRef,
66780
+ getContentHeight: getContentHeight,
66781
+ updateIndexAndTopFromTop: updateIndexAndTopFromTop
66782
+ });
66692
66783
  return {
66693
66784
  scrollHeight: scrollHeight,
66694
66785
  startIndex: startIndex,
@@ -66699,7 +66790,11 @@ var useTableVirtual = function useTableVirtual(props) {
66699
66790
  scrollToIndex: scrollToIndex,
66700
66791
  scrollColumnByLeft: scrollColumnByLeft,
66701
66792
  scrollColumnIntoView: scrollColumnIntoView,
66702
- rowSpanInfo: rowSpanInfo
66793
+ rowSpanInfo: rowSpanInfo,
66794
+ isExternalScroll: isExternalScroll,
66795
+ externalStickyRef: externalInfo.externalStickyRef,
66796
+ headerOffset: externalInfo.headerOffset,
66797
+ tableOffsetRef: externalInfo.tableOffsetRef
66703
66798
  };
66704
66799
  };
66705
66800
  /* harmony default export */ var use_table_virtual = (useTableVirtual);
@@ -68571,7 +68666,7 @@ function Table(props) {
68571
68666
  scrollingTimer: null
68572
68667
  }),
68573
68668
  context = _useRef.current;
68574
- var virtual = !fakeVirtual && props.rowsInView !== 0 && (!!props.virtual || props.fixed === 'both' || props.fixed === 'y' || props.fixed === 'auto');
68669
+ var virtual = !fakeVirtual && props.rowsInView !== 0 && (!!props.virtual || !!props.virtualScrollContainer || props.fixed === 'both' || props.fixed === 'y' || props.fixed === 'auto');
68575
68670
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useLayoutEffect)(function () {
68576
68671
  if (!virtual) return;
68577
68672
  if (!tableRef.current) return;
@@ -68589,7 +68684,7 @@ function Table(props) {
68589
68684
  tbodyHeight = _useResize.height;
68590
68685
 
68591
68686
  // default height
68592
- var defaultHeight = virtual && !props.height ? '100%' : props.height;
68687
+ var defaultHeight = virtual && !props.height && !props.virtualScrollContainer ? '100%' : props.height;
68593
68688
  var selection = use_table_select({
68594
68689
  cellSelectable: props.cellSelectable
68595
68690
  });
@@ -68765,7 +68860,10 @@ function Table(props) {
68765
68860
  scrollLeft: props.scrollLeft,
68766
68861
  isRtl: isRtl,
68767
68862
  theadHeight: context.theadHeight,
68768
- tfootHeight: context.tfootHeight
68863
+ tfootHeight: context.tfootHeight,
68864
+ virtualScrollContainer: props.virtualScrollContainer,
68865
+ tableRef: tableRef,
68866
+ externalStickyHeader: !!props.virtualScrollContainer && !!props.sticky
68769
68867
  });
68770
68868
  var syncHeaderScroll = usePersistFn(function (left) {
68771
68869
  var _tableRef$current;
@@ -68946,7 +69044,7 @@ function Table(props) {
68946
69044
  }
68947
69045
  };
68948
69046
  var isRenderVirtualTable = virtual || props.sticky || !((_props$data2 = props.data) !== null && _props$data2 !== void 0 && _props$data2.length);
68949
- var headWrapperClass = classnames_default()(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.headWrapper, !!$empty && tableClasses.emptyHeader, props.sticky && isScrollY && tableClasses.scrollY, props.sticky && isScrollY && browserScrollbarWidth === 0 && tableClasses.overlayScrollbar, props.sticky && !isScrollY && tableClasses.scrollX);
69047
+ var headWrapperClass = classnames_default()(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.headWrapper, !!$empty && tableClasses.emptyHeader, props.sticky && isScrollY && tableClasses.scrollY, props.sticky && isScrollY && browserScrollbarWidth === 0 && tableClasses.overlayScrollbar, props.sticky && !isScrollY && !virtualInfo.isExternalScroll && tableClasses.scrollX);
68950
69048
  var footWrapperClass = classnames_default()(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.footWrapper);
68951
69049
  var renderHeadMirrorScroller = function renderHeadMirrorScroller() {
68952
69050
  var _scrollRef$current2, _scrollRef$current3, _scrollRef$current4;
@@ -69037,8 +69135,55 @@ function Table(props) {
69037
69135
  })
69038
69136
  }));
69039
69137
  if (isRenderVirtualTable) {
69040
- var _props$data3, _virtualInfo$rowSpanI;
69138
+ var _props$data4, _virtualInfo$rowSpanI2;
69041
69139
  var showStickyHeader = !props.hideHeader && props.sticky;
69140
+ if (virtualInfo.isExternalScroll) {
69141
+ var _props$sticky$top, _props$virtualScrollC, _props$data3, _virtualInfo$rowSpanI;
69142
+ var tableOffset = virtualInfo.tableOffsetRef.current;
69143
+ var stickyTop = typeof_default()(props.sticky) === 'object' ? (_props$sticky$top = props.sticky.top) !== null && _props$sticky$top !== void 0 ? _props$sticky$top : 0 : 0;
69144
+ var stickyTopOffset = stickyTop - tableOffset;
69145
+ var externalContainer = (_props$virtualScrollC = props.virtualScrollContainer) === null || _props$virtualScrollC === void 0 ? void 0 : _props$virtualScrollC.call(props);
69146
+ var stickyDivHeight = externalContainer ? externalContainer.clientHeight - stickyTopOffset : undefined;
69147
+ return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
69148
+ style: {
69149
+ position: 'relative',
69150
+ height: virtualInfo.scrollHeight
69151
+ },
69152
+ children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
69153
+ ref: virtualInfo.externalStickyRef,
69154
+ style: {
69155
+ position: 'sticky',
69156
+ top: stickyTopOffset,
69157
+ height: stickyDivHeight,
69158
+ overflowX: 'auto',
69159
+ overflowY: 'hidden'
69160
+ },
69161
+ children: [!props.hideHeader && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
69162
+ style: {
69163
+ position: 'relative',
69164
+ zIndex: 1,
69165
+ marginTop: props.sticky ? 0 : -virtualInfo.headerOffset
69166
+ },
69167
+ children: $headTable
69168
+ }), !!((_props$data3 = props.data) !== null && _props$data3 !== void 0 && _props$data3.length) && /*#__PURE__*/(0,jsx_runtime.jsxs)("table", {
69169
+ style: objectSpread2_default()(objectSpread2_default()({}, tableStyle), {}, {
69170
+ transform: virtualInfo.translateStyle,
69171
+ willChange: 'transform'
69172
+ }),
69173
+ ref: tbodyRef,
69174
+ children: [Group, /*#__PURE__*/(0,jsx_runtime.jsx)(tbody, objectSpread2_default()(objectSpread2_default()({}, bodyCommonProps), {}, {
69175
+ currentRowIndex: virtualInfo.startIndex,
69176
+ currentColIndex: currentColIndex,
69177
+ data: virtualInfo.data,
69178
+ originData: treeData,
69179
+ rowSpanIndexArray: (_virtualInfo$rowSpanI = virtualInfo.rowSpanInfo) === null || _virtualInfo$rowSpanI === void 0 ? void 0 : _virtualInfo$rowSpanI.rowSpanIndexArray,
69180
+ setRowHeight: virtualInfo.setRowHeight,
69181
+ scrolling: scrolling
69182
+ }))]
69183
+ }), $empty]
69184
+ })
69185
+ });
69186
+ }
69042
69187
  return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
69043
69188
  children: [renderHeadMirrorScroller(), showStickyHeader && /*#__PURE__*/(0,jsx_runtime.jsx)(StickyWrapper, objectSpread2_default()(objectSpread2_default()({}, stickyProps), {}, {
69044
69189
  children: $headTable
@@ -69059,7 +69204,7 @@ function Table(props) {
69059
69204
  isEmpty: !!$empty,
69060
69205
  tableRef: tableRef,
69061
69206
  setFakeVirtual: scrollAble ? undefined : setFakeVirtual,
69062
- children: [!props.hideHeader && !props.sticky && $headTable, !!((_props$data3 = props.data) !== null && _props$data3 !== void 0 && _props$data3.length) && /*#__PURE__*/(0,jsx_runtime.jsxs)("table", {
69207
+ children: [!props.hideHeader && !props.sticky && $headTable, !!((_props$data4 = props.data) !== null && _props$data4 !== void 0 && _props$data4.length) && /*#__PURE__*/(0,jsx_runtime.jsxs)("table", {
69063
69208
  style: objectSpread2_default()(objectSpread2_default()({}, tableStyle), {}, {
69064
69209
  transform: virtualInfo.translateStyle
69065
69210
  }),
@@ -69069,7 +69214,7 @@ function Table(props) {
69069
69214
  currentColIndex: currentColIndex,
69070
69215
  data: virtualInfo.data,
69071
69216
  originData: treeData,
69072
- rowSpanIndexArray: (_virtualInfo$rowSpanI = virtualInfo.rowSpanInfo) === null || _virtualInfo$rowSpanI === void 0 ? void 0 : _virtualInfo$rowSpanI.rowSpanIndexArray,
69217
+ rowSpanIndexArray: (_virtualInfo$rowSpanI2 = virtualInfo.rowSpanInfo) === null || _virtualInfo$rowSpanI2 === void 0 ? void 0 : _virtualInfo$rowSpanI2.rowSpanIndexArray,
69073
69218
  setRowHeight: virtualInfo.setRowHeight,
69074
69219
  scrolling: scrolling
69075
69220
  }))]
@@ -75770,7 +75915,7 @@ var upload_interface = __webpack_require__(8821);
75770
75915
 
75771
75916
 
75772
75917
  /* harmony default export */ var src_0 = ({
75773
- version: '3.9.14'
75918
+ version: '3.9.15-beta.1'
75774
75919
  });
75775
75920
  }();
75776
75921
  /******/ return __webpack_exports__;