# API The module exports the following: - `ContextMenu` - `ContextMenuTrigger` - `MenuItem` - `SubMenu` ### `` Base Contextmenu Component. #### PropTypes | Property | Type | Required? | Description | |--------------------------|----------|-----------|------------------------------------------------------------------| | id | String | ✓ | A unique identifier for a menu. | | hideOnLeave | Boolean | | Hides the context menu on mouse leave. | | onMouseLeave | Function | | Callback called when the mouse leaves the menu or submenu areas. | | onHide | Function | | Callback called when the menu is hidden. | | onShow | Function | | Callback called when the menu is shown. | | preventHideOnContextMenu | Boolean | | Prevents hiding of the context menu on contextMenu event. | | preventHideOnResize | Boolean | | Prevents hiding of the context menu on resize event. | | preventHideOnScroll | Boolean | | Prevents hiding of the context menu on scroll event. | | className | String | | Custom `className` applied to root element of the context-menu. | ### `` Contextmenu Trigger Component #### PropTypes | Property | Type | Required? | Default | Description | |-------------------------|-------------------------|-----------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | id | String | ✓ | | The unique identifier of the menu to be called. | | attributes | Object | | | The attributes will be passed directly passed to the root element of component. Use this to customize it like adding custom classes, adding `colspan` etc. | | collect | Function | | | A simple function which takes `props` as input and returns the data to be passed to contextmenu. | | disable | Boolean | | `false` | Prop to ignore right clicks and display the default browser context menu. | | holdToDisplay | Number | | `1000` | This is applicable only for touch screens. The time (in ms) for which, user has to hold down his/her finger before the menu is shown. **Note:** To disable the long press trigger on left-click just set a negative holdToDisplay value such as `-1` | | renderTag | String or React Element | | | The element inside which the Component must be wrapped. By default `div` is used. But this prop can used to customize it. | | disableIfShiftIsPressed | Boolean | | `false` | If true and shift is pressed, it will open the native browser context menu and ignore this custom component | ### `` A Simple Component for menu items. #### PropTypes | Property | Type | Required? | Default | Description | |--------------|----------|-----------|---------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | onClick | Function | ✓ | | The function to be called on click of item. The function will receive three parameters. The first is `event` object. The second is the merged data passed using `props.data` and collect from `ContextMenuTrigger`. The third is the element on which right-click occured. | | data | Object | | `{}` | The extra data (if required) to be passed to `onClick` event. | | disabled | Boolean | | `false` | If `true`, disables the click event and adds `.disabled` class. | | preventClose | Boolean | | `false` | By default, the context menu is closed as soon as an item is clicked. Set this prop to control this behavior. | | attributes | Object | | | The attributes will be passed directly passed to the root element of `MenuItem`. Use this to customize it like adding custom classes (`className`, `disabledClassName`, `dividerClassName` and `selectedClassName`), etc. | | selected | boolean | | `false` | **Internal Prop**: will be set from the surrounded context `ContextMenu` or `SubMenu`. If set to `true` the css class `react-contextmenu-item--selected` will be added to associated element. | | onMouseMove | Function | | | **Internal Prop**: will be directly passed to associated element, so the surrounded context `ContextMenu` or `SubMenu` can handle the interactions to pass the correct `selected` state. Also the surrounded context can store the current selected `MenuItem`. | | onMouseLeave | Function | | | **Internal Prop**: will be directly passed to associated element, so the surrounded context `ContextMenu` or `SubMenu` can handle the interactions to pass the correct `selected` state. Also the surrounded context can store the current selected `MenuItem`. | ### `` A component for using submenus within the contextmenu. #### PropTypes | Property | Type | Required? | Default | Description | |-------------|----------|-----------|---------|-----------------------------------------------------------------------------| | title | String | ✓ | | The content to be displayed in parent menu. | | disabled | Boolean | | `false` | If `true`, disables the menu from opening and adds `.disabled` class. | | hoverDelay | Number | | `500` | The time (in ms) after which the menu is to be displayed when hovered upon. | | className | String | | | Custom `className` applied to root element of the context-menu. | | attributes | Object | | | The attributes will be passed directly passed to the root element of `SubMenu`. Use this to customize it like adding custom classes (`className`, `disabledClassName`, `visibleClassName`, `selectedClassName` and `listClassName`), etc. | | selected | boolean | | `false` | **Internal Prop**: will be set from the surrounded context `ContextMenu` or `SubMenu`. If set to `true` the css class `react-contextmenu-item--selected` will be added to associated element. | | onClick | Function | | | The function to be called on click of `SubMenu`. The function will receive three parameters. The first is `event` object. The second is the merged data passed using `props.data` and collect from `ContextMenuTrigger`. The third is the element on which right-click occured. | | onMouseMove | Function | | | **Internal Prop**: will be directly passed to associated element, so the surrounded context `ContextMenu` or `SubMenu` can handle the interactions to pass the correct `selected` state. Also the surrounded context can store the current selected `SubMenu` entry. | | onMouseOut | Function | | | **Internal Prop**: will be directly passed to associated element, so the surrounded context `ContextMenu` or `SubMenu` can handle the interactions to pass the correct `selected` state. Also the surrounded context can store the current selected `SubMenu` entry. | | preventCloseOnClick | Boolean | | `false` | Prevent the context-menu to close when clicking on this `SubMenu`. | | forceOpen | boolean | | `false` | **Internal Prop**: if the user hits enter or the right arrow key on a selected `SubMenu` entry, the surrounded context will pass `true` to this flag. The `SubMenu` stays open until this flag is `false`. | | forceClose | Function | | | **Internal Prop**: if the user hits the escape key during an open `SubMenu`, this function will be called to indicate the surrounding context to reset the `forceOpen` flag. | | parentKeyNavigationHandler | Function | | | **Internal Prop**: the `keydown` handler from the surrounding context will be passed to every open `SubMenu`. Then the `Submenu` will unregister the referenced handler and use it's own for key control. When the `SubMenu` hides again the original handler will be restored. |