From 965df58c6ceb7af4ad486bb8661f84d61cd0fc66 Mon Sep 17 00:00:00 2001
From: Lucas Schoenfelder <les17@inf.ufpr.br>
Date: Wed, 3 Jun 2020 10:34:31 -0300
Subject: [PATCH] responsiveness fix

---
 .../ResourcePageComponents/Footer.js          | 217 ++++++++++++++----
 1 file changed, 171 insertions(+), 46 deletions(-)

diff --git a/src/Components/ResourcePageComponents/Footer.js b/src/Components/ResourcePageComponents/Footer.js
index 2f6adf91..83a932f6 100644
--- a/src/Components/ResourcePageComponents/Footer.js
+++ b/src/Components/ResourcePageComponents/Footer.js
@@ -32,6 +32,56 @@ import ReportRecursoForm from '../ReportRecursoForm.js'
 import ShareModal from '../ShareModal.js'
 import GuardarModal from '../GuardarModal.js'
 import RedirectModal from '../RedirectModal'
+import MoreVertIcon from '@material-ui/icons/MoreVert';
+import Menu from '@material-ui/core/Menu';
+import MenuItem from '@material-ui/core/MenuItem';
+
+function ReportButton (props) {
+    return (
+            !props.complained ?
+            (
+                <ButtonGrey onClick={props.userLoggedIn ? props.toggleReport : props.openLogin}>
+                    <span className="button-text">
+                        <ErrorIcon className="icon"/> Reportar abuso ou erro
+                    </span>
+                </ButtonGrey>
+            )
+            :
+            (
+                <ButtonGrey>
+                    <span className="button-text-report">
+                        <ErrorIcon className="icon"/> Você já reportou este recurso
+                    </span>
+                </ButtonGrey>
+            )
+    )
+}
+
+function DownloadButton (props) {
+    return (
+            props.downloadableLink ?
+            (
+                    <ButtonOrange onClick={props.enableDownload}>
+                        <span className="text">
+                            <GetAppIcon className="icon"/> Baixar Recurso
+                            </span>
+                        </ButtonOrange>
+            )
+            :
+                props.link ?
+                (
+                        <ButtonOrange onClick={props.toggleRedirect}>
+                            <span className="text">
+                                <CallMadeIcon className="icon"/> Abrir Recurso
+                                </span>
+                            </ButtonOrange>
+                )
+                :
+                (
+                    <React.Fragment/>
+                )
+    )
+}
 
 export default function Footer (props) {
     const {state} = useContext(Store)
@@ -40,14 +90,25 @@ export default function Footer (props) {
         window.open(url, '_blank');
         props.handleSnackbar(0)
     }
-
+    let windowWidth = window.innerWidth
     const [reportOpen, toggleReport] = useState(false)
     const [shareOpen, toggleShare] = useState(false)
     const [saveToCol, toggleSave] = useState(false)
     const [redirectOpen, toggleRedirect] = useState(false)
 
+    const [anchorEl, setAnchorEl] = React.useState(null);
+
+    function handleClick(event) {
+      setAnchorEl(event.currentTarget);
+    }
+
+    function handleClose() {
+      setAnchorEl(null);
+    }
+
     return (
         <React.Fragment>
+            {/*-------------------------------MODALS---------------------------------------*/}
             <ReportModal open={reportOpen} handleClose={() => {toggleReport(false)}}
                 form="recurso"
                 complainableId={props.recursoId}
@@ -64,57 +125,107 @@ export default function Footer (props) {
             <RedirectModal open={redirectOpen} handleClose={() => {toggleRedirect(false)}}
                 link={props.link}
                 />
+            {/*----------------------------------------------------------------------------*/}
+
+            {/*-----------------------------BUTTONS----------------------------------------*/}
             <OpcoesDiv>
                 <StyledGrid container>
+                    {
+                        windowWidth > 990 ?
+                        (
+                            <React.Fragment>
+                            {/*Botao Reportar*/}
+                            <Grid item xs={3}>
+                                <ReportButton
+                                    userLoggedIn={state.currentUser.id === '' ? false : true}
+                                    toggleReport={() => {toggleReport(true)}}
+                                    openLogin={() => console.log('abrir login modal')}
+                                    complained={props.complained}
+                                    />
+                            </Grid>
 
-                    {/*Botao Reportar*/}
-                    <Grid item xs={3}>
-                        <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleReport(true)}>
-                            <span className="button-text">
-                                <ErrorIcon className="icon"/> Reportar abuso ou erro
-                            </span>
-                        </ButtonGrey>
-                    </Grid>
-
-                    {/*Botao Compartilhar*/}
-                    <Grid item xs={3}>
-                        <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleShare(true)}>
-                            <span className="button-text">
-                                <ShareIcon className="icon"/> Compartilhar
-                            </span>
-                        </ButtonGrey>
-                    </Grid>
-
-                    {/*Botao Guardar*/}
-                    <Grid item xs={3}>
-                        <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleSave(true)}>
-                            <span className="button-text">
-                                <FolderIcon className="icon"/>Guardar
-                            </span>
-                        </ButtonGrey>
-                    </Grid>
+                            {/*Botao Compartilhar*/}
+                            <Grid item xs={3}>
+                                <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleShare(true)}>
+                                    <span className="button-text">
+                                        <ShareIcon className="icon"/> Compartilhar
+                                    </span>
+                                </ButtonGrey>
+                            </Grid>
 
-                    {
-                        props.downloadableLink &&
-                        <Grid item xs={3} style={{justifyContent : "right !important"}}>
-                            <ButtonOrange onClick={() => {enableDownload()}}>
-                                <span className="text">
-                                    <GetAppIcon className="icon"/> Baixar Recurso
+                            {/*Botao Guardar*/}
+                            <Grid item xs={3}>
+                                <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleSave(true)}>
+                                    <span className="button-text">
+                                        <FolderIcon className="icon"/>Guardar
                                     </span>
-                                </ButtonOrange>
-                        </Grid>
-                    }
-                    {
-                        (!props.downloadableLink && props.link ) &&
-                        <Grid item xs={3} style={{justifyContent : "right !important"}}>
-                            <ButtonOrange onClick={() => {toggleRedirect(true)}}>
-                                <span className="text">
-                                    <CallMadeIcon className="icon"/> Abrir Recurso
+                                </ButtonGrey>
+                            </Grid>
+
+                            <Grid item xs={3} style={{justifyContent : "right !important"}}>
+                                <DownloadButton
+                                    downloadableLink={props.downloadableLink}
+                                    link={props.link}
+                                    enableDownload={enableDownload}
+                                    toggleRedirect={() => {toggleRedirect(true)}}
+                                    />
+                            </Grid>
+                            </React.Fragment>
+                        )
+                        :
+                        (
+                            <React.Fragment>
+                            {/*Botao Guardar*/}
+                            <Grid item xs={4}>
+                                <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleSave(true)}>
+                                    <span className="button-text">
+                                        <FolderIcon className="icon"/>Guardar
                                     </span>
