Context Menu
shadcn/uiDisplays a menu to the user triggered by right-clicking or long-pressing.
Context Menu
Installation
Props
<ContextMenu />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuTrigger />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuContent />
Name | Type | |
|---|---|---|
align | string(default: start) | |
alignOffset | number(default: 4) | |
side | string(default: right) | |
sideOffset | number(default: 0) | |
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuItem />
Name | Type | |
|---|---|---|
inset | boolean(default: false) | |
variant | string(default: default) | |
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuCheckboxItem />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuRadioItem />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuLabel />
Name | Type | |
|---|---|---|
inset | boolean(default: false) | |
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuSeparator />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuShortcut />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuGroup />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuPortal />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuSub />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuSubContent />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuSubTrigger />
Name | Type | |
|---|---|---|
inset | boolean(default: false) | |
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |
<ContextMenuRadioGroup />
Name | Type | |
|---|---|---|
render | React.ReactElement | |
keepMounted | boolean | |
container | HTMLElement | RefObject<HTMLElement> | |
anchor | (...args) => Element | |
positionMethod | "absolute" | "fixed" | |
sideOffset | number | |
alignOffset | number | |
sticky | boolean | |
arrowPadding | number | |
disableAnchorTracking | boolean | |
finalFocus | boolean | HTMLElement | |
label | string | |
closeOnClick | boolean | |
nativeButton | boolean | |
onCheckedChange | (...args) => void | |
onValueChange | (...args) => void | |
onOpenChange | (...args) => void | |
closeParentOnEsc | boolean | |
defaultOpen | boolean | |
loopFocus | boolean | |
highlightItemOnHover | boolean | |
onOpenChangeComplete | ((open: boolean) => void) | |
open | boolean | |
triggerId | string | |
defaultTriggerId | string | |
delay | number | |
closeDelay | number | |
openOnHover | boolean |