Skip to content
Snippets Groups Projects
Unverified Commit d506e5ef authored by Samuel Couillard's avatar Samuel Couillard Committed by GitHub
Browse files

Fix the Logo jumping on page loading (#4537)

* Create LogoWrapper

* esf
parent 455a4f82
Branches
Tags
No related merge requests found
Showing
with 35 additions and 27 deletions
...@@ -398,14 +398,14 @@ input[type='checkbox'] { ...@@ -398,14 +398,14 @@ input[type='checkbox'] {
max-height: $header-height; max-height: $header-height;
} }
.medium-logo { .logo {
max-width: 300px; max-width: 250px;
max-height: 150px; max-height: 125px;
} }
.large-logo { .logo-wrapper {
max-width: 400px; width: 250px;
max-height: 200px; height: 125px;
} }
/********** Range Input Styles **********/ /********** Range Input Styles **********/
......
...@@ -12,7 +12,7 @@ export default function DefaultErrorPage() { ...@@ -12,7 +12,7 @@ export default function DefaultErrorPage() {
return ( return (
<div className="vertical-buffer"> <div className="vertical-buffer">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-md-3 mx-auto p-4 border-0 shadow-sm text-center"> <Card className="col-md-3 mx-auto p-4 border-0 shadow-sm text-center">
<Card.Title className="pb-2 fs-1 text-danger">{ t('global_error_page.title') }</Card.Title> <Card.Title className="pb-2 fs-1 text-danger">{ t('global_error_page.title') }</Card.Title>
......
...@@ -12,7 +12,7 @@ export default function NotFoundPage() { ...@@ -12,7 +12,7 @@ export default function NotFoundPage() {
return ( return (
<div className="vertical-buffer"> <div className="vertical-buffer">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-md-3 mx-auto p-4 border-0 shadow-sm text-center"> <Card className="col-md-3 mx-auto p-4 border-0 shadow-sm text-center">
<Card.Title className="pb-2 fs-1 text-danger">{ t('not_found_error_page.title') }</Card.Title> <Card.Title className="pb-2 fs-1 text-danger">{ t('not_found_error_page.title') }</Card.Title>
......
...@@ -54,7 +54,7 @@ export default function HomePage() { ...@@ -54,7 +54,7 @@ export default function HomePage() {
<Row className="wide-white"> <Row className="wide-white">
<Col className="mx-auto"> <Col className="mx-auto">
<div className="text-center pt-xl-5 my-3"> <div className="text-center pt-xl-5 my-3">
<Logo size="medium" /> <Logo />
</div> </div>
<div className="text-center"> <div className="text-center">
<h1 className="my-4"> {t('homepage.welcome_bbb')} </h1> <h1 className="my-4"> {t('homepage.welcome_bbb')} </h1>
......
...@@ -14,7 +14,7 @@ export default function RequireAuthentication({ path }) { ...@@ -14,7 +14,7 @@ export default function RequireAuthentication({ path }) {
return ( return (
<div className="vertical-center"> <div className="vertical-center">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-xl-4 col-lg-5 col-md-7 col-8 mx-auto p-0 border-0 shadow-sm text-center"> <Card className="col-xl-4 col-lg-5 col-md-7 col-8 mx-auto p-0 border-0 shadow-sm text-center">
<Card.Body className="pt-4 px-5"> <Card.Body className="pt-4 px-5">
......
...@@ -142,7 +142,7 @@ export default function RoomJoin() { ...@@ -142,7 +142,7 @@ export default function RoomJoin() {
return ( return (
<div className="vertical-buffer"> <div className="vertical-buffer">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-md-6 mx-auto p-0 border-0 shadow-sm"> <Card className="col-md-6 mx-auto p-0 border-0 shadow-sm">
<Card.Body className="pt-4 px-5"> <Card.Body className="pt-4 px-5">
......
...@@ -43,7 +43,7 @@ export default function Header() { ...@@ -43,7 +43,7 @@ export default function Header() {
<Navbar collapseOnSelect id="navbar" expand="sm"> <Navbar collapseOnSelect id="navbar" expand="sm">
<Container className="ps-0"> <Container className="ps-0">
<Navbar.Brand as={Link} to={homePath} className="ps-2"> <Navbar.Brand as={Link} to={homePath} className="ps-2">
<Logo /> <Logo size="small" />
</Navbar.Brand> </Navbar.Brand>
<Navbar.Toggle aria-controls="responsive-navbar-nav" className="border-0"> <Navbar.Toggle aria-controls="responsive-navbar-nav" className="border-0">
......
...@@ -7,24 +7,32 @@ import useSiteSetting from '../../hooks/queries/site_settings/useSiteSetting'; ...@@ -7,24 +7,32 @@ import useSiteSetting from '../../hooks/queries/site_settings/useSiteSetting';
export default function Logo({ size }) { export default function Logo({ size }) {
const { isLoading, data: brandingImage } = useSiteSetting('BrandingImage'); const { isLoading, data: brandingImage } = useSiteSetting('BrandingImage');
const navigate = useNavigate(); const navigate = useNavigate();
const sizeClass = `${size}-logo`;
if (isLoading) return null; // Logo can be small or regular size
const sizeClass = size === 'small'
? 'small-logo cursor-pointer'
: 'logo cursor-pointer position-absolute bottom-0 mx-auto start-0 end-0 text-center';
// Small Logo is used in Header only and does not require a wrapper
const sizeWrapperClass = !size && 'logo-wrapper position-relative d-block mx-auto';
if (isLoading) return <div className={sizeWrapperClass} />;
return ( return (
<div className={sizeWrapperClass}>
<Image <Image
src={brandingImage} src={brandingImage}
className={`cursor-pointer ${sizeClass}`} className={sizeClass}
alt="CompanyLogo" alt="CompanyLogo"
onClick={() => { navigate('/'); }} onClick={() => { navigate('/'); }}
/> />
</div>
); );
} }
Logo.propTypes = { Logo.propTypes = {
size: PropTypes.oneOf(['small', 'medium', 'large']), size: PropTypes.string,
}; };
Logo.defaultProps = { Logo.defaultProps = {
size: 'small', size: '',
}; };
...@@ -16,7 +16,7 @@ export default function VerifyAccount() { ...@@ -16,7 +16,7 @@ export default function VerifyAccount() {
return ( return (
<div className="vertical-buffer"> <div className="vertical-buffer">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-md-4 mx-auto p-4 border-0 shadow-sm text-center"> <Card className="col-md-4 mx-auto p-4 border-0 shadow-sm text-center">
<Card.Title className="pb-2 fs-1 text-danger">{ t('account_activation_page.title') }</Card.Title> <Card.Title className="pb-2 fs-1 text-danger">{ t('account_activation_page.title') }</Card.Title>
......
...@@ -11,7 +11,7 @@ export default function SignIn() { ...@@ -11,7 +11,7 @@ export default function SignIn() {
return ( return (
<div className="vertical-center"> <div className="vertical-center">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm"> <Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm">
<Card.Title className="text-center pb-2"> { t('authentication.sign_in') } </Card.Title> <Card.Title className="text-center pb-2"> { t('authentication.sign_in') } </Card.Title>
......
...@@ -21,7 +21,7 @@ export default function Signup() { ...@@ -21,7 +21,7 @@ export default function Signup() {
return ( return (
<div className="vertical-center"> <div className="vertical-center">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm"> <Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm">
<Card.Title className="text-center pb-2"> { t('authentication.create_an_account') } </Card.Title> <Card.Title className="text-center pb-2"> { t('authentication.create_an_account') } </Card.Title>
......
...@@ -11,7 +11,7 @@ export default function ForgetPassword() { ...@@ -11,7 +11,7 @@ export default function ForgetPassword() {
return ( return (
<div className="vertical-center"> <div className="vertical-center">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm"> <Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm">
<Card.Title className="text-center pb-2"> { t('user.account.reset_password')} </Card.Title> <Card.Title className="text-center pb-2"> { t('user.account.reset_password')} </Card.Title>
......
...@@ -18,7 +18,7 @@ export default function ResetPassword() { ...@@ -18,7 +18,7 @@ export default function ResetPassword() {
return ( return (
<div className="vertical-center"> <div className="vertical-center">
<div className="text-center pb-4"> <div className="text-center pb-4">
<Logo size="medium" /> <Logo />
</div> </div>
<Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm"> <Card className="col-xl-3 col-lg-4 col-md-6 col-8 mx-auto p-4 border-0 shadow-sm">
<ResetPwdForm token={token} /> <ResetPwdForm token={token} />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment