shineout 3.9.14-beta.9 → 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-beta.9'
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-beta.9');
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
 
@@ -42038,6 +42038,9 @@ var VirtualList = function VirtualList(props) {
42038
42038
  // 数据变化的时候清空掉 preIndex, 如果之前有缓存的index, setRowHeight 会有问题
42039
42039
  setTop(0);
42040
42040
  setStartIndex(0);
42041
+ if (wrapperRef.current) {
42042
+ wrapperRef.current.scrollTop = 0;
42043
+ }
42041
42044
  context.prevWrapperRefHeight = currentWrapperRefHeight;
42042
42045
  return function () {
42043
42046
  context.preIndex = null;
@@ -56324,6 +56327,7 @@ var useNumberFormat = function useNumberFormat(props) {
56324
56327
  min = props.min,
56325
56328
  max = props.max,
56326
56329
  allowNull = props.allowNull,
56330
+ clearToUndefined = props.clearToUndefined,
56327
56331
  _props$step = props.step,
56328
56332
  step = _props$step === void 0 ? 1 : _props$step,
56329
56333
  cancelBlurChange = props.cancelBlurChange,
@@ -56344,11 +56348,8 @@ var useNumberFormat = function useNumberFormat(props) {
56344
56348
  setInternalInputValue = _React$useState2[1];
56345
56349
  var focusedRef = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(false);
56346
56350
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
56347
- // 将外部值转为字符串后再比较,避免 number 5 vs string "5" 的类型不匹配误判
56348
56351
  var stringValue = getStringValue(props.value);
56349
- // 聚焦编辑期间不同步外部值,避免 form 回填 defaultValue 覆盖用户输入
56350
- // 但当外部值被清空时(如 clearable 触发),即使聚焦也需要同步
56351
- if (stringValue !== inernalInputValue && (!focusedRef.current || props.value == null || props.value === '')) {
56352
+ if (stringValue !== inernalInputValue && (!focusedRef.current || props.value == null)) {
56352
56353
  setInternalInputValue(stringValue);
56353
56354
  }
56354
56355
  }, [props.value]);
@@ -56475,6 +56476,10 @@ var useNumberFormat = function useNumberFormat(props) {
56475
56476
  var num = changeValue(-step);
56476
56477
  if (num !== undefined) setInternalInputValue(getStringValue(num));
56477
56478
  });
56479
+ var handleClear = use_persist_fn(function () {
56480
+ setInternalInputValue('');
56481
+ onChange === null || onChange === void 0 || onChange(clearToUndefined ? undefined : allowNull ? null : '');
56482
+ });
56478
56483
  return objectSpread2_default()(objectSpread2_default()({}, use_input_format({
56479
56484
  value: inernalInputValue,
56480
56485
  type: 'number',
@@ -56488,7 +56493,8 @@ var useNumberFormat = function useNumberFormat(props) {
56488
56493
  cancelBlurChange: true
56489
56494
  })), {}, {
56490
56495
  onPlus: handlePlus,
56491
- onMinus: handleMinus
56496
+ onMinus: handleMinus,
56497
+ onClear: handleClear
56492
56498
  });
56493
56499
  };
56494
56500
  /* harmony default export */ var use_input_number = (useNumberFormat);
@@ -56536,7 +56542,8 @@ var InputNumber = function InputNumber(props) {
56536
56542
  value: commonProps.value,
56537
56543
  onChange: commonProps.onChange,
56538
56544
  disabled: !!commonProps.disabled,
56539
- defaultValue: props.defaultValue
56545
+ defaultValue: props.defaultValue,
56546
+ clearToUndefined: props.clearToUndefined
56540
56547
  }, numberFormatParams)),
56541
56548
  onMinus = _useInputNumber.onMinus,
56542
56549
  onPlus = _useInputNumber.onPlus,
