@kdcloudjs/kdesign 1.7.48-usePopper.1 → 1.7.48-usePopper.2

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/dist/kdesign-complete.less +20 -21
  3. package/dist/kdesign.css +17 -16
  4. package/dist/kdesign.css.map +1 -1
  5. package/dist/kdesign.js +2591 -1435
  6. package/dist/kdesign.js.map +1 -1
  7. package/dist/kdesign.min.css +3 -3
  8. package/dist/kdesign.min.js +15 -10
  9. package/dist/kdesign.min.js.map +1 -1
  10. package/es/_utils/useId.d.ts +2 -0
  11. package/es/_utils/useId.js +30 -0
  12. package/es/_utils/usePopper.js +13 -7
  13. package/es/anchor/anchor.js +11 -2
  14. package/es/city-picker/style/index.css +0 -1
  15. package/es/city-picker/style/index.less +0 -1
  16. package/es/color-picker/color-picker-panel.js +1 -1
  17. package/es/date-picker/date-panel.js +35 -30
  18. package/es/date-picker/date-picker.js +4 -1
  19. package/es/date-picker/hooks/use-picker-input.js +2 -3
  20. package/es/date-picker/range-picker.js +10 -24
  21. package/es/date-picker/utils/date-fns.js +4 -2
  22. package/es/filter/filter.js +4 -5
  23. package/es/grid/col.js +14 -3
  24. package/es/grid/row.js +15 -4
  25. package/es/input/ClearableLabeledInput.js +2 -2
  26. package/es/input/TextArea.js +1 -7
  27. package/es/input-number/inputNumber.js +29 -8
  28. package/es/pagination/style/index.css +1 -0
  29. package/es/pagination/style/index.less +1 -0
  30. package/es/popper/index.d.ts +4 -1
  31. package/es/popper/index.js +214 -137
  32. package/es/popper/style/index.css +10 -11
  33. package/es/popper/style/index.less +17 -19
  34. package/es/qr-code/qr-code.js +1 -1
  35. package/es/radio/radio.js +2 -2
  36. package/es/radio/style/index.css +0 -1
  37. package/es/radio/style/index.less +1 -1
  38. package/es/select/style/index.css +3 -0
  39. package/es/select/style/index.less +1 -0
  40. package/es/split-panel/split-panel.js +16 -0
  41. package/es/tooltip/style/index.css +2 -2
  42. package/es/tooltip/style/index.less +1 -1
  43. package/es/tree/utils/treeUtils.js +1 -1
  44. package/es/upload/upload.js +1 -1
  45. package/lib/_utils/useId.d.ts +2 -0
  46. package/lib/_utils/useId.js +43 -0
  47. package/lib/_utils/usePopper.js +13 -7
  48. package/lib/anchor/anchor.js +11 -2
  49. package/lib/city-picker/style/index.css +0 -1
  50. package/lib/city-picker/style/index.less +0 -1
  51. package/lib/color-picker/color-picker-panel.js +1 -1
  52. package/lib/date-picker/date-panel.js +39 -34
  53. package/lib/date-picker/date-picker.js +4 -1
  54. package/lib/date-picker/hooks/use-picker-input.js +2 -3
  55. package/lib/date-picker/range-picker.js +10 -24
  56. package/lib/date-picker/utils/date-fns.js +4 -2
  57. package/lib/filter/filter.js +4 -5
  58. package/lib/grid/col.js +14 -3
  59. package/lib/grid/row.js +15 -4
  60. package/lib/input/ClearableLabeledInput.js +2 -2
  61. package/lib/input/TextArea.js +1 -7
  62. package/lib/input-number/inputNumber.js +29 -8
  63. package/lib/pagination/style/index.css +1 -0
  64. package/lib/pagination/style/index.less +1 -0
  65. package/lib/popper/index.d.ts +4 -1
  66. package/lib/popper/index.js +213 -136
  67. package/lib/popper/style/index.css +10 -11
  68. package/lib/popper/style/index.less +17 -19
  69. package/lib/qr-code/qr-code.js +1 -1
  70. package/lib/radio/radio.js +2 -2
  71. package/lib/radio/style/index.css +0 -1
  72. package/lib/radio/style/index.less +1 -1
  73. package/lib/select/style/index.css +3 -0
  74. package/lib/select/style/index.less +1 -0
  75. package/lib/split-panel/split-panel.js +16 -0
  76. package/lib/tooltip/style/index.css +2 -2
  77. package/lib/tooltip/style/index.less +1 -1
  78. package/lib/tree/utils/treeUtils.js +1 -1
  79. package/lib/upload/upload.js +1 -1
  80. package/package.json +7 -3
