A lightweight React component for Ant Menu to support responsive behaviour.
Having an option for Ant's Menu component to hide under a customizable element when viewing on a mobile device.
https://itskemo.github.io/responsive-ant-menu/
npm i responsive-ant-menu
- Optional: Configure your project to use Modularized Ant (otherwise you have to import the styles manually)
import React from 'react';
import ResponsiveAntMenu from 'responsive-ant-menu'
import { Menu } from 'antd';
// include Menu & Popover styles if not not using Modularized Ant (see How to Use)
// import 'antd/lib/menu/style/css';
// import 'antd/lib/popover/style/css';
const Nav = () => (
<ResponsiveAntMenu
activeLinkKey={location.pathname}
mobileMenuContent={isMenuShown => isMenuShown ? <button>Close</button> : <button>Open</button>}
menuClassName={'responsive-ant-menu'}
>
{(onLinkClick) =>
<Menu>
<Menu.Item key='/' className={'menu-home'}>
<a onClick={onLinkClick} href={'/#'}>Home</a>
</Menu.Item>
<Menu.Item key='/#foo'>
<a onClick={onLinkClick} href={'/#foo'}>Foo</a>
</Menu.Item>
<Menu.Item key='/#bar'>
<a onClick={onLinkClick} href={'/#bar'}>Bar</a>
</Menu.Item>
</Menu>
}
</ResponsiveAntMenu>
);
export default Nav;
Name | Type | Default | Desc |
---|---|---|---|
mobileMenuContent | HTML |
- | Required! Custom content to be show when the viewport size hits mobileBreakPoint. Supply custom HTML markup. If a function is supplied, isMenuShown is passed as an argument to be used for even more customization eg. mobileMenuContent={isMenuShown => isMenuShown ? <button>Close</button> : <button>Open</button>} to show different content. |
activeLinkKey | string |
- | Pass either location.pathname or React Routers path string to mark Menu.Item with matching key prop as active |
mobileBreakPoint | number |
575 | Whenever the size of the viewport gets equal to or less than passed value, display Mobile version toggle. Value is in px. |
throttleViewportChange | number |
250 | Throttle the callback calls whenever the viewport is re-sized. Value is in milliseconds. |
mode | 'vertical', 'horizontal' |
'horizontal' |
Allows to switch to either horizontal or vertical version of Ant's menu implementation. |
theme | 'light', 'dark' |
'light' | Allows to set a theme of Ant's Menu component. If a function is passed, isMobile argument is supplied to implement custom logic, eg. theme={isMobile => isMobile ? 'dark' : 'light'} |
placement | string |
'bottom' |
Allow to use various positions for Popover component, for more info, see: Ant Design: Popover |
closeOnClick | boolean |
true |
Close the Mobile menu once the link is clicked |
menuClassName | string |
- | Add a custom CSS class to the Ant's Menu component |
popoverTrigger | string |
'click' | Allows to define a trigger type to show the Mobile Menu. Accepted values are 'click', 'hover', 'focus' |