Skip to content

Commit

Permalink
feat: footer block parity
Browse files Browse the repository at this point in the history
  • Loading branch information
fkakatie committed Jul 19, 2022
1 parent 8a501b8 commit 34d5dd0
Show file tree
Hide file tree
Showing 2 changed files with 244 additions and 22 deletions.
203 changes: 192 additions & 11 deletions blocks/footer/footer.css
Original file line number Diff line number Diff line change
@@ -1,25 +1,206 @@
footer {
padding: 2rem;
background-color: white;
font-size: var(--body-font-size-s);
font-size: var(--body-font-size-xs);
text-align: center;
}

@media (min-width: 700px) {
footer {
font-size: var(--body-font-size-s);
}
}

footer .footer {
max-width: 1200px;
margin: auto;
padding: 20px;
background-color: var(--color-blue);
color: var(--color-white);
}

footer .footer > div > div {
max-width: 1400px;
margin: auto;
padding: 15px 0;
}

footer .footer a {
color: var(--color-white);
text-transform: uppercase;
cursor: pointer;
}

footer .footer svg {
fill: var(--color-white);
}

footer .footer ul {
list-style: none;
padding-left: 0;
}

@media (min-width: 900px) {
footer .footer {
padding-top: 60px;
}
}

/* ribbon */
footer .footer.footer-ribbon {
padding: 0 20px;
background-color: var(--color-white);
color: var(--color-blue);
}

footer .footer.footer-ribbon a {
color: var(--color-blue);
}

/* partners */
footer .footer .footer-partners img {
max-width: 250px;
max-height: 132px;
}

@media (min-width: 700px) {
footer .footer .footer-partners > div {
display: flex;
align-items: center;
justify-content: space-between;
}

footer .footer .footer-partners .footer-partner {
flex-basis: calc(100% / 3);
}

footer .footer .footer-partners .footer-partner:not(:first-child) {
border-left: 1px solid var(--color-gray);
}
}

@media (min-width: 1200px) {
footer .footer .footer-partners img {
max-width: 300px;
max-height: 180px;
}
}

/* nav */
footer .footer .footer-nav {
border-top: 1px solid var(--color-gray);
}

footer .footer .footer-nav ul {
display: flex;
flex-wrap: wrap;
justify-content: center;
justify-content: space-between;
}

footer .footer .footer-nav li {
padding: 5px 10px;
}

@media (min-width: 700px) {
footer .footer .footer-nav ul {
justify-content: space-around;
}
}

footer .footer > div > div.footer-partners {
/* links */
footer .footer .footer-links img {
max-width: 130px;
max-height: 60px;
}

footer .footer .footer-links ul {
display: flex;
flex-wrap: wrap;
align-items: center;
flex-flow: column nowrap;
justify-content: center;
max-width: 400px;
margin: 30px auto;
}

footer .footer p {
margin: 16px 8px;
}
footer .footer .footer-links li {
flex-basis: calc(50% - 20px);
padding: 5px 10px;
}

@media (min-width: 900px) {
footer .footer .footer-links {
display: grid;
grid-template-columns: 60px 1fr 130px;
align-items: center;
gap: 0 10px;
font-size: var(--body-font-size-xs);
}

footer .footer .footer-links ul {
justify-content: space-between;
max-width: unset;
margin: 0;
}

footer .footer .footer-links li {
flex-basis: unset;
}
}

/* social */
footer .footer .footer-social h3 {
font-family: var(--body-font-family);
font-size: var(--heading-font-size-s);
}

footer .footer .footer-social p {
box-sizing: border-box;
display: inline-block;
width: 40px;
height: 40px;
margin: 5px 10px;
border-radius: 50%;
background-color: #727272;
}

footer .footer .footer-social p:hover {
filter: brightness(.85);
}

footer .footer .footer-social p.footer-social-facebook {
background-color: #4267B2;
}

footer .footer .footer-social p.footer-social-twitter {
background-color: #1DA1F2;
}

footer .footer .footer-social p.footer-social-instagram {
background-color: #405DE6;
}

footer .footer .footer-social p.footer-social-youtube {
background-color: #f00;
}

footer .footer .footer-social p a {
display: block;
padding: 10px;
padding-bottom: 0;
}

footer .footer .footer-social svg {
height: 20px;
width: 20px;
}

/* copyright */
footer .footer .footer-copyright {
font-size: var(--body-font-size-xxs);
}

footer .footer .footer-copyright a {
text-transform: initial;
}

@media (min-width: 700px) {
footer .footer .footer-copyright {
font-size: var(--body-font-size-xs);
}
}
63 changes: 52 additions & 11 deletions blocks/footer/footer.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,45 @@ import {
readBlockConfig,
decorateIcons,
decorateLinkedPictures,
buildBlock,
decorateBlock,
loadBlock,
createOptimizedPicture,
lookupPages,
makeLinksRelative,
wrapImgsInLinks,
} from '../../scripts/scripts.js';

function setupCookieChoices(section) {
const cookieLink = section.querySelector('a[href*="onetrust-link"]');
if (cookieLink) {
cookieLink.removeAttribute('href');
cookieLink.id = 'onetrust-link';
}
}

function setupSocialButtons(section) {
section.querySelectorAll('p').forEach((button) => {
const icon = [...button.querySelector('.icon').classList][1].replace('icon-', '');
button.classList.add(`footer-social-${icon}`);
});
}

async function setupPartners(section) {
const pages = await lookupPages();
const sponsors = pages.filter((e) => e.path.startsWith('/sponsors'));

const wrapper = document.createElement('div');
sponsors.forEach((sponsor) => {
// console.log('sponsor:', sponsor);
const partner = document.createElement('div');
partner.className = 'footer-partner';
const link = document.createElement('a');
link.href = sponsor.path; // TODO: fix with metadata link
link.append(createOptimizedPicture(sponsor.image, sponsor.title, false, [{ width: '300' }]));
partner.append(link);
wrapper.append(partner);
});
section.append(wrapper);
}

/**
* loads and decorates the footer
* @param {Element} block The footer block element
Expand All @@ -27,20 +60,28 @@ export default async function decorate(block) {
footer.innerHTML = html;
makeLinksRelative(footer);

const classes = ['partners', 'nav', 'legal', 'links', 'social', 'copyright'];
const classes = ['partners', 'nav', 'links', 'social', 'copyright'];
classes.forEach((c, i) => {
const section = footer.children[i];
if (section) section.classList.add(`footer-${c}`);
});

decorateIcons(footer);
decorateLinkedPictures(footer);
// setup ribbon
const ribbon = document.createElement('div');
ribbon.classList.add('footer', 'footer-ribbon');
const wrapper = document.createElement('div');
wrapper.append(footer.querySelector('.footer-partners'), footer.querySelector('.footer-nav'));
ribbon.append(wrapper);

setupCookieChoices(footer.querySelector('.footer-links'));
setupSocialButtons(footer.querySelector('.footer-social'));

block.append(footer);
block.parentNode.prepend(ribbon);
wrapImgsInLinks(block);
decorateIcons(block);
decorateLinkedPictures(block);

const partners = block.querySelector('.footer-partners');
const partnersBlock = buildBlock('partners', '');
partners.append(partnersBlock);
decorateBlock(partnersBlock);
await loadBlock(partnersBlock);
await setupPartners(ribbon.querySelector('.footer-partners'));
}
}

0 comments on commit 34d5dd0

Please sign in to comment.