@rc-component/trigger 3.6.11 → 3.6.13

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.
@@ -26,6 +26,14 @@ const UniqueBody = props => {
26
26
  // ========================= Styles =========================
27
27
  const offsetStyle = useOffsetStyle(isMobile, ready, open, align, offsetR, offsetB, offsetX, offsetY);
28
28
 
29
+ // Cache for offsetStyle when ready is true
30
+ const cachedOffsetStyleRef = React.useRef(offsetStyle);
31
+
32
+ // Update cached offset style when ready is true
33
+ if (ready) {
34
+ cachedOffsetStyleRef.current = offsetStyle;
35
+ }
36
+
29
37
  // Apply popup size if available
30
38
  const sizeStyle = {};
31
39
  if (popupSize) {
@@ -57,7 +65,7 @@ const UniqueBody = props => {
57
65
  style: {
58
66
  '--arrow-x': `${arrowPos?.x || 0}px`,
59
67
  '--arrow-y': `${arrowPos?.y || 0}px`,
60
- ...offsetStyle,
68
+ ...cachedOffsetStyleRef.current,
61
69
  ...sizeStyle,
62
70
  ...motionStyle,
63
71
  ...uniqueBgStyle
@@ -72,18 +72,18 @@ const UniqueProvider = ({
72
72
  // scaleX - not used in UniqueProvider
73
73
  ,,
74
74
  // scaleY - not used in UniqueProvider
75
- alignInfo, onAlign] = useAlign(open, popupEle, options?.target, options?.popupPlacement, options?.builtinPlacements || {}, options?.popupAlign, undefined,
75
+ alignInfo, onAlign] = useAlign(open, popupEle, mergedOptions?.target, mergedOptions?.popupPlacement, mergedOptions?.builtinPlacements || {}, mergedOptions?.popupAlign, undefined,
76
76
  // onPopupAlign
77
77
  false // isMobile
78
78
  );
79
79
  const alignedClassName = React.useMemo(() => {
80
- if (!options) {
80
+ if (!mergedOptions) {
81
81
  return '';
82
82
  }
83
- const baseClassName = getAlignPopupClassName(options.builtinPlacements || {}, options.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider
83
+ const baseClassName = getAlignPopupClassName(mergedOptions.builtinPlacements || {}, mergedOptions.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider
84
84
  );
85
- return classNames(baseClassName, options.getPopupClassNameFromAlign?.(alignInfo));
86
- }, [alignInfo, options?.getPopupClassNameFromAlign, options?.builtinPlacements, options?.prefixCls]);
85
+ return classNames(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
86
+ }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);
87
87
  const contextValue = React.useMemo(() => ({
88
88
  show,
89
89
  hide
@@ -109,7 +109,7 @@ const UniqueProvider = ({
109
109
  const prefixCls = mergedOptions?.prefixCls;
110
110
  return /*#__PURE__*/React.createElement(UniqueContext.Provider, {
111
111
  value: contextValue
112
- }, children, options && /*#__PURE__*/React.createElement(TriggerContext.Provider, {
112
+ }, children, mergedOptions && /*#__PURE__*/React.createElement(TriggerContext.Provider, {
113
113
  value: triggerContextValue
114
114
  }, /*#__PURE__*/React.createElement(Popup, {
115
115
  ref: setPopupRef,
package/es/index.js CHANGED
@@ -190,9 +190,9 @@ export function generateTrigger(PortalComponent = Portal) {
190
190
  useLayoutEffect(() => {
191
191
  if (uniqueContext && unique && targetEle && !openUncontrolled && !parentContext) {
192
192
  if (mergedOpen) {
193
- uniqueContext.show(getUniqueOptions(0), isOpen);
193
+ uniqueContext.show(getUniqueOptions(mouseEnterDelay), isOpen);
194
194
  } else {
195
- uniqueContext.hide(0);
195
+ uniqueContext.hide(mouseLeaveDelay);
196
196
  }
197
197
  }
198
198
  }, [mergedOpen, targetEle]);
@@ -33,6 +33,14 @@ const UniqueBody = props => {
33
33
  // ========================= Styles =========================
34
34
  const offsetStyle = (0, _useOffsetStyle.default)(isMobile, ready, open, align, offsetR, offsetB, offsetX, offsetY);
35
35
 
36
+ // Cache for offsetStyle when ready is true
37
+ const cachedOffsetStyleRef = _react.default.useRef(offsetStyle);
38
+
39
+ // Update cached offset style when ready is true
40
+ if (ready) {
41
+ cachedOffsetStyleRef.current = offsetStyle;
42
+ }
43
+
36
44
  // Apply popup size if available
37
45
  const sizeStyle = {};
38
46
  if (popupSize) {
@@ -64,7 +72,7 @@ const UniqueBody = props => {
64
72
  style: {
65
73
  '--arrow-x': `${arrowPos?.x || 0}px`,
66
74
  '--arrow-y': `${arrowPos?.y || 0}px`,
67
- ...offsetStyle,
75
+ ...cachedOffsetStyleRef.current,
68
76
  ...sizeStyle,
69
77
  ...motionStyle,
70
78
  ...uniqueBgStyle
@@ -81,18 +81,18 @@ const UniqueProvider = ({
81
81
  // scaleX - not used in UniqueProvider
82
82
  ,,
83
83
  // scaleY - not used in UniqueProvider
84
- alignInfo, onAlign] = (0, _useAlign.default)(open, popupEle, options?.target, options?.popupPlacement, options?.builtinPlacements || {}, options?.popupAlign, undefined,
84
+ alignInfo, onAlign] = (0, _useAlign.default)(open, popupEle, mergedOptions?.target, mergedOptions?.popupPlacement, mergedOptions?.builtinPlacements || {}, mergedOptions?.popupAlign, undefined,
85
85
  // onPopupAlign
86
86
  false // isMobile
87
87
  );
88
88
  const alignedClassName = React.useMemo(() => {
89
- if (!options) {
89
+ if (!mergedOptions) {
90
90
  return '';
91
91
  }
92
- const baseClassName = (0, _util2.getAlignPopupClassName)(options.builtinPlacements || {}, options.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider
92
+ const baseClassName = (0, _util2.getAlignPopupClassName)(mergedOptions.builtinPlacements || {}, mergedOptions.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider
93
93
  );
94
- return (0, _classnames.default)(baseClassName, options.getPopupClassNameFromAlign?.(alignInfo));
95
- }, [alignInfo, options?.getPopupClassNameFromAlign, options?.builtinPlacements, options?.prefixCls]);
94
+ return (0, _classnames.default)(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
95
+ }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);
96
96
  const contextValue = React.useMemo(() => ({
97
97
  show,
98
98
  hide
@@ -118,7 +118,7 @@ const UniqueProvider = ({
118
118
  const prefixCls = mergedOptions?.prefixCls;
119
119
  return /*#__PURE__*/React.createElement(_context.UniqueContext.Provider, {
120
120
  value: contextValue
121
- }, children, options && /*#__PURE__*/React.createElement(_context.default.Provider, {
121
+ }, children, mergedOptions && /*#__PURE__*/React.createElement(_context.default.Provider, {
122
122
  value: triggerContextValue
123
123
  }, /*#__PURE__*/React.createElement(_Popup.default, {
124
124
  ref: setPopupRef,
package/lib/index.js CHANGED
@@ -204,9 +204,9 @@ function generateTrigger(PortalComponent = _portal.default) {
204
204
  (0, _useLayoutEffect.default)(() => {
205
205
  if (uniqueContext && unique && targetEle && !openUncontrolled && !parentContext) {
206
206
  if (mergedOpen) {
207
- uniqueContext.show(getUniqueOptions(0), isOpen);
207
+ uniqueContext.show(getUniqueOptions(mouseEnterDelay), isOpen);
208
208
  } else {
209
- uniqueContext.hide(0);
209
+ uniqueContext.hide(mouseLeaveDelay);
210
210
  }
211
211
  }
212
212
  }, [mergedOpen, targetEle]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/trigger",
3
- "version": "3.6.11",
3
+ "version": "3.6.13",
4
4
  "description": "base abstract trigger component for react",
5
5
  "engines": {
6
6
  "node": ">=8.x"