mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-20 22:42:53 -05:00
Added interactivity to menu component in AdminX
refs. https://github.com/TryGhost/Team/issues/3351
This commit is contained in:
parent
661a85c748
commit
022fadee01
1 changed files with 19 additions and 6 deletions
|
@ -1,5 +1,5 @@
|
|||
import Icon from './Icon';
|
||||
import React from 'react';
|
||||
import React, {useState} from 'react';
|
||||
|
||||
export type MenuItem = {
|
||||
id: string,
|
||||
|
@ -16,7 +16,19 @@ interface MenuProps {
|
|||
}
|
||||
|
||||
const Menu: React.FC<MenuProps> = ({items, position, className}) => {
|
||||
let menuListStyles = 'absolute z-10 mt-2 w-56 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none';
|
||||
const [menuOpen, setMenuOpen] = useState(false);
|
||||
|
||||
let menuListStyles = 'absolute z-40 mt-2 w-56 origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none';
|
||||
|
||||
const toggleMenu = () => {
|
||||
setMenuOpen(!menuOpen);
|
||||
};
|
||||
|
||||
const handleBackdropClick = (e: React.MouseEvent<HTMLDivElement>) => {
|
||||
if (e.target === e.currentTarget) {
|
||||
setMenuOpen(false);
|
||||
}
|
||||
};
|
||||
|
||||
switch (position) {
|
||||
case 'left':
|
||||
|
@ -31,12 +43,14 @@ const Menu: React.FC<MenuProps> = ({items, position, className}) => {
|
|||
break;
|
||||
}
|
||||
|
||||
menuListStyles += menuOpen ? 'block' : 'hidden';
|
||||
|
||||
return (
|
||||
/* Menu */
|
||||
<div className={`relative inline-block ${className}`}>
|
||||
<div className={`fixed inset-0 z-40 ${menuOpen ? 'block' : 'hidden'}`} onClick={handleBackdropClick}></div>
|
||||
{/* Menu Trigger */}
|
||||
<div>
|
||||
<button aria-expanded="true" aria-haspopup="true" className="flex items-center rounded-sm bg-grey-100 px-2 py-1 text-grey-400 hover:text-grey-600" id="menu-button" type="button">
|
||||
<div className='relative z-50'>
|
||||
<button aria-expanded="true" aria-haspopup="true" className="flex items-center rounded-sm bg-grey-100 px-2 py-1 text-grey-400 hover:text-grey-600" id="menu-button" type="button" onClick={toggleMenu}>
|
||||
<span className="sr-only">Open menu</span>
|
||||
<Icon color="grey-900" name="menu-horizontal" />
|
||||
</button>
|
||||
|
@ -44,7 +58,6 @@ const Menu: React.FC<MenuProps> = ({items, position, className}) => {
|
|||
{/* Menu List */}
|
||||
<div aria-labelledby="menu-button" aria-orientation="vertical" className={menuListStyles} role="menu">
|
||||
<div className="py-1" role="none">
|
||||
{/* Menu Item */}
|
||||
{items.map(item => (
|
||||
<button key={item.id} className="block w-full cursor-pointer px-4 py-2 text-left text-sm text-grey-900 hover:bg-grey-100" type="button">{item.label}</button>
|
||||
))}
|
||||
|
|
Loading…
Add table
Reference in a new issue