From bf1c9c20ed27e6cc679bbc22d78c5d14aac21a9d Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Tue, 15 Oct 2019 07:05:04 +0300 Subject: [PATCH] Menu Overlay component added --- src/components/Menu/Overlay.tsx | 38 +++++++++++++++++++++++++++++++++ src/components/Menu/index.tsx | 23 ++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/components/Menu/Overlay.tsx diff --git a/src/components/Menu/Overlay.tsx b/src/components/Menu/Overlay.tsx new file mode 100644 index 00000000..d3e8f375 --- /dev/null +++ b/src/components/Menu/Overlay.tsx @@ -0,0 +1,38 @@ +import * as React from 'react' + +export interface IOverlayProps { + opacity: number + onClickOverlay: () => void +} + +export const Overlay: React.FC = props => { + const onClick = React.useCallback((event: React.MouseEvent) => { + if (event.target === event.currentTarget) { + props.onClickOverlay() + } + }, [props.onClickOverlay]) + + return ( +
+ + + {props.children} +
+ ) +} diff --git a/src/components/Menu/index.tsx b/src/components/Menu/index.tsx index 62d50683..3817fce0 100644 --- a/src/components/Menu/index.tsx +++ b/src/components/Menu/index.tsx @@ -4,6 +4,7 @@ import { getPathWithNoTrailingSlash } from '../../lib/url' import { MenuToggle } from './MenuToggle' import { useScreenType } from '../../hooks/useScreenType' import { MenuItem } from './MenuItem' +import { Overlay } from './Overlay' const itemUrl = (url: string) => getPathWithNoTrailingSlash(url) @@ -96,6 +97,28 @@ export const Menu: React.FC = props => { /> ))} + + {!open ? null : ( + + {props.items.map((item, index) => ( +
  • + +
  • + ))} +
    + )} ) }