shineout 3.8.0-beta.5 → 3.8.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.8.0-beta.5'
525
+ version: '3.8.0-beta.8'
526
526
  };
package/dist/shineout.js CHANGED
@@ -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.8.0-beta.5');
12237
+ /* harmony default export */ var version = ('3.8.0-beta.8');
12238
12238
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12239
12239
 
12240
12240
 
@@ -20543,6 +20543,17 @@ var input_input = objectSpread2_default()(objectSpread2_default()(objectSpread2_
20543
20543
  fontSize: 'inherit'
20544
20544
  }
20545
20545
  },
20546
+ wrapperShowClear: {
20547
+ '& $clearWrapper': {
20548
+ display: 'flex',
20549
+ opacity: 0
20550
+ }
20551
+ },
20552
+ wrapperHasValue: {
20553
+ '& $clearWrapper': {
20554
+ opacity: 1
20555
+ }
20556
+ },
20546
20557
  clearWrapper: {
20547
20558
  position: 'relative',
20548
20559
  flexBasis: "calc(".concat(src.inputIconSize, " + 8px)"),
@@ -20660,54 +20671,10 @@ var input_input = objectSpread2_default()(objectSpread2_default()(objectSpread2_
20660
20671
  '&:hover svg': {
20661
20672
  color: src.inputHoverToggleColor
20662
20673
  }
20663
- // marginRight: token.inputPaddingX,
20664
20674
  },
20665
20675
  info: {
20666
- position: 'absolute',
20667
- '&[dir=ltr]': {
20668
- right: '0'
20669
- },
20670
- '&[dir=rtl]': {
20671
- left: '0'
20672
- },
20673
- top: '100%',
20674
- zIndex: 1000,
20675
- transformOrigin: '100% 0',
20676
- marginTop: '10px',
20677
- animation: 'so-input-fade .16s ease-in',
20678
- maxWidth: '400px',
20679
- padding: '5px 8px',
20680
20676
  background: src.inputInfoBackgroundColor,
20681
- borderRadius: src.inputBorderRadius,
20682
- boxShadow: "0 0 0 1px ".concat(src.inputBorderColor),
20683
- fontSize: '12px',
20684
- color: src.inputInfoFontColor,
20685
- '&::before': {
20686
- display: 'block',
20687
- position: 'absolute',
20688
- bottom: '100%',
20689
- transform: 'rotate(45deg) translateY(3px)',
20690
- width: '6px',
20691
- height: '6px',
20692
- borderTop: "1px solid ".concat(src.inputBorderColor),
20693
- borderLeft: "1px solid ".concat(src.inputBorderColor),
20694
- background: 'inherit',
20695
- content: "' '"
20696
- },
20697
- '&[dir=ltr]::before': {
20698
- right: '4px'
20699
- },
20700
- '&[dir=rtl]::before': {
20701
- left: '8px'
20702
- }
20703
- },
20704
- infoError: {
20705
- boxShadow: "0 0 0 1px ".concat(src.inputInfoErrorBorderColor),
20706
- color: src.inputInfoErrorFontColor,
20707
- background: src.inputInfoErrorBackgroundColor,
20708
- '&::before': {
20709
- borderColor: src.inputInfoErrorBorderColor
20710
- }
20677
+ color: src.inputInfoFontColor
20711
20678
  }
20712
20679
  });
20713
20680
  /* harmony default export */ var src_input_input = (input_input);
@@ -24030,8 +23997,6 @@ var useSelectStyle = styled(src_select_select, 'select');
24030
23997
  /* harmony default export */ var shineout_style_src_select = ((/* unused pure expression or super */ null && (useSelectStyle)));
24031
23998
  ;// CONCATENATED MODULE: ../shineout-style/src/skeleton/skeleton.ts
24032
23999
 
24033
- // import token from '@sheinx/theme';
24034
-
24035
24000
 
