shineout 3.7.4 → 3.7.5-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/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.7.4'
525
+ version: '3.7.5-beta.10'
526
526
  };
package/dist/shineout.js CHANGED
@@ -7389,7 +7389,7 @@ var Alert = function Alert(props) {
7389
7389
  if (dismiss === HIDE) {
7390
7390
  return null;
7391
7391
  }
7392
- if ('title' in props && title !== undefined) {
7392
+ if (title) {
7393
7393
  return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()({
7394
7394
  className: rootClass
7395
7395
  }, getRootProps()), {}, {
@@ -12234,7 +12234,7 @@ var handleStyle = function handleStyle(style) {
12234
12234
  };
12235
12235
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12236
12236
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12237
- /* harmony default export */ var version = ('3.7.4');
12237
+ /* harmony default export */ var version = ('3.7.5-beta.10');
12238
12238
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12239
12239
 
12240
12240
 
@@ -30375,10 +30375,13 @@ var usePopup = function usePopup(props) {
30375
30375
  }
30376
30376
  };
30377
30377
  var handleMouseEnter = use_persist_fn(function (e) {
30378
- var _targetEvents$onMouse;
30378
+ var _targetEvents$onMouse, _targetRef$current;
30379
30379
  targetEvents === null || targetEvents === void 0 || (_targetEvents$onMouse = targetEvents.onMouseEnter) === null || _targetEvents$onMouse === void 0 || _targetEvents$onMouse.call(targetEvents, e);
30380
30380
  if (trigger !== 'hover') return;
30381
- handleHoverToggle(true);
30381
+ var isParentContainsCurrent = (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : _targetRef$current.contains(e.target);
30382
+ if (isParentContainsCurrent) {
30383
+ handleHoverToggle(true);
30384
+ }
30382
30385
  });
30383
30386
  var handleMouseLeave = use_persist_fn(function (e) {
30384
30387
  var _targetEvents$onMouse2, _popupRef$current2;
@@ -39402,14 +39405,18 @@ var useTree = function useTree(props) {
39402
39405
  var getFlatData = function getFlatData() {
39403
39406
  return context.dataFlat;
39404
39407
  };
39405
- var updateExpanded = usePersistFn(function (expanded) {
39408
+ var updateExpanded = usePersistFn(function (expanded, ignoreExpanded) {
39406
39409
  var tempExpandMap = new Set(expanded);
39407
39410
  if (!expanded) return;
39408
39411
  if (virtual) {
39409
39412
  expandedFlat(expanded);
39410
39413
  }
39411
- context.updateMap.forEach(function (update, id) {
39412
- update('expanded', tempExpandMap.has(id));
39414
+ context.updateMap.forEach(function (call, id) {
39415
+ if (ignoreExpanded) {
39416
+ var nodeStatus = call('get', true);
39417
+ if (nodeStatus && nodeStatus.hasTriggered) return;
39418
+ }
39419
+ call('expanded', tempExpandMap.has(id));
39413
39420
  });
39414
39421
  });
39415
39422
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
@@ -39421,16 +39428,17 @@ var useTree = function useTree(props) {
39421
39428
  }
39422
39429
  });
39423
39430
  onExpand(nextExpanded);
39431
+ updateExpanded(nextExpanded, true);
39424
39432
  }
39425
- }, [context.dataMap]);
39433
+ }, [context.dataMap, props.data]);
39426
39434
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
39427
39435
  if (props.datum) return;
39428
39436
  if (!dataUpdate) return;
39429
39437
  setData(data);
39430
39438
  var nextExpanded = props.expanded || props.defaultExpanded || [];
39431
- if (!shallowEqual(nextExpanded, expanded)) {
39439
+ if (!defaultExpandAll && !shallowEqual(nextExpanded, expanded)) {
39432
39440
  onExpand(nextExpanded);
39433
- updateExpanded(nextExpanded);
39441
+ updateExpanded(nextExpanded, true);
39434
39442
  }
39435
39443
  updateInnerCheckStatus();
39436
39444
  }, [props.data]);
@@ -40062,8 +40070,8 @@ var CascaderNode = function CascaderNode(props) {
40062
40070
  _useState2 = slicedToArray_default()(_useState, 2),
40063
40071
  loading = _useState2[0],
40064
40072
  setLoading = _useState2[1];
40065
- // const [activeState, setActiveState] = useState(false);
40066
40073
  var checkboxRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)();
40074
+ var hasHandleSelectRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false);
40067
40075
  var isDisabled = datum.isDisabled(id);
40068
40076
  var children = data[childrenKey];
40069
40077
  var hasChildren = children && children.length > 0;
@@ -40104,13 +40112,17 @@ var CascaderNode = function CascaderNode(props) {
40104
40112
  }
40105
40113
  if (isHoverAble) {
40106
40114
  events.onMouseEnter = handlePathChange;
40107
- if (multiple) events.onClick = handleSelect;
40115
+ if (multiple) {
40116
+ events.onClick = handleSelect;
40117
+ hasHandleSelectRef.current = true;
40118
+ }
40108
40119
  } else if (isRealLeafNode && multiple) {
40109
40120
  // 非hover模式下: 末级节点支持整个节点区域点击选中checkbox
40110
40121
  events.onClick = function (e) {
40111
40122
  handleClick(e);
40112
40123
  handleSelect(e);
40113
40124
  };
40125
+ hasHandleSelectRef.current = true;
40114
40126
  }
40115
40127
  return events;
40116
40128
  };
@@ -40166,7 +40178,7 @@ var CascaderNode = function CascaderNode(props) {
40166
40178
  className: styles.optionCheckbox,
40167
40179
  checked: datum.getChecked(id),
40168
40180
  disabled: isDisabled,
40169
- onChange: isRealLeafNode && multiple ? undefined : handleChange
40181
+ onChange: hasHandleSelectRef.current ? undefined : handleChange
40170
40182
  }), renderContent(), renderIcon()]
