mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-18 13:09:08 +02:00
* Use react material design template for frontend * Successfully make rpc request inside material design template * Make rpc request in tables page * Run react frontend in development mode for now * successfully get squeaks in tables page * Use production server in frontend dockerfile * Update gitignore to ignore generated proto files * Organize npm package
87 lines
2.2 KiB
JavaScript
87 lines
2.2 KiB
JavaScript
import React, { useState } from "react";
|
|
import {
|
|
Paper,
|
|
IconButton,
|
|
Menu,
|
|
MenuItem,
|
|
Typography,
|
|
} from "@material-ui/core";
|
|
import { MoreVert as MoreIcon } from "@material-ui/icons";
|
|
import classnames from "classnames";
|
|
|
|
// styles
|
|
import useStyles from "./styles";
|
|
|
|
export default function Widget({
|
|
children,
|
|
title,
|
|
noBodyPadding,
|
|
bodyClass,
|
|
disableWidgetMenu,
|
|
header,
|
|
...props
|
|
}) {
|
|
var classes = useStyles();
|
|
|
|
// local
|
|
var [moreButtonRef, setMoreButtonRef] = useState(null);
|
|
var [isMoreMenuOpen, setMoreMenuOpen] = useState(false);
|
|
|
|
return (
|
|
<div className={classes.widgetWrapper}>
|
|
<Paper className={classes.paper} classes={{ root: classes.widgetRoot }}>
|
|
<div className={classes.widgetHeader}>
|
|
{header ? (
|
|
header
|
|
) : (
|
|
<React.Fragment>
|
|
<Typography variant="h5" color="textSecondary">
|
|
{title}
|
|
</Typography>
|
|
{!disableWidgetMenu && (
|
|
<IconButton
|
|
color="primary"
|
|
classes={{ root: classes.moreButton }}
|
|
aria-owns="widget-menu"
|
|
aria-haspopup="true"
|
|
onClick={() => setMoreMenuOpen(true)}
|
|
buttonRef={setMoreButtonRef}
|
|
>
|
|
<MoreIcon />
|
|
</IconButton>
|
|
)}
|
|
</React.Fragment>
|
|
)}
|
|
</div>
|
|
<div
|
|
className={classnames(classes.widgetBody, {
|
|
[classes.noPadding]: noBodyPadding,
|
|
[bodyClass]: bodyClass,
|
|
})}
|
|
>
|
|
{children}
|
|
</div>
|
|
</Paper>
|
|
<Menu
|
|
id="widget-menu"
|
|
open={isMoreMenuOpen}
|
|
anchorEl={moreButtonRef}
|
|
onClose={() => setMoreMenuOpen(false)}
|
|
disableAutoFocusItem
|
|
>
|
|
<MenuItem>
|
|
<Typography>Edit</Typography>
|
|
</MenuItem>
|
|
<MenuItem>
|
|
<Typography>Copy</Typography>
|
|
</MenuItem>
|
|
<MenuItem>
|
|
<Typography>Delete</Typography>
|
|
</MenuItem>
|
|
<MenuItem>
|
|
<Typography>Print</Typography>
|
|
</MenuItem>
|
|
</Menu>
|
|
</div>
|
|
);
|
|
}
|