@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
@@ -7,8 +7,10 @@ import _flatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instanc
7
7
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
8
8
  import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
9
9
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
10
+ import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
11
+ import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
10
12
  import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
11
- import React, { useEffect, useRef, useState, Children, forwardRef } from 'react';
13
+ import React, { useEffect, useRef, useState, Children, forwardRef, useContext, isValidElement, useImperativeHandle } from 'react';
12
14
  import { createPopper } from '@popperjs/core';
13
15
  import { tuple } from '../_utils/type';
14
16
  import classnames from 'classnames';
@@ -16,16 +18,21 @@ import debounce from 'lodash/debounce';
16
18
  import ReactDOM from 'react-dom';
17
19
  import { isFragment } from '../_utils/reactNode';
18
20
  import { ConfigContext } from '../config-provider';
21
+ import { useMergedState } from '../_utils/hooks';
22
+ import useId from '../_utils/useId';
19
23
  export var Placements = tuple('top', 'left', 'right', 'bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom');
20
24
  export var Triggers = tuple('hover', 'focus', 'click', 'contextMenu');
21
25
  var useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
26
+ var TriggerContext = /*#__PURE__*/React.createContext(null);
22
27
  var generateGetBoundingClientRect = function generateGetBoundingClientRect() {
23
28
  var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
24
29
  var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
30
+ var width = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
31
+ var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
25
32
  return function () {
26
33
  return {
27
- width: 0,
28
- height: 0,
34
+ width: width,
35
+ height: height,
29
36
  top: y,
30
37
  right: x,
31
38
  bottom: y,
@@ -36,6 +43,7 @@ var generateGetBoundingClientRect = function generateGetBoundingClientRect() {
36
43
  var virtualElement = {
37
44
  getBoundingClientRect: generateGetBoundingClientRect()
38
45
  };
46
+ var triggerTypeArray = ['hover', 'focus', 'click', 'contextMenu'];
39
47
  export var popperPlacementMap = {
40
48
  top: 'top',
41
49
  left: 'left',
@@ -51,7 +59,7 @@ export var popperPlacementMap = {
51
59
  rightBottom: 'right-end'
52
60
  };
53
61
  var placementFlip = {
54
- bottom: 'bottom',
62
+ bottom: 'top',
55
63
  top: 'bottom',
56
64
  right: 'left',
57
65
  left: 'right'
@@ -74,29 +82,28 @@ var getFallbackPlacements = function getFallbackPlacements(key) {
74
82
  return f !== key;
75
83
  }));
76
84
  };
77
- var getRealDom = function getRealDom(locatorRef, locatorElement) {
85
+ var getRealDom = function getRealDom(locatorRef) {
86
+ var locatorElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
78
87
  var _a;
79
88
  if (!locatorRef.current) return locatorRef.current;
80
- var REF_NAME_OBJ = {
81
- Input: 'input',
82
- InputNumber: 'input',
83
- Select: 'select',
84
- Upload: 'input'
85
- };
86
89
  if (locatorRef.current.tagName) return locatorRef.current;
87
- var name = REF_NAME_OBJ[(_a = locatorElement === null || locatorElement === void 0 ? void 0 : locatorElement.type) === null || _a === void 0 ? void 0 : _a.displayName];
88
- return locatorRef === null || locatorRef === void 0 ? void 0 : locatorRef.current[name];
89
- };
90
- var isTarget = function isTarget(domRef, e, locatorElement) {
91
- var _a;
92
- if (domRef && (domRef === null || domRef === void 0 ? void 0 : domRef.current)) {
93
- var dom = getRealDom(domRef, locatorElement);
94
- return dom ? dom === e.target || ((_a = dom === null || dom === void 0 ? void 0 : dom.contains) === null || _a === void 0 ? void 0 : _a.call(dom, e.target)) : false;
90
+ if (locatorElement) {
91
+ var REF_NAME_OBJ = {
92
+ Input: 'input',
93
+ InputNumber: 'input',
94
+ Select: 'select',
95
+ Upload: 'input'
96
+ };
97
+ var name = REF_NAME_OBJ === null || REF_NAME_OBJ === void 0 ? void 0 : REF_NAME_OBJ[(_a = locatorElement === null || locatorElement === void 0 ? void 0 : locatorElement.type) === null || _a === void 0 ? void 0 : _a.displayName];
98
+ return locatorRef === null || locatorRef === void 0 ? void 0 : locatorRef.current[name];
95
99
  }
96
- return false;
100
+ return locatorElement;
101
+ };
102
+ var getElement = function getElement(element) {
103
+ return typeof element === 'function' ? element() : element;
97
104
  };
98
105
  export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
99
- var _context6, _context7, _context8;
106
+ var _context8, _context9, _context10;
100
107
  var _a;
101
108
  var _React$useContext = React.useContext(ConfigContext),
102
109
  getPrefixCls = _React$useContext.getPrefixCls,
@@ -138,40 +145,52 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
138
145
  getTriggerElement = _props$getTriggerElem === void 0 ? function (locatorNode) {
139
146
  return locatorNode;
140
147
  } : _props$getTriggerElem,
141
- getPopupContainer = props.getPopupContainer,
142
- _onTransitionEnd = props.onTransitionEnd,
143
- _onAnimationEnd = props.onAnimationEnd,
148
+ _props$getPopupContai = props.getPopupContainer,
149
+ getPopupContainer = _props$getPopupContai === void 0 ? function () {
150
+ return document.body;
151
+ } : _props$getPopupContai,
152
+ onTransitionEnd = props.onTransitionEnd,
153
+ onAnimationEnd = props.onAnimationEnd,
144
154
  children = props.children;
145
- // const trigger = 'click'
146
- // const arrow = false
147
155
  var popperPrefixCls = getPrefixCls(pkgPrefixCls, 'popper');
148
- var referenceContentCls = "".concat(popperPrefixCls, "-reference-content");
149
- var childrenInner = /*#__PURE__*/React.isValidElement(children) && !isFragment(children) ? children : /*#__PURE__*/React.createElement("span", null, children);
156
+ var referencePrefixCls = "".concat(popperPrefixCls, "-reference");
157
+ var child = getElement(children);
158
+ var childrenInner = /*#__PURE__*/isValidElement(child) && !isFragment(child) ? child : /*#__PURE__*/React.createElement("span", null, child);
159
+ var popperElement = getElement(tip);
150
160
  var referenceElement = Children.only(childrenInner);
151
- var popperElement = typeof tip === 'function' ? tip() : tip;
161
+ var id = useId();
162
+ var parentContext = useContext(TriggerContext);
163
+ var subPopupRefs = useRef({});
164
+ var context = React.useMemo(function () {
165
+ return {
166
+ registerSubPopup: function registerSubPopup(id, subPopupEle) {
167
+ subPopupRefs.current[id] = subPopupEle;
168
+ parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, subPopupEle);
169
+ }
170
+ };
171
+ }, [parentContext]);
172
+ var popperRefDom = useRef(null);
152
173
  var popperRefInner = useRef(null);
153
174
  var popperRef = ref || popperRefInner;
154
175
  var popperInstance = useRef(null);
155
- var referenceRef = useRef(null);
156
- // const referenceRef: any = referenceInnerRef
157
- var container = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer(getRealDom(referenceRef, referenceElement) || document.body)) || document.body;
158
- // console.log('referenceElement', container, children, referenceElement)
159
- var _useState = useState(typeof visible === 'undefined' ? defaultVisible : visible),
176
+ var referenceRefInner = useRef(null);
177
+ var referenceRef = (referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.ref) || referenceRefInner;
178
+ var container = getPopupContainer(getRealDom(referenceRef, referenceElement) || document.body) || document.body;
179
+ var _useMergedState = useMergedState(false, {
180
+ value: visible,
181
+ defaultValue: defaultVisible
182
+ }),
183
+ _useMergedState2 = _slicedToArray(_useMergedState, 2),
184
+ visibleInner = _useMergedState2[0],
185
+ setVisibleInner = _useMergedState2[1];
186
+ var _useState = useState(visibleInner),
160
187
  _useState2 = _slicedToArray(_useState, 2),
161
- visibleInner = _useState2[0],
162
- setVisibleInner = _useState2[1];
163
- var _useState3 = useState(visibleInner),
188
+ exist = _useState2[0],
189
+ setExist = _useState2[1];
190
+ var _useState3 = useState(getRealPlacement(placement)),
164
191
  _useState4 = _slicedToArray(_useState3, 2),
165
- exist = _useState4[0],
166
- setExist = _useState4[1];
167
- var _useState5 = useState(false),
168
- _useState6 = _slicedToArray(_useState5, 2),
169
- active = _useState6[0],
170
- setActive = _useState6[1];
171
- var _useState7 = useState(getRealPlacement(placement)),
172
- _useState8 = _slicedToArray(_useState7, 2),
173
- placementInner = _useState8[0],
174
- setPlacementInner = _useState8[1];
192
+ placementInner = _useState4[0],
193
+ setPlacementInner = _useState4[1];
175
194
  var delayRef = useRef();
176
195
  var clearDelay = function clearDelay() {
177
196
  if (typeof delayRef.current !== 'undefined') {
@@ -179,34 +198,64 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
179
198
  delayRef.current = null;
180
199
  }
181
200
  };
201
+ var changeVisible = function changeVisible(nextOpen) {
202
+ var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
203
+ if (visibleInner !== nextOpen) {
204
+ if (nextOpen && _includesInstanceProperty(triggerTypeArray).call(triggerTypeArray, triggerType)) {
205
+ onTrigger === null || onTrigger === void 0 ? void 0 : onTrigger(triggerType);
206
+ }
207
+ if (typeof visible === 'undefined') {
208
+ setVisibleInner(nextOpen);
209
+ }
210
+ onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);
211
+ }
212
+ if (!nextOpen && _Object$keys(subPopupRefs.current || {}).length) {
213
+ console.log('triggerOpenSub', subPopupRefs.current);
214
+ _Object$values(subPopupRefs.current).forEach(function (d) {
215
+ if (typeof (d === null || d === void 0 ? void 0 : d.triggerOpen) === 'function' && (d === null || d === void 0 ? void 0 : d.visible)) {
216
+ d === null || d === void 0 ? void 0 : d.triggerOpen(false);
217
+ }
218
+ });
219
+ }
220
+ };
182
221
  var triggerOpen = function triggerOpen(nextOpen) {
183
222
  var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
184
- var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0.1;
185
- console.log('triggerOpen', nextOpen, delay);
223
+ var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
186
224
  clearDelay();
187
- if (delay === 0) {
188
- if (visibleInner !== nextOpen) {
189
- if (nextOpen) {
190
- onTrigger === null || onTrigger === void 0 ? void 0 : onTrigger(triggerType);
191
- }
192
- if (typeof visible === 'undefined') {
193
- setVisibleInner(nextOpen);
225
+ if (!disabled) {
226
+ if (delay === 0) {
227
+ changeVisible(nextOpen, triggerType);
228
+ } else {
229
+ if (visibleInner !== nextOpen) {
230
+ delayRef.current = setTimeout(function () {
231
+ changeVisible(nextOpen, triggerType);
232
+ }, delay * 1000);
194
233
  }
195
- onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);
196
234
  }
197
- } else {
198
- if (visibleInner !== nextOpen) {
199
- delayRef.current = setTimeout(function () {
200
- if (nextOpen) {
201
- onTrigger === null || onTrigger === void 0 ? void 0 : onTrigger(triggerType);
202
- }
203
- if (typeof visible === 'undefined') {
204
- setVisibleInner(nextOpen);
205
- }
206
- onVisibleChange === null || onVisibleChange === void 0 ? void 0 : onVisibleChange(nextOpen);
207
- }, delay * 1000);
235
+ }
236
+ };
237
+ var isSubPopper = function isSubPopper(event) {
238
+ if (!event || !(event === null || event === void 0 ? void 0 : event.target)) {
239
+ return false;
240
+ }
241
+ // let targetElement: HTMLElement = event.target as HTMLElement
242
+ // const POP_ATTR_NAME = 'data-popper-placement'
243
+ // while (targetElement && targetElement !== document.documentElement) {
244
+ // if (targetElement?.getAttribute(POP_ATTR_NAME) && targetElement?.className.includes(popperPrefixCls)) {
245
+ // return true
246
+ // }
247
+ // targetElement = targetElement?.parentNode as HTMLElement
248
+ // }
249
+ var target = event.target;
250
+ if (subPopupRefs.current) {
251
+ for (var key in subPopupRefs.current) {
252
+ var dom = subPopupRefs.current[key].dom;
253
+ if (dom && ((dom === null || dom === void 0 ? void 0 : dom.contains(target)) || dom === target)) {
254
+ return true;
255
+ }
208
256
  }
209
257
  }
258
+ return false;
210
259
  };
211
260
  var onTriggerInner = function onTriggerInner(nextOpen, triggerType) {
212
261
  var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
@@ -214,43 +263,76 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
214
263
  };
215
264
  var onClick = function onClick(e) {
216
265
  var _a, _b;
217
- onTriggerInner(!visibleInner, 'click', 0);
266
+ e.stopPropagation();
267
+ onTriggerInner(!visibleInner, 'click');
218
268
  (_b = (_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);
219
269
  };
220
270
  var onFocus = function onFocus(e) {
221
271
  var _a, _b;
222
- onTriggerInner(true, 'focus', 0);
272
+ onTriggerInner(true, 'focus');
223
273
  (_b = (_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.onFocus) === null || _b === void 0 ? void 0 : _b.call(_a, e);
224
274
  };
225
275
  var onBlur = function onBlur(e) {
226
276
  var _a, _b;
227
- onTriggerInner(false, 'focus', 0);
277
+ onTriggerInner(false, 'focus');
228
278
  (_b = (_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.onBlur) === null || _b === void 0 ? void 0 : _b.call(_a, e);
229
279
  };
230
280
  var onContextMenu = function onContextMenu(e) {
231
281
  var _a, _b;
232
282
  e.preventDefault();
233
- virtualElement.getBoundingClientRect = generateGetBoundingClientRect(e.clientX, e.clientY);
234
- onTriggerInner(!visibleInner, 'contextMenu', 0);
283
+ var clientWidth = 0;
284
+ var clientHeight = 0;
285
+ if (arrow) {
286
+ if (_startsWithInstanceProperty(placementInner).call(placementInner, 'top') || _startsWithInstanceProperty(placementInner).call(placementInner, 'bottom')) {
287
+ var _context6;
288
+ if (!_includesInstanceProperty(_context6 = ['top', 'bottom']).call(_context6, placementInner)) {
289
+ clientWidth = 6 * arrowSize;
290
+ }
291
+ } else {
292
+ var _context7;
293
+ if (!_includesInstanceProperty(_context7 = ['right', 'left']).call(_context7, placementInner)) {
294
+ clientHeight = 6 * arrowSize;
295
+ }
296
+ }
297
+ }
298
+ virtualElement.getBoundingClientRect = generateGetBoundingClientRect(e.clientX, e.clientY, clientWidth, clientHeight);
299
+ onTriggerInner(!visibleInner, 'contextMenu');
235
300
  (_b = (_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.onContextMenu) === null || _b === void 0 ? void 0 : _b.call(_a, e);
236
301
  };
237
302
  var onMouseOver = function onMouseOver(e) {
238
303
  var _a, _b;
239
- console.log('onMouseOver');
240
304
  onTriggerInner(true, 'hover', mouseEnterDelay);
241
305
  (_b = (_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.onMouseOver) === null || _b === void 0 ? void 0 : _b.call(_a, e);
242
306
  };
243
307
  var onMouseLeave = function onMouseLeave(e) {
244
308
  var _a, _b;
245
- console.log('onMouseLeave');
246
309
  onTriggerInner(false, 'hover', mouseLeaveDelay);
247
310
  (_b = (_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, e);
248
311
  };
249
- useEffect(function () {
250
- if (typeof visible !== 'undefined') {
251
- setVisibleInner(visible);
312
+ var onPopperAnimationEnd = function onPopperAnimationEnd(e) {
313
+ onAnimationEnd === null || onAnimationEnd === void 0 ? void 0 : onAnimationEnd(e);
314
+ onTransitionEnd === null || onTransitionEnd === void 0 ? void 0 : onTransitionEnd(e);
315
+ };
316
+ var isTrigger = function isTrigger(triggerValue) {
317
+ return trigger === triggerValue || Array.isArray(trigger) && _includesInstanceProperty(trigger).call(trigger, triggerValue);
318
+ };
319
+ var triggerEventHandle = function triggerEventHandle(triggerNode) {
320
+ var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'addEventListener';
321
+ if (isTrigger('click')) {
322
+ triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('click', onClick);
323
+ }
324
+ if (isTrigger('focus')) {
325
+ triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('focus', onFocus);
326
+ triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('blur', onBlur);
252
327
  }
253
- }, [visible]);
328
+ if (isTrigger('contextMenu')) {
329
+ triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('contextmenu', onContextMenu);
330
+ }
331
+ if (isTrigger('hover')) {
332
+ triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('mouseover', onMouseOver);
333
+ triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('mouseleave', onMouseLeave);
334
+ }
335
+ };
254
336
  useEffect(function () {
255
337
  setPlacementInner(getRealPlacement(placement));
256
338
  }, [placement]);
@@ -258,9 +340,9 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
258
340
  var scrollHandle = debounce(function (e) {
259
341
  var _a, _b;
260
342
  if (visibleInner) {
261
- var isPopper = e.target === popperRef.current || ((_b = (_a = popperRef.current) === null || _a === void 0 ? void 0 : _a.contains) === null || _b === void 0 ? void 0 : _b.call(_a, e.target));
343
+ var isPopper = e.target === popperRefDom.current || ((_b = (_a = popperRefDom.current) === null || _a === void 0 ? void 0 : _a.contains) === null || _b === void 0 ? void 0 : _b.call(_a, e.target));
262
344
  if (scrollHidden && !isPopper) {
263
- triggerOpen(false);
345
+ triggerOpen(false, 'scroll');
264
346
  }
265
347
  }
266
348
  }, 10);
@@ -270,14 +352,18 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
270
352
  return function () {
271
353
  document.removeEventListener('scroll', scrollHandle, true);
272
354
  };
273
- }, [visibleInner, scrollHidden, popperRef]);
355
+ }, [visibleInner, scrollHidden, popperRefDom]);
274
356
  useEffect(function () {
275
357
  var clickHandle = debounce(function (e) {
358
+ var _a, _b, _c;
276
359
  if (visibleInner) {
277
- var isReference = isTarget(referenceRef, e, referenceElement) || isTarget(popperRef, e, referenceElement);
278
- console.log('click----', visibleInner, clickToClose, isReference);
279
- if (clickToClose && !isReference) {
280
- triggerOpen(false, '', 0);
360
+ var isPopper = popperRefDom.current ? popperRefDom.current === e.target || ((_b = (_a = popperRefDom.current).contains) === null || _b === void 0 ? void 0 : _b.call(_a, e.target)) : false;
361
+ var domReference = getRealDom(referenceRef, referenceElement);
362
+ var isReference = domReference ? domReference === e.target || ((_c = domReference === null || domReference === void 0 ? void 0 : domReference.contains) === null || _c === void 0 ? void 0 : _c.call(domReference, e.target)) : false;
363
+ var isTarget = trigger === 'contextMenu' ? isPopper : isPopper || isReference;
364
+ console.log('clickOutside', children, e.target, isPopper, isReference, subPopupRefs.current);
365
+ if (clickToClose && !isTarget && !isSubPopper(e)) {
366
+ triggerOpen(false, 'clickOutside', 0);
281
367
  }
282
368
  }
283
369
  }, 10);
@@ -287,30 +373,22 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
287
373
  return function () {
288
374
  document.removeEventListener('click', clickHandle, true);
289
375
  };
290
- }, [visibleInner, clickToClose, referenceRef, popperRef]);
376
+ }, [visibleInner, clickToClose, referenceRef, popperRefDom]);
291
377
  useEffect(function () {
292
378
  var realDom = getRealDom(referenceRef, referenceElement);
293
379
  var triggerNode = getTriggerElement(realDom);
294
- if (trigger === 'click') {
295
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.addEventListener('click', onClick);
296
- } else if (trigger === 'focus') {
297
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.addEventListener('focus', onFocus);
298
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.addEventListener('blur', onBlur);
299
- } else if (trigger === 'contextMenu') {
300
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.addEventListener('contextmenu', onContextMenu);
301
- } else {
302
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.addEventListener('mouseover', onMouseOver);
303
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.addEventListener('mouseleave', onMouseLeave);
304
- }
380
+ triggerEventHandle(triggerNode);
305
381
  return function () {
306
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.removeEventListener('click', onClick);
307
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.removeEventListener('focus', onClick);
308
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.removeEventListener('blur', onClick);
309
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.removeEventListener('contextmenu', onContextMenu);
310
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.removeEventListener('mouseover', onMouseOver);
311
- triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode.removeEventListener('mouseleave', onMouseLeave);
382
+ triggerEventHandle(triggerNode, 'removeEventListener');
383
+ };
384
+ }, [getTriggerElement, visibleInner, referenceElement, referenceRef, trigger]);
385
+ useImperativeHandle(popperRef, function () {
386
+ return {
387
+ dom: popperRefDom.current,
388
+ triggerOpen: triggerOpen,
389
+ visible: visibleInner
312
390
  };
313
- }, [getTriggerElement, visibleInner, referenceElement, referenceRef]);
391
+ });
314
392
  var popperModifiers = [{
315
393
  name: 'offset',
316
394
  options: {
@@ -320,23 +398,24 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
320
398
  name: 'preventOverflow',
321
399
  enabled: autoPlacement,
322
400
  options: {
323
- altBoundary: disabled,
324
401
  mainAxis: true
325
402
  }
326
403
  }, {
327
404
  name: 'flip',
328
405
  enabled: autoPlacement,
329
406
  options: {
330
- altBoundary: disabled,
331
407
  fallbackPlacements: autoPlacement ? getFallbackPlacements(placementInner) : undefined
332
408
  }
333
409
  }, {
334
410
  name: 'onUpdate',
335
411
  enabled: true,
336
412
  phase: 'afterWrite',
337
- fn: function fn(_ref) {
338
- var state = _ref.state;
339
- setPlacementInner(state.placement);
413
+ fn: function fn(d) {
414
+ var _ref = d === null || d === void 0 ? void 0 : d.state,
415
+ p = _ref.placement;
416
+ if (p !== placementInner) {
417
+ setPlacementInner(p);
418
+ }
340
419
  }
341
420
  }];
342
421
  var popperOptionsInner = {
@@ -346,73 +425,71 @@ export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
346
425
  };
347
426
  useEnhancedEffect(function () {
348
427
  var _a, _b;
349
- console.log('-----1', exist, popperInstance.current);
350
428
  if (visibleInner) {
351
429
  if (!exist) {
352
430
  setExist(true);
353
431
  } else {
354
- setActive(true);
355
- setTimeout(function () {
356
- return setActive(false);
357
- }, 1000);
358
432
  if (popperInstance.current) {
359
433
  (_a = popperInstance.current) === null || _a === void 0 ? void 0 : _a.setOptions(function (options) {
360
434
  return _extends(_extends({}, options), popperOptionsInner);
361
435
  });
362
436
  (_b = popperInstance.current) === null || _b === void 0 ? void 0 : _b.forceUpdate();
363
437
  }
438
+ setTimeout(function () {
439
+ parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, popperRef.current);
440
+ }, 10);
364
441
  }
365
442
  }
366
- }, [visibleInner, placementInner]);
443
+ }, [visibleInner, placementInner, arrow]);
367
444
  useEnhancedEffect(function () {
368
- console.log('-----2', exist);
369
- if (!exist || disabled) {
445
+ if (!exist) {
370
446
  return undefined;
371
447
  }
372
448
  var current = getRealDom(referenceRef, referenceElement);
373
449
  if (current) {
374
- popperInstance.current = createPopper(trigger === 'contextMenu' ? virtualElement : (current === null || current === void 0 ? void 0 : current.closest(".".concat(referenceContentCls))) || current, popperRef.current, popperOptionsInner);
450
+ popperInstance.current = createPopper(trigger === 'contextMenu' ? virtualElement : (current === null || current === void 0 ? void 0 : current.closest(".".concat(referencePrefixCls))) || current, popperRefDom.current, popperOptionsInner);
451
+ setTimeout(function () {
452
+ parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, popperRef.current);
453
+ }, 10);
375
454
  }
376
455
  return function () {
377
456
  var _a;
378
- console.log('-----3');
379
457
  (_a = popperInstance.current) === null || _a === void 0 ? void 0 : _a.destroy();
380
458
  };
381
- }, [exist, disabled]);
459
+ }, [exist]);
382
460
  if (children === null || typeof children === 'undefined') {
383
461
  return null;
384
462
  }
463
+ var arrowStyle = _defineProperty({}, "--arrowSize", arrowSize + 'px');
385
464
  var popperContainerProps = {
386
- ref: popperRef,
387
- className: classnames(popperPrefixCls, referenceContentCls, {
465
+ ref: popperRefDom,
466
+ style: _extends({}, arrow ? arrowStyle : {}),
467
+ className: classnames(popperPrefixCls, {
388
468
  hidden: !visibleInner
389
- }),
390
- onTransitionEnd: function onTransitionEnd(e) {
391
- return _onTransitionEnd === null || _onTransitionEnd === void 0 ? void 0 : _onTransitionEnd(e);
392
- }
469
+ })
393
470
  };
394
- var arrowStyle = _defineProperty({}, "--arrowSize", arrowSize + 'px');
395
471
  var popperProps = {
396
- className: classnames(["".concat(popperPrefixCls, "-content")], [_concatInstanceProperty(_context6 = "".concat(popperPrefixCls, "-")).call(_context6, placementInner)], _defineProperty({}, _concatInstanceProperty(_context7 = "".concat(popperPrefixCls, "-")).call(_context7, placementInner, "-out"), !visibleInner), _defineProperty({}, _concatInstanceProperty(_context8 = "".concat(popperPrefixCls, "-")).call(_context8, placementInner, "-in"), active), prefixCls, popperClassName, className),
397
- style: _extends(_extends(_extends({}, arrow ? arrowStyle : {}), popperStyle), style),
472
+ className: classnames([_concatInstanceProperty(_context8 = "".concat(popperPrefixCls, "-")).call(_context8, placementInner)], _defineProperty({}, _concatInstanceProperty(_context9 = "".concat(popperPrefixCls, "-")).call(_context9, placementInner, "-out"), !visibleInner), _defineProperty({}, _concatInstanceProperty(_context10 = "".concat(popperPrefixCls, "-")).call(_context10, placementInner, "-in"), visibleInner), prefixCls, popperClassName, className),
473
+ style: _extends(_extends({}, popperStyle), style),
398
474
  onMouseOver: trigger === 'hover' ? function () {
399
475
  return onTriggerInner(true, 'hover', mouseEnterDelay);
400
476
  } : undefined,
401
477
  onMouseLeave: trigger === 'hover' ? function () {
402
478
  return onTriggerInner(false, 'hover', mouseLeaveDelay);
403
479
  } : undefined,
404
- onAnimationEnd: function onAnimationEnd(e) {
405
- return _onAnimationEnd === null || _onAnimationEnd === void 0 ? void 0 : _onAnimationEnd(e);
406
- }
480
+ onAnimationEnd: onPopperAnimationEnd,
481
+ onTransitionEnd: onPopperAnimationEnd
407
482
  };
408
483
  var referenceProps = {
409
484
  ref: referenceRef,
410
- className: classnames((_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.className, referenceContentCls)
485
+ className: classnames((_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.className, referencePrefixCls)
411
486
  };
412
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.cloneElement(referenceElement, referenceProps), exist && container && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement("div", _extends({}, popperContainerProps), /*#__PURE__*/React.createElement("div", _extends({}, popperProps), popperElement, arrow && /*#__PURE__*/React.createElement("div", {
413
- className: 'arrow',
487
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.cloneElement(referenceElement, referenceProps), exist && container && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(TriggerContext.Provider, {
488
+ value: context
489
+ }, /*#__PURE__*/React.createElement("div", _extends({}, popperContainerProps), /*#__PURE__*/React.createElement("div", _extends({}, popperProps), popperElement, arrow && /*#__PURE__*/React.createElement("div", {
490
+ className: "arrow",
414
491
  "data-popper-arrow": ""
415
- }))), container));
492
+ })))), container));
416
493
  });