24036
24001
  var skeleton_animation = {
24037
24002
  '@keyframes skeleton-animation': {
@@ -24050,7 +24015,7 @@ var skeletonStyle = objectSpread2_default()(objectSpread2_default()({}, skeleton
24050
24015
  },
24051
24016
  animation: {
24052
24017
  '& $textItem, & $image, & $buttonItem': {
24053
- background: "linear-gradient(90deg, ".concat(src.skeletonAnimationFromColor, " 25%, ").concat(src.skeletonAnimationToColor, " 37%, ").concat(src.skeletonAnimationFromColor, " 63%)"),
24018
+ backgroundImage: "linear-gradient(90deg, ".concat(src.skeletonAnimationFromColor, " 25%, ").concat(src.skeletonAnimationToColor, " 37%, ").concat(src.skeletonAnimationFromColor, " 63%)"),
24054
24019
  backgroundSize: '400% 100%',
24055
24020
  animation: '$skeleton-animation 1.4s ease infinite'
24056
24021
  }
@@ -31006,6 +30971,14 @@ function shallowEqual(objA, objB) {
31006
30971
  }
31007
30972
  return true;
31008
30973
  }
30974
+ function shallowEqualExceptFalsely(objA, objB) {
30975
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
30976
+ var falselys = [false, 0, '', null, undefined, NaN];
30977
+ if (falselys.includes(objA) && falselys.includes(objB)) {
30978
+ return true;
30979
+ }
30980
+ return shallowEqual(objA, objB, options);
30981
+ }
31009
30982
  /* harmony default export */ var shallow_equal = (shallowEqual);
31010
30983
  ;// CONCATENATED MODULE: ../hooks/src/utils/dom/document.ts
31011
30984
  var cachedZoom = 0;
@@ -35827,7 +35800,7 @@ var simple_input_excluded = ["jssStyle", "className", "style", "status", "clearI
35827
35800
 
35828
35801
 
35829
35802
  var Input = function Input(props) {
35830
- var _jssStyle$input;
35803
+ var _jssStyle$input, _inputElProps$value;
35831
35804
  var jssStyle = props.jssStyle,
35832
35805
  className = props.className,
35833
35806
  style = props.style,
@@ -35845,20 +35818,41 @@ var Input = function Input(props) {
35845
35818
  addEnd = props.addEnd,
35846
35819
  hasSuffix = props.hasSuffix,
35847
35820
  rest = objectWithoutProperties_default()(props, simple_input_excluded);
35821
+ var _useRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)({
35822
+ needTriggerEnter: false
35823
+ }),
35824
+ context = _useRef.current;
35848
35825
  var inputStyle = jssStyle === null || jssStyle === void 0 || (_jssStyle$input = jssStyle.input) === null || _jssStyle$input === void 0 ? void 0 : _jssStyle$input.call(jssStyle);
35849
35826
  var config = useConfig();
35850
35827
  var _useContext = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useContext)(FormFieldContext),
35851
35828
  fieldId = _useContext.fieldId;
35829
+ var showClearFromProp = props.showClear && !props.disabled;
35852
35830
  var _useInput = use_input(objectSpread2_default()(objectSpread2_default()({}, rest), {}, {
35853
- onFocusedChange: onFocusedChange
35831
+ onFocusedChange: onFocusedChange,
35832
+ // 由于form的原生submit事件是在keydown中触发的,submit校验后触发scrollToError会导致当前焦点的input立即失焦,导致input的回车事件无法触发
35833
+ // 所以这里在onKeyDown时机记录下needTriggerEnter标志,在onBlur时机判断是否需要触发onEnterPress
35834
+ onKeyDown: function onKeyDown(e) {
35835
+ var _props$onKeyDown;
35836
+ if (e.key === 'Enter') {
35837
+ context.needTriggerEnter = true;
35838
+ }
35839
+ (_props$onKeyDown = props.onKeyDown) === null || _props$onKeyDown === void 0 || _props$onKeyDown.call(props, e);
35840
+ },
35841
+ onBlur: function onBlur(e) {
35842
+ var _props$onBlur;
35843
+ if (context.needTriggerEnter) {
35844
+ context.needTriggerEnter = false;
35845
+ _onEnterPress === null || _onEnterPress === void 0 || _onEnterPress(e.target.value || '', e);
35846
+ }
35847
+ (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, e);
35848
+ }
35854
35849
  })),
35855
35850
  getRootProps = _useInput.getRootProps,
35856
35851
  getClearProps = _useInput.getClearProps,
35857
35852
  getInputProps = _useInput.getInputProps,
35858
- showClear = _useInput.showClear,
35853
+ showClearFromClearable = _useInput.showClear,
35859
35854
  focused = _useInput.focused,
35860
35855
  disabled = _useInput.disabled;
35861
- var rootClass = classnames_default()(className, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.rootClass, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapper, !!focused && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperFocus), !!disabled && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperDisabled), status === 'error' && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperError), size === 'small' && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperSmall), size === 'large' && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperLarge), !!underline && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperUnderline), !border && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperNoBorder), hasSuffix && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.password));
35862
35856
  var keyHandler = useKeyEvent({
35863
35857
  onEnterPress: function onEnterPress(e) {
35864
35858
  _onEnterPress === null || _onEnterPress === void 0 || _onEnterPress(e.target.value || '', e);
@@ -35866,6 +35860,10 @@ var Input = function Input(props) {
35866
35860
  });
35867
35861
  var onKeyUp = usePersistFn(function (e) {
35868
35862
  var _props$onKeyUp;
35863
+ if (e.key === 'Enter') {
35864
+ context.needTriggerEnter = false;
35865
+ }
35866
+ ;
35869
35867
  (_props$onKeyUp = props.onKeyUp) === null || _props$onKeyUp === void 0 || _props$onKeyUp.call(props, e);
35870
35868
  keyHandler(e);
35871
35869
  });
@@ -35882,6 +35880,7 @@ var Input = function Input(props) {
35882
35880
  if (typeof renderInput === 'function') {
35883
35881
  inputEl = renderInput(inputEl);
35884
35882
  }
35883
+ var rootClass = classnames_default()(className, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.rootClass, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapper, !!focused && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperFocus), !!disabled && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperDisabled), status === 'error' && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperError), size === 'small' && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperSmall), size === 'large' && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperLarge), !!underline && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperUnderline), !border && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperNoBorder), hasSuffix && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.password), showClearFromProp && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperShowClear), showClearFromProp && ((_inputElProps$value = inputElProps.value) === null || _inputElProps$value === void 0 ? void 0 : _inputElProps$value.length) > 0 && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperHasValue));
35885
35884
  return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({
35886
35885
  id: fieldId
35887
35886
  }, getDataAttribute(defineProperty_default()({}, 'input-border', 'true'))), getRootProps({
@@ -35890,7 +35889,7 @@ var Input = function Input(props) {
35890
35889
  })), {}, {
35891
35890
  children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
35892
35891
  className: classnames_default()(inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperInnerTitleTop, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperInnerTitleBottom, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperPaddingBox, inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.content),
35893
- children: [prefix, inputEl, showClear && /*#__PURE__*/(0,jsx_runtime.jsx)("div", objectSpread2_default()(objectSpread2_default()({
35892
+ children: [prefix, inputEl, (showClearFromProp || showClearFromClearable) && /*#__PURE__*/(0,jsx_runtime.jsx)("div", objectSpread2_default()(objectSpread2_default()({
35894
35893
  className: inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.clearWrapper
35895
35894
  }, getClearProps()), {}, {
35896
35895
  children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
@@ -36415,7 +36414,7 @@ var useTip = function useTip(props) {
36415
36414
  if (tip && focused || popover && errorMessage) {
36416
36415
  return /*#__PURE__*/(0,jsx_runtime.jsx)(src_popover_popover, objectSpread2_default()(objectSpread2_default()({
36417
36416
  jssStyle: jssStyle,
36418
- getPopupContainer: function getPopupContainer() {
36417
+ getPopupContainer: (popoverProps === null || popoverProps === void 0 ? void 0 : popoverProps.getPopupContainer) || function () {
36419
36418
  return rootRef.current;
36420
36419
  },
36421
36420
  useTextStyle: true
@@ -36460,6 +36459,7 @@ var useWithFormConfig = function useWithFormConfig(props) {
36460
36459
 
36461
36460
 
36462
36461
 
36462
+
36463
36463
  var use_input_common_excluded = ["forwardRef", "forwardedRef", "htmlName", "value", "onChange", "defaultValue", "beforeChange", "clearable", "clearToUndefined", "style", "suffix", "info", "innerTitle", "placeTitle", "width", "delay", "onBlur", "tip", "error", "popover", "popoverProps", "status", "disabled", "size"];
36464
36464
 
36465
36465
 
@@ -36478,7 +36478,7 @@ var defaultInfo = function defaultInfo(num, msg) {
36478
36478
  return new Error(text);
36479
36479
  };
36480
36480
  var useInputCommon = function useInputCommon(props0) {
36481
- var _ref, _props$jssStyle, _props$jssStyle$input;
36481
+ var _ref, _props$jssStyle, _props$jssStyle$input, _infoState$error;
36482
36482
  var config = useConfig();
36483
36483
  var props = use_with_form_config(props0);
36484
36484
  var forwardRef = props.forwardRef,
@@ -36507,7 +36507,7 @@ var useInputCommon = function useInputCommon(props0) {
36507
36507
  size = props.size,
36508
36508
  rest = objectWithoutProperties_default()(props, use_input_common_excluded);
36509
36509
  var delay = (_ref = delayProps !== null && delayProps !== void 0 ? delayProps : config.delay) !== null && _ref !== void 0 ? _ref : 0;
36510
- var inputStyle = (_props$jssStyle = props.jssStyle) === null || _props$jssStyle === void 0 || (_props$jssStyle$input = _props$jssStyle.input) === null || _props$jssStyle$input === void 0 ? void 0 : _props$jssStyle$input.call(_props$jssStyle);
36510
+ var inputClasses = (_props$jssStyle = props.jssStyle) === null || _props$jssStyle === void 0 || (_props$jssStyle$input = _props$jssStyle.input) === null || _props$jssStyle$input === void 0 ? void 0 : _props$jssStyle$input.call(_props$jssStyle);
36511
36511
  var rootRef = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(null);
36512
36512
  var _React$useState = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useState(false),
36513
36513
  _React$useState2 = slicedToArray_default()(_React$useState, 2),
@@ -36549,27 +36549,50 @@ var useInputCommon = function useInputCommon(props0) {
36549
36549
  value: inputAbleProps.value,
36550
36550
  onChange: inputAbleProps.onChange
36551
36551
  });
36552
- var getInfo = function getInfo() {
36552
+ var getInfoState = function getInfoState() {
36553
36553
  var notNumber = typeof info !== 'number';
36554
- if (typeof info !== 'function' && notNumber) return null;
36555
- var textInfo = notNumber ? info : defaultInfo.bind(null, info);
36556
- var res = textInfo(inputAbleProps.value);
36557
- // empty
36558
- if (!res) return null;
36559
- var isError = res instanceof Error;
36560
- var text = isError ? res.message : res;
36554
+ if (typeof info !== 'function' && typeof_default()(info) !== 'object' && notNumber) return null;
36555
+ var infoContent;
36556
+ if (typeof_default()(info) === 'object') {
36557
+ infoContent = info.content;
36558
+ } else {
36559
+ infoContent = info;
36560
+ }
36561
+ var notContentNumber = typeof infoContent !== 'number';
36562
+ var textInfo = notContentNumber ? infoContent : defaultInfo.bind(null, infoContent);
36563
+ var error = textInfo(inputAbleProps.value);
36564
+ if (!error) return null;
36565
+ var isError = error instanceof Error;
36566
+ var text = isError ? error.message : error;
36561
36567
  if (!isError && !focused) return null;
36562
- return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
36568
+ return {
36569
+ text: text,
36570
+ error: error
36571
+ };
36572
+ };
36573
+ var infoState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(getInfoState, [info, inputAbleProps.value, focused]);
36574
+ var infoPopoverProps = {
36575
+ popover: props.popover || (typeof_default()(info) === 'object' ? info.position : 'bottom-right'),
36576
+ popoverProps: Object.assign({
36563
36577
  style: {
36564
- minWidth: 'auto'
36578
+ width: 'auto',
36579
+ fontSize: 12
36565
36580
  },
36566
- className: classnames_default()(inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.info, !!isError && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.infoError)),
36567
- dir: config.direction,
36568
- children: text
36569
- }, 'info');
36581
+ adjust: true
36582
+ }, props.popoverProps),
36583
+ error: infoState !== null && infoState !== void 0 && infoState.error && (infoState === null || infoState === void 0 ? void 0 : infoState.error) instanceof Error ? infoState === null || infoState === void 0 || (_infoState$error = infoState.error) === null || _infoState$error === void 0 ? void 0 : _infoState$error.message : undefined,
36584
+ tip: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
36585
+ className: inputClasses === null || inputClasses === void 0 ? void 0 : inputClasses.info,
36586
+ children: infoState === null || infoState === void 0 ? void 0 : infoState.text
36587
+ })
36570
36588
  };
36589
+ var infoPopoverNode = use_tip(objectSpread2_default()(objectSpread2_default()({}, infoPopoverProps), {}, {
36590
+ focused: focused,
36591
+ rootRef: rootRef,
36592
+ jssStyle: props.jssStyle
36593
+ }));
36571
36594
  var mergeSuffix = /*#__PURE__*/(0,jsx_runtime.jsxs)((external_root_React_commonjs2_react_commonjs_react_amd_react_default()).Fragment, {
36572
- children: [suffix, getInfo(), tipNode]
36595
+ children: [suffix, (infoState === null || infoState === void 0 ? void 0 : infoState.text) && infoPopoverNode, tipNode]
36573
36596
  });
36574
36597
  var onFocusedChange = usePersistFn(function (focused) {
36575
36598
  setFocused(!!focused);
@@ -36585,7 +36608,7 @@ var useInputCommon = function useInputCommon(props0) {
36585
36608
  });
36586
36609
  return objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, rest), {}, {
36587
36610
  value: inputAbleProps.value,
36588
- className: classnames_default()(props.className, innerTitle && (inputStyle === null || inputStyle === void 0 ? void 0 : inputStyle.wrapperInnerTitle)),
36611
+ className: classnames_default()(props.className, innerTitle && (inputClasses === null || inputClasses === void 0 ? void 0 : inputClasses.wrapperInnerTitle)),
36589
36612
  onChange: inputAbleProps.onChange,
36590
36613
  onBlur: handleBlur
36591
36614
  }, clearProps), {}, {
@@ -36633,6 +36656,7 @@ var input_Input = function Input(props) {
36633
36656
  return /*#__PURE__*/(0,jsx_runtime.jsx)(simple_input, objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, forwardProps), inputFormatProps), {}, {
36634
36657
  value: (_inputFormatProps$val = inputFormatProps.value) !== null && _inputFormatProps$val !== void 0 ? _inputFormatProps$val : '',
36635
36658
  hasSuffix: !!props.suffix,
36659
+ showClear: props.showClear,
36636
36660
  onKeyDown: function onKeyDown(e) {
36637
36661
  var _props$onKeyDown;
36638
36662
  if (e.key === 'Enter' && !e.defaultPrevented) {
@@ -40160,7 +40184,7 @@ var CascaderNode = function CascaderNode(props) {
40160
40184
  className: styles.optionCheckbox,
40161
40185
  checked: datum.getChecked(id),
40162
40186
  disabled: isDisabled,
40163
- onChange: events.onClick === handleSelect ? undefined : handleChange
40187
+ onChange: isRealLeafNode && multiple ? undefined : handleChange
40164
40188
  }), renderContent(), renderIcon()]
40165
40189
  })
40166
40190
  }));
@@ -40644,7 +40668,7 @@ var Result = function Result(props) {
40644
40668
  var _props$onBlur, _inputRef$current$upd, _inputRef$current;
40645
40669
  e.stopPropagation();
40646
40670
  if (e.relatedTarget === context.inputRefs[1 - info.index]) return;
40647
- (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, e);
40671
+ (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, e, info.index);
40648
40672
  if (inputRef.current) (_inputRef$current$upd = (_inputRef$current = inputRef.current).updateValue) === null || _inputRef$current$upd === void 0 || _inputRef$current$upd.call(_inputRef$current);
40649
40673
  context.clickIndex = 0;
40650
40674
  },
@@ -41840,8 +41864,33 @@ var Cascader = function Cascader(props0) {
41840
41864
  var shouldFinal = getFinal();
41841
41865
  var renderItem = getRenderItem;
41842
41866
  var getRenderResult = function getRenderResult(data, index, nodes) {
41843
- if (!renderResultProp) return renderItem(data);
41844
- return typeof renderResultProp === 'function' ? renderResultProp(data, nodes) : data[renderResultProp];
41867
+ var _map, _datum$getPath$path, _datum$getPath;
41868
+ // 计算渲染项数组,包含父节点或不含
41869
+ var items = props.showParent ? [].concat(toConsumableArray_default()((_map = ((_datum$getPath$path = (_datum$getPath = datum.getPath(datum.getKey(data))) === null || _datum$getPath === void 0 ? void 0 : _datum$getPath.path) !== null && _datum$getPath$path !== void 0 ? _datum$getPath$path : []).map(function (p) {
41870
+ return datum.getDataByValues(p);
41871
+ })) !== null && _map !== void 0 ? _map : []), [data]) : [data];
41872
+
41873
+ // 根据 renderResultProp 不同类型,返回处理单个元素的函数
41874
+ var renderSingle = function renderSingle(d) {
41875
+ if (!renderResultProp) {
41876
+ return renderItem(d);
41877
+ }
41878
+ if (typeof renderResultProp === 'function') {
41879
+ return renderResultProp(d, nodes);
41880
+ }
41881
+ // renderResultProp 作为属性字符串提取对应字段
41882
+ return d === null || d === void 0 ? void 0 : d[renderResultProp];
41883
+ };
41884
+
41885
+ // 如果包含多个待渲染元素,拼接渲染结果并添加分隔符
41886
+ if (items.length > 1) {
41887
+ return items.map(function (d, i) {
41888
+ return i > 0 ? [' / ', renderSingle(d)] : renderSingle(d);
41889
+ });
41890
+ }
41891
+
41892
+ // 单一项直接渲染
41893
+ return renderSingle(items[0]);
41845
41894
  };
41846
41895
 
41847
41896
  // 点击结果框的处理方法
@@ -44777,8 +44826,18 @@ function isValid(date) {
44777
44826
  if (!(date instanceof Date)) return false;
44778
44827
  return dayjs_min_default()(date).isValid();
44779
44828
  }
44780
- function isValidString(date, fmt) {
44829
+
44830
+ /**
44831
+ * @param date 日期字符串
44832
+ * @param fmt 日期格式
44833
+ * @param isLoose 是否为宽松模式
44834
+ * @returns 是否为有效日期
44835
+ */
44836
+ function isValidString(date, fmt, isLoose) {
44781
44837
  if (!date) return false;
44838
+ if (isLoose) {
44839
+ return dayjs_min_default()(date).isValid();
44840
+ }
44782
44841
  return dayjs_min_default()(date, fmt, true).isValid();
44783
44842
  }
44784
44843
  function util_parse(d, fmt, options) {
@@ -45266,8 +45325,15 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
45266
45325
  }
45267
45326
  var formatValue = getFormatValueArr(dateArr);
45268
45327
  var v = range ? formatValue : formatValue[0];
45269
- if (!shallow_equal(v, value)) {
45270
- onChange === null || onChange === void 0 || onChange(v);
45328
+ if (Array.isArray(value) && value.length && Array.isArray(v) && v.length) {
45329
+ // 针对 range 的情况,['2025-01-01',''] ['2025-01-01',undefined] 无法通过 shallowEqual 出来,这边需要放行
45330
+ if (!shallowEqualExceptFalsely(v[0], value[0]) || !shallowEqualExceptFalsely(v[1], value[1])) {
45331
+ onChange === null || onChange === void 0 || onChange(v);
45332
+ }
45333
+ } else {
45334
+ if (!shallow_equal(v, value)) {
45335
+ onChange === null || onChange === void 0 || onChange(v);
45336
+ }
45271
45337
  }
45272
45338
  };
45273
45339
  var getDateArr = function getDateArr() {
@@ -45340,9 +45406,9 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
45340
45406
  }
45341
45407
  (_props$onClear = props.onClear) === null || _props$onClear === void 0 || _props$onClear.call(props);
45342
45408
  });
45343
- var handleInputChange = usePersistFn(function (str, index) {
45409
+ var handleInputChange = usePersistFn(function (str, index, isFromBlur) {
45344
45410
  // 比较 日期字符串是否符合format格式, 如果符合返回 true 否则返回 false
45345
- var isValid = util.isValidString(str, format);
45411
+ var isValid = util.isValidString(str, format, isFromBlur);
45346
45412
  if (!isValid) return;
45347
45413
  var date = util.toDateWithFormat(str, format, undefined, options);
45348
45414
  setInputArr(function (prev) {
@@ -45366,6 +45432,11 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
45366
45432
  return arr;
45367
45433
  });
45368
45434
  });
45435
+
45436
+ // 失焦时,需要宽松模式校验,eg: 2025-06-16 18:00 和 2025-06-16 18 都可以校验通过
45437
+ var handleInputBlur = usePersistFn(function (str, index) {
45438
+ handleInputChange(str, index, true);
45439
+ });
45369
45440
  var handleClearInputArr = usePersistFn(function (index) {
45370
45441
  if (index !== undefined) {
45371
45442
  setInputArr(function (prev) {
@@ -45409,6 +45480,7 @@ var useDatePickerFormat = function useDatePickerFormat(props) {
45409
45480
  handleClear: handleClear,
45410
45481
  handleClearInputArr: handleClearInputArr,
45411
45482
  handleInputChange: handleInputChange,
45483
+ handleInputBlur: handleInputBlur,
45412
45484
  registerModeDisabled: registerModeDisabled,
45413
45485
  setCurrentArrWithParams: setCurrentArrWithParams,
45414
45486
  isDisabledDate: isDisabledDate
@@ -45447,14 +45519,16 @@ var useDate = function useDate(props) {
45447
45519
  cachedDays: []
45448
45520
  }),
45449
45521
  context = _useRef.current;
45450
- var current = props.current === undefined ? currentState : props.current;
45522
+ var current = props.current === undefined || !props.current ? currentState : props.current;
45451
45523
  var setCurrent = function setCurrent(date) {
45452
45524
  var _props$onCurrentChang2;
45453
45525
  if (props.current !== undefined) {
45454
45526
  var _props$onCurrentChang;
45455
45527
  (_props$onCurrentChang = props.onCurrentChange) === null || _props$onCurrentChang === void 0 || _props$onCurrentChang.call(props, date);
45456
45528
  } else {
45457
- setCurrentState(date);
45529
+ if (date) {
45530
+ setCurrentState(date);
45531
+ }
45458
45532
  }
45459
45533
  (_props$onCurrentChang2 = props.onCurrentChange) === null || _props$onCurrentChang2 === void 0 || _props$onCurrentChang2.call(props, date);
45460
45534
  };
@@ -45529,9 +45603,15 @@ var useDate = function useDate(props) {
45529
45603
  var _props$onChange;
45530
45604
  if (isDisabled(date)) return;
45531
45605
  var newDate = getDateWithTime(date);
45532
- props === null || props === void 0 || props.onClearInputArr(position === 'start' ? 0 : 1);
45606
+ var index = position === 'start' ? 0 : 1;
45607
+ if (props.allowSingle && props.rangeDate && Array.isArray(props.rangeDate) && props.rangeDate[index] && util.clearHMS(newDate, options).getTime() === util.clearHMS(props.rangeDate[index], options).getTime()) {
45608
+ newDate = '';
45609
+ }
45610
+ props === null || props === void 0 || props.onClearInputArr(index);
45533
45611
  (_props$onChange = props.onChange) === null || _props$onChange === void 0 || _props$onChange.call(props, newDate, noClose);
45534
- setCurrent(newDate);
45612
+ if (newDate) {
45613
+ setCurrent(newDate);
45614
+ }
45535
45615
  };
45536
45616
  var getTimeStr = function getTimeStr() {
45537
45617
  var format = props.format,
@@ -46062,7 +46142,8 @@ var Time = function Time(props) {
46062
46142
 
46063
46143
  var Day = function Day(props) {
46064
46144
  var _jssStyle$datePicker;
46065
- var jssStyle = props.jssStyle;
46145
+ var jssStyle = props.jssStyle,
46146
+ allowSingle = props.allowSingle;
46066
46147
  var _useConfig = useConfig(),
46067
46148
  locale = _useConfig.locale,
46068
46149
  direction = _useConfig.direction;
@@ -46081,6 +46162,7 @@ var Day = function Day(props) {
46081
46162
  value: props.value,
46082
46163
  range: props.range,
46083
46164
  onChange: onChange,
46165
+ allowSingle: allowSingle,
46084
46166
  onClearInputArr: props.onClearInputArr,
46085
46167
  position: props.position,
46086
46168
  min: props.min,
@@ -47107,7 +47189,7 @@ var useRangePick = function useRangePick(props) {
47107
47189
  setDateArr(function (arr) {
47108
47190
  var newArr = toConsumableArray_default()(arr);
47109
47191
  newArr[index] = date;
47110
- if (range && index === 0 && newArr[1]) {
47192
+ if (date && range && index === 0 && newArr[1]) {
47111
47193
  if (typeof range === 'number') {
47112
47194
  var rangeMax = util.addSeconds(date, range, options);
47113
47195
  if (rangeMax.getTime() < newArr[1].getTime()) {
@@ -47136,7 +47218,7 @@ var useRangePick = function useRangePick(props) {
47136
47218
  var newArr = toConsumableArray_default()(arr);
47137
47219
  newArr[index] = date;
47138
47220
  var modeCache = context.modeCache;
47139
- if (modeCache[0] === modeCache[1]) {
47221
+ if (date && modeCache[0] === modeCache[1]) {
47140
47222
  var mode = modeCache[0];
47141
47223
  if (range && index === 0 && newArr[1]) {
47142
47224
  if (mode === 'year') {
@@ -47381,6 +47463,7 @@ var Picker = function Picker(props) {
47381
47463
  format: props.format,
47382
47464
  disabled: position === 'end' ? func.endDisabled : func.startDisabled,
47383
47465
  rangeDate: dateArr,
47466
+ allowSingle: props.allowSingle,
47384
47467
  min: position === 'end' ? endMin : startMin,
47385
47468
  staticMin: position === 'end' ? endMin : staticStartMin,
47386
47469
  max: position === 'end' ? endMax : startMax,
@@ -47663,11 +47746,14 @@ var DatePicker = function DatePicker(props0) {
47663
47746
  setFocused(true);
47664
47747
  (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, e);
47665
47748
  });
47666
- var handleBlur = usePersistFn(function (e) {
47749
+ var handleBlur = usePersistFn(function (e, index) {
47667
47750
  var _props$onBlur;
47668
47751
  setFocused(false);
47669
- (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, e);
47752
+ (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, e, index);
47670
47753
  if (props.needConfirm) return;
47754
+ if (props.inputable && index !== undefined) {
47755
+ func.handleInputBlur(e.target.value, index);
47756
+ }
47671
47757
 
47672
47758
  // 当输入框有值时,失焦时需要立即触发 onChange,否则触控板的轻触模拟出来的click事件就获取不到最新的值
47673
47759
  if (inputArr.some(function (d) {
@@ -47786,6 +47872,7 @@ var DatePicker = function DatePicker(props0) {
47786
47872
  type: type,
47787
47873
  options: options,
47788
47874
  disabled: disabled,
47875
+ allowSingle: props.allowSingle,
47789
47876
  jssStyle: jssStyle,
47790
47877
  closePop: handleClose,
47791
47878
  defaultTime: props.defaultTime,
@@ -49683,7 +49770,8 @@ var textarea_Textarea = function Textarea(props0) {
49683
49770
  style: {
49684
49771
  width: 'auto',
49685
49772
  fontSize: 12
49686
- }
49773
+ },
49774
+ adjust: true
49687
49775
  }, resetProps.popoverProps),
49688
49776
  error: infoState !== null && infoState !== void 0 && infoState.error && (infoState === null || infoState === void 0 ? void 0 : infoState.error) instanceof Error ? infoState === null || infoState === void 0 || (_infoState$error = infoState.error) === null || _infoState$error === void 0 ? void 0 : _infoState$error.message : undefined,
49689
49777
  tip: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
@@ -50281,6 +50369,7 @@ function use_previous_usePrevious(value) {
50281
50369
 
50282
50370
 
50283
50371
  var globalKey = '__global__&&@@';
50372
+ var SUBMIT_TIMEOUT = 10;
50284
50373
 
50285
50374
 
50286
50375
  var emptyObj = {};
@@ -50486,7 +50575,7 @@ var useForm = function useForm(props) {
50486
50575
  docScroll.top -= scrollToError;
50487
50576
  }
50488
50577
  }
50489
- });
50578
+ }, SUBMIT_TIMEOUT + 10);
50490
50579
  };
50491
50580
  var onChange = use_persist_fn(function (change) {
50492
50581
  var _props$onChange;
@@ -50687,7 +50776,7 @@ var useForm = function useForm(props) {
50687
50776
  var _other$onSubmit;
50688
50777
  submit();
50689
50778
  other === null || other === void 0 || (_other$onSubmit = other.onSubmit) === null || _other$onSubmit === void 0 || _other$onSubmit.call(other, e);
50690
- }, 10);
50779
+ }, SUBMIT_TIMEOUT);
50691
50780
  };
50692
50781
  };
50693
50782
  var validateFieldset = function validateFieldset(name, config) {
@@ -53422,7 +53511,8 @@ var Password = function Password(props) {
53422
53511
  return /*#__PURE__*/(0,jsx_runtime.jsx)(simple_input, objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, forwardProps), inputProps), {}, {
53423
53512
  className: props.className,
53424
53513
  suffix: suffix,
53425
- hasSuffix: true
53514
+ hasSuffix: true,
53515
+ showClear: props.showClear
53426
53516
  }));
53427
53517
  };
53428
53518
  /* harmony default export */ var input_password = (/*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_default().memo(Password));
@@ -66770,7 +66860,7 @@ var TransferList = function TransferList(props) {
66770
66860
  className: styles.inputWrapper,
66771
66861
  children: /*#__PURE__*/(0,jsx_runtime.jsx)(base_src_input_input, {
66772
66862
  className: styles.input,
66773
- clearable: true,
66863
+ showClear: true,
66774
66864
  jssStyle: jssStyle,
66775
66865
  value: filterText,
66776
66866
  suffix: icons_config.transfer.Search,
@@ -71625,7 +71715,7 @@ var upload_interface = __webpack_require__(8821);
71625
71715
 
71626
71716
 
71627
71717
  /* harmony default export */ var src_0 = ({
71628
- version: '3.8.0-beta.5'
71718
+ version: '3.8.0-beta.8'
71629
71719
  });
71630
71720
  }();
71631
71721
  /******/ return __webpack_exports__;