diff --git a/sites/shared/components/wrappers/modal.mjs b/sites/shared/components/wrappers/modal.mjs index 1607843d260..3a0bdaaf1bd 100644 --- a/sites/shared/components/wrappers/modal.mjs +++ b/sites/shared/components/wrappers/modal.mjs @@ -1,6 +1,8 @@ +import { useState, useEffect } from 'react' + export const ModalWrapper = ({ app, - children, + children = null, flex = 'row', justify = 'center', items = 'center', @@ -8,17 +10,27 @@ export const ModalWrapper = ({ bgOpacity = '100 lg:bg-opacity-95', bare = false, keepOpenOnClick = false, -}) => ( -
{ + const [animate, setAnimate] = useState(true) + + useEffect(() => { + if (animate) setAnimate(false) + }, [children, animate]) + + return ( +
app.updateState('modal', false)} - > - {bare ? ( - children - ) : ( -
{children}
- )} -
-) + onClick={keepOpenOnClick ? null : () => app.updateState('modal', false)} + > + {bare ? ( + children + ) : ( +
{children}
+ )} +
+ ) +} diff --git a/sites/shared/components/wrappers/page.mjs b/sites/shared/components/wrappers/page.mjs index e01d32d4de1..26cfbba7f4d 100644 --- a/sites/shared/components/wrappers/page.mjs +++ b/sites/shared/components/wrappers/page.mjs @@ -9,6 +9,7 @@ import { LayoutWrapper, ns as layoutNs } from 'site/components/wrappers/layout.m import { DocsLayout, ns as docsNs } from 'site/components/layouts/docs.mjs' import { Feeds } from 'site/components/feeds.mjs' import { Spinner } from 'shared/components/spinner.mjs' +import { ModalMenu } from 'site/components/navigation/modal-menu.mjs' export const ns = [...new Set([...layoutNs, ...docsNs])] @@ -33,8 +34,8 @@ export const PageWrapper = ({ * Swipe handling for the entire site */ const swipeHandlers = useSwipeable({ - onSwipedLeft: () => (app.state?.menu?.main ? app.updateState('menu.main', false) : null), - onSwipedRight: () => (app.state?.menu?.main ? null : app.updateState('menu.main', true)), + onSwipedLeft: () => app.setModal(false), + onSwipedRight: () => app.setModal(), trackMouse: true, })