shineout 3.6.7-beta.5 → 3.6.7-beta.7

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.
@@ -4,8 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _react = require("react");
7
8
  var _base = require("@sheinx/base");
8
9
  var _shineoutStyle = require("@sheinx/shineout-style");
10
+ var _hooks = require("@sheinx/hooks");
9
11
  var _useFieldCommon = _interopRequireDefault(require("../hooks/use-field-common"));
10
12
  var _jsxRuntime = require("react/jsx-runtime");
11
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -28,5 +30,30 @@ var BaseDatePicker = function BaseDatePicker(props) {
28
30
  }, props));
29
31
  };
30
32
  var _default = exports.default = function _default(props) {
31
- return (0, _useFieldCommon.default)(props, BaseDatePicker);
33
+ var _useConfig = (0, _base.useConfig)(),
34
+ locale = _useConfig.locale;
35
+
36
+ // datepicker 默认值需要提格式化前处理,否则内部会根据 format 进行格式化并再次触发 onChange,参考 v1 v2 的 value hoc 行为
37
+ var defaultValue = (0, _react.useMemo)(function () {
38
+ if (props.defaultValue) {
39
+ var options = {
40
+ timeZone: props.timeZone,
41
+ weekStartsOn: Number((0, _base.getLocale)(locale, 'startOfWeek'))
42
+ };
43
+ var type = props.type || 'date';
44
+ var format = (0, _hooks.getFormat)(props.format, type);
45
+ var dateArr = (0, _hooks.convertValueToDateArr)(props.defaultValue, format, options);
46
+ var formattedDefaultValue = (0, _hooks.getFormatValueArr)({
47
+ dateArr: dateArr,
48
+ format: format,
49
+ type: type,
50
+ options: options
51
+ });
52
+ return props.range ? formattedDefaultValue : formattedDefaultValue[0];
53
+ }
54
+ return props.defaultValue;
55
+ }, []);
56
+ return (0, _useFieldCommon.default)(_objectSpread(_objectSpread({}, props), {}, {
57
+ defaultValue: defaultValue
58
+ }), BaseDatePicker);
32
59
  };
package/cjs/index.js CHANGED
@@ -514,5 +514,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
514
514
  // 此文件由脚本自动生成,请勿直接修改。
515
515
  // This file was generated automatically by a script. Please do not modify it directly.
516
516
  var _default = exports.default = {
517
- version: '3.6.7-beta.5'
517
+ version: '3.6.7-beta.7'
518
518
  };
package/dist/shineout.js CHANGED
@@ -12217,7 +12217,7 @@ var handleStyle = function handleStyle(style) {
12217
12217
  };
12218
12218
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12219
12219
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12220
- /* harmony default export */ var version = ('3.6.7-beta.5');
12220
+ /* harmony default export */ var version = ('3.6.7-beta.7');
12221
12221
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12222
12222
 
12223
12223
 
@@ -44348,6 +44348,18 @@ var getDefaultMode = function getDefaultMode(type) {
44348
44348
  var mode = getTypeMode(type);
44349
44349
  return [mode, mode];
44350
44350
  };
44351
+ var getFormatValueArr = function getFormatValueArr(opts) {
44352
+ var dateArr = opts.dateArr,
44353
+ format = opts.format,
44354
+ clearWithUndefined = opts.clearWithUndefined,
44355
+ options = opts.options,
44356
+ type = opts.type;
44357
+ var fmt = use_datepicker_format_getFormat(format, type);
44358
+ return dateArr.map(function (item) {
44359
+ if (!item) return clearWithUndefined ? undefined : '';
44360
+ return util.format(item, fmt, options);
44361
+ });
44362
+ };
44351
44363
  var useDatePickerFormat = function useDatePickerFormat(props) {
44352
44364
  var value = props.value,
44353
44365
  onChange = props.onChange,
@@ -47067,6 +47079,8 @@ var DatePicker = function DatePicker(props0) {
47067
47079
 
47068
47080
 
47069
47081
 
47082
+
47083
+
47070
47084
  var date_picker_jssStyle = {
47071
47085
  datePicker: useDatePickerStyle,
47072
47086
  button: useButtonStyle,
@@ -47080,7 +47094,32 @@ var BaseDatePicker = function BaseDatePicker(props) {
47080
47094
  }, props));
47081
47095
  };
