diff --git a/client/src/components/Flash/index.js b/client/src/components/Flash/index.js index 2996487f4f..6628ba3b4b 100644 --- a/client/src/components/Flash/index.js +++ b/client/src/components/Flash/index.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import { Alert } from '@freecodecamp/react-bootstrap'; import { TransitionGroup, CSSTransition } from 'react-transition-group'; @@ -7,14 +7,44 @@ import './flash.css'; function Flash({ flashMessage, onClose }) { const { type, message, id } = flashMessage; + const [flashMessageHeight, setFlashMessageHeight] = useState(null); + + useEffect(() => { + setFlashMessageHeight( + document.querySelector('.flash-message').offsetHeight + ); + document.documentElement.style.setProperty( + '--flash-message-height', + flashMessageHeight + 'px' + ); + }, [flashMessageHeight]); + + function handleClose() { + document.documentElement.style.setProperty('--flash-message-height', '0px'); + onClose(); + } + return ( - - - - {message} - - - + <> + + + + {message} + + + + {flashMessage && ( +
+ )} + ); } diff --git a/client/src/components/layouts/learn.css b/client/src/components/layouts/learn.css index c63f8caf68..e5a6b083c4 100644 --- a/client/src/components/layouts/learn.css +++ b/client/src/components/layouts/learn.css @@ -1,5 +1,7 @@ #learn-app-wrapper .desktop-layout { - height: calc(100vh - var(--header-height, 0px)); + height: calc( + 100vh - var(--header-height, 0px) - var(--flash-message-height, 0px) + ); } #learn-app-wrapper .reflex-container.vertical > .reflex-splitter, diff --git a/client/src/templates/Challenges/classic/classic.css b/client/src/templates/Challenges/classic/classic.css index 9476078fe0..bdb5e322ce 100644 --- a/client/src/templates/Challenges/classic/classic.css +++ b/client/src/templates/Challenges/classic/classic.css @@ -32,7 +32,9 @@ } #challenge-page-tabs .tab-content { - height: calc(100vh - var(--header-height, 0px) - 69px); + height: calc( + 100vh - var(--header-height, 0px) - var(--flash-message-height, 0px) - 69px + ); overflow-y: auto; }