Documentation Index Fetch the complete documentation index at: https://cometchat-22654f5b-react-uikit-v7.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
AI Integration Quick Reference
{
"component" : "CometChatPopover" ,
"package" : "@cometchat/chat-uikit-react" ,
"import" : "import { CometChatPopover } from \" @cometchat/chat-uikit-react \" ;" ,
"cssImport" : "import \" @cometchat/chat-uikit-react/css-variables.css \" ;" ,
"description" : "A floating popover primitive that positions content relative to a trigger element with viewport-aware auto-flipping." ,
"cssRootClass" : ".cometchat-popover" ,
"primaryOutput" : {
"prop" : "onClose" ,
"type" : "() => void"
},
"props" : {
"callbacks" : {
"onClose" : { "type" : "() => void" , "default" : "undefined" },
"onOpen" : { "type" : "() => void" , "default" : "undefined" }
},
"behavior" : {
"isOpen" : { "type" : "boolean" , "default" : "undefined (uncontrolled)" },
"placement" : { "type" : "'top' | 'right' | 'bottom' | 'left'" , "default" : "'bottom'" },
"closeOnOutsideClick" : { "type" : "boolean" , "default" : "true" },
"showOnHover" : { "type" : "boolean" , "default" : "false" },
"debounceOnHover" : { "type" : "number" , "default" : "500" },
"showArrow" : { "type" : "boolean" , "default" : "false" },
"trapFocus" : { "type" : "boolean" , "default" : "false" }
},
"accessibility" : {
"ariaLabel" : { "type" : "string" , "default" : "undefined" },
"ariaLabelledBy" : { "type" : "string" , "default" : "undefined" },
"ariaDescribedBy" : { "type" : "string" , "default" : "undefined" }
},
"viewSlots" : {
"children (Trigger)" : { "type" : "ReactNode" , "default" : "required" },
"children (Content)" : { "type" : "ReactNode" , "default" : "required" }
}
},
"events" : [],
"sdkListeners" : [],
"types" : {
"CometChatPopoverPlacement" : "'top' | 'right' | 'bottom' | 'left'"
}
}
Where It Fits
CometChatPopover is a base positioning primitive used by other components that need floating content anchored to a trigger element. It handles viewport-aware placement, keyboard accessibility, and focus management so consuming components don’t have to.
import { CometChatPopover } from "@cometchat/chat-uikit-react" ;
import "@cometchat/chat-uikit-react/css-variables.css" ;
function App () {
return (
< CometChatPopover.Root placement = "bottom" closeOnOutsideClick >
< CometChatPopover.Trigger >
< button > Options </ button >
</ CometChatPopover.Trigger >
< CometChatPopover.Content >
< div style = { { padding: 16 } } >
< p > Popover content here </ p >
</ div >
</ CometChatPopover.Content >
</ CometChatPopover.Root >
);
}
Minimal Render
import { CometChatPopover } from "@cometchat/chat-uikit-react" ;
import "@cometchat/chat-uikit-react/css-variables.css" ;
function Demo () {
return (
< CometChatPopover.Root >
< CometChatPopover.Trigger >
< button > Click me </ button >
</ CometChatPopover.Trigger >
< CometChatPopover.Content >
< div > Content </ div >
</ CometChatPopover.Content >
</ CometChatPopover.Root >
);
}
Root CSS class: .cometchat-popover
Actions and Events
Callback Props
onOpen
Called when the popover opens (click, hover, or keyboard trigger).
< CometChatPopover.Root onOpen = { () => console . log ( "opened" ) } >
{ /* ... */ }
</ CometChatPopover.Root >
onClose
Called when the popover requests to close (outside click, Escape key).
< CometChatPopover.Root onClose = { () => console . log ( "closed" ) } >
{ /* ... */ }
</ CometChatPopover.Root >
Controlled Mode
Pass isOpen to control the popover externally. The component calls onOpen/onClose to request state changes, but the consumer owns the state.
import { useState } from "react" ;
import { CometChatPopover } from "@cometchat/chat-uikit-react" ;
function ControlledExample () {
const [ open , setOpen ] = useState ( false );
return (
< CometChatPopover.Root
isOpen = { open }
onOpen = { () => setOpen ( true ) }
onClose = { () => setOpen ( false ) }
placement = "top"
>
< CometChatPopover.Trigger >
< button > Toggle </ button >
</ CometChatPopover.Trigger >
< CometChatPopover.Content >
< div style = { { padding: 16 } } >
< p > Controlled popover </ p >
< button onClick = { () => setOpen ( false ) } > Close </ button >
</ div >
</ CometChatPopover.Content >
</ CometChatPopover.Root >
);
}
Hover Trigger with Arrow
Use showOnHover for tooltip-like behavior and showArrow to render a directional arrow.
< CometChatPopover.Root showOnHover showArrow placement = "top" debounceOnHover = { 300 } >
< CometChatPopover.Trigger >
< span > Hover me </ span >
</ CometChatPopover.Trigger >
< CometChatPopover.Content >
< div style = { { padding: 8 } } > Tooltip text </ div >
</ CometChatPopover.Content >
</ CometChatPopover.Root >
Focus Trap
Enable trapFocus for dialog-like popovers where Tab/Shift+Tab should cycle within the content.
< CometChatPopover.Root placement = "bottom" trapFocus ariaLabel = "Settings menu" >
< CometChatPopover.Trigger >
< button > Settings </ button >
</ CometChatPopover.Trigger >
< CometChatPopover.Content >
< div style = { { padding: 16 , display: "flex" , flexDirection: "column" , gap: 8 } } >
< button > Option 1 </ button >
< button > Option 2 </ button >
< button > Option 3 </ button >
</ div >
</ CometChatPopover.Content >
</ CometChatPopover.Root >
CSS Architecture
The component uses CSS custom properties (design tokens) defined in @cometchat/chat-uikit-react/css-variables.css.
Key Selectors
Target Selector Root wrapper .cometchat-popoverTrigger wrapper .cometchat-popover__triggerContent panel .cometchat-popover__contentContent positioned .cometchat-popover__content--positionedContent top .cometchat-popover__content--topContent bottom .cometchat-popover__content--bottomContent left .cometchat-popover__content--leftContent right .cometchat-popover__content--rightArrow .cometchat-popover__arrowArrow top .cometchat-popover__arrow--topArrow bottom .cometchat-popover__arrow--bottomArrow left .cometchat-popover__arrow--leftArrow right .cometchat-popover__arrow--right
Example: Custom popover styling
.cometchat-popover__content {
border-radius : 16 px ;
box-shadow : 0 8 px 32 px rgba ( 0 , 0 , 0 , 0.15 );
max-width : 400 px ;
}
Customization Matrix
What to change Where Property/API Example Placement Component props placementplacement="top"Control open state Component props isOpen, onClose, onOpenisOpen={open}Disable outside click Component props closeOnOutsideClickcloseOnOutsideClick={false}Hover trigger Component props showOnHover, debounceOnHovershowOnHover debounceOnHover={300}Show arrow Component props showArrowshowArrowFocus trap Component props trapFocustrapFocusARIA label Component props ariaLabelariaLabel="Menu"Visual styling Global CSS .cometchat-popover__contentSee CSS Selectors table
Props
All props are optional unless noted otherwise.
ariaDescribedBy
ID of element that describes the popover content.
Type stringDefault undefined
ariaLabel
Custom ARIA label for the popover content.
Type stringDefault undefined
ariaLabelledBy
ID of element that labels the popover content.
Type stringDefault undefined
className
Optional custom CSS class name applied to the root container.
Type stringDefault undefined
closeOnOutsideClick
Whether clicking outside the popover closes it.
debounceOnHover
Debounce delay in milliseconds for hover open/close.
isOpen
Whether the popover is open. When provided, the component is controlled.
Type booleanDefault undefined (uncontrolled)
onClose
Callback when the popover requests to close (outside click, Escape key).
Type () => voidDefault undefined
onOpen
Callback when the popover opens.
Type () => voidDefault undefined
placement
Preferred placement of the popover relative to the trigger. Auto-flips if insufficient viewport space.
Type 'top' | 'right' | 'bottom' | 'left'Default 'bottom'
type CometChatPopoverPlacement = 'top' | 'right' | 'bottom' | 'left' ;
showArrow
Whether to show a directional arrow pointing to the trigger.
showOnHover
Show the popover on hover instead of click.
trapFocus
Enable focus trap within the popover content. Tab/Shift+Tab cycles within the popover when enabled.
CSS Selectors
Target Selector Root wrapper .cometchat-popoverTrigger wrapper .cometchat-popover__triggerContent panel .cometchat-popover__contentContent positioned .cometchat-popover__content--positionedPlacement top .cometchat-popover__content--topPlacement bottom .cometchat-popover__content--bottomPlacement left .cometchat-popover__content--leftPlacement right .cometchat-popover__content--rightArrow .cometchat-popover__arrowArrow top .cometchat-popover__arrow--topArrow bottom .cometchat-popover__arrow--bottomArrow left .cometchat-popover__arrow--leftArrow right .cometchat-popover__arrow--right