@@ -111,6 +111,11 @@ export interface TriggerProps {
111111 */
112112 fresh ?: boolean ;
113113
114+ /**
115+ * Config with UniqueProvider to shared the floating popup.
116+ */
117+ unique ?: boolean ;
118+
114119 // ==================== Arrow ====================
115120 arrow ?: boolean | ArrowTypeOuter ;
116121
@@ -173,6 +178,7 @@ export function generateTrigger(
173178 stretch,
174179 getPopupClassNameFromAlign,
175180 fresh,
181+ unique,
176182
177183 alignPoint,
178184
@@ -323,7 +329,7 @@ export function generateTrigger(
323329 // Handle controlled state changes for UniqueProvider
324330 // Only sync to UniqueProvider when it's controlled mode
325331 useLayoutEffect ( ( ) => {
326- if ( uniqueContext && targetEle && ! openUncontrolled ) {
332+ if ( uniqueContext && unique && targetEle && ! openUncontrolled ) {
327333 if ( mergedOpen ) {
328334 Promise . resolve ( ) . then ( ( ) => {
329335 uniqueContext . show ( getUniqueOptions ( 0 ) ) ;
@@ -370,7 +376,7 @@ export function generateTrigger(
370376 }
371377
372378 // If UniqueContext exists and not controlled, pass delay to Provider instead of handling it internally
373- if ( uniqueContext && openUncontrolled ) {
379+ if ( uniqueContext && unique && openUncontrolled ) {
374380 if ( nextOpen ) {
375381 uniqueContext . show ( getUniqueOptions ( delay ) ) ;
376382 } else {
@@ -769,7 +775,7 @@ export function generateTrigger(
769775 >
770776 { triggerNode }
771777 </ ResizeObserver >
772- { rendedRef . current && ! uniqueContext && (
778+ { rendedRef . current && ( ! uniqueContext || ! unique ) && (
773779 < TriggerContext . Provider value = { context } >
774780 < Popup
775781 portal = { PortalComponent }
0 commit comments