@kdcloudjs/kdesign 1.8.11 → 1.8.12

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.
@@ -16,6 +16,7 @@ import ConfigContext from '../config-provider/ConfigContext';
16
16
  import { getCompProps } from '../_utils';
17
17
  import { Input, Icon, Tabs, Empty, Spin, Checkbox } from '../index';
18
18
  import usePopper from '../_utils/usePopper';
19
+ import ResizeObserver from '../_utils/resizeObserver';
19
20
  var InternalBaseData = function InternalBaseData(props, ref) {
20
21
  var _context2;
21
22
  var _useContext = useContext(ConfigContext),
@@ -195,9 +196,9 @@ var InternalBaseData = function InternalBaseData(props, ref) {
195
196
  return item;
196
197
  });
197
198
  };
198
- // 当选中项文字超出输入框时,显示共多少项
199
- useLayoutEffect(function () {
199
+ var handleShowTotal = useCallback(function () {
200
200
  var _a;
201
+ if (!isMultiple) return;
201
202
  var inputDom = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input;
202
203
  if (!inputDom) return;
203
204
  if (inputDom.scrollWidth - inputDom.offsetWidth > 0 && inputValue) {
@@ -205,7 +206,11 @@ var InternalBaseData = function InternalBaseData(props, ref) {
205
206
  } else {
206
207
  setShowTotal(false);
207
208
  }
208
- }, [inputRef, inputValue]);
209
+ }, [inputValue, isMultiple]);
210
+ // 当选中项文字超出输入框时,显示共多少项
211
+ useLayoutEffect(function () {
212
+ handleShowTotal();
213
+ }, [handleShowTotal]);
209
214
  // 通过选中项显示input文字, optionLabelProp为回填到选择框的属性
210
215
  var setValueBySeleted = useCallback(function () {
211
216
  var _context8;
@@ -461,6 +466,8 @@ var InternalBaseData = function InternalBaseData(props, ref) {
461
466
  className: advancedSelectorCls,
462
467
  ref: advancedSelectorRef,
463
468
  style: style
469
+ }, /*#__PURE__*/React.createElement(ResizeObserver, {
470
+ onResize: handleShowTotal
464
471
  }, /*#__PURE__*/React.createElement(Input, {
465
472
  ref: inputRef,
466
473
  borderType: "none",
@@ -471,7 +478,7 @@ var InternalBaseData = function InternalBaseData(props, ref) {
471
478
  onDoubleClick: handleDoubleClick,
472
479
  onFocus: handleFocus,
473
480
  onBlur: handleBlur
474
- }), showTotal && !isFocused && isMultiple && /*#__PURE__*/React.createElement("span", {
481
+ })), showTotal && !isFocused && isMultiple && /*#__PURE__*/React.createElement("span", {
475
482
  className: "".concat(advancedSelectorfixCls, "-total"),
476
483
  onClick: showInputTotal
477
484
  }, totalText), isShowDetailBtn && !disabled && /*#__PURE__*/React.createElement("span", {
@@ -4,6 +4,7 @@ export declare const Placements: ["top", "left", "right", "bottom", "topLeft", "
4
4
  export declare type PlacementType = typeof Placements[number];
5
5
  export declare const Triggers: ["hover", "focus", "click", "contextMenu"];
6
6
  export declare type TriggerType = typeof Triggers[number];
7
+ export declare type Reason = TriggerType | 'scroll' | 'clickOutside' | 'parentHidden' | 'unknown';
7
8
  export declare type RenderFunction = () => React.ReactNode;
8
9
  export declare type PopperProps = {
9
10
  gap?: number;
@@ -29,7 +30,7 @@ export declare type PopperProps = {
29
30
  strategy?: 'fixed' | 'absolute';
30
31
  clickToClose?: boolean;
31
32
  onTrigger?: (trigger: TriggerType) => void;
32
- onVisibleChange?: (visible: boolean) => void;
33
+ onVisibleChange?: (visible: boolean, reason?: Reason) => void;
33
34
  getTriggerElement?: (locatorNode: HTMLElement) => HTMLElement;
34
35
  getPopupContainer?: (locatorNode: HTMLElement) => HTMLElement;
35
36
  onTransitionEnd?: (e: React.TransitionEvent) => void;
@@ -114,8 +114,10 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
114
114
  visible = props.visible,
115
115
  _props$arrowSize = props.arrowSize,
116
116
  arrowSize = _props$arrowSize === void 0 ? 4.25 : _props$arrowSize,
117
+ _props$arrowOffset = props.arrowOffset,
118
+ arrowOffset = _props$arrowOffset === void 0 ? 12 : _props$arrowOffset,
117
119
  _props$gap = props.gap,
118
- defaultGap = _props$gap === void 0 ? 4 : _props$gap,
120
+ defaultGap = _props$gap === void 0 ? 8 : _props$gap,
119
121
  _props$scrollHidden = props.scrollHidden,
120
122
  scrollHidden = _props$scrollHidden === void 0 ? false : _props$scrollHidden,
121
123
  _props$mouseEnterDela = props.mouseEnterDelay,
@@ -147,6 +149,26 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
147
149
  var childrenInner = /*#__PURE__*/isValidElement(child) && !isFragment(child) ? child : /*#__PURE__*/React.createElement("span", null, child);
148
150
  var popperElement = getElement(tip);
149
151
  var referenceElement = Children.only(childrenInner);
152
+ var arrowOffsetInner = arrowSize + arrowOffset;
153
+ var getArrowOffset = function getArrowOffset(popperSize, referenceSize, arr) {
154
+ var boundary = arrowOffsetInner * 2;
155
+ var offset;
156
+ if (referenceSize < boundary || popperSize < boundary) {
157
+ var o = Math.min(referenceSize, popperSize) / 2;
158
+ if (arr[1] === 'start') {
159
+ offset = o;
160
+ } else {
161
+ offset = Math.max(popperSize - o, 0);
162
+ }
163
+ } else {
164
+ if (arr[1] === 'start') {
165
+ offset = arrowOffsetInner;
166
+ } else {
167
+ offset = popperSize - arrowOffsetInner;
168
+ }
169
+ }
170
+ return offset;
171
+ };
150
172
  var id = useId();
151
173
  var parentContext = useContext(TriggerContext);
152
174
  var subPopupRefs = useRef({});
@@ -188,7 +210,7 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
188
210
  }
189
211
  };
190
212
  var changeVisible = function changeVisible(nextOpen) {
191
- var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
213
+ var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
192
214
  if (visibleInner !== nextOpen) {
193
215
  if (nextOpen && _includesInstanceProperty(triggerTypeArray).call(triggerTypeArray, triggerType)) {
194
216
  onTrigger === null || onTrigger === void 0 ? void 0 : onTrigger(triggerType);
@@ -196,18 +218,18 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
196
218
  if (typeof visible === 'undefined') {
197
219
  setVisibleInner(nextOpen);
198
220
  }
199
- onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);
221
+ onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen, triggerType);
200
222
  }
201
223
  if (!nextOpen && _Object$keys(subPopupRefs.current || {}).length) {
202
224
  _Object$values(subPopupRefs.current).forEach(function (d) {
203
225
  if (typeof (d === null || d === void 0 ? void 0 : d.triggerOpen) === 'function' && (d === null || d === void 0 ? void 0 : d.visible)) {
204
- d === null || d === void 0 ? void 0 : d.triggerOpen(false);
226
+ d === null || d === void 0 ? void 0 : d.triggerOpen(false, 'parentHidden');
205
227
  }
206
228
  });
207
229
  }
208
230
  };
209
231
  var triggerOpen = function triggerOpen(nextOpen) {
210
- var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
232
+ var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
211
233
  var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
212
234
  clearDelay();
213
235
  if (!disabled) {
@@ -340,7 +362,9 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
340
362
  triggerOpen(false, 'clickOutside', 0);
341
363
  }
342
364
  }
343
- }, 10);
365
+ }, 10, {
366
+ leading: true
367
+ });
344
368
  if (visibleInner) {
345
369
  document.addEventListener('click', clickHandle, true);
346
370
  }
@@ -370,7 +394,7 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
370
394
  }
371
395
  }, {
372
396
  name: 'preventOverflow',
373
- enabled: autoPlacement,
397
+ enabled: autoPlacement && !_includesInstanceProperty(placementInner).call(placementInner, '-'),
374
398
  options: {
375
399
  mainAxis: true
376
400
  }
@@ -380,6 +404,50 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
380
404
  options: {
381
405
  fallbackPlacements: Array.isArray(autoPlacementList) ? getFallbackPlacementList(autoPlacementList) : undefined
382
406
  }
407
+ }, {
408
+ name: 'applyArrowOffset',
409
+ enabled: true,
410
+ phase: 'write',
411
+ fn: function fn(data) {
412
+ var _data$state = data.state,
413
+ arrow = _data$state.elements.arrow,
414
+ placement = _data$state.placement,
415
+ _data$state$rects = _data$state.rects,
416
+ popper = _data$state$rects.popper,
417
+ reference = _data$state$rects.reference;
418
+ if (arrow) {
419
+ var arr = placement.split('-');
420
+ var offset;
421
+ if (arr.length === 2) {
422
+ switch (arr[0]) {
423
+ case 'bottom':
424
+ offset = getArrowOffset(popper.width, reference.width, arr);
425
+ if (offset) {
426
+ arrow.style.transform = "translate(".concat(offset, "px, 0px)");
427
+ }
428
+ break;
429
+ case 'left':
430
+ offset = getArrowOffset(popper.height, reference.height, arr);
431
+ if (offset) {
432
+ arrow.style.transform = "translate(0px, ".concat(offset, "px)");
433
+ }
434
+ break;
435
+ case 'right':
436
+ offset = getArrowOffset(popper.height, reference.height, arr);
437
+ if (offset) {
438
+ arrow.style.transform = "translate(0px, ".concat(offset, "px)");
439
+ }
440
+ break;
441
+ default:
442
+ offset = getArrowOffset(popper.width, reference.width, arr);
443
+ if (offset) {
444
+ arrow.style.transform = "translate(".concat(offset, "px, 0px)");
445
+ }
446
+ break;
447
+ }
448
+ }
449
+ }
450
+ }
383
451
  }, {
384
452
  name: 'onUpdate',
385
453
  enabled: true,
@@ -26,6 +26,7 @@ var _ConfigContext = _interopRequireDefault(require("../config-provider/ConfigCo
26
26
  var _utils = require("../_utils");
27
27
  var _index = require("../index");
28
28
  var _usePopper = _interopRequireDefault(require("../_utils/usePopper"));
29
+ var _resizeObserver = _interopRequireDefault(require("../_utils/resizeObserver"));
29
30
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
30
31
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
31
32
  var InternalBaseData = function InternalBaseData(props, ref) {
@@ -207,9 +208,9 @@ var InternalBaseData = function InternalBaseData(props, ref) {
207
208
  return item;
208
209
  });
209
210
  };
210
- // 当选中项文字超出输入框时,显示共多少项
211
- (0, _react.useLayoutEffect)(function () {
211
+ var handleShowTotal = (0, _react.useCallback)(function () {
212
212
  var _a;
213
+ if (!isMultiple) return;
213
214
  var inputDom = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.input;
214
215
  if (!inputDom) return;
215
216
  if (inputDom.scrollWidth - inputDom.offsetWidth > 0 && inputValue) {
@@ -217,7 +218,11 @@ var InternalBaseData = function InternalBaseData(props, ref) {
217
218
  } else {
218
219
  setShowTotal(false);
219
220
  }
220
- }, [inputRef, inputValue]);
221
+ }, [inputValue, isMultiple]);
222
+ // 当选中项文字超出输入框时,显示共多少项
223
+ (0, _react.useLayoutEffect)(function () {
224
+ handleShowTotal();
225
+ }, [handleShowTotal]);
221
226
  // 通过选中项显示input文字, optionLabelProp为回填到选择框的属性
222
227
  var setValueBySeleted = (0, _react.useCallback)(function () {
223
228
  var _context8;
@@ -473,6 +478,8 @@ var InternalBaseData = function InternalBaseData(props, ref) {
473
478
  className: advancedSelectorCls,
474
479
  ref: advancedSelectorRef,
475
480
  style: style
481
+ }, /*#__PURE__*/_react.default.createElement(_resizeObserver.default, {
482
+ onResize: handleShowTotal
476
483
  }, /*#__PURE__*/_react.default.createElement(_index.Input, {
477
484
  ref: inputRef,
478
485
  borderType: "none",
@@ -483,7 +490,7 @@ var InternalBaseData = function InternalBaseData(props, ref) {
483
490
  onDoubleClick: handleDoubleClick,
484
491
  onFocus: handleFocus,
485
492
  onBlur: handleBlur
486
- }), showTotal && !isFocused && isMultiple && /*#__PURE__*/_react.default.createElement("span", {
493
+ })), showTotal && !isFocused && isMultiple && /*#__PURE__*/_react.default.createElement("span", {
487
494
  className: "".concat(advancedSelectorfixCls, "-total"),
488
495
  onClick: showInputTotal
489
496
  }, totalText), isShowDetailBtn && !disabled && /*#__PURE__*/_react.default.createElement("span", {
@@ -4,6 +4,7 @@ export declare const Placements: ["top", "left", "right", "bottom", "topLeft", "
4
4
  export declare type PlacementType = typeof Placements[number];
5
5
  export declare const Triggers: ["hover", "focus", "click", "contextMenu"];
6
6
  export declare type TriggerType = typeof Triggers[number];
7
+ export declare type Reason = TriggerType | 'scroll' | 'clickOutside' | 'parentHidden' | 'unknown';
7
8
  export declare type RenderFunction = () => React.ReactNode;
8
9
  export declare type PopperProps = {
9
10
  gap?: number;
@@ -29,7 +30,7 @@ export declare type PopperProps = {
29
30
  strategy?: 'fixed' | 'absolute';
30
31
  clickToClose?: boolean;
31
32
  onTrigger?: (trigger: TriggerType) => void;
32
- onVisibleChange?: (visible: boolean) => void;
33
+ onVisibleChange?: (visible: boolean, reason?: Reason) => void;
33
34
  getTriggerElement?: (locatorNode: HTMLElement) => HTMLElement;
34
35
  getPopupContainer?: (locatorNode: HTMLElement) => HTMLElement;
35
36
  onTransitionEnd?: (e: React.TransitionEvent) => void;
@@ -129,8 +129,10 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
129
129
  visible = props.visible,
130
130
  _props$arrowSize = props.arrowSize,
131
131
  arrowSize = _props$arrowSize === void 0 ? 4.25 : _props$arrowSize,
132
+ _props$arrowOffset = props.arrowOffset,
133
+ arrowOffset = _props$arrowOffset === void 0 ? 12 : _props$arrowOffset,
132
134
  _props$gap = props.gap,
133
- defaultGap = _props$gap === void 0 ? 4 : _props$gap,
135
+ defaultGap = _props$gap === void 0 ? 8 : _props$gap,
134
136
  _props$scrollHidden = props.scrollHidden,
135
137
  scrollHidden = _props$scrollHidden === void 0 ? false : _props$scrollHidden,
136
138
  _props$mouseEnterDela = props.mouseEnterDelay,
@@ -162,6 +164,26 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
162
164
  var childrenInner = /*#__PURE__*/(0, _react.isValidElement)(child) && !(0, _reactNode.isFragment)(child) ? child : /*#__PURE__*/_react.default.createElement("span", null, child);
163
165
  var popperElement = getElement(tip);
164
166
  var referenceElement = _react.Children.only(childrenInner);
167
+ var arrowOffsetInner = arrowSize + arrowOffset;
168
+ var getArrowOffset = function getArrowOffset(popperSize, referenceSize, arr) {
169
+ var boundary = arrowOffsetInner * 2;
170
+ var offset;
171
+ if (referenceSize < boundary || popperSize < boundary) {
172
+ var o = Math.min(referenceSize, popperSize) / 2;
173
+ if (arr[1] === 'start') {
174
+ offset = o;
175
+ } else {
176
+ offset = Math.max(popperSize - o, 0);
177
+ }
178
+ } else {
179
+ if (arr[1] === 'start') {
180
+ offset = arrowOffsetInner;
181
+ } else {
182
+ offset = popperSize - arrowOffsetInner;
183
+ }
184
+ }
185
+ return offset;
186
+ };
165
187
  var id = (0, _useId.default)();
166
188
  var parentContext = (0, _react.useContext)(TriggerContext);
167
189
  var subPopupRefs = (0, _react.useRef)({});
@@ -203,7 +225,7 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
203
225
  }
204
226
  };
205
227
  var changeVisible = function changeVisible(nextOpen) {
206
- var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
228
+ var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
207
229
  if (visibleInner !== nextOpen) {
208
230
  if (nextOpen && (0, _includes.default)(triggerTypeArray).call(triggerTypeArray, triggerType)) {
209
231
  onTrigger === null || onTrigger === void 0 ? void 0 : onTrigger(triggerType);
@@ -211,18 +233,18 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
211
233
  if (typeof visible === 'undefined') {
212
234
  setVisibleInner(nextOpen);
213
235
  }
214
- onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);
236
+ onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen, triggerType);
215
237
  }
216
238
  if (!nextOpen && (0, _keys.default)(subPopupRefs.current || {}).length) {
217
239
  (0, _values.default)(subPopupRefs.current).forEach(function (d) {
218
240
  if (typeof (d === null || d === void 0 ? void 0 : d.triggerOpen) === 'function' && (d === null || d === void 0 ? void 0 : d.visible)) {
219
- d === null || d === void 0 ? void 0 : d.triggerOpen(false);
241
+ d === null || d === void 0 ? void 0 : d.triggerOpen(false, 'parentHidden');
220
242
  }
221
243
  });
222
244
  }
223
245
  };
224
246
  var triggerOpen = function triggerOpen(nextOpen) {
225
- var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
247
+ var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
226
248
  var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
227
249
  clearDelay();
228
250
  if (!disabled) {
@@ -355,7 +377,9 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
355
377
  triggerOpen(false, 'clickOutside', 0);
356
378
  }
357
379
  }
358
- }, 10);
380
+ }, 10, {
381
+ leading: true
382
+ });
359
383
  if (visibleInner) {
360
384
  document.addEventListener('click', clickHandle, true);
361
385
  }
@@ -385,7 +409,7 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
385
409
  }
386
410
  }, {
387
411
  name: 'preventOverflow',
388
- enabled: autoPlacement,
412
+ enabled: autoPlacement && !(0, _includes.default)(placementInner).call(placementInner, '-'),
389
413
  options: {
390
414
  mainAxis: true
391
415
  }
@@ -395,6 +419,50 @@ var Popper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
395
419
  options: {
396
420
  fallbackPlacements: Array.isArray(autoPlacementList) ? getFallbackPlacementList(autoPlacementList) : undefined
397
421
  }
422
+ }, {
423
+ name: 'applyArrowOffset',
424
+ enabled: true,
425
+ phase: 'write',
426
+ fn: function fn(data) {
427
+ var _data$state = data.state,
428
+ arrow = _data$state.elements.arrow,
429
+ placement = _data$state.placement,
430
+ _data$state$rects = _data$state.rects,
431
+ popper = _data$state$rects.popper,
432
+ reference = _data$state$rects.reference;
433
+ if (arrow) {
434
+ var arr = placement.split('-');
435
+ var offset;
436
+ if (arr.length === 2) {
437
+ switch (arr[0]) {
438
+ case 'bottom':
439
+ offset = getArrowOffset(popper.width, reference.width, arr);
440
+ if (offset) {
441
+ arrow.style.transform = "translate(".concat(offset, "px, 0px)");
442
+ }
443
+ break;
444
+ case 'left':
445
+ offset = getArrowOffset(popper.height, reference.height, arr);
446
+ if (offset) {
447
+ arrow.style.transform = "translate(0px, ".concat(offset, "px)");
448
+ }
449
+ break;
450
+ case 'right':
451
+ offset = getArrowOffset(popper.height, reference.height, arr);
452
+ if (offset) {
453
+ arrow.style.transform = "translate(0px, ".concat(offset, "px)");
454
+ }
455
+ break;
456
+ default:
457
+ offset = getArrowOffset(popper.width, reference.width, arr);
458
+ if (offset) {
459
+ arrow.style.transform = "translate(".concat(offset, "px, 0px)");
460
+ }
461
+ break;
462
+ }
463
+ }
464
+ }
465
+ }
398
466
  }, {
399
467
  name: 'onUpdate',
400
468
  enabled: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kdcloudjs/kdesign",
3
- "version": "1.8.11",
3
+ "version": "1.8.12",
4
4
  "description": "KDesign 金蝶前端react 组件库",
5
5
  "title": "kdesign",
6
6
  "keywords": [