@@ -240,16 +240,8 @@ var InternalRangePicker = function InternalRangePicker(props, ref) {
240
240
  var _onTextChange = function onTextChange(newText, index) {
241
241
  var inputTempDate;
242
242
  if (newText === '') {
243
- if (index === 0 && selectedValue && selectedValue.length === 2) {
244
- inputTempDate = selectedValue[1];
245
- } else if (index === 1 && selectedValue && selectedValue.length === 2) {
246
- inputTempDate = selectedValue[0];
247
- }
248
- if (inputTempDate) {
249
- triggerChange((0, _utils2.updateValues)(selectedValue, inputTempDate, index), index);
250
- setViewDate(inputTempDate, index);
251
- }
252
- } else if (newText && newText.length === _format.length) {
243
+ triggerChange((0, _utils2.updateValues)(selectedValue, null, index), index);
244
+ } else if (newText && newText.length >= _format.length) {
253
245
  inputTempDate = (0, _dateFns.parseDate)(newText, _format);
254
246
  var disabledFunc = index === 0 ? disabledStartDate : disabledEndDate;
255
247
  if (inputTempDate && (!disabledFunc || !disabledFunc(inputTempDate))) {
@@ -403,28 +395,26 @@ var InternalRangePicker = function InternalRangePicker(props, ref) {
403
395
  var canEndValueTrigger = canValueTrigger(endValue, 1, mergedDisabled, allowEmpty);
404
396
  var canTrigger = values === null || canStartValueTrigger && canEndValueTrigger;
405
397
  if (canTrigger) {
406
- setInnerValue(values);
398
+ if (typeof value === 'undefined') {
399
+ setInnerValue(values);
400
+ }
407
401
  if (onChange && (!(0, _dateFns.isEqual)((0, _utils2.getValue)(dateValue, 0), startValue) || !(0, _dateFns.isEqual)((0, _utils2.getValue)(dateValue, 1), endValue))) {
408
402
  onChange(values, [startStr, endStr]);
409
403
  }
410
404
  }
405
+ var curValue = (0, _utils2.getValue)(values, sourceIndex);
411
406
  var nextOpenIndex = null;
412
407
  if (sourceIndex === 0 && !mergedDisabled[1]) {
413
408
  nextOpenIndex = 1;
414
409
  } else if (sourceIndex === 1 && !mergedDisabled[0]) {
415
410
  nextOpenIndex = 0;
416
411
  }
417
- if (nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex && (!openRecordsRef.current[nextOpenIndex] || !(0, _utils2.getValue)(values, nextOpenIndex)) && (0, _utils2.getValue)(values, sourceIndex)) {
412
+ if (nextOpenIndex !== null && nextOpenIndex !== mergedActivePickerIndex && (!openRecordsRef.current[nextOpenIndex] || !(0, _utils2.getValue)(values, nextOpenIndex)) && curValue) {
418
413
  triggerOpenAndFocus(nextOpenIndex);
419
- } else {
414
+ } else if (curValue) {
420
415
  triggerOpen(false, sourceIndex);
421
416
  }
422
417
  };
423
- // useOnClickOutside([popperRef, inputDivRef], () => {
424
- // setViewDate(null, 0)
425
- // setViewDate(null, 1)
426
- // setHoverRangedValue([null, null])
427
- // })
428
418
  var onSelect = function onSelect(date, type) {
429
419
  var values = (0, _utils2.updateValues)(selectedValue, date, mergedActivePickerIndex);
430
420
  if (type === 'inner') {
@@ -465,14 +455,10 @@ var InternalRangePicker = function InternalRangePicker(props, ref) {
465
455
  (0, _react.useEffect)(function () {
466
456
  if (!mergedOpen) {
467
457
  setSelectedValue(dateValue);
468
- if (!startValueTexts.length || startValueTexts[0] === '') {
469
- triggerStartTextChange('');
470
- }
471
- if (!endValueTexts.length || endValueTexts[0] === '') {
472
- triggerEndTextChange('');
473
- }
474
458
  setViewDate(null, 0);
475
459
  setViewDate(null, 1);
460
+ resetStartText();
461
+ resetEndText();
476
462
  setHoverRangedValue([null, null]);
477
463
  } else {
478
464
  setInnerPicker(undefined);
@@ -477,10 +477,12 @@ var setYearOrMonthOfDate = function setYearOrMonthOfDate(date1, date2) {
477
477
  var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'year';
478
478
  var d1 = new Date(date1 || 0);
479
479
  var d2 = new Date(date2 || 0);
480
- if (type === 'year') {
480
+ if (type === 'year' && d1.getFullYear() !== d2.getFullYear()) {
481
+ d1.setDate(1);
481
482
  d1.setFullYear(d2.getFullYear());
482
483
  }
483
- if (type === 'month') {
484
+ if (type === 'month' && d1.getMonth() !== d2.getMonth()) {
485
+ d1.setDate(1);
484
486
  d1.setMonth(d2.getMonth());
485
487
  }
486
488
  return d1;
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
10
  exports.default = void 0;
11
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
12
11
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
12
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
13
13
  var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
14
14
  var _filter = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/filter"));
15
15
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
@@ -51,7 +51,7 @@ var Filter = function Filter(props) {
51
51
  customPrefixcls = _getCompProps.prefixCls;
52
52
  // className前缀
53
53
  var prefixCls = getPrefixCls(pkgPrefixCls, 'filter', customPrefixcls);
54
- var _React$useRef = React.useRef(props.value || props.defaultValue || {}),
54
+ var _React$useRef = React.useRef(typeof props.value === 'undefined' ? props.defaultValue || {} : props.value || {}),
55
55
  defaultValue = _React$useRef.current;
56
56
  var _React$useState = React.useState(defaultValue),
57
57
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
@@ -64,7 +64,6 @@ var Filter = function Filter(props) {
64
64
  _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
65
65
  tab = _React$useState4[0],
66
66
  setTab = _React$useState4[1];
67
- var conditionValue = (0, _keys.default)(value).length < 1 || (0, _keys.default)(value).length === 1 && value.scheme ? defaultValue : value;
68
67
  var onConditionChange = function onConditionChange(nextValue, condition, option) {
69
68
  props.value === undefined && setValue(nextValue);
70
69
  onChange && onChange(nextValue, condition, option);
@@ -72,7 +71,7 @@ var Filter = function Filter(props) {
72
71
  var onConditionRemove = function onConditionRemove(key, e) {
73
72
  e.preventDefault();
74
73
  if (key) {
75
- var nextValue = (0, _extends2.default)({}, conditionValue);
74
+ var nextValue = (0, _extends2.default)({}, value);
76
75
  delete nextValue[key];
77
76
  onConditionChange(nextValue);
78
77
  }
@@ -189,7 +188,7 @@ var Filter = function Filter(props) {
189
188
  FilterLangMsg: FilterLangMsg,
190
189
  onConditionChange: onConditionChange,
191
190
  onConditionRemove: onConditionRemove,
192
- value: conditionValue
191
+ value: value
193
192
  })), /*#__PURE__*/React.createElement(_scheme.default, (0, _extends2.default)({}, {
194
193
  tab: tab,
195
194
  fields: fields,
package/lib/grid/col.js CHANGED
@@ -53,12 +53,23 @@ var Col = function Col(props) {
53
53
  var rowGroup = (0, _react.useContext)(_row.GapContext);
54
54
  var mergedWinWidth = rowGroup.winWidth;
55
55
  var gap = rowGroup.gap;
56
- // 浏览器名称
57
- var isSogouOrIE = (0, _testBrowserType.testBrowserType)(/^sogou/i, 0) || /Trident|MSIE/.test(navigator.userAgent);
56
+ // 判断当前浏览器是否支持row-gap,如果不支持则使用margin负值模拟
57
+ var notSupportRowGap = function notSupportRowGap() {
58
+ // 判断是否是搜狗浏览器
59
+ if ((0, _testBrowserType.testBrowserType)(/^sogou/i, 0)) return true;
60
+ // 判断是否是IE浏览器
61
+ if (/Trident|MSIE/.test(navigator.userAgent)) return true;
62
+ // 判断是否是chrome浏览器,chrome浏览器版本号小于69
63
+ if (/Chrome/.test(navigator.userAgent) && !/Chromium/.test(navigator.userAgent)) {
64
+ var version = navigator.userAgent.split('Chrome/')[1].split('.');
65
+ if (version[0] && parseInt(version[0]) <= 69) return true;
66
+ }
67
+ return false;
68
+ };
58
69
  var colGapStyle = {
59
70
  padding: "0 ".concat(gap.h / 2, "px")
60
71
  };
61
- if (isSogouOrIE && gap.v) colGapStyle.marginBottom = gap.v;
72
+ if (notSupportRowGap() && gap.v) colGapStyle.marginBottom = gap.v;
62
73
  // className前缀
63
74
  var prefixCls = getPrefixCls(pkgPrefixCls, 'col', customPrefixcls);
64
75
  var columns = 24;
package/lib/grid/row.js CHANGED
@@ -55,8 +55,19 @@ var Row = function Row(props) {
55
55
  align = _getCompProps.align,
56
56
  justify = _getCompProps.justify,
57
57
  customPrefixcls = _getCompProps.prefixCls;
58
- // 浏览器名称
59
- var isSogouOrIe = (0, _testBrowserType.testBrowserType)(/^sogou/i, 0) || /Trident|MSIE/.test(navigator.userAgent);
58
+ // 判断当前浏览器是否支持row-gap,如果不支持则使用margin负值模拟
59
+ var notSupportRowGap = function notSupportRowGap() {
60
+ // 判断是否是搜狗浏览器
61
+ if ((0, _testBrowserType.testBrowserType)(/^sogou/i, 0)) return true;
62
+ // 判断是否是IE浏览器
63
+ if (/Trident|MSIE/.test(navigator.userAgent)) return true;
64
+ // 判断是否是chrome浏览器,chrome浏览器版本号小于69
65
+ if (/Chrome/.test(navigator.userAgent) && !/Chromium/.test(navigator.userAgent)) {
66
+ var version = navigator.userAgent.split('Chrome/')[1].split('.');
67
+ if (version[0] && parseInt(version[0]) <= 69) return true;
68
+ }
69
+ return false;
70
+ };
60
71
  // className前缀
61
72
  var prefixCls = getPrefixCls(pkgPrefixCls, 'row', customPrefixcls);
62
73
  var _React$useState = _react.default.useState(window.innerWidth),
@@ -88,10 +99,10 @@ var Row = function Row(props) {
88
99
  }
89
100
  }
90
101
  var rowStyle = {
91
- 'row-gap': "".concat(gap.v, "px"),
102
+ rowGap: "".concat(gap.v, "px"),
92
103
  margin: "0 ".concat(-1 * gap.h / 2, "px")
93
104
  };
94
- if (gap.v && isSogouOrIe) rowStyle['margin-bottom'] = "".concat(-1 * gap.v, "px");
105
+ if (gap.v && notSupportRowGap()) rowStyle.marginBottom = "".concat(-1 * gap.v, "px");
95
106
  var toalign = {
96
107
  top: 'flex-start',
97
108
  middle: 'center',
@@ -69,11 +69,11 @@ var ClearableInput = function ClearableInput(props) {
69
69
  return null;
70
70
  }
71
71
  var needClear = !disabled && value && isMouseEnter;
72
- var clearIconclasses = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-textarea-clear-icon"), inputType === ClearableInputType[1]), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-clear-icon"), inputType === ClearableInputType[0]), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-clear-icon-hidden"), !needClear), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-clear-icon-rightSpace"), suffix), _classNames));
72
+ var clearIconCls = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-textarea-clear-icon"), inputType === ClearableInputType[1]), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-clear-icon"), inputType === ClearableInputType[0]), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-clear-icon-hidden"), !needClear), (0, _defineProperty2.default)(_classNames, "".concat(prefixCls, "-clear-icon-rightSpace"), suffix), _classNames));
73
73
  return /*#__PURE__*/_react.default.createElement("span", {
74
74
  onMouseDown: mouseDownHandle,
75
75
  onClick: handleReset,
76
- className: clearIconclasses
76
+ className: clearIconCls
77
77
  }, typeof allowClear === 'boolean' ? /*#__PURE__*/_react.default.createElement(_index.Icon, {
78
78
  type: "close-solid"
79
79
  }) : allowClear);
@@ -106,8 +106,7 @@ var InternalTextarea = function InternalTextarea(props, ref) {
106
106
  }, [autoSize, textareaRef, style]);
107
107
  (0, _hooks.useResizeObserver)(textareaRef.current, resizeTextarea);
108
108
  var handleChange = function handleChange(e) {
109
- if (value === undefined) return;
110
- setValue(e.target.value);
109
+ propsValue === undefined && setValue(e.target.value);
111
110
  onChange && onChange(e);
112
111
  };
113
112
  var handleFocus = function handleFocus(e) {
@@ -152,11 +151,6 @@ var InternalTextarea = function InternalTextarea(props, ref) {
152
151
  setNumberMarkError(false);
153
152
  }
154
153
  }, [value]);
155
- (0, _react.useEffect)(function () {
156
- if (propsValue !== undefined) {
157
- setValue(propsValue);
158
- }
159
- }, [propsValue, setValue]);
160
154
  (0, _react.useEffect)(function () {
161
155
  if (focused && !showNumberMark) {
162
156
  setShowNumberMark(true);
@@ -74,6 +74,10 @@ var InternalInputNumber = function InternalInputNumber(props, ref) {
74
74
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
75
75
  forceUpdate = _useState4[0],
76
76
  setForceUpdate = _useState4[1];
77
+ var _useState5 = (0, _react.useState)(''),
78
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
79
+ compositionValue = _useState6[0],
80
+ setCompositionValue = _useState6[1];
77
81
  var inputStatus = (0, _react.useRef)({
78
82
  isHandleChange: false,
79
83
  inputFocused: false
@@ -83,6 +87,7 @@ var InternalInputNumber = function InternalInputNumber(props, ref) {
83
87
  var inputNumberRef = ref || thisInputNumberRef;
84
88
  var stepMouseDownDelayTimer = (0, _react.useRef)(null);
85
89
  var stepMouseDownIntervalTimer = (0, _react.useRef)(null);
90
+ var refIszComposition = (0, _react.useRef)(false);
86
91
  var isScopeValid = function isScopeValid(value) {
87
92
  if (value === '') return true;
88
93
  var numberValue = parseFloat(value) || 0;
@@ -124,14 +129,20 @@ var InternalInputNumber = function InternalInputNumber(props, ref) {
124
129
  };
125
130
  var handleChange = function handleChange(event) {
126
131
  inputStatus.current.isHandleChange = true;
127
- var legalNumber = verifiValue(event.target.value);
128
- updateSelectionRangePosition(event);
129
- if (legalNumber === false) {
130
- setForceUpdate(forceUpdate + 1);
131
- return false;
132
+ var newValue = event.target.value;
133
+ if (!refIszComposition.current) {
134
+ compositionValue && setCompositionValue('');
135
+ var legalNumber = verifiValue(newValue);
136
+ if (legalNumber === false) {
137
+ setForceUpdate(forceUpdate + 1);
138
+ return false;
139
+ }
140
+ value === undefined && setInputValue(legalNumber);
141
+ onChange && onChange(handleEventAttachValue(event, numberMode ? Number(legalNumber) : legalNumber));
142
+ updateSelectionRangePosition(event);
143
+ } else {
144
+ setCompositionValue(newValue);
132
145
  }
133
- value === undefined && setInputValue(legalNumber);
134
- onChange && onChange(handleEventAttachValue(event, numberMode ? Number(legalNumber) : legalNumber));
135
146
  };
136
147
  var handleFocus = function handleFocus(event) {
137
148
  inputStatus.current.inputFocused = true;
@@ -330,9 +341,19 @@ var InternalInputNumber = function InternalInputNumber(props, ref) {
330
341
  inputValue: displayedInputValue,
331
342
  forceUpdate: forceUpdate
332
343
  });
344
+ var handleComposition = function handleComposition(e) {
345
+ refIszComposition.current = e.type !== 'compositionend';
346
+ if (!refIszComposition.current) {
347
+ setCompositionValue('');
348
+ handleChange(e);
349
+ }
350
+ };
333
351
  return /*#__PURE__*/_react.default.createElement(_input.default, (0, _extends2.default)({}, others, {
352
+ onCompositionStart: handleComposition,
353
+ onCompositionUpdate: handleComposition,
354
+ onCompositionEnd: handleComposition,
334
355
  ref: inputNumberRef,
335
- value: displayedInputValue,
356
+ value: compositionValue || displayedInputValue,
336
357
  prefix: prefix,
337
358
  suffix: suffix,
338
359
  onChange: handleChange,
@@ -388,6 +388,7 @@
388
388
  }
389
389
  .kd-pagination.simple .kd-pagination-action-item .kd-pagination-total {
390
390
  margin-right: 0;
391
+ margin-left: 2px;
391
392
  }
392
393
  .kd-pagination.simple .kd-pagination-action-item.bordered > button {
393
394
  border: none;
@@ -244,6 +244,7 @@
244
244
 
245
245
  .@{pagination-prefix-cls}-total {
246
246
  margin-right: 0;
247
+ margin-left: 2px;
247
248
  }
248
249
 
249
250
  &.bordered > button {
@@ -4,7 +4,7 @@ export declare type PlacementType = typeof Placements[number];
4
4
  export declare const Triggers: ["hover", "focus", "click", "contextMenu"];
5
5
  export declare type TriggerType = typeof Triggers[number];
6
6
  export declare type RenderFunction = () => React.ReactNode;
7
- export interface PopperProps {
7
+ export declare type PopperProps = {
8
8
  gap?: number;
9
9
  arrow?: boolean;
10
10
  visible?: boolean;
@@ -32,6 +32,9 @@ export interface PopperProps {
32
32
  onTransitionEnd?: (e: React.TransitionEvent) => void;
33
33
  onAnimationEnd?: (e: React.AnimationEvent) => void;
34
34
  children?: React.ReactNode;
35
+ };
36
+ export interface TriggerContextProps {
37
+ registerSubPopup: (id: string, node: any) => void;
35
38
  }
36
39
  export declare const popperPlacementMap: {
37
40
  top: string;