-                                </ButtonOrange>
-                        </Grid>
+                                </ButtonGrey>
+                            </Grid>
+
+                            <Grid item xs={7}>
+                            <DownloadButton
+                                downloadableLink={props.downloadableLink}
+                                link={props.link}
+                                enableDownload={enableDownload}
+                                toggleRedirect={() => {toggleRedirect(true)}}
+                                />
+                            </Grid>
+
+                            <Grid item xs={1}>
+                                <Button aria-haspopup="true" onClick={handleClick} style={{color : "#666"}}>
+                                    <MoreVertIcon/>
+                                </Button>
+                                <Menu
+                                  id="simple-menu"
+                                  anchorEl={anchorEl}
+                                  keepMounted
+                                  open={Boolean(anchorEl)}
+                                  onClose={handleClose}
+                                >
+                                    <MenuItem>
+                                        <ReportButton
+                                            userLoggedIn={state.currentUser.id === '' ? false : true}
+                                            toggleReport={() => {toggleReport(true)}}
+                                            openLogin={() => console.log('abrir login modal')}
+                                            complained={props.complained}
+                                            />
+                                    </MenuItem>
+                                    <MenuItem>
+                                        <ButtonGrey onClick={state.currentUser.id === '' ? () => console.log('abrir login modal') : () => toggleShare(true)}>
+                                            <span className="button-text">
+                                                <ShareIcon className="icon"/> Compartilhar
+                                            </span>
+                                        </ButtonGrey>
+                                    </MenuItem>
+                                </Menu>
+                            </Grid>
+                            </React.Fragment>
+                        )
                     }
 
+
                 </StyledGrid>
             </OpcoesDiv>
         </React.Fragment>
@@ -129,8 +240,9 @@ const OpcoesDiv = styled.div`
 `
 
 const StyledGrid = styled(Grid)`
-    padding-right : 15px;
-    padding-left : 15px;
+    @media screen and (min-width: 990px) {
+        padding-left : 15px !important;
+    }
 
     .MuiGrid-item {
         padding-right : 15px;
@@ -163,6 +275,7 @@ const ButtonGrey = styled(Button)`
         word-wrap : normal !important;
         direction : ltr !important;
         padding-right : 2px;
+        color : inherit !important;
     }
 
     .button-text {
@@ -177,6 +290,18 @@ const ButtonGrey = styled(Button)`
         font-style : inherit;
         font-variant : inherit;
     }
+    .button-text-report {
+        cursor : pointer;
+        line-height : 36px;
+        text-align : center;
+        color : red !important;
+        white-space : nowrap;
+        text-transform : uppercase;
+        font-weight : 600;
+        font-size : 14px;
+        font-style : inherit;
+        font-variant : inherit;
+    }
 `
 
 const ButtonOrange = styled(Button)`
-- 
GitLab