@rc-component/trigger 3.6.10 → 3.6.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.
@@ -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
@@ -1,6 +1,9 @@
1
1
  import * as React from 'react';
2
+ import { type UniqueShowOptions } from '../context';
2
3
  export interface UniqueProviderProps {
3
4
  children: React.ReactNode;
5
+ /** Additional handle options data to do the customize info */
6
+ postTriggerProps?: (options: UniqueShowOptions) => UniqueShowOptions;
4
7
  }
5
- declare const UniqueProvider: ({ children }: UniqueProviderProps) => React.JSX.Element;
8
+ declare const UniqueProvider: ({ children, postTriggerProps }: UniqueProviderProps) => React.JSX.Element;
6
9
  export default UniqueProvider;
@@ -11,10 +11,19 @@ import UniqueBody from "./UniqueBody";
11
11
  import classNames from 'classnames';
12
12
  import { getAlignPopupClassName } from "../util";
13
13
  const UniqueProvider = ({
14
- children
14
+ children,
15
+ postTriggerProps
15
16
  }) => {
16
17
  const [trigger, open, options, onTargetVisibleChanged] = useTargetState();
17
18
 
19
+ // ========================== Options ===========================
20
+ const mergedOptions = React.useMemo(() => {
21
+ if (!options || !postTriggerProps) {
22
+ return options;
23
+ }
24
+ return postTriggerProps(options);
25
+ }, [options, postTriggerProps]);
26
+
18
27
  // =========================== Popup ============================
19
28
  const [popupEle, setPopupEle] = React.useState(null);
20
29
  const [popupSize, setPopupSize] = React.useState(null);
@@ -63,18 +72,18 @@ const UniqueProvider = ({
63
72
  // scaleX - not used in UniqueProvider
64
73
  ,,
65
74
  // scaleY - not used in UniqueProvider
66
- 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,
67
76
  // onPopupAlign
68
77
  false // isMobile
69
78
  );
70
79
  const alignedClassName = React.useMemo(() => {
71
- if (!options) {
80
+ if (!mergedOptions) {
72
81
  return '';
73
82
  }
74
- 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
75
84
  );
76
- return classNames(baseClassName, options.getPopupClassNameFromAlign?.(alignInfo));
77
- }, [alignInfo, options?.getPopupClassNameFromAlign, options?.builtinPlacements, options?.prefixCls]);
85
+ return classNames(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
86
+ }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);
78
87
  const contextValue = React.useMemo(() => ({
79
88
  show,
80
89
  hide
@@ -97,19 +106,19 @@ const UniqueProvider = ({
97
106
  }), [parentContext]);
98
107
 
99
108
  // =========================== Render ===========================
100
- const prefixCls = options?.prefixCls;
109
+ const prefixCls = mergedOptions?.prefixCls;
101
110
  return /*#__PURE__*/React.createElement(UniqueContext.Provider, {
102
111
  value: contextValue
103
- }, children, options && /*#__PURE__*/React.createElement(TriggerContext.Provider, {
112
+ }, children, mergedOptions && /*#__PURE__*/React.createElement(TriggerContext.Provider, {
104
113
  value: triggerContextValue
105
114
  }, /*#__PURE__*/React.createElement(Popup, {
106
115
  ref: setPopupRef,
107
116
  portal: Portal,
108
117
  prefixCls: prefixCls,
109
- popup: options.popup,
110
- className: classNames(options.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
111
- style: options.popupStyle,
112
- target: options.target,
118
+ popup: mergedOptions.popup,
119
+ className: classNames(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
120
+ style: mergedOptions.popupStyle,
121
+ target: mergedOptions.target,
113
122
  open: open,
114
123
  keepDom: true,
115
124
  fresh: true,
@@ -131,12 +140,12 @@ const UniqueProvider = ({
131
140
  y: arrowY
132
141
  },
133
142
  align: alignInfo,
134
- zIndex: options.zIndex,
135
- mask: options.mask,
136
- arrow: options.arrow,
137
- motion: options.popupMotion,
138
- maskMotion: options.maskMotion
139
- // getPopupContainer={options.getPopupContainer}
143
+ zIndex: mergedOptions.zIndex,
144
+ mask: mergedOptions.mask,
145
+ arrow: mergedOptions.arrow,
146
+ motion: mergedOptions.popupMotion,
147
+ maskMotion: mergedOptions.maskMotion,
148
+ getPopupContainer: mergedOptions.getPopupContainer
140
149
  }, /*#__PURE__*/React.createElement(UniqueBody, {
141
150
  prefixCls: prefixCls,
142
151
  isMobile: false,
@@ -152,9 +161,9 @@ const UniqueProvider = ({
152
161
  y: arrowY
153
162
  },
154
163
  popupSize: popupSize,
155
- motion: options.popupMotion,
156
- uniqueBgClassName: classNames(options.uniqueBgClassName, alignedClassName),
157
- uniqueBgStyle: options.uniqueBgStyle
164
+ motion: mergedOptions.popupMotion,
165
+ uniqueBgClassName: classNames(mergedOptions.uniqueBgClassName, alignedClassName),
166
+ uniqueBgStyle: mergedOptions.uniqueBgStyle
158
167
  }))));
159
168
  };
160
169
  export default UniqueProvider;
package/es/index.d.ts CHANGED
@@ -3,7 +3,9 @@ import * as React from 'react';
3
3
  import { type MobileConfig } from './Popup';
4
4
  import type { ActionType, AlignType, ArrowTypeOuter, BuildInPlacements } from './interface';
5
5
  export type { ActionType, AlignType, ArrowTypeOuter as ArrowType, BuildInPlacements, };
6
- export { default as UniqueProvider } from './UniqueProvider';
6
+ import UniqueProvider, { type UniqueProviderProps } from './UniqueProvider';
7
+ export { UniqueProvider };
8
+ export type { UniqueProviderProps };
7
9
  export interface TriggerRef {
8
10
  nativeElement: HTMLElement;
9
11
  popupElement: HTMLDivElement;
package/es/index.js CHANGED
@@ -15,7 +15,8 @@ import useDelay from "./hooks/useDelay";
15
15
  import useWatch from "./hooks/useWatch";
16
16
  import useWinClick from "./hooks/useWinClick";
17
17
  import { getAlignPopupClassName } from "./util";
18
- export { default as UniqueProvider } from "./UniqueProvider";
18
+ import UniqueProvider from "./UniqueProvider";
19
+ export { UniqueProvider };
19
20
 
20
21
  // Removed Props List
21
22
  // Seems this can be auto
@@ -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
@@ -1,6 +1,9 @@
1
1
  import * as React from 'react';
2
+ import { type UniqueShowOptions } from '../context';
2
3
  export interface UniqueProviderProps {
3
4
  children: React.ReactNode;
5
+ /** Additional handle options data to do the customize info */
6
+ postTriggerProps?: (options: UniqueShowOptions) => UniqueShowOptions;
4
7
  }
5
- declare const UniqueProvider: ({ children }: UniqueProviderProps) => React.JSX.Element;
8
+ declare const UniqueProvider: ({ children, postTriggerProps }: UniqueProviderProps) => React.JSX.Element;
6
9
  export default UniqueProvider;
@@ -20,10 +20,19 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
20
20
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
21
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
22
  const UniqueProvider = ({
23
- children
23
+ children,
24
+ postTriggerProps
24
25
  }) => {
25
26
  const [trigger, open, options, onTargetVisibleChanged] = (0, _useTargetState.default)();
26
27
 
28
+ // ========================== Options ===========================
29
+ const mergedOptions = React.useMemo(() => {
30
+ if (!options || !postTriggerProps) {
31
+ return options;
32
+ }
33
+ return postTriggerProps(options);
34
+ }, [options, postTriggerProps]);
35
+
27
36
  // =========================== Popup ============================
28
37
  const [popupEle, setPopupEle] = React.useState(null);
29
38
  const [popupSize, setPopupSize] = React.useState(null);
@@ -72,18 +81,18 @@ const UniqueProvider = ({
72
81
  // scaleX - not used in UniqueProvider
73
82
  ,,
74
83
  // scaleY - not used in UniqueProvider
75
- 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,
76
85
  // onPopupAlign
77
86
  false // isMobile
78
87
  );
79
88
  const alignedClassName = React.useMemo(() => {
80
- if (!options) {
89
+ if (!mergedOptions) {
81
90
  return '';
82
91
  }
83
- 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
84
93
  );
85
- return (0, _classnames.default)(baseClassName, options.getPopupClassNameFromAlign?.(alignInfo));
86
- }, [alignInfo, options?.getPopupClassNameFromAlign, options?.builtinPlacements, options?.prefixCls]);
94
+ return (0, _classnames.default)(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));
95
+ }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);
87
96
  const contextValue = React.useMemo(() => ({
88
97
  show,
89
98
  hide
@@ -106,19 +115,19 @@ const UniqueProvider = ({
106
115
  }), [parentContext]);
107
116
 
108
117
  // =========================== Render ===========================
109
- const prefixCls = options?.prefixCls;
118
+ const prefixCls = mergedOptions?.prefixCls;
110
119
  return /*#__PURE__*/React.createElement(_context.UniqueContext.Provider, {
111
120
  value: contextValue
112
- }, children, options && /*#__PURE__*/React.createElement(_context.default.Provider, {
121
+ }, children, mergedOptions && /*#__PURE__*/React.createElement(_context.default.Provider, {
113
122
  value: triggerContextValue
114
123
  }, /*#__PURE__*/React.createElement(_Popup.default, {
115
124
  ref: setPopupRef,
116
125
  portal: _portal.default,
117
126
  prefixCls: prefixCls,
118
- popup: options.popup,
119
- className: (0, _classnames.default)(options.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
120
- style: options.popupStyle,
121
- target: options.target,
127
+ popup: mergedOptions.popup,
128
+ className: (0, _classnames.default)(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),
129
+ style: mergedOptions.popupStyle,
130
+ target: mergedOptions.target,
122
131
  open: open,
123
132
  keepDom: true,
124
133
  fresh: true,
@@ -140,12 +149,12 @@ const UniqueProvider = ({
140
149
  y: arrowY
141
150
  },
142
151
  align: alignInfo,
143
- zIndex: options.zIndex,
144
- mask: options.mask,
145
- arrow: options.arrow,
146
- motion: options.popupMotion,
147
- maskMotion: options.maskMotion
148
- // getPopupContainer={options.getPopupContainer}
152
+ zIndex: mergedOptions.zIndex,
153
+ mask: mergedOptions.mask,
154
+ arrow: mergedOptions.arrow,
155
+ motion: mergedOptions.popupMotion,
156
+ maskMotion: mergedOptions.maskMotion,
157
+ getPopupContainer: mergedOptions.getPopupContainer
149
158
  }, /*#__PURE__*/React.createElement(_UniqueBody.default, {
150
159
  prefixCls: prefixCls,
151
160
  isMobile: false,
@@ -161,9 +170,9 @@ const UniqueProvider = ({
161
170
  y: arrowY
162
171
  },
163
172
  popupSize: popupSize,
164
- motion: options.popupMotion,
165
- uniqueBgClassName: (0, _classnames.default)(options.uniqueBgClassName, alignedClassName),
166
- uniqueBgStyle: options.uniqueBgStyle
173
+ motion: mergedOptions.popupMotion,
174
+ uniqueBgClassName: (0, _classnames.default)(mergedOptions.uniqueBgClassName, alignedClassName),
175
+ uniqueBgStyle: mergedOptions.uniqueBgStyle
167
176
  }))));
168
177
  };
169
178
  var _default = exports.default = UniqueProvider;
package/lib/index.d.ts CHANGED
@@ -3,7 +3,9 @@ import * as React from 'react';
3
3
  import { type MobileConfig } from './Popup';
4
4
  import type { ActionType, AlignType, ArrowTypeOuter, BuildInPlacements } from './interface';
5
5
  export type { ActionType, AlignType, ArrowTypeOuter as ArrowType, BuildInPlacements, };
6
- export { default as UniqueProvider } from './UniqueProvider';
6
+ import UniqueProvider, { type UniqueProviderProps } from './UniqueProvider';
7
+ export { UniqueProvider };
8
+ export type { UniqueProviderProps };
7
9
  export interface TriggerRef {
8
10
  nativeElement: HTMLElement;
9
11
  popupElement: HTMLDivElement;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rc-component/trigger",
3
- "version": "3.6.10",
3
+ "version": "3.6.12",
4
4
  "description": "base abstract trigger component for react",
5
5
  "engines": {
6
6
  "node": ">=8.x"