shineout 3.6.5-beta.1 → 3.6.5-beta.11

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
@@ -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.5-beta.1'
517
+ version: '3.6.5-beta.11'
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.5-beta.1');
12220
+ /* harmony default export */ var version = ('3.6.5-beta.11');
12221
12221
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12222
12222
 
12223
12223
 
@@ -19757,9 +19757,14 @@ var ImageStyle = objectSpread2_default()(objectSpread2_default()({
19757
19757
  },
19758
19758
  fill: {
19759
19759
  '& $inner': {
19760
- backgroundSize: 'cover',
19761
- backgroundPosition: '50% 50%',
19762
- backgroundRepeat: 'no-repeat'
19760
+ '& > img': {
19761
+ position: 'absolute',
19762
+ top: '50%',
19763
+ left: '50%',
19764
+ transform: 'translate(-50%, -50%)',
19765
+ maxWidth: 'none',
19766
+ maxHeight: 'none'
19767
+ }
19763
19768
  }
19764
19769
  },
19765
19770
  previewMask: {
@@ -49442,7 +49447,8 @@ var useForm = function useForm(props) {
49442
49447
  size = props.size,
49443
49448
  colon = props.colon,
49444
49449
  formName = props.name,
49445
- scrollParent = props.scrollParent;
49450
+ scrollParent = props.scrollParent,
49451
+ isControl = props.isControl;
49446
49452
  var deepSetOptions = {
49447
49453
  removeUndefined: removeUndefined,
49448
49454
  forceSet: true
@@ -49698,13 +49704,16 @@ var useForm = function useForm(props) {
49698
49704
  var values = Object.keys(vals);
49699
49705
  // 针对 name 为数组模式,如 datepicker 的 name={['startTime', 'endTime']} 时,前者校验可能需要依赖后者,因此需要提前将后者数据整合至 draft 用于多字段整合校验
49700
49706
  values.forEach(function (key) {
49701
- deepSet(draft, key, vals[key], deepSetOptions);
49707
+ // upload组件返回的可能是函数: (prev) => [...prev, file]
49708
+ var valueOfKey = typeof vals[key] === 'function' ? vals[key](getValue(key)) : vals[key];
49709
+ deepSet(draft, key, valueOfKey, deepSetOptions);
49702
49710
  });
49703
49711
  values.forEach(function (key) {
49704
49712
  if (option.validate) {
49705
49713
  var _context$validateMap$;
49706
49714
  (_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
49707
- validate(key, vals[key], current(draft));
49715
+ var valueOfKey = typeof vals[key] === 'function' ? vals[key](getValue(key)) : vals[key];
49716
+ validate(key, valueOfKey, current(draft));
49708
49717
  });
49709
49718
  }
49710
49719
  });
@@ -50002,7 +50011,10 @@ var useForm = function useForm(props) {
50002
50011
  external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect(function () {
50003
50012
  context.removeLock = false;
50004
50013
  // 内部 onChange 改的 value, 不需要更新
50005
- if (props.value === context.value) return;
50014
+ if (props.value === context.value) {
50015
+ if (!isControl) update();
50016
+ return;
50017
+ }
50006
50018
  if (initValidate && !context.resetTime) {
50007
50019
  var keys = Object.keys(context.validateMap).filter(function (key) {
50008
50020
  var oldValue = deepGet(preValue || emptyObj, key);
@@ -50072,11 +50084,12 @@ var Form = function Form(props) {
50072
50084
  rest = objectWithoutProperties_default()(props, form_excluded);
50073
50085
  var formClasses = jssStyle === null || jssStyle === void 0 || (_jssStyle$form = jssStyle.form) === null || _jssStyle$form === void 0 ? void 0 : _jssStyle$form.call(jssStyle);
50074
50086
  var modalFormContext = useFormFooter();
50087
+ var isControl = ('value' in props);
50075
50088
  var inputAbleParams = {
50076
50089
  value: props.value,
50077
50090
  onChange: props.onChange,
50078
50091
  defaultValue: props.defaultValue,
50079
- control: 'value' in props,
50092
+ control: isControl,
50080
50093
  beforeChange: undefined,
50081
50094
  reserveAble: false
50082
50095
  };
@@ -50087,7 +50100,8 @@ var Form = function Form(props) {
50087
50100
  var _useForm = use_form(objectSpread2_default()(objectSpread2_default()({}, rest), {}, {
50088
50101
  value: value,
50089
50102
  onChange: onChange,
50090
- formElRef: formElRef
50103
+ formElRef: formElRef,
50104
+ isControl: isControl
50091
50105
  })),
50092
50106
  Provider = _useForm.Provider,
50093
50107
  ProviderProps = _useForm.ProviderProps,
@@ -51220,6 +51234,10 @@ var useImage = function useImage() {
51220
51234
  _React$useState2 = slicedToArray_default()(_React$useState, 2),
51221
51235
  status = _React$useState2[0],
51222
51236
  setStatus = _React$useState2[1];
51237
+ var _React$useState3 = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useState({}),
51238
+ _React$useState4 = slicedToArray_default()(_React$useState3, 2),
51239
+ imgCoverStyle = _React$useState4[0],
51240
+ setImgCoverStyle = _React$useState4[1];
51223
51241
  var elementRef = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(null);
51224
51242
  var getUrl = function getUrl(url) {
51225
51243
  var auto = 'autoSSL' in props ? autoSSL : use_image_config.autoSSL;
@@ -51254,6 +51272,35 @@ var useImage = function useImage() {
51254
51272
  };
51255
51273
  img.src = getUrl(alt);
51256
51274
  };
51275
+ var handleCoverStyle = function handleCoverStyle(img) {
51276
+ var container = elementRef === null || elementRef === void 0 ? void 0 : elementRef.current;
51277
+ if (!container) return;
51278
+
51279
+ // 根据容器的宽高获取宽高比
51280
+ var containerWidth = container.clientWidth;
51281
+ var containerHeight = container.clientHeight;
51282
+ var containerRatio = containerWidth / containerHeight;
51283
+
51284
+ // 根据图片的自然尺寸获取宽高比
51285
+ var imageWidth = img.naturalWidth;
51286
+ var imageHeight = img.naturalHeight;
51287
+ var imageRatio = imageWidth / imageHeight;
51288
+
51289
+ // 判断宽高比,决定图片填充策略
51290
+ if (imageRatio > containerRatio) {
51291
+ // 图片更宽,宽度占满容器,高度自适应
51292
+ setImgCoverStyle({
51293
+ height: '100%',
51294
+ width: 'auto'
51295
+ });
51296
+ } else {
51297
+ // 图片更高,填满容器高度
51298
+ setImgCoverStyle({
51299
+ width: '100%',
51300
+ height: 'auto'
51301
+ });
51302
+ }
51303
+ };
51257
51304
  var markToRender = function markToRender() {
51258
51305
  if (!src) {
51259
51306
  handleAlt();
@@ -51261,7 +51308,10 @@ var useImage = function useImage() {
51261
51308
  }
51262
51309
  var img = new window.Image();
51263
51310
  img.onload = function () {
51264
- return setStatus(SRC);
51311
+ setStatus(SRC);
51312
+ if (props.fit === 'fill') {
51313
+ handleCoverStyle(img);
51314
+ }
51265
51315
  };
51266
51316
  img.onerror = function (e) {
51267
51317
  return handleError(SRC, e);
@@ -51290,7 +51340,9 @@ var useImage = function useImage() {
51290
51340
  alt: alt,
51291
51341
  draggable: !noImgDrag
51292
51342
  });
51293
- return objectSpread2_default()({}, mergedEventHandlers);
51343
+ return objectSpread2_default()({
51344
+ style: imgCoverStyle
51345
+ }, mergedEventHandlers);
51294
51346
  };
51295
51347
  var getImageDivProps = function getImageDivProps() {
51296
51348
  var externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -52058,7 +52110,8 @@ var Image = function Image(props) {
52058
52110
  href: href,
52059
52111
  lazy: lazy,
52060
52112
  autoSSL: autoSSL,
52061
- noImgDrag: noImgDrag
52113
+ noImgDrag: noImgDrag,
52114
+ fit: fit
52062
52115
  }, rest)),
52063
52116
  status = _useImage.status,
52064
52117
  getRootProps = _useImage.getRootProps,
@@ -52137,7 +52190,7 @@ var Image = function Image(props) {
52137
52190
 
52138
52191
  // 渲染 img / div 类型的内部标签
52139
52192
  var renderInner = function renderInner(src) {
52140
- return fit === 'fill' || fit === 'fit' ? renderDivInnerEl(src) : renderImgeInnerEl(src);
52193
+ return fit === 'fit' ? renderDivInnerEl(src) : renderImgeInnerEl(src);
52141
52194
  };
52142
52195
 
52143
52196
  // 默认占位图
@@ -65388,6 +65441,7 @@ var TransferOperate = function TransferOperate(props) {
65388
65441
 
65389
65442
 
65390
65443
 
65444
+
65391
65445
  var Transfer = function Transfer(props) {
65392
65446
  var _jssStyle$transfer;
65393
65447
  var jssStyle = props.jssStyle,
@@ -65462,7 +65516,7 @@ var Transfer = function Transfer(props) {
65462
65516
  sourceSelectedKeys = _useTransfer.sourceSelectedKeys,
65463
65517
  targetSelectedKeys = _useTransfer.targetSelectedKeys,
65464
65518
  onFilter = _useTransfer.onFilter,
65465
- onSelectChange = _useTransfer.onSelectChange;
65519
+ _onSelectChange = _useTransfer.onSelectChange;
65466
65520
  var styles = (jssStyle === null || jssStyle === void 0 || (_jssStyle$transfer = jssStyle.transfer) === null || _jssStyle$transfer === void 0 ? void 0 : _jssStyle$transfer.call(jssStyle)) || {};
65467
65521
  var rootClass = classnames_default()(styles.rootClass, styles.transfer, className, defineProperty_default()(defineProperty_default()(defineProperty_default()(defineProperty_default()({}, styles.simple, simple), styles.small, size === 'small'), styles.large, size === 'large'), styles.equalPanelWidth, equalPanelWidth));
65468
65522
  var renderOperations = function renderOperations() {
@@ -65536,7 +65590,15 @@ var Transfer = function Transfer(props) {
65536
65590
  searchPlaceholder: placeholder,
65537
65591
  renderFilter: renderFilter,
65538
65592
  onFilter: onFilterProp ? onFilter : undefined,
65539
- onSelectChange: onSelectChange
65593
+ onSelectChange: function onSelectChange(keys) {
65594
+ if (isSource) {
65595
+ var newAllKeys = Array.from(new Set([].concat(toConsumableArray_default()(keys), toConsumableArray_default()(targetSelectedKeys || []))));
65596
+ _onSelectChange(newAllKeys, keys, targetSelectedKeys);
65597
+ } else {
65598
+ var _newAllKeys = Array.from(new Set([].concat(toConsumableArray_default()(keys), toConsumableArray_default()(sourceSelectedKeys || []))));
65599
+ _onSelectChange(_newAllKeys, sourceSelectedKeys, keys);
65600
+ }
65601
+ }
65540
65602
  });
65541
65603
  };
65542
65604
  var renderSourceList = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useMemo)(function () {
@@ -66440,6 +66502,7 @@ function attrAccept(file, acceptedFiles) {
66440
66502
 
66441
66503
 
66442
66504
 
66505
+
66443
66506
  var VALIDATORITEMS = [{
66444
66507
  key: 'size',
66445
66508
  param: function param(blob) {
@@ -66473,11 +66536,12 @@ var promised = function promised(action) {
66473
66536
  resolve(true);
66474
66537
  });
66475
66538
  };
66539
+ var defaultValue = [];
66476
66540
  var useUpload = function useUpload(props) {
66477
66541
  var _props$limit = props.limit,
66478
66542
  limit = _props$limit === void 0 ? 100 : _props$limit,
66479
66543
  _props$value = props.value,
66480
- value = _props$value === void 0 ? [] : _props$value;
66544
+ value = _props$value === void 0 ? defaultValue : _props$value;
66481
66545
  var accept = props.forceAccept || props.accept;
66482
66546
  var forceAccept = !!props.forceAccept;
66483
66547
  var _useState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)({}),
@@ -66597,21 +66661,22 @@ var useUpload = function useUpload(props) {
66597
66661
  responseType: props.responseType,
66598
66662
  onStart: props.onStart,
66599
66663
  onProgress: function onProgress(e, msg) {
66600
- if (throttle) return;
66664
+ var percent = typeof e.percent === 'number' ? e.percent : e.loaded / e.total * 100;
66665
+ if (throttle && percent !== 100) return;
66601
66666
  throttle = true;
66602
66667
  setTimeout(function () {
66603
66668
  throttle = false;
66604
66669
  }, 16);
66605
- var percent = typeof e.percent === 'number' ? e.percent : e.loaded / e.total * 100;
66606
- var filesState = latestState.filesState;
66607
- var newFiles = objectSpread2_default()({}, filesState);
66608
- if (!newFiles[id]) return;
66609
- newFiles[id].process = percent;
66610
- if (msg) newFiles[id].message = msg;
66611
- setFiles(newFiles);
66612
- if (typeof props.onProgress === 'function') {
66613
- props.onProgress(newFiles[id]);
66614
- }
66670
+ setFiles(function (files) {
66671
+ return utils_immer_produce(files, function (draft) {
66672
+ if (!draft[id]) return draft;
66673
+ draft[id].process = percent;
66674
+ if (msg) draft[id].message = msg;
66675
+ if (typeof props.onProgress === 'function') {
66676
+ props.onProgress(draft[id]);
66677
+ }
66678
+ });
66679
+ });
66615
66680
  },
66616
66681
  onLoad: function onLoad(xhr) {
66617
66682
  if (!/^2|1223/.test("".concat(xhr.status))) {
@@ -66639,11 +66704,17 @@ var useUpload = function useUpload(props) {
66639
66704
  delete draft[id];
66640
66705
  });
66641
66706
  });
66642
- // add value
66643
- var values = utils_immer_produce(latestState.value, function (draft) {
66644
- draft.push(result);
66645
- });
66646
- props.onChange(values);
66707
+ if (props.functionalOnChange) {
66708
+ // 回调型 setState不会丢值
66709
+ props.onChange(function (prev) {
66710
+ return [].concat(toConsumableArray_default()(prev || []), [result]);
66711
+ });
66712
+ } else {
66713
+ var latestValue = latestState.value;
66714
+ var newValue = toConsumableArray_default()(latestValue);
66715
+ newValue.push(result);
66716
+ props.onChange(newValue);
66717
+ }
66647
66718
  }
66648
66719
  },
66649
66720
  onError: function onError(xhr) {
@@ -66761,48 +66832,60 @@ var useUpload = function useUpload(props) {
66761
66832
  error = _context2.sent;
66762
66833
  case 21:
66763
66834
  if (!(error instanceof Error)) {
66764
- _context2.next = 30;
66835
+ _context2.next = 29;
66765
66836
  break;
66766
66837
  }
66767
66838
  if (validatorHandle(error, blob)) {
66768
- _context2.next = 26;
66839
+ _context2.next = 25;
66769
66840
  break;
66770
66841
  }
66771
- delete newFiles[id];
66772
- setFiles(objectSpread2_default()({}, newFiles));
66842
+ setFiles(function (prev) {
66843
+ return utils_immer_produce(prev, function (draft) {
66844
+ delete draft[id];
66845
+ });
66846
+ });
66773
66847
  return _context2.abrupt("return", 0);
66774
- case 26:
66848
+ case 25:
66775
66849
  fileRecord.message = error.message;
66776
66850
  fileRecord.status = 3;
66777
- setFiles(objectSpread2_default()({}, newFiles));
66851
+ setFiles(function (prev) {
66852
+ return objectSpread2_default()(objectSpread2_default()({}, prev), {}, defineProperty_default()({}, id, fileRecord));
66853
+ });
66778
66854
  return _context2.abrupt("return", 0);
66779
- case 30:
66855
+ case 29:
66780
66856
  if (!props.beforeUpload) {
66781
- _context2.next = 37;
66857
+ _context2.next = 36;
66782
66858
  break;
66783
66859
  }
66784
66860
  beforeUploadResult = props.beforeUpload(blob); // @ts-ignoreq
66785
66861
  if (!(beforeUploadResult && beforeUploadResult.then)) {
66786
- _context2.next = 35;
66862
+ _context2.next = 34;
66787
66863
  break;
66788
66864
  }
66789
66865
  props.beforeUpload(blob).then(function (args) {
66790
66866
  if (args.status !== 'error') {
66791
66867
  newFiles[id].xhr = uploadFile(id, blob, fileRecord.src);
66792
- setFiles(objectSpread2_default()({}, newFiles));
66868
+ setFiles(function (prev) {
66869
+ return objectSpread2_default()(objectSpread2_default()({}, prev), {}, defineProperty_default()({}, id, fileRecord));
66870
+ });
66793
66871
  }
66794
66872
  }).catch(function () {
66795
- delete newFiles[id];
66796
- setFiles(objectSpread2_default()({}, newFiles));
66873
+ setFiles(function (prev) {
66874
+ return utils_immer_produce(prev, function (draft) {
66875
+ delete draft[id];
66876
+ });
66877
+ });
66797
66878
  });
66798
66879
  return _context2.abrupt("return", 0);
66799
- case 35:
66800
- _context2.next = 39;
66880
+ case 34:
66881
+ _context2.next = 38;
66801
66882
  break;
66802
- case 37:
66883
+ case 36:
66803
66884
  fileRecord.xhr = uploadFile(id, blob, fileRecord.src);
66804
- setFiles(objectSpread2_default()({}, newFiles));
66805
- case 39:
66885
+ setFiles(function (prev) {
66886
+ return objectSpread2_default()(objectSpread2_default()({}, prev), {}, defineProperty_default()({}, id, fileRecord));
66887
+ });
66888
+ case 38:
66806
66889
  case "end":
66807
66890
  return _context2.stop();
66808
66891
  }
@@ -67200,7 +67283,8 @@ var Upload = function Upload(props0) {
67200
67283
  invalidImage: getLocale(locale, 'invalidImage')
67201
67284
  },
67202
67285
  value: value,
67203
- onChange: onChange
67286
+ onChange: onChange,
67287
+ functionalOnChange: props.functionalOnChange
67204
67288
  })),
67205
67289
  func = _useUpload.func,
67206
67290
  files = _useUpload.files,
@@ -69984,7 +70068,7 @@ var upload_interface = __webpack_require__(8821);
69984
70068
 
69985
70069
 
69986
70070
  /* harmony default export */ var src_0 = ({
69987
- version: '3.6.5-beta.1'
70071
+ version: '3.6.5-beta.11'
69988
70072
  });
69989
70073
  }();
69990
70074
  /******/ return __webpack_exports__;