import React, { useCallback, useState, useEffect } from "react"; import { makeStyles, Badge } from "@material-ui/core"; import SpeedDial from "@material-ui/lab/SpeedDial"; import SpeedDialIcon from "@material-ui/lab/SpeedDialIcon"; import SpeedDialAction from "@material-ui/lab/SpeedDialAction"; import CreateNewFolderIcon from "@material-ui/icons/CreateNewFolder"; import PublishIcon from "@material-ui/icons/Publish"; import { openCreateFileDialog, openCreateFolderDialog, toggleSnackbar } from "../../actions"; import {useDispatch} from "react-redux"; import AutoHidden from "./AutoHidden"; import statusHelper from "../../utils/page" import Backdrop from "@material-ui/core/Backdrop"; import {FolderUpload,FilePlus} from "mdi-material-ui"; const useStyles = makeStyles(() => ({ fab: { margin: 0, top: "auto", right: 20, bottom: 20, left: "auto", zIndex: 5, position: "fixed" }, badge: { position: "absolute", bottom: 26, top: "auto", zIndex: 9999, right: 7 }, '@global': { '.MuiSpeedDialAction-staticTooltipLabel': { width:100, }, }, })); export default function UploadButton(props) { const [open, setOpen] = useState(false); const [queued, setQueued] = useState(5); const classes = useStyles(); const dispatch = useDispatch(); const ToggleSnackbar = useCallback( (vertical, horizontal, msg, color) => dispatch(toggleSnackbar(vertical, horizontal, msg, color)), [dispatch] ); const OpenNewFolderDialog = useCallback( () => dispatch(openCreateFolderDialog()), [dispatch] ); const OpenNewFileDialog = useCallback( () => dispatch(openCreateFileDialog()), [dispatch] ); useEffect(() => { setQueued(props.Queued); }, [props.Queued]); const openUpload = id =>{ const uploadButton = document.getElementsByClassName( id )[0]; if (document.body.contains(uploadButton)) { uploadButton.click(); } else { ToggleSnackbar( "top", "right", "上传组件还未加载完成", "warning" ); } }; const uploadClicked = () => { if (open) { if (queued !== 0) { props.openFileList(); } else { openUpload("uploadFileForm"); } } }; const handleOpen = () => { setOpen(true); }; const handleClose = () => { setOpen(false); }; return ( ); }