// import dependencies import React from 'react'; import { Fab, Icon, styled, Stack, Tooltip, Box, Typography, Avatar, IconButton, useMediaQuery, AvatarGroup } from '../'; // let context let DashupContext = null; // create menu component const DashupUIPageMenu = (props = {}) => { // is mobile const isMobile = useMediaQuery('(max-width:800px)'); // get active const getActive = (page, dashup) => { // return actives return [...(dashup.get('active') || [])].filter((a) => a.page === page?.get('_id') && a.user !== eden?.user?.get('_id')); }; // disable menu const disableMenu = !!(typeof eden !== 'undefined' ? eden : {}).state?.share?.disableMenu; // return JSX return disableMenu ? null : ( { ({ page, dashup, color, icon, title, onShare, onConfig }) => { // set values onShare = props.onShare || onShare; onConfig = props.onConfig || onConfig; // page fab const PageFab = styled(Fab)(({ theme }) => { // return theme return { color : theme.palette.getContrastText(color?.hex || theme.palette.background.default), boxShadow : 'none', backgroundColor : color?.hex || theme.palette.background.default, '&:hover' : { backgroundColor : color?.hex || theme.palette.background.default, } }; }); // return styled return ( { // mobile if (!isMobile) return; // emit eden.emit('sidebar.left', true); } }> { title } { props.presence && !!getActive(page, dashup).length && ( getActive(page, dashup).map((active, i) => { // return jsx return ( ) }) ) } { props.children } { onShare && page && dashup.can(page, 'manage') && ( onShare(e) }> ) } { onConfig && page && dashup.can(page, 'manage') && ( onConfig(e) }> ) } ); } } ); }; // export default page menu export default (ctx) => { // use context DashupContext = ctx; // return actual component return DashupUIPageMenu; };