@@ -59311,9 +59318,7 @@ function Select(props0) {
59311
59318
  onClearCreatedData = _useFilter.onClearCreatedData,
59312
59319
  rawData = _useFilter.rawData,
59313
59320
  FilterProvider = _useFilter.FilterProvider;
59314
- var prevFilterTextRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(filterText);
59315
- var filterTextChanged = prevFilterTextRef.current !== filterText;
59316
- prevFilterTextRef.current = filterText;
59321
+ var prevListDataLengthRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(0);
59317
59322
  var _useState7 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(''),
59318
59323
  _useState8 = slicedToArray_default()(_useState7, 2),
59319
59324
  absoluteListUpdateKey = _useState8[0],
@@ -59726,8 +59731,13 @@ function Select(props0) {
59726
59731
  });
59727
59732
  };
59728
59733
  var renderList = function renderList() {
59734
+ var _listData$length;
59735
+ var listData = groupBy ? groupData : filterData;
59736
+ var listDataLength = (_listData$length = listData === null || listData === void 0 ? void 0 : listData.length) !== null && _listData$length !== void 0 ? _listData$length : 0;
59737
+ var dataGrew = listDataLength > prevListDataLengthRef.current;
59738
+ prevListDataLengthRef.current = listDataLength;
59729
59739
  var listProps = {
59730
- data: groupBy ? groupData : filterData,
59740
+ data: listData,
59731
59741
  datum: datum,
59732
59742
  value: value,
59733
59743
  size: size,
@@ -59748,7 +59758,7 @@ function Select(props0) {
59748
59758
  renderItem: renderItem,
59749
59759
  controlType: controlType,
59750
59760
  onLoadMore: onLoadMore,
59751
- keepScrollTop: filterTextChanged ? false : true,
59761
+ keepScrollTop: dataGrew,
59752
59762
  isAnimationFinish: isAnimationFinish,
59753
59763
  threshold: threshold,
59754
59764
  onControlTypeChange: setControlType,
@@ -66284,12 +66294,89 @@ var useTableSort = function useTableSort(props) {
66284
66294
  };
66285
66295
  };
66286
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);
66287
66372
  ;// CONCATENATED MODULE: ../hooks/src/components/use-table/use-table-virtual.tsx
66288
66373
 
66289
66374
 
66290
66375
 
66291
66376
 
66292
66377
 
66378
+
66379
+
66293
66380
  // 找出最大的连续数字的个数
66294
66381
  function getMaxRowSpanLength(input) {
66295
66382
  var map = new Map();
@@ -66428,8 +66515,8 @@ var useTableVirtual = function useTableVirtual(props) {
66428
66515
  setHeight(getContentHeight(props.data.length - 1));
66429
66516
  }
66430
66517
  var preIndex = context.preIndex;
66431
- // 解决: 从下往上滚 由于高度变化会导致滚动条跳动
66432
- if (preIndex && preIndex > startIndex && startIndex === index) {
66518
+ // 解决: 从下往上滚 由于高度变化会导致滚动条跳动(仅内部滚动需要)
66519
+ if (!props.virtualScrollContainer && preIndex && preIndex > startIndex && startIndex === index) {
66433
66520
  // 发生在顶部
66434
66521
  if (context.heightCallback) return;
66435
66522
  var offset = height - (beforeHeight || props.rowHeight);
@@ -66679,6 +66766,20 @@ var useTableVirtual = function useTableVirtual(props) {
66679
66766
  }
66680
66767
  return "translate3d(0, ".concat(0 - t, "px, 0)");
66681
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
+ });
66682
66783
  return {
66683
66784
  scrollHeight: scrollHeight,
66684
66785
  startIndex: startIndex,
@@ -66689,7 +66790,11 @@ var useTableVirtual = function useTableVirtual(props) {
66689
66790
  scrollToIndex: scrollToIndex,
66690
66791
  scrollColumnByLeft: scrollColumnByLeft,
66691
66792
  scrollColumnIntoView: scrollColumnIntoView,
66692
- rowSpanInfo: rowSpanInfo
66793
+ rowSpanInfo: rowSpanInfo,
66794
+ isExternalScroll: isExternalScroll,
66795
+ externalStickyRef: externalInfo.externalStickyRef,
66796
+ headerOffset: externalInfo.headerOffset,
66797
+ tableOffsetRef: externalInfo.tableOffsetRef
66693
66798
  };
66694
66799
  };
66695
66800
  /* harmony default export */ var use_table_virtual = (useTableVirtual);
@@ -68561,7 +68666,7 @@ function Table(props) {
68561
68666
  scrollingTimer: null
68562
68667
  }),
68563
68668
  context = _useRef.current;
68564
- 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');
68565
68670
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useLayoutEffect)(function () {
68566
68671
  if (!virtual) return;
68567
68672
  if (!tableRef.current) return;
@@ -68579,7 +68684,7 @@ function Table(props) {
68579
68684
  tbodyHeight = _useResize.height;
68580
68685
 
68581
68686
  // default height
68582
- var defaultHeight = virtual && !props.height ? '100%' : props.height;
68687
+ var defaultHeight = virtual && !props.height && !props.virtualScrollContainer ? '100%' : props.height;
68583
68688
  var selection = use_table_select({
68584
68689
  cellSelectable: props.cellSelectable
68585
68690
  });
@@ -68755,7 +68860,10 @@ function Table(props) {
68755
68860
  scrollLeft: props.scrollLeft,
68756
68861
  isRtl: isRtl,
68757
68862
  theadHeight: context.theadHeight,
68758
- tfootHeight: context.tfootHeight
68863
+ tfootHeight: context.tfootHeight,
68864
+ virtualScrollContainer: props.virtualScrollContainer,
68865
+ tableRef: tableRef,
68866
+ externalStickyHeader: !!props.virtualScrollContainer && !!props.sticky
68759
68867
  });
68760
68868
  var syncHeaderScroll = usePersistFn(function (left) {
68761
68869
  var _tableRef$current;
@@ -68936,7 +69044,7 @@ function Table(props) {
68936
69044
  }
68937
69045
  };
68938
69046
  var isRenderVirtualTable = virtual || props.sticky || !((_props$data2 = props.data) !== null && _props$data2 !== void 0 && _props$data2.length);
68939
- 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);
68940
69048
  var footWrapperClass = classnames_default()(tableClasses === null || tableClasses === void 0 ? void 0 : tableClasses.footWrapper);
68941
69049
  var renderHeadMirrorScroller = function renderHeadMirrorScroller() {
68942
69050
  var _scrollRef$current2, _scrollRef$current3, _scrollRef$current4;
@@ -69027,8 +69135,55 @@ function Table(props) {
69027
69135
  })
69028
69136
  }));