47082
47096
  /* harmony default export */ var src_date_picker_date_picker_0 = (function (props) {
47083
- return use_field_common(props, BaseDatePicker);
47097
+ var _useConfig = useConfig(),
47098
+ locale = _useConfig.locale;
47099
+
47100
+ // datepicker 默认值需要提格式化前处理,否则内部会根据 format 进行格式化并再次触发 onChange,参考 v1 v2 的 value hoc 行为
47101
+ var defaultValue = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
47102
+ if (props.defaultValue) {
47103
+ var options = {
47104
+ timeZone: props.timeZone,
47105
+ weekStartsOn: Number(getLocale(locale, 'startOfWeek'))
47106
+ };
47107
+ var type = props.type || 'date';
47108
+ var format = use_datepicker_format_getFormat(props.format, type);
47109
+ var dateArr = convertValueToDateArr(props.defaultValue, format, options);
47110
+ var formattedDefaultValue = getFormatValueArr({
47111
+ dateArr: dateArr,
47112
+ format: format,
47113
+ type: type,
47114
+ options: options
47115
+ });
47116
+ return props.range ? formattedDefaultValue : formattedDefaultValue[0];
47117
+ }
47118
+ return props.defaultValue;
47119
+ }, []);
47120
+ return use_field_common(objectSpread2_default()(objectSpread2_default()({}, props), {}, {
47121
+ defaultValue: defaultValue
47122
+ }), BaseDatePicker);
47084
47123
  });
47085
47124
  ;// CONCATENATED MODULE: ./src/date-picker/index.ts
47086
47125
 
@@ -49533,7 +49572,8 @@ var useForm = function useForm(props) {
49533
49572
  resetTime: 0,
49534
49573
  mounted: false,
49535
49574
  unmounted: false,
49536
- removeLock: false
49575
+ removeLock: false,
49576
+ settingMap: {}
49537
49577
  }),
49538
49578
  context = _React$useRef.current;
49539
49579
  var update = function update(name) {
@@ -49770,6 +49810,8 @@ var useForm = function useForm(props) {
49770
49810
  // upload组件返回的可能是函数: (prev) => [...prev, file]
49771
49811
  var valueOfKey = typeof vals[key] === 'function' ? vals[key](getValue(key)) : vals[key];
49772
49812
  deepSet(draft, key, valueOfKey, deepSetOptions);
49813
+ // 设置 settingMap 用于标记该字段正在被设置值
49814
+ context.settingMap[key] = true;
49773
49815
  });
49774
49816
  values.forEach(function (key) {
49775
49817
  if (option.validate) {
@@ -49780,6 +49822,13 @@ var useForm = function useForm(props) {
49780
49822
  });
49781
49823
  }
49782
49824
  });
49825
+
49826
+ // 设置 settingMap 的值为 false,表示该字段设置值完成
49827
+ setTimeout(function () {
49828
+ values.forEach(function (key) {
49829
+ delete context.settingMap[key];
49830
+ });
49831
+ });
49783
49832
  });
49784
49833
 
49785
49834
  // 获取vals的所有key,包括嵌套对象的key
@@ -49960,11 +50009,18 @@ var useForm = function useForm(props) {
49960
50009
  context.updateMap[n].add(updateFn);
49961
50010
  var shouldTriggerResetChange = context.removeArr.has(n);
49962
50011
  context.removeArr.delete(n);
49963
- var shouldTriggerDefaultChange = df !== undefined && deepGet(context.value, n) === undefined;
50012
+ var currentValue = deepGet(context.value, n);
50013
+ var shouldTriggerDefaultChange = df !== undefined && currentValue === undefined;
49964
50014
  if (shouldTriggerDefaultChange || shouldTriggerResetChange) {
49965
50015
  if (!context.mounted) context.defaultValues[n] = df;
50016
+ var _defaultValue = df;
50017
+
50018
+ // 如果组件是重新 bind ,比如更改了 key 或者通过三元表达式切换了组件但 name 都是相同的情况下,在切换过程中改了 value 的值(比如通过 datum.set),需要阻止 defaultValue 的上位,按照当前的 value 来设置 defaultValue
50019
+ if (shouldTriggerResetChange && context.settingMap[n]) {
50020
+ _defaultValue = currentValue !== undefined ? currentValue : df;
50021
+ }
49966
50022
  onChange(function (v) {
49967
- deepSet(v, n, df, deepSetOptions);
50023
+ deepSet(v, n, _defaultValue, deepSetOptions);
49968
50024
  });
49969
50025
  update(n);
49970
50026
  }
@@ -70121,7 +70177,7 @@ var upload_interface = __webpack_require__(8821);
70121
70177
 
70122
70178
 
70123
70179
  /* harmony default export */ var src_0 = ({
70124
- version: '3.6.7-beta.5'
70180
+ version: '3.6.7-beta.7'
70125
70181
  });
70126
70182
  }();
70127
70183
  /******/ return __webpack_exports__;