417
494
  Popper.displayName = 'Popper';
418
495
  export default Popper;
@@ -114,24 +114,23 @@
114
114
  .kd-popper.hidden {
115
115
  opacity: 0;
116
116
  visibility: hidden;
117
- -webkit-transition: all calc(0.3s - 0.1s);
118
- transition: all calc(0.3s - 0.1s);
119
117
  pointer-events: none;
120
118
  }
121
- .kd-popper-content .arrow {
119
+ .kd-popper .arrow {
122
120
  visibility: hidden;
123
121
  }
124
- .kd-popper-content .arrow::before {
122
+ .kd-popper .arrow::before {
125
123
  visibility: visible;
126
124
  position: absolute;
127
125
  border-style: solid;
126
+ border-color: transparent;
128
127
  border-width: var(--arrowSize);
129
128
  content: '';
130
129
  -webkit-transform: rotate(45deg);
131
130
  transform: rotate(45deg);
132
131
  }
133
132
  .kd-popper[data-popper-placement^='top'] .arrow {
134
- bottom: var(--arrowSize);
133
+ bottom: calc(0.9 * var(--arrowSize));
135
134
  }
136
135
  .kd-popper[data-popper-placement^='top'] .arrow::before {
137
136
  left: calc(-1 * var(--arrowSize));
@@ -139,7 +138,7 @@
139
138
  border-left-color: transparent;
140
139
  }
141
140
  .kd-popper[data-popper-placement^='bottom'] .arrow {
142
- top: calc(-1 * var(--arrowSize));
141
+ top: calc(-0.9 * var(--arrowSize));
143
142
  }
144
143
  .kd-popper[data-popper-placement^='bottom'] .arrow::before {
145
144
  left: calc(-1 * var(--arrowSize));
@@ -147,7 +146,7 @@
147
146
  border-right-color: transparent;
148
147
  }
149
148
  .kd-popper[data-popper-placement^='left'] .arrow {
150
- right: var(--arrowSize);
149
+ right: calc(0.9 * var(--arrowSize));
151
150
  }
152
151
  .kd-popper[data-popper-placement^='left'] .arrow::before {
153
152
  top: calc(-1 * var(--arrowSize));
@@ -155,7 +154,7 @@
155
154
  border-bottom-color: transparent;
156
155
  }
157
156
  .kd-popper[data-popper-placement^='right'] .arrow {
158
- left: calc(-1 * var(--arrowSize));
157
+ left: calc(-0.9 * var(--arrowSize));
159
158
  }
160
159
  .kd-popper[data-popper-placement^='right'] .arrow::before {
161
160
  top: calc(-1 * var(--arrowSize));
@@ -242,17 +241,17 @@
242
241
  -webkit-animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6);
243
242
  animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6);
244
243
  }
245
- .kd-popper-rightBottom {
244
+ .kd-popper-right-end {
246
245
  -webkit-animation-duration: calc(0.3s - 0.1s);
247
246
  animation-duration: calc(0.3s - 0.1s);
248
247
  }
249
- .kd-popper-rightBottom-in {
248
+ .kd-popper-right-end-in {
250
249
  -webkit-animation-name: kdZoomLeftBottomIn;
251
250
  animation-name: kdZoomLeftBottomIn;
252
251
  -webkit-animation-timing-function: cubic-bezier(0, 0.4, 0.4, 1);
253
252
  animation-timing-function: cubic-bezier(0, 0.4, 0.4, 1);
254
253
  }
255
- .kd-popper-rightBottom-out {
254
+ .kd-popper-right-end-out {
256
255
  -webkit-animation-name: kdZoomLeftBottomOut;
257
256
  animation-name: kdZoomLeftBottomOut;
258
257
  -webkit-animation-timing-function: cubic-bezier(0.4, 0, 1, 0.6);