40171
40183
  })
40172
40184
  }));
@@ -41089,44 +41101,25 @@ function getResetMore(onFilter, container, doms) {
41089
41101
  var hideMargin = parsePxToNumber(hideElStyle.marginLeft) + parsePxToNumber(hideElStyle.marginRight);
41090
41102
  var num = 0;
41091
41103
  var sumWidth = 0;
41092
- var itemWidthArr = items.map(function (item) {
41093
- var itemStyle = getComputedStyle(item);
41094
- var itemLen = item.offsetWidth + parsePxToNumber(itemStyle.marginLeft) + parsePxToNumber(itemStyle.marginRight);
41095
- sumWidth += itemLen;
41096
- return itemLen;
41097
- });
41098
- if (sumWidth <= contentWidth) {
41099
- num = -1;
41100
- } else {
41101
- var len = 0;
41102
- for (var i = 0; i < itemWidthArr.length; i++) {
41103
- var itemLen = itemWidthArr[i];
41104
- // number length
41105
- var resetNum = items.length - 1 - i;
41106
- var moreWidth = void 0;
41107
- if (resetNum <= 0) {
41108
- moreWidth = 0;
41109
- } else {
41110
- var reset = "+".concat(resetNum);
41111
- hideEl.childNodes[0].innerText = reset;
41112
- // (+num) width
41113
- moreWidth = hideEl.offsetWidth + hideMargin;
41114
- }
41115
- len += itemLen;
41116
- if (len > contentWidth - moreWidth) {
41117
- break;
41118
- }
41119
- num += 1;
41120
- if (i === items.length - 1) {
41121
- // not show more
41122
- num = -1;
41123
- }
41104
+ for (var i = 0; i < doms.length; i++) {
41105
+ var _item2 = doms[i];
41106
+ var itemStyle = getComputedStyle(_item2);
41107
+ var itemWidth = _item2.offsetWidth + parsePxToNumber(itemStyle.marginLeft) + parsePxToNumber(itemStyle.marginRight);
41108
+ sumWidth += itemWidth;
41109
+ var moreWidth = 0;
41110
+ var resetNum = items.length - 1 - i;
41111
+ if (resetNum > 0) {
41112
+ var reset = "+".concat(resetNum);
41113
+ hideEl.childNodes[0].innerText = reset;
41114
+ moreWidth = hideEl.offsetWidth + hideMargin;
41115
+ }
41116
+ if (sumWidth > contentWidth - moreWidth) {
41117
+ num = i;
41118
+ break;
41124
41119
  }
41120
+ num = -1;
41125
41121
  }
41126
- // at least show one
41127
- if (num === 0 && itemWidthArr[0]) {
41128
- num = 1;
41129
- }
41122
+ ;
41130
41123
  return num;
41131
41124
  }
41132
41125
  var More = function More(props) {
@@ -41148,16 +41141,7 @@ var More = function More(props) {
41148
41141
  var shouldShowMore = showNum < 0 || showNum >= data.length;
41149
41142
  var before = [];
41150
41143
  var after = [];
41151
- var itemsLength = 0;
41152
- var tagStyle = shouldShowMore ? {
41153
- position: 'absolute',
41154
- zIndex: -100,
41155
- userSelect: 'none',
41156
- msUserSelect: 'none',
41157
- contain: 'layout',
41158
- opacity: 0,
41159
- pointerEvents: 'none'
41160
- } : {};
41144
+ var afterLength = 0;
41161
41145
  if (!shouldShowMore) {
41162
41146
  before = new Array(showNum).fill(undefined).map(function (_item, index) {
41163
41147
  return data[index];
@@ -41165,9 +41149,9 @@ var More = function More(props) {
41165
41149
  after = new Array(data.length - showNum).fill(undefined).map(function (_item, index) {
41166
41150
  return data[showNum + index];
41167
41151
  });
41168
- itemsLength = after.length;
41152
+ afterLength = after.length;
41169
41153
  }
41170
- if (showNum < 0 || showNum >= data.length) {
41154
+ if (shouldShowMore) {
41171
41155
  return /*#__PURE__*/(0,jsx_runtime.jsxs)((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, {
41172
41156
  children: [data, /*#__PURE__*/(0,jsx_runtime.jsx)(src_tag_tag, {
41173
41157
  className: styles.tag,
@@ -41194,10 +41178,9 @@ var More = function More(props) {
41194
41178
  className: styles.tag,
41195
41179
  jssStyle: jssStyle,
41196
41180
  size: size,
41197
- style: tagStyle,
41198
41181
  mode: visible ? 'fill' : 'bright',
41199
41182
  color: visible ? 'info' : 'default',
41200
- children: shouldShowMore ? '+' : "+".concat(itemsLength)
41183
+ children: shouldShowMore ? '+' : "+".concat(afterLength)
41201
41184
  }, 'more'), compressed !== 'hide-popover' && /*#__PURE__*/(0,jsx_runtime.jsx)(src_popover_popover, {
41202
41185
  jssStyle: jssStyle,
41203
41186
  className: compressedClassName,
@@ -41295,7 +41278,11 @@ var result_Result = function Result(props) {
41295
41278
  setShouldResetMore = _useState4[1];
41296
41279
  var render = useRender();
41297
41280
  var resultRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
41298
- var prevMore = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(more);
41281
+ var _useRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)({
41282
+ prevMore: more,
41283
+ maxMore: 0
41284
+ }),
41285
+ context = _useRef.current;
41299
41286
  var removeLock = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false);
41300
41287
  var showInput = allowOnFilter;
41301
41288
  var mounted = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false);
@@ -41498,7 +41485,6 @@ var result_Result = function Result(props) {
41498
41485
  data: result,
41499
41486
  datas: renderMultipleResult.datas,
41500
41487
  size: size,
41501
- more: moreNumber,
41502
41488
  compressed: compressed,
41503
41489
  renderCompressed: renderCompressed,
41504
41490
  compressedClassName: compressedClassName,
@@ -41528,13 +41514,22 @@ var result_Result = function Result(props) {
41528
41514
  }
41529
41515
  return result;
41530
41516
  };
41531
- var handleResetMore = function handleResetMore() {
41517
+ var handleResetMore = function handleResetMore(valueLength) {
41532
41518
  if (!compressed) return;
41533
41519
  if (isCompressedBound()) return;
41534
41520
  if (removeLock.current) {
41535
41521
  removeLock.current = false;
41536
41522
  return;
41537
41523
  }
41524
+
41525
+ // 性能优化:当选项数量远超容器承载能力时,跳过昂贵的DOM计算
41526
+ // 在1000+选项时,重新计算会导致INP超过1000ms
41527
+ var hasExistingCompression = context.prevMore > 0;
41528
+ var hasValidEstimate = context.maxMore > 0;
41529
+ var exceedsCapacity = valueLength && valueLength > context.maxMore;
41530
+ if (hasExistingCompression && hasValidEstimate && exceedsCapacity) {
41531
+ return; // 跳过重新计算,保持现有的压缩状态
41532
+ }
41538
41533
  setMore(-1);
41539
41534
  setShouldResetMore(true);
41540
41535
  };
@@ -41591,7 +41586,7 @@ var result_Result = function Result(props) {
41591
41586
  }
41592
41587
  }, [focus, multiple]);
41593
41588
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useLayoutEffect)(function () {
41594
- handleResetMore();
41589
+ handleResetMore((valueProp === null || valueProp === void 0 ? void 0 : valueProp.length) || 0);
41595
41590
  }, [valueProp, data]);
41596
41591
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
41597
41592
  // datum.getDataByValues(value); 需要等待 useTree useEffect 执行完毕 才能获取到
@@ -41602,7 +41597,7 @@ var result_Result = function Result(props) {
41602
41597
  var tagClassName = ".".concat(styles.tag.split(' ')[0]);
41603
41598
  if (shouldResetMore && result_isArray(value) && (value || []).length) {
41604
41599
  var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
41605
- prevMore.current = newMore;
41600
+ context.prevMore = newMore;
41606
41601
  setMore(newMore);
41607
41602
  setShouldResetMore(false);
41608
41603
  } else {
@@ -41616,6 +41611,7 @@ var result_Result = function Result(props) {
41616
41611
  if (!resultRef.current) return;
41617
41612
  if (!compressed) return;
41618
41613
  if (isCompressedBound()) return;
41614
+ context.maxMore = Math.floor(resultRef.current.clientWidth / 20);
41619
41615
  var cancelObserver = addResizeObserver(resultRef.current, handleResetMore, {
41620
41616
  direction: 'x'
41621
41617
  });
@@ -45261,6 +45257,7 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
45261
45257
  return getFormatValueArr(dateArr, props.formatResult);
45262
45258
  } else if (typeof props.formatResult === 'function') {
45263
45259
  return dateArr.map(function (item) {
45260
+ if (!item) return '';
45264
45261
  return props.formatResult(item);
45265
45262
  });
45266
45263
  } else {
@@ -49032,7 +49029,9 @@ var Item_Item = /*#__PURE__*/function (_React$PureComponent) {
49032
49029
  contentPropsClassName = _ref2$className === void 0 ? '' : _ref2$className,
49033
49030
  contentPropsOnClick = _ref2.onClick,
49034
49031
  otherContentProps = objectWithoutProperties_default()(_ref2, Item_excluded2);
49035
- var className = classnames_default()(propsClassName, contentPropsClassName);
49032
+ var className = classnames_default()(
49033
+ // 如果content是Tooltip,则不传递className(就是dropdown-item的className)
49034
+ content.type.displayName !== 'ShineoutTooltip' ? propsClassName : '', contentPropsClassName);
49036
49035
  return /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_.cloneElement)(content, Object.assign(otherProps, otherContentProps, {
49037
49036
  className: className,
49038
49037
  onClick: function onClick(e) {
@@ -50823,6 +50822,9 @@ var useForm = function useForm(props) {
50823
50822
  context.names.delete(n);
50824
50823
  delete context.defaultValues[n];
50825
50824
  }
50825
+ if (context.errors[n]) {
50826
+ delete context.errors[n];
50827
+ }
50826
50828
  var finalReserveAble = (_props$reserveAble = props.reserveAble) !== null && _props$reserveAble !== void 0 ? _props$reserveAble : reserveAble;
50827
50829
  if (!finalReserveAble && !context.removeLock) {
50828
50830
  addRemove(n);
@@ -54461,6 +54463,7 @@ var NodeContent = function NodeContent(props) {
54461
54463
  onToggle = props.onToggle,
54462
54464
  onDragOver = props.onDragOver,
54463
54465
  onNodeClick = props.onNodeClick,
54466
+ onTriggered = props.onTriggered,
54464
54467
  actionOnClick = props.actionOnClick;
54465
54468
  var forceUpdate = useRender();
54466
54469
  var _useTreeContext = useTreeContext(),
@@ -54490,6 +54493,7 @@ var NodeContent = function NodeContent(props) {
54490
54493
  };
54491
54494
  var handleNodeExpand = function handleNodeExpand() {
54492
54495
  onToggle === null || onToggle === void 0 || onToggle(id);
54496
+ onTriggered === null || onTriggered === void 0 || onTriggered();
54493
54497
  if (data[childrenKey] !== undefined) return;
54494
54498
  if (loader) {
54495
54499
  setFetching(true);
@@ -54678,6 +54682,18 @@ var useTreeNode = function useTreeNode(props) {
54678
54682
  _useState6 = slicedToArray_default()(_useState5, 2),
54679
54683
  fetching = _useState6[0],
54680
54684
  setFetching = _useState6[1];
54685
+ var _useState7 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(false),
54686
+ _useState8 = slicedToArray_default()(_useState7, 2),
54687
+ hasTriggered = _useState8[0],
54688
+ setHasTriggered = _useState8[1];
54689
+ var get = function get() {
54690
+ return {
54691
+ hasTriggered: hasTriggered,
54692
+ active: active,
54693
+ expanded: expanded,
54694
+ fetching: fetching
54695
+ };
54696
+ };
54681
54697
  var update = use_persist_fn(function (key, value) {
54682
54698
  switch (key) {
54683
54699
  case 'active':
@@ -54693,9 +54709,14 @@ var useTreeNode = function useTreeNode(props) {
54693
54709
  setFetching(value);
54694
54710
  }
54695
54711
  break;
54712
+ case 'get':
54713
+ return get();
54696
54714
  }
54697
54715
  });
54698
54716
  var handleToggle = function handleToggle() {};
54717
+ var handleTriggered = function handleTriggered() {
54718
+ setHasTriggered(true);
54719
+ };
54699
54720
  var isLeaf = function isLeaf() {
54700
54721
  var children = data[childrenKey];
54701
54722
  if (children && children.length > 0) return false;
@@ -54719,7 +54740,8 @@ var useTreeNode = function useTreeNode(props) {
54719
54740
  isLeaf: isLeaf,
54720
54741
  setFetching: setFetching,
54721
54742
  setExpanded: setExpanded,
54722
- onToggle: handleToggle
54743
+ onToggle: handleToggle,
54744
+ onTriggered: handleTriggered
54723
54745
  };
54724
54746
  };
54725
54747
  /* harmony default export */ var use_tree_node = (useTreeNode);
@@ -54810,7 +54832,8 @@ var Node = function Node(props) {
54810
54832
  fetching = _useTreeNode.fetching,
54811
54833
  setFetching = _useTreeNode.setFetching,
54812
54834
  expanded = _useTreeNode.expanded,
54813
- setExpanded = _useTreeNode.setExpanded;
54835
+ setExpanded = _useTreeNode.setExpanded,
54836
+ onTriggered = _useTreeNode.onTriggered;
54814
54837
  var children = data[childrenKey];
54815
54838
  var hasChildren = children && children.length > 0;
54816
54839
  var contentStyle = (jssStyle === null || jssStyle === void 0 ? void 0 : jssStyle.tree()) || {};
@@ -54996,6 +55019,7 @@ var Node = function Node(props) {
54996
55019
  onChange: onChange,
54997
55020
  onFetch: handleFetch,
54998
55021
  onNodeClick: onNodeClick,
55022
+ onTriggered: onTriggered,
54999
55023
  onDragOver: handleDragOver,
55000
55024
  onToggle: handleToggle,
55001
55025
  actionOnClick: actionOnClick
@@ -55161,7 +55185,19 @@ var VirtualNode = function VirtualNode(props) {
55161
55185
  });
55162
55186
  if (onToggle) onToggle(id, nextExpanded);
55163
55187
  };
55164
- var indent = size === "large" ? 32 : 24;
55188
+ var getIndent = function getIndent() {
55189
+ if (size === "large") {
55190
+ if (line && level === 1) {
55191
+ return 16;
55192
+ }
55193
+ return 32;
55194
+ }
55195
+ if (line && level === 1) {
55196
+ return 8;
55197
+ }
55198
+ return 24;
55199
+ };
55200
+ var indent = getIndent();
55165
55201
  var $indents;
55166
55202
  if (line) {
55167
55203
  $indents = Array.from({
@@ -57462,7 +57498,8 @@ var usePagination = function usePagination(props) {
57462
57498
  return objectSpread2_default()({}, mergedEventHandlers);
57463
57499
  };
57464
57500
  return {
57465
- current: current,
57501
+ // current,
57502
+ current: currentProp !== undefined ? currentProp : current,
57466
57503
  pageSize: pageSize,
57467
57504
  total: total,
57468
57505
  onChange: handleChange,
@@ -71610,7 +71647,7 @@ var upload_interface = __webpack_require__(8821);
71610
71647
 
71611
71648
 
71612
71649
  /* harmony default export */ var src_0 = ({
71613
- version: '3.7.4'
71650
+ version: '3.7.5-beta.10'
71614
71651
  });
71615
71652
  }();
71616
71653
  /******/ return __webpack_exports__;