@kdcloudjs/kdesign 1.7.68-stable.8 → 1.7.68-stable.9
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/CHANGELOG.md +33 -0
- package/dist/kdesign-complete.less +110 -0
- package/dist/kdesign.css +365 -1
- package/dist/kdesign.css.map +1 -1
- package/dist/kdesign.js +3876 -167
- package/dist/kdesign.js.map +1 -1
- package/dist/kdesign.min.css +3 -3
- package/dist/kdesign.min.js +12 -12
- package/dist/kdesign.min.js.map +1 -1
- package/es/_utils/useId.d.ts +2 -0
- package/es/_utils/useId.js +30 -0
- package/es/city-picker/city-picker.js +16 -28
- package/es/city-picker/option.js +1 -5
- package/es/city-picker/style/index.css +8 -0
- package/es/city-picker/style/index.less +10 -0
- package/es/config-provider/compDefaultProps.d.ts +0 -1
- package/es/config-provider/compDefaultProps.js +0 -1
- package/es/locale/locale.d.ts +1 -0
- package/es/locale/zh-CN.d.ts +1 -0
- package/es/locale/zh-CN.js +1 -0
- package/es/popper/index.d.ts +61 -0
- package/es/popper/index.js +550 -0
- package/es/popper/style/css.js +2 -0
- package/es/popper/style/index.css +355 -0
- package/es/popper/style/index.d.ts +2 -0
- package/es/popper/style/index.js +2 -0
- package/es/popper/style/index.less +99 -0
- package/lib/_utils/useId.d.ts +2 -0
- package/lib/_utils/useId.js +43 -0
- package/lib/city-picker/city-picker.js +16 -28
- package/lib/city-picker/option.js +1 -5
- package/lib/city-picker/style/index.css +8 -0
- package/lib/city-picker/style/index.less +10 -0
- package/lib/config-provider/compDefaultProps.d.ts +0 -1
- package/lib/config-provider/compDefaultProps.js +0 -1
- package/lib/locale/locale.d.ts +1 -0
- package/lib/locale/zh-CN.d.ts +1 -0
- package/lib/locale/zh-CN.js +1 -0
- package/lib/popper/index.d.ts +61 -0
- package/lib/popper/index.js +567 -0
- package/lib/popper/style/css.js +4 -0
- package/lib/popper/style/index.css +355 -0
- package/lib/popper/style/index.d.ts +2 -0
- package/lib/popper/style/index.js +4 -0
- package/lib/popper/style/index.less +99 -0
- package/lib/style/components.less +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/defineProperty";
|
|
2
|
+
import _extends from "@babel/runtime-corejs3/helpers/extends";
|
|
3
|
+
import _slicedToArray from "@babel/runtime-corejs3/helpers/slicedToArray";
|
|
4
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
5
|
+
import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
|
|
6
|
+
import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
|
|
7
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
8
|
+
import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
|
|
9
|
+
import _startsWithInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/starts-with";
|
|
10
|
+
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
|
|
11
|
+
import React, { useEffect, useRef, useState, Children, forwardRef, useContext, isValidElement, useImperativeHandle } from 'react';
|
|
12
|
+
import { createPopper } from '@popperjs/core';
|
|
13
|
+
import { tuple } from '../_utils/type';
|
|
14
|
+
import classnames from 'classnames';
|
|
15
|
+
import debounce from 'lodash/debounce';
|
|
16
|
+
import ReactDOM from 'react-dom';
|
|
17
|
+
import { isFragment } from '../_utils/reactNode';
|
|
18
|
+
import { ConfigContext } from '../config-provider';
|
|
19
|
+
import { useMergedState } from '../_utils/hooks';
|
|
20
|
+
import useId from '../_utils/useId';
|
|
21
|
+
export var Placements = tuple('top', 'left', 'right', 'bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom');
|
|
22
|
+
export var Triggers = tuple('hover', 'focus', 'click', 'contextMenu');
|
|
23
|
+
var useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
|
|
24
|
+
var TriggerContext = /*#__PURE__*/React.createContext(null);
|
|
25
|
+
var generateGetBoundingClientRect = function generateGetBoundingClientRect() {
|
|
26
|
+
var x = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
27
|
+
var y = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
|
28
|
+
var width = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
29
|
+
var height = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
30
|
+
return function () {
|
|
31
|
+
return {
|
|
32
|
+
width: width,
|
|
33
|
+
height: height,
|
|
34
|
+
top: y,
|
|
35
|
+
right: x,
|
|
36
|
+
bottom: y,
|
|
37
|
+
left: x
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var virtualElement = {
|
|
42
|
+
getBoundingClientRect: generateGetBoundingClientRect()
|
|
43
|
+
};
|
|
44
|
+
var triggerTypeArray = ['hover', 'focus', 'click', 'contextMenu'];
|
|
45
|
+
export var popperPlacementMap = {
|
|
46
|
+
top: 'top',
|
|
47
|
+
left: 'left',
|
|
48
|
+
right: 'right',
|
|
49
|
+
bottom: 'bottom',
|
|
50
|
+
topLeft: 'top-start',
|
|
51
|
+
topRight: 'top-end',
|
|
52
|
+
bottomLeft: 'bottom-start',
|
|
53
|
+
bottomRight: 'bottom-end',
|
|
54
|
+
leftTop: 'left-start',
|
|
55
|
+
leftBottom: 'left-end',
|
|
56
|
+
rightTop: 'right-start',
|
|
57
|
+
rightBottom: 'right-end'
|
|
58
|
+
};
|
|
59
|
+
var getRealPlacement = function getRealPlacement(key) {
|
|
60
|
+
return popperPlacementMap[key] ? popperPlacementMap[key] : 'top';
|
|
61
|
+
};
|
|
62
|
+
var getFallbackPlacementList = function getFallbackPlacementList(arr) {
|
|
63
|
+
var _context;
|
|
64
|
+
return _filterInstanceProperty(_context = _mapInstanceProperty(arr).call(arr, function (d) {
|
|
65
|
+
return popperPlacementMap[d] ? popperPlacementMap[d] : '';
|
|
66
|
+
})).call(_context, function (d) {
|
|
67
|
+
return d;
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
var getRealDom = function getRealDom(locatorRef) {
|
|
71
|
+
var locatorElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
|
|
72
|
+
var _a;
|
|
73
|
+
if (!locatorRef.current) return locatorRef.current;
|
|
74
|
+
if (locatorRef.current.tagName) return locatorRef.current;
|
|
75
|
+
if (locatorElement) {
|
|
76
|
+
var REF_NAME_OBJ = {
|
|
77
|
+
Input: 'input',
|
|
78
|
+
InputNumber: 'input',
|
|
79
|
+
Select: 'select',
|
|
80
|
+
Upload: 'input'
|
|
81
|
+
};
|
|
82
|
+
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];
|
|
83
|
+
return locatorRef === null || locatorRef === void 0 ? void 0 : locatorRef.current[name];
|
|
84
|
+
}
|
|
85
|
+
return locatorElement;
|
|
86
|
+
};
|
|
87
|
+
var getElement = function getElement(element) {
|
|
88
|
+
return typeof element === 'function' ? element() : element;
|
|
89
|
+
};
|
|
90
|
+
export var Popper = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
91
|
+
var _context4, _context5, _context6;
|
|
92
|
+
var _a;
|
|
93
|
+
var _React$useContext = React.useContext(ConfigContext),
|
|
94
|
+
getPrefixCls = _React$useContext.getPrefixCls,
|
|
95
|
+
pkgPrefixCls = _React$useContext.prefixCls;
|
|
96
|
+
var prefixCls = props.prefixCls,
|
|
97
|
+
onTrigger = props.onTrigger,
|
|
98
|
+
style = props.style,
|
|
99
|
+
popperStyle = props.popperStyle,
|
|
100
|
+
_props$arrow = props.arrow,
|
|
101
|
+
arrow = _props$arrow === void 0 ? false : _props$arrow,
|
|
102
|
+
onVisibleChange = props.onVisibleChange,
|
|
103
|
+
className = props.className,
|
|
104
|
+
popperClassName = props.popperClassName,
|
|
105
|
+
popperOuterClassName = props.popperOuterClassName,
|
|
106
|
+
popperOuterStyle = props.popperOuterStyle,
|
|
107
|
+
tip = props.tip,
|
|
108
|
+
_props$disabled = props.disabled,
|
|
109
|
+
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
110
|
+
_props$trigger = props.trigger,
|
|
111
|
+
trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
|
|
112
|
+
_props$placement = props.placement,
|
|
113
|
+
placement = _props$placement === void 0 ? 'top' : _props$placement,
|
|
114
|
+
_props$strategy = props.strategy,
|
|
115
|
+
strategy = _props$strategy === void 0 ? 'absolute' : _props$strategy,
|
|
116
|
+
visible = props.visible,
|
|
117
|
+
_props$arrowSize = props.arrowSize,
|
|
118
|
+
arrowSize = _props$arrowSize === void 0 ? 4.25 : _props$arrowSize,
|
|
119
|
+
_props$arrowOffset = props.arrowOffset,
|
|
120
|
+
arrowOffset = _props$arrowOffset === void 0 ? 12 : _props$arrowOffset,
|
|
121
|
+
_props$gap = props.gap,
|
|
122
|
+
defaultGap = _props$gap === void 0 ? 8 : _props$gap,
|
|
123
|
+
_props$scrollHidden = props.scrollHidden,
|
|
124
|
+
scrollHidden = _props$scrollHidden === void 0 ? false : _props$scrollHidden,
|
|
125
|
+
_props$mouseEnterDela = props.mouseEnterDelay,
|
|
126
|
+
mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.1 : _props$mouseEnterDela,
|
|
127
|
+
_props$mouseLeaveDela = props.mouseLeaveDelay,
|
|
128
|
+
mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,
|
|
129
|
+
_props$defaultVisible = props.defaultVisible,
|
|
130
|
+
defaultVisible = _props$defaultVisible === void 0 ? false : _props$defaultVisible,
|
|
131
|
+
_props$autoPlacement = props.autoPlacement,
|
|
132
|
+
autoPlacement = _props$autoPlacement === void 0 ? true : _props$autoPlacement,
|
|
133
|
+
autoPlacementList = props.autoPlacementList,
|
|
134
|
+
_props$clickToClose = props.clickToClose,
|
|
135
|
+
clickToClose = _props$clickToClose === void 0 ? true : _props$clickToClose,
|
|
136
|
+
_props$getTriggerElem = props.getTriggerElement,
|
|
137
|
+
getTriggerElement = _props$getTriggerElem === void 0 ? function (locatorNode) {
|
|
138
|
+
return locatorNode;
|
|
139
|
+
} : _props$getTriggerElem,
|
|
140
|
+
_props$getPopupContai = props.getPopupContainer,
|
|
141
|
+
getPopupContainer = _props$getPopupContai === void 0 ? function () {
|
|
142
|
+
return document.body;
|
|
143
|
+
} : _props$getPopupContai,
|
|
144
|
+
onTransitionEnd = props.onTransitionEnd,
|
|
145
|
+
onAnimationEnd = props.onAnimationEnd,
|
|
146
|
+
children = props.children,
|
|
147
|
+
customerModifiers = props.customerModifiers;
|
|
148
|
+
var popperPrefixCls = getPrefixCls(pkgPrefixCls, 'popper');
|
|
149
|
+
var referencePrefixCls = "".concat(popperPrefixCls, "-reference");
|
|
150
|
+
var child = getElement(children);
|
|
151
|
+
var childrenInner = /*#__PURE__*/isValidElement(child) && !isFragment(child) ? child : /*#__PURE__*/React.createElement("span", null, child);
|
|
152
|
+
var popperElement = getElement(tip);
|
|
153
|
+
var referenceElement = Children.only(childrenInner);
|
|
154
|
+
var arrowOffsetInner = arrowSize + arrowOffset;
|
|
155
|
+
var getArrowOffset = function getArrowOffset(popperSize, referenceSize, arr) {
|
|
156
|
+
var boundary = arrowOffsetInner * 2;
|
|
157
|
+
var offset;
|
|
158
|
+
if (referenceSize < boundary || popperSize < boundary) {
|
|
159
|
+
var o = Math.min(referenceSize, popperSize) / 2;
|
|
160
|
+
if (arr[1] === 'start') {
|
|
161
|
+
offset = o;
|
|
162
|
+
} else {
|
|
163
|
+
offset = Math.max(popperSize - o, 0);
|
|
164
|
+
}
|
|
165
|
+
} else {
|
|
166
|
+
if (arr[1] === 'start') {
|
|
167
|
+
offset = arrowOffsetInner;
|
|
168
|
+
} else {
|
|
169
|
+
offset = popperSize - arrowOffsetInner;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return offset;
|
|
173
|
+
};
|
|
174
|
+
var id = useId();
|
|
175
|
+
var parentContext = useContext(TriggerContext);
|
|
176
|
+
var subPopupRefs = useRef({});
|
|
177
|
+
var context = React.useMemo(function () {
|
|
178
|
+
return {
|
|
179
|
+
registerSubPopup: function registerSubPopup(id, subPopupEle) {
|
|
180
|
+
subPopupRefs.current[id] = subPopupEle;
|
|
181
|
+
parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, subPopupEle);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
}, [parentContext]);
|
|
185
|
+
var popperRefDom = useRef(null);
|
|
186
|
+
var popperRefInner = useRef(null);
|
|
187
|
+
var popperRef = ref || popperRefInner;
|
|
188
|
+
var popperInstance = useRef(null);
|
|
189
|
+
var referenceRefInner = useRef(null);
|
|
190
|
+
var onVisibleChangeRef = useRef(onVisibleChange);
|
|
191
|
+
var referenceRef = (referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.ref) || referenceRefInner;
|
|
192
|
+
var container = getPopupContainer(getRealDom(referenceRef, referenceElement) || document.body) || document.body;
|
|
193
|
+
var _useMergedState = useMergedState(false, {
|
|
194
|
+
value: visible,
|
|
195
|
+
defaultValue: defaultVisible
|
|
196
|
+
}),
|
|
197
|
+
_useMergedState2 = _slicedToArray(_useMergedState, 2),
|
|
198
|
+
visibleInner = _useMergedState2[0],
|
|
199
|
+
setVisibleInner = _useMergedState2[1];
|
|
200
|
+
var _useState = useState(visibleInner),
|
|
201
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
202
|
+
exist = _useState2[0],
|
|
203
|
+
setExist = _useState2[1];
|
|
204
|
+
var _useState3 = useState(getRealPlacement(placement)),
|
|
205
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
206
|
+
placementInner = _useState4[0],
|
|
207
|
+
setPlacementInner = _useState4[1];
|
|
208
|
+
var delayRef = useRef();
|
|
209
|
+
var clearDelay = function clearDelay() {
|
|
210
|
+
if (typeof delayRef.current !== 'undefined') {
|
|
211
|
+
clearTimeout(delayRef.current);
|
|
212
|
+
delayRef.current = null;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
var changeVisible = function changeVisible(nextOpen) {
|
|
216
|
+
var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
|
|
217
|
+
var _a;
|
|
218
|
+
if (visibleInner !== nextOpen) {
|
|
219
|
+
if (nextOpen && _includesInstanceProperty(triggerTypeArray).call(triggerTypeArray, triggerType)) {
|
|
220
|
+
onTrigger === null || onTrigger === void 0 ? void 0 : onTrigger(triggerType);
|
|
221
|
+
}
|
|
222
|
+
if (typeof visible === 'undefined') {
|
|
223
|
+
setVisibleInner(nextOpen);
|
|
224
|
+
}
|
|
225
|
+
(_a = onVisibleChangeRef.current) === null || _a === void 0 ? void 0 : _a.call(onVisibleChangeRef, nextOpen, triggerType);
|
|
226
|
+
}
|
|
227
|
+
if (!nextOpen && _Object$keys(subPopupRefs.current || {}).length) {
|
|
228
|
+
_Object$values(subPopupRefs.current).forEach(function (d) {
|
|
229
|
+
if (typeof (d === null || d === void 0 ? void 0 : d.triggerOpen) === 'function' && (d === null || d === void 0 ? void 0 : d.visible)) {
|
|
230
|
+
d === null || d === void 0 ? void 0 : d.triggerOpen(false, 'parentHidden');
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
var triggerOpen = function triggerOpen(nextOpen) {
|
|
236
|
+
var triggerType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'unknown';
|
|
237
|
+
var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
|
|
238
|
+
clearDelay();
|
|
239
|
+
if (!disabled) {
|
|
240
|
+
if (delay === 0) {
|
|
241
|
+
changeVisible(nextOpen, triggerType);
|
|
242
|
+
} else {
|
|
243
|
+
if (visibleInner !== nextOpen) {
|
|
244
|
+
delayRef.current = setTimeout(function () {
|
|
245
|
+
changeVisible(nextOpen, triggerType);
|
|
246
|
+
}, delay * 1000);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
var isSubPopper = function isSubPopper(event) {
|
|
252
|
+
if (!event || !(event === null || event === void 0 ? void 0 : event.target)) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
// let targetElement: HTMLElement = event.target as HTMLElement
|
|
256
|
+
// const POP_ATTR_NAME = 'data-popper-placement'
|
|
257
|
+
// while (targetElement && targetElement !== document.documentElement) {
|
|
258
|
+
// if (targetElement?.getAttribute(POP_ATTR_NAME) && targetElement?.className.includes(popperPrefixCls)) {
|
|
259
|
+
// return true
|
|
260
|
+
// }
|
|
261
|
+
// targetElement = targetElement?.parentNode as HTMLElement
|
|
262
|
+
// }
|
|
263
|
+
var target = event.target;
|
|
264
|
+
if (subPopupRefs.current) {
|
|
265
|
+
for (var key in subPopupRefs.current) {
|
|
266
|
+
var dom = subPopupRefs.current[key].dom;
|
|
267
|
+
if (dom && ((dom === null || dom === void 0 ? void 0 : dom.contains(target)) || dom === target)) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return false;
|
|
273
|
+
};
|
|
274
|
+
var onTriggerInner = function onTriggerInner(nextOpen, triggerType) {
|
|
275
|
+
var delay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;
|
|
276
|
+
triggerOpen(nextOpen, triggerType, delay);
|
|
277
|
+
};
|
|
278
|
+
var onClick = function onClick() {
|
|
279
|
+
if (clickToClose || !visibleInner) {
|
|
280
|
+
onTriggerInner(!visibleInner, 'click');
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
var onFocus = function onFocus() {
|
|
284
|
+
onTriggerInner(true, 'focus');
|
|
285
|
+
};
|
|
286
|
+
var onBlur = function onBlur() {
|
|
287
|
+
onTriggerInner(false, 'focus');
|
|
288
|
+
};
|
|
289
|
+
var onContextMenu = function onContextMenu(e) {
|
|
290
|
+
e.preventDefault();
|
|
291
|
+
var clientWidth = 0;
|
|
292
|
+
var clientHeight = 0;
|
|
293
|
+
if (arrow) {
|
|
294
|
+
if (_startsWithInstanceProperty(placementInner).call(placementInner, 'top') || _startsWithInstanceProperty(placementInner).call(placementInner, 'bottom')) {
|
|
295
|
+
var _context2;
|
|
296
|
+
if (!_includesInstanceProperty(_context2 = ['top', 'bottom']).call(_context2, placementInner)) {
|
|
297
|
+
clientWidth = 6 * arrowSize;
|
|
298
|
+
}
|
|
299
|
+
} else {
|
|
300
|
+
var _context3;
|
|
301
|
+
if (!_includesInstanceProperty(_context3 = ['right', 'left']).call(_context3, placementInner)) {
|
|
302
|
+
clientHeight = 6 * arrowSize;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
virtualElement.getBoundingClientRect = generateGetBoundingClientRect(e.clientX, e.clientY, clientWidth, clientHeight);
|
|
307
|
+
onTriggerInner(!visibleInner, 'contextMenu');
|
|
308
|
+
};
|
|
309
|
+
var onMouseOver = function onMouseOver() {
|
|
310
|
+
onTriggerInner(true, 'hover', mouseEnterDelay);
|
|
311
|
+
};
|
|
312
|
+
var onMouseLeave = function onMouseLeave() {
|
|
313
|
+
onTriggerInner(false, 'hover', mouseLeaveDelay);
|
|
314
|
+
};
|
|
315
|
+
var onPopperAnimationEnd = function onPopperAnimationEnd(e) {
|
|
316
|
+
onAnimationEnd === null || onAnimationEnd === void 0 ? void 0 : onAnimationEnd(e);
|
|
317
|
+
onTransitionEnd === null || onTransitionEnd === void 0 ? void 0 : onTransitionEnd(e);
|
|
318
|
+
};
|
|
319
|
+
var isTrigger = function isTrigger(triggerValue) {
|
|
320
|
+
return trigger === triggerValue || Array.isArray(trigger) && _includesInstanceProperty(trigger).call(trigger, triggerValue);
|
|
321
|
+
};
|
|
322
|
+
var triggerEventHandle = function triggerEventHandle(triggerNode) {
|
|
323
|
+
var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'addEventListener';
|
|
324
|
+
if (isTrigger('click')) {
|
|
325
|
+
triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('click', onClick);
|
|
326
|
+
}
|
|
327
|
+
if (isTrigger('focus')) {
|
|
328
|
+
triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('focus', onFocus);
|
|
329
|
+
triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('blur', onBlur);
|
|
330
|
+
}
|
|
331
|
+
if (isTrigger('contextMenu')) {
|
|
332
|
+
triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('contextmenu', onContextMenu);
|
|
333
|
+
}
|
|
334
|
+
if (isTrigger('hover')) {
|
|
335
|
+
triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('mouseover', onMouseOver);
|
|
336
|
+
triggerNode === null || triggerNode === void 0 ? void 0 : triggerNode[type]('mouseleave', onMouseLeave);
|
|
337
|
+
}
|
|
338
|
+
};
|
|
339
|
+
useEffect(function () {
|
|
340
|
+
onVisibleChangeRef.current = onVisibleChange;
|
|
341
|
+
}, [onVisibleChange]);
|
|
342
|
+
useEffect(function () {
|
|
343
|
+
setPlacementInner(getRealPlacement(placement));
|
|
344
|
+
}, [placement]);
|
|
345
|
+
useEffect(function () {
|
|
346
|
+
var scrollHandle = debounce(function (e) {
|
|
347
|
+
var _a, _b;
|
|
348
|
+
if (visibleInner) {
|
|
349
|
+
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));
|
|
350
|
+
if (scrollHidden && !isPopper) {
|
|
351
|
+
triggerOpen(false, 'scroll');
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}, 10);
|
|
355
|
+
if (visibleInner) {
|
|
356
|
+
document.addEventListener('scroll', scrollHandle, true);
|
|
357
|
+
}
|
|
358
|
+
return function () {
|
|
359
|
+
document.removeEventListener('scroll', scrollHandle, true);
|
|
360
|
+
};
|
|
361
|
+
}, [visibleInner, scrollHidden, popperRefDom]);
|
|
362
|
+
useEffect(function () {
|
|
363
|
+
var clickHandle = debounce(function (e) {
|
|
364
|
+
var _a, _b, _c;
|
|
365
|
+
if (visibleInner) {
|
|
366
|
+
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;
|
|
367
|
+
var domReference = getRealDom(referenceRef, referenceElement);
|
|
368
|
+
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;
|
|
369
|
+
var isTarget = isPopper || isReference;
|
|
370
|
+
if (!isTarget && !isSubPopper(e)) {
|
|
371
|
+
triggerOpen(false, 'clickOutside', 0);
|
|
372
|
+
}
|
|
373
|
+
if (clickToClose && isReference && trigger !== 'focus') {
|
|
374
|
+
triggerOpen(false, 'clickToClose', 0);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}, 10, {
|
|
378
|
+
leading: true
|
|
379
|
+
});
|
|
380
|
+
if (visibleInner) {
|
|
381
|
+
document.addEventListener('click', clickHandle, true);
|
|
382
|
+
}
|
|
383
|
+
return function () {
|
|
384
|
+
document.removeEventListener('click', clickHandle, true);
|
|
385
|
+
};
|
|
386
|
+
}, [visibleInner, clickToClose, referenceRef, popperRefDom]);
|
|
387
|
+
useEffect(function () {
|
|
388
|
+
var realDom = getRealDom(referenceRef, referenceElement);
|
|
389
|
+
var triggerNode = getTriggerElement(realDom);
|
|
390
|
+
triggerEventHandle(triggerNode);
|
|
391
|
+
return function () {
|
|
392
|
+
triggerEventHandle(triggerNode, 'removeEventListener');
|
|
393
|
+
};
|
|
394
|
+
}, [getTriggerElement, visibleInner, referenceElement, referenceRef, trigger]);
|
|
395
|
+
useImperativeHandle(popperRef, function () {
|
|
396
|
+
return {
|
|
397
|
+
dom: popperRefDom.current,
|
|
398
|
+
triggerOpen: triggerOpen,
|
|
399
|
+
visible: visibleInner
|
|
400
|
+
};
|
|
401
|
+
});
|
|
402
|
+
var defaultModifiers = [{
|
|
403
|
+
name: 'offset',
|
|
404
|
+
options: {
|
|
405
|
+
offset: [0, defaultGap + (arrow ? 5 : 0)]
|
|
406
|
+
}
|
|
407
|
+
}, {
|
|
408
|
+
name: 'preventOverflow',
|
|
409
|
+
enabled: autoPlacement && !_includesInstanceProperty(placementInner).call(placementInner, '-'),
|
|
410
|
+
options: {
|
|
411
|
+
mainAxis: true
|
|
412
|
+
}
|
|
413
|
+
}, {
|
|
414
|
+
name: 'flip',
|
|
415
|
+
enabled: autoPlacement,
|
|
416
|
+
options: {
|
|
417
|
+
fallbackPlacements: Array.isArray(autoPlacementList) ? getFallbackPlacementList(autoPlacementList) : undefined
|
|
418
|
+
}
|
|
419
|
+
}, {
|
|
420
|
+
name: 'applyArrowOffset',
|
|
421
|
+
enabled: true,
|
|
422
|
+
phase: 'write',
|
|
423
|
+
fn: function fn(data) {
|
|
424
|
+
var _data$state = data.state,
|
|
425
|
+
arrow = _data$state.elements.arrow,
|
|
426
|
+
placement = _data$state.placement,
|
|
427
|
+
_data$state$rects = _data$state.rects,
|
|
428
|
+
popper = _data$state$rects.popper,
|
|
429
|
+
reference = _data$state$rects.reference;
|
|
430
|
+
if (arrow) {
|
|
431
|
+
var arr = placement.split('-');
|
|
432
|
+
var offset;
|
|
433
|
+
if (arr.length === 2) {
|
|
434
|
+
switch (arr[0]) {
|
|
435
|
+
case 'bottom':
|
|
436
|
+
offset = getArrowOffset(popper.width, reference.width, arr);
|
|
437
|
+
if (offset) {
|
|
438
|
+
arrow.style.transform = "translate(".concat(offset, "px, 0px)");
|
|
439
|
+
}
|
|
440
|
+
break;
|
|
441
|
+
case 'left':
|
|
442
|
+
offset = getArrowOffset(popper.height, reference.height, arr);
|
|
443
|
+
if (offset) {
|
|
444
|
+
arrow.style.transform = "translate(0px, ".concat(offset, "px)");
|
|
445
|
+
}
|
|
446
|
+
break;
|
|
447
|
+
case 'right':
|
|
448
|
+
offset = getArrowOffset(popper.height, reference.height, arr);
|
|
449
|
+
if (offset) {
|
|
450
|
+
arrow.style.transform = "translate(0px, ".concat(offset, "px)");
|
|
451
|
+
}
|
|
452
|
+
break;
|
|
453
|
+
default:
|
|
454
|
+
offset = getArrowOffset(popper.width, reference.width, arr);
|
|
455
|
+
if (offset) {
|
|
456
|
+
arrow.style.transform = "translate(".concat(offset, "px, 0px)");
|
|
457
|
+
}
|
|
458
|
+
break;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}, {
|
|
464
|
+
name: 'onUpdate',
|
|
465
|
+
enabled: true,
|
|
466
|
+
phase: 'afterWrite',
|
|
467
|
+
fn: function fn(d) {
|
|
468
|
+
var _ref = d === null || d === void 0 ? void 0 : d.state,
|
|
469
|
+
p = _ref.placement;
|
|
470
|
+
if (p !== placementInner) {
|
|
471
|
+
setPlacementInner(p);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}];
|
|
475
|
+
var popperModifiers = typeof customerModifiers === 'function' ? customerModifiers(defaultModifiers) : defaultModifiers;
|
|
476
|
+
var popperOptionsInner = {
|
|
477
|
+
placement: placementInner,
|
|
478
|
+
modifiers: popperModifiers,
|
|
479
|
+
strategy: strategy
|
|
480
|
+
};
|
|
481
|
+
useEnhancedEffect(function () {
|
|
482
|
+
var _a, _b;
|
|
483
|
+
if (visibleInner) {
|
|
484
|
+
if (!exist) {
|
|
485
|
+
setExist(true);
|
|
486
|
+
} else {
|
|
487
|
+
if (popperInstance.current) {
|
|
488
|
+
(_a = popperInstance.current) === null || _a === void 0 ? void 0 : _a.setOptions(function (options) {
|
|
489
|
+
return _extends(_extends({}, options), popperOptionsInner);
|
|
490
|
+
});
|
|
491
|
+
(_b = popperInstance.current) === null || _b === void 0 ? void 0 : _b.forceUpdate();
|
|
492
|
+
}
|
|
493
|
+
setTimeout(function () {
|
|
494
|
+
parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, popperRef.current);
|
|
495
|
+
}, 10);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
}, [visibleInner, placementInner, arrow]);
|
|
499
|
+
useEnhancedEffect(function () {
|
|
500
|
+
if (!exist) {
|
|
501
|
+
return undefined;
|
|
502
|
+
}
|
|
503
|
+
var current = getRealDom(referenceRef, referenceElement);
|
|
504
|
+
if (current) {
|
|
505
|
+
popperInstance.current = createPopper(trigger === 'contextMenu' ? virtualElement : (current === null || current === void 0 ? void 0 : current.closest(".".concat(referencePrefixCls))) || current, popperRefDom.current, popperOptionsInner);
|
|
506
|
+
setTimeout(function () {
|
|
507
|
+
parentContext === null || parentContext === void 0 ? void 0 : parentContext.registerSubPopup(id, popperRef.current);
|
|
508
|
+
}, 10);
|
|
509
|
+
}
|
|
510
|
+
return function () {
|
|
511
|
+
var _a;
|
|
512
|
+
(_a = popperInstance.current) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
513
|
+
};
|
|
514
|
+
}, [exist]);
|
|
515
|
+
if (children === null || typeof children === 'undefined') {
|
|
516
|
+
return null;
|
|
517
|
+
}
|
|
518
|
+
var arrowStyle = _defineProperty({}, "--arrowSize", arrowSize + 'px');
|
|
519
|
+
var popperContainerProps = {
|
|
520
|
+
ref: popperRefDom,
|
|
521
|
+
style: _extends(_extends({}, arrow ? arrowStyle : {}), popperOuterStyle),
|
|
522
|
+
className: classnames(popperPrefixCls, {
|
|
523
|
+
hidden: !visibleInner
|
|
524
|
+
}, popperOuterClassName)
|
|
525
|
+
};
|
|
526
|
+
var popperProps = {
|
|
527
|
+
className: classnames([_concatInstanceProperty(_context4 = "".concat(popperPrefixCls, "-")).call(_context4, placementInner)], _defineProperty({}, _concatInstanceProperty(_context5 = "".concat(popperPrefixCls, "-")).call(_context5, placementInner, "-out"), !visibleInner), _defineProperty({}, _concatInstanceProperty(_context6 = "".concat(popperPrefixCls, "-")).call(_context6, placementInner, "-in"), visibleInner), prefixCls, popperClassName, className),
|
|
528
|
+
style: _extends(_extends({}, popperStyle), style),
|
|
529
|
+
onMouseOver: trigger === 'hover' ? function () {
|
|
530
|
+
return onTriggerInner(true, 'hover', mouseEnterDelay);
|
|
531
|
+
} : undefined,
|
|
532
|
+
onMouseLeave: trigger === 'hover' ? function () {
|
|
533
|
+
return onTriggerInner(false, 'hover', mouseLeaveDelay);
|
|
534
|
+
} : undefined,
|
|
535
|
+
onAnimationEnd: onPopperAnimationEnd,
|
|
536
|
+
onTransitionEnd: onPopperAnimationEnd
|
|
537
|
+
};
|
|
538
|
+
var referenceProps = {
|
|
539
|
+
ref: referenceRef,
|
|
540
|
+
className: classnames((_a = referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.props) === null || _a === void 0 ? void 0 : _a.className, referencePrefixCls)
|
|
541
|
+
};
|
|
542
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.cloneElement(referenceElement, referenceProps), exist && container && /*#__PURE__*/ReactDOM.createPortal( /*#__PURE__*/React.createElement(TriggerContext.Provider, {
|
|
543
|
+
value: context
|
|
544
|
+
}, /*#__PURE__*/React.createElement("div", _extends({}, popperContainerProps), /*#__PURE__*/React.createElement("div", _extends({}, popperProps), popperElement, arrow && /*#__PURE__*/React.createElement("div", {
|
|
545
|
+
className: "arrow",
|
|
546
|
+
"data-popper-arrow": ""
|
|
547
|
+
})))), container));
|
|
548
|
+
});
|
|
549
|
+
Popper.displayName = 'Popper';
|
|
550
|
+
export default Popper;
|