69029
69137
  if (isRenderVirtualTable) {
69030
- var _props$data3, _virtualInfo$rowSpanI;
69138
+ var _props$data4, _virtualInfo$rowSpanI2;
69031
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
+ }
69032
69187
  return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
69033
69188
  children: [renderHeadMirrorScroller(), showStickyHeader && /*#__PURE__*/(0,jsx_runtime.jsx)(StickyWrapper, objectSpread2_default()(objectSpread2_default()({}, stickyProps), {}, {
69034
69189
  children: $headTable
@@ -69049,7 +69204,7 @@ function Table(props) {
69049
69204
  isEmpty: !!$empty,
69050
69205
  tableRef: tableRef,
69051
69206
  setFakeVirtual: scrollAble ? undefined : setFakeVirtual,
69052
- 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", {
69053
69208
  style: objectSpread2_default()(objectSpread2_default()({}, tableStyle), {}, {
69054
69209
  transform: virtualInfo.translateStyle
69055
69210
  }),
@@ -69059,7 +69214,7 @@ function Table(props) {
69059
69214
  currentColIndex: currentColIndex,
69060
69215
  data: virtualInfo.data,
69061
69216
  originData: treeData,
69062
- 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,
69063
69218
  setRowHeight: virtualInfo.setRowHeight,
69064
69219
  scrolling: scrolling
69065
69220
  }))]
@@ -75760,7 +75915,7 @@ var upload_interface = __webpack_require__(8821);
75760
75915
 
75761
75916
 
75762
75917
  /* harmony default export */ var src_0 = ({
75763
- version: '3.9.14-beta.9'
75918
+ version: '3.9.15-beta.1'
75764
75919
  });
75765
75920
  }();
75766
75921
  /******/ return __webpack_exports__;