shineout 3.6.4 → 3.6.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
@@ -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.4'
517
+ version: '3.6.5-beta.10'
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.4');
12220
+ /* harmony default export */ var version = ('3.6.5-beta.10');
12221
12221
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12222
12222
 
12223
12223
 
@@ -17622,8 +17622,7 @@ var cascaderStyle = objectSpread2_default()(objectSpread2_default()({
17622
17622
  visibility: 'hidden'
17623
17623
  },
17624
17624
  moreWrapper: {
17625
- // width: 248,
17626
- // height: 72,
17625
+ width: 'max-content',
17627
17626
  maxWidth: 400,
17628
17627
  maxHeight: 160,
17629
17628
  overflow: 'auto',
@@ -19758,9 +19757,14 @@ var ImageStyle = objectSpread2_default()(objectSpread2_default()({
19758
19757
  },
19759
19758
  fill: {
19760
19759
  '& $inner': {
19761
- backgroundSize: 'cover',
19762
- backgroundPosition: '50% 50%',
19763
- 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
+ }
19764
19768
  }
19765
19769
  },
19766
19770
  previewMask: {
@@ -23430,6 +23434,7 @@ var selectStyle = objectSpread2_default()(objectSpread2_default()({
23430
23434
  visibility: 'hidden'
23431
23435
  },
23432
23436
  moreWrapper: {
23437
+ width: 'max-content',
23433
23438
  maxWidth: 400,
23434
23439
  maxHeight: 160,
23435
23440
  overflow: 'auto',
@@ -28659,6 +28664,7 @@ var treeSelectStyle = objectSpread2_default()(objectSpread2_default()({
28659
28664
  visibility: 'hidden'
28660
28665
  },
28661
28666
  moreWrapper: {
28667
+ width: 'max-content',
28662
28668
  maxWidth: 400,
28663
28669
  maxHeight: 160,
28664
28670
  overflow: 'auto',
@@ -40441,6 +40447,10 @@ var More = function More(props) {
40441
40447
  className: compressedClassName,
40442
40448
  visible: visible,
40443
40449
  onVisibleChange: setVisible,
40450
+ getPopupContainer: function getPopupContainer() {
40451
+ var _props$morePopoverCon;
40452
+ return (_props$morePopoverCon = props.morePopoverContainer) === null || _props$morePopoverCon === void 0 ? void 0 : _props$morePopoverCon.current;
40453
+ },
40444
40454
  children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
40445
40455
  className: styles.moreWrapper,
40446
40456
  onClick: function onClick(e) {
@@ -40735,7 +40745,8 @@ var result_Result = function Result(props) {
40735
40745
  compressed: compressed,
40736
40746
  renderCompressed: renderCompressed,
40737
40747
  compressedClassName: compressedClassName,
40738
- showNum: moreNumber
40748
+ showNum: moreNumber,
40749
+ morePopoverContainer: props.morePopoverContainer
40739
40750
  }, 'more');
40740
40751
  var renderResult = function renderResult() {
40741
40752
  if (empty) {
@@ -41289,7 +41300,8 @@ var Cascader = function Cascader(props0) {
41289
41300
  onResultItemClick: handleResultItemClick,
41290
41301
  checkUnMatched: checkUnMatched,
41291
41302
  getDataByValues: getDataByValues,
41292
- setInputText: setInputText
41303
+ setInputText: setInputText,
41304
+ morePopoverContainer: targetRef
41293
41305
  })
41294
41306
  });
41295
41307
  return /*#__PURE__*/(0,jsx_runtime.jsx)(PopupProvider, {
@@ -49435,7 +49447,8 @@ var useForm = function useForm(props) {
49435
49447
  size = props.size,
49436
49448
  colon = props.colon,
49437
49449
  formName = props.name,
49438
- scrollParent = props.scrollParent;
49450
+ scrollParent = props.scrollParent,
49451
+ isControl = props.isControl;
49439
49452
  var deepSetOptions = {
49440
49453
  removeUndefined: removeUndefined,
49441
49454
  forceSet: true
@@ -49691,13 +49704,16 @@ var useForm = function useForm(props) {
49691
49704
  var values = Object.keys(vals);
49692
49705
  // 针对 name 为数组模式,如 datepicker 的 name={['startTime', 'endTime']} 时,前者校验可能需要依赖后者,因此需要提前将后者数据整合至 draft 用于多字段整合校验
49693
49706
  values.forEach(function (key) {
49694
- 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);
49695
49710
  });
49696
49711
  values.forEach(function (key) {
49697
49712
  if (option.validate) {
49698
49713
  var _context$validateMap$;
49699
49714
  (_context$validateMap$ = context.validateMap[key]) === null || _context$validateMap$ === void 0 || _context$validateMap$.forEach(function (validate) {
49700
- 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));
49701
49717
  });
49702
49718
  }
49703
49719
  });
@@ -49995,7 +50011,10 @@ var useForm = function useForm(props) {
49995
50011
  external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect(function () {
49996
50012
  context.removeLock = false;
49997
50013
  // 内部 onChange 改的 value, 不需要更新
49998
- if (props.value === context.value) return;
50014
+ if (props.value === context.value) {
50015
+ if (!isControl) update();
50016
+ return;
50017
+ }
49999
50018
  if (initValidate && !context.resetTime) {
50000
50019
  var keys = Object.keys(context.validateMap).filter(function (key) {
50001
50020
  var oldValue = deepGet(preValue || emptyObj, key);
@@ -50065,11 +50084,12 @@ var Form = function Form(props) {
50065
50084
  rest = objectWithoutProperties_default()(props, form_excluded);
50066
50085
  var formClasses = jssStyle === null || jssStyle === void 0 || (_jssStyle$form = jssStyle.form) === null || _jssStyle$form === void 0 ? void 0 : _jssStyle$form.call(jssStyle);
50067
50086
  var modalFormContext = useFormFooter();
50087
+ var isControl = ('value' in props);
50068
50088
  var inputAbleParams = {
50069
50089
  value: props.value,
50070
50090
  onChange: props.onChange,
50071
50091
  defaultValue: props.defaultValue,
50072
- control: 'value' in props,
50092
+ control: isControl,
50073
50093
  beforeChange: undefined,
50074
50094
  reserveAble: false
50075
50095
  };
@@ -50080,7 +50100,8 @@ var Form = function Form(props) {
50080
50100
  var _useForm = use_form(objectSpread2_default()(objectSpread2_default()({}, rest), {}, {
50081
50101
  value: value,
50082
50102
  onChange: onChange,
50083
- formElRef: formElRef
50103
+ formElRef: formElRef,
50104
+ isControl: isControl
50084
50105
  })),
50085
50106
  Provider = _useForm.Provider,
50086
50107
  ProviderProps = _useForm.ProviderProps,
@@ -51213,6 +51234,10 @@ var useImage = function useImage() {
51213
51234
  _React$useState2 = slicedToArray_default()(_React$useState, 2),
51214
51235
  status = _React$useState2[0],
51215
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];
51216
51241
  var elementRef = external_root_React_commonjs2_react_commonjs_react_amd_react_default().useRef(null);
51217
51242
  var getUrl = function getUrl(url) {
51218
51243
  var auto = 'autoSSL' in props ? autoSSL : use_image_config.autoSSL;
@@ -51247,6 +51272,35 @@ var useImage = function useImage() {
51247
51272
  };
51248
51273
  img.src = getUrl(alt);
51249
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
+ };
51250
51304
  var markToRender = function markToRender() {
51251
51305
  if (!src) {
51252
51306
  handleAlt();
@@ -51254,7 +51308,10 @@ var useImage = function useImage() {
51254
51308
  }
51255
51309
  var img = new window.Image();
51256
51310
  img.onload = function () {
51257
- return setStatus(SRC);
51311
+ setStatus(SRC);
51312
+ if (props.fit === 'fill') {
51313
+ handleCoverStyle(img);
51314
+ }
51258
51315
  };
51259
51316
  img.onerror = function (e) {
51260
51317
  return handleError(SRC, e);
@@ -51283,7 +51340,9 @@ var useImage = function useImage() {
51283
51340
  alt: alt,
51284
51341
  draggable: !noImgDrag
51285
51342
  });
51286
- return objectSpread2_default()({}, mergedEventHandlers);
51343
+ return objectSpread2_default()({
51344
+ style: imgCoverStyle
51345
+ }, mergedEventHandlers);
51287
51346
  };
51288
51347
  var getImageDivProps = function getImageDivProps() {
51289
51348
  var externalProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -52051,7 +52110,8 @@ var Image = function Image(props) {
52051
52110
  href: href,
52052
52111
  lazy: lazy,
52053
52112
  autoSSL: autoSSL,
52054
- noImgDrag: noImgDrag
52113
+ noImgDrag: noImgDrag,
52114
+ fit: fit
52055
52115
  }, rest)),
52056
52116
  status = _useImage.status,
52057
52117
  getRootProps = _useImage.getRootProps,
@@ -52130,7 +52190,7 @@ var Image = function Image(props) {
52130
52190
 
52131
52191
  // 渲染 img / div 类型的内部标签
52132
52192
  var renderInner = function renderInner(src) {
52133
- return fit === 'fill' || fit === 'fit' ? renderDivInnerEl(src) : renderImgeInnerEl(src);
52193
+ return fit === 'fit' ? renderDivInnerEl(src) : renderImgeInnerEl(src);
52134
52194
  };
52135
52195
 
52136
52196
  // 默认占位图
@@ -55667,7 +55727,8 @@ function Select(props0) {
55667
55727
  checkUnMatched: checkUnMatched,
55668
55728
  onRemove: handleRemove,
55669
55729
  classes: styles,
55670
- setInputText: setInputText
55730
+ setInputText: setInputText,
55731
+ morePopoverContainer: targetRef
55671
55732
  })
55672
55733
  });
55673
55734
  return /*#__PURE__*/(0,jsx_runtime.jsx)(PopupProvider, {
@@ -66160,7 +66221,8 @@ var TreeSelect = function TreeSelect(props0) {
66160
66221
  getDataByValues: getResultByValue,
66161
66222
  onRemove: handleRemove,
66162
66223
  classes: styles,
66163
- setInputText: setInputText
66224
+ setInputText: setInputText,
66225
+ morePopoverContainer: targetRef
66164
66226
  })
66165
66227
  });
66166
66228
  return /*#__PURE__*/(0,jsx_runtime.jsx)(PopupProvider, {
@@ -66431,6 +66493,7 @@ function attrAccept(file, acceptedFiles) {
66431
66493
 
66432
66494
 
66433
66495
 
66496
+
66434
66497
  var VALIDATORITEMS = [{
66435
66498
  key: 'size',
66436
66499
  param: function param(blob) {
@@ -66464,11 +66527,12 @@ var promised = function promised(action) {
66464
66527
  resolve(true);
66465
66528
  });
66466
66529
  };
66530
+ var defaultValue = [];
66467
66531
  var useUpload = function useUpload(props) {
66468
66532
  var _props$limit = props.limit,
66469
66533
  limit = _props$limit === void 0 ? 100 : _props$limit,
66470
66534
  _props$value = props.value,
66471
- value = _props$value === void 0 ? [] : _props$value;
66535
+ value = _props$value === void 0 ? defaultValue : _props$value;
66472
66536
  var accept = props.forceAccept || props.accept;
66473
66537
  var forceAccept = !!props.forceAccept;
66474
66538
  var _useState = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)({}),
@@ -66588,21 +66652,22 @@ var useUpload = function useUpload(props) {
66588
66652
  responseType: props.responseType,
66589
66653
  onStart: props.onStart,
66590
66654
  onProgress: function onProgress(e, msg) {
66591
- if (throttle) return;
66655
+ var percent = typeof e.percent === 'number' ? e.percent : e.loaded / e.total * 100;
66656
+ if (throttle && percent !== 100) return;
66592
66657
  throttle = true;
66593
66658
  setTimeout(function () {
66594
66659
  throttle = false;
66595
66660
  }, 16);
66596
- var percent = typeof e.percent === 'number' ? e.percent : e.loaded / e.total * 100;
66597
- var filesState = latestState.filesState;
66598
- var newFiles = objectSpread2_default()({}, filesState);
66599
- if (!newFiles[id]) return;
66600
- newFiles[id].process = percent;
66601
- if (msg) newFiles[id].message = msg;
66602
- setFiles(newFiles);
66603
- if (typeof props.onProgress === 'function') {
66604
- props.onProgress(newFiles[id]);
66605
- }
66661
+ setFiles(function (files) {
66662
+ return utils_immer_produce(files, function (draft) {
66663
+ if (!draft[id]) return draft;
66664
+ draft[id].process = percent;
66665
+ if (msg) draft[id].message = msg;
66666
+ if (typeof props.onProgress === 'function') {
66667
+ props.onProgress(draft[id]);
66668
+ }
66669
+ });
66670
+ });
66606
66671
  },
66607
66672
  onLoad: function onLoad(xhr) {
66608
66673
  if (!/^2|1223/.test("".concat(xhr.status))) {
@@ -66630,11 +66695,17 @@ var useUpload = function useUpload(props) {
66630
66695
  delete draft[id];
66631
66696
  });
66632
66697
  });
66633
- // add value
66634
- var values = utils_immer_produce(latestState.value, function (draft) {
66635
- draft.push(result);
66636
- });
66637
- props.onChange(values);
66698
+ if (props.functionalOnChange) {
66699
+ // 回调型 setState不会丢值
66700
+ props.onChange(function (prev) {
66701
+ return [].concat(toConsumableArray_default()(prev || []), [result]);
66702
+ });
66703
+ } else {
66704
+ var latestValue = latestState.value;
66705
+ var newValue = toConsumableArray_default()(latestValue);
66706
+ newValue.push(result);
66707
+ props.onChange(newValue);
66708
+ }
66638
66709
  }
66639
66710
  },
66640
66711
  onError: function onError(xhr) {
@@ -66752,48 +66823,60 @@ var useUpload = function useUpload(props) {
66752
66823
  error = _context2.sent;
66753
66824
  case 21:
66754
66825
  if (!(error instanceof Error)) {
66755
- _context2.next = 30;
66826
+ _context2.next = 29;
66756
66827
  break;
66757
66828
  }
66758
66829
  if (validatorHandle(error, blob)) {
66759
- _context2.next = 26;
66830
+ _context2.next = 25;
66760
66831
  break;
66761
66832
  }
66762
- delete newFiles[id];
66763
- setFiles(objectSpread2_default()({}, newFiles));
66833
+ setFiles(function (prev) {
66834
+ return utils_immer_produce(prev, function (draft) {
66835
+ delete draft[id];
66836
+ });
66837
+ });
66764
66838
  return _context2.abrupt("return", 0);
66765
- case 26:
66839
+ case 25:
66766
66840
  fileRecord.message = error.message;
66767
66841
  fileRecord.status = 3;
66768
- setFiles(objectSpread2_default()({}, newFiles));
66842
+ setFiles(function (prev) {
66843
+ return objectSpread2_default()(objectSpread2_default()({}, prev), {}, defineProperty_default()({}, id, fileRecord));
66844
+ });
66769
66845
  return _context2.abrupt("return", 0);
66770
- case 30:
66846
+ case 29:
66771
66847
  if (!props.beforeUpload) {
66772
- _context2.next = 37;
66848
+ _context2.next = 36;
66773
66849
  break;
66774
66850
  }
66775
66851
  beforeUploadResult = props.beforeUpload(blob); // @ts-ignoreq
66776
66852
  if (!(beforeUploadResult && beforeUploadResult.then)) {
66777
- _context2.next = 35;
66853
+ _context2.next = 34;
66778
66854
  break;
66779
66855
  }
66780
66856
  props.beforeUpload(blob).then(function (args) {
66781
66857
  if (args.status !== 'error') {
66782
66858
  newFiles[id].xhr = uploadFile(id, blob, fileRecord.src);
66783
- setFiles(objectSpread2_default()({}, newFiles));
66859
+ setFiles(function (prev) {
66860
+ return objectSpread2_default()(objectSpread2_default()({}, prev), {}, defineProperty_default()({}, id, fileRecord));
66861
+ });
66784
66862
  }
66785
66863
  }).catch(function () {
66786
- delete newFiles[id];
66787
- setFiles(objectSpread2_default()({}, newFiles));
66864
+ setFiles(function (prev) {
66865
+ return utils_immer_produce(prev, function (draft) {
66866
+ delete draft[id];
66867
+ });
66868
+ });
66788
66869
  });
66789
66870
  return _context2.abrupt("return", 0);
66790
- case 35:
66791
- _context2.next = 39;
66871
+ case 34:
66872
+ _context2.next = 38;
66792
66873
  break;
66793
- case 37:
66874
+ case 36:
66794
66875
  fileRecord.xhr = uploadFile(id, blob, fileRecord.src);
66795
- setFiles(objectSpread2_default()({}, newFiles));
66796
- case 39:
66876
+ setFiles(function (prev) {
66877
+ return objectSpread2_default()(objectSpread2_default()({}, prev), {}, defineProperty_default()({}, id, fileRecord));
66878
+ });
66879
+ case 38:
66797
66880
  case "end":
66798
66881
  return _context2.stop();
66799
66882
  }
@@ -67191,7 +67274,8 @@ var Upload = function Upload(props0) {
67191
67274
  invalidImage: getLocale(locale, 'invalidImage')
67192
67275
  },
67193
67276
  value: value,
67194
- onChange: onChange
67277
+ onChange: onChange,
67278
+ functionalOnChange: props.functionalOnChange
67195
67279
  })),
67196
67280
  func = _useUpload.func,
67197
67281
  files = _useUpload.files,
@@ -69975,7 +70059,7 @@ var upload_interface = __webpack_require__(8821);
69975
70059
 
69976
70060
 
69977
70061
  /* harmony default export */ var src_0 = ({
69978
- version: '3.6.4'
70062
+ version: '3.6.5-beta.10'
69979
70063
  });
69980
70064
  }();
69981
70065
  /******/ return __webpack_exports__;