Skip to content

Commit

Permalink
Added network-item block, modified horizontal tabs hero
Browse files Browse the repository at this point in the history
  • Loading branch information
Dragos Cristian Bute committed Sep 19, 2023
1 parent ebf763a commit beb7915
Show file tree
Hide file tree
Showing 10 changed files with 403 additions and 66 deletions.
43 changes: 30 additions & 13 deletions blocks/hero-horizontal-tabs/hero-horizontal-tabs.css
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,26 @@ main .hero-horizontal-tabs-wrapper {
background-color: var(--primary);
}

main .hero-horiz-tabs-panel {
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
padding-right: 6rem;
}

main .hero-horiz-tabs-nav {
margin-left: 16px;
}

main .hero-horizontal-tabs.block {
display: flex;
flex-direction: column;
margin-bottom: 5rem;
}

main .hero-horiz-tabs-panel {
position: relative;
main div.tab-item.hidden {
display: none;
}

main .hero-horiz-tabs-text {
Expand Down Expand Up @@ -55,29 +68,29 @@ main .hero-horiz-tabs-img picture > img {
min-width: 100%;
}

main .hero-horizontal-tabs nav {
position: absolute;
bottom: 0;
left: 1rem;
main .hero-horizontal-tabs nav ul {
list-style: none;
display: flex;
align-items: flex-end;
}

main .hero-horizontal-tabs nav a {
main .hero-horizontal-tabs nav button {
background-color: var(--transparent-blue-light-color);
padding: 11px 16px;
color: var(--link-color);
color: var(--light-black);
border-left: 1px solid #d9dfe2;
font-size: var(--body-font-size-s);
font-weight: var(--font-weight-bold);
font-weight: var(--font-weight-medium);
border-radius: 0;
}

main .hero-horizontal-tabs nav a:hover {
main .hero-horizontal-tabs nav button:hover {
text-decoration: none;
background-color: white;
color: var(--primary);
}

main .hero-horizontal-tabs nav a.current {
main .hero-horizontal-tabs nav button.current {
background-color: white;
color: var(--primary);
}
Expand All @@ -94,6 +107,10 @@ main .hero-horizontal-tabs nav a.current {
min-width: 436px;
}

main .hero-horiz-tabs-nav {
margin-left: 0;
}

main .hero-horiz-tabs-text > h6 {
font-size: var(--heading-font-size-xxs);
}
Expand All @@ -109,11 +126,11 @@ main .hero-horizontal-tabs nav a.current {

main .hero-horizontal-tabs nav {
position: absolute;
bottom: 0;
left: 0;
bottom: 0;
}

main .hero-horizontal-tabs nav a {
main .hero-horizontal-tabs nav button {
font-size: var(--body-font-size-l);
font-weight: var(--font-weight-regular);
padding: 16px 32px 18px;
Expand Down
131 changes: 104 additions & 27 deletions blocks/hero-horizontal-tabs/hero-horizontal-tabs.js
Original file line number Diff line number Diff line change
@@ -1,47 +1,124 @@
import { getNamedValueFromTable } from '../../scripts/scripts.js';

function normalizeURL(url) {
if (url.endsWith('/')) {
return url;
export function createTabs($block, text) {
const $ul = $block.querySelector('ul');
if (!$ul) {
return null;
}
return url.concat('/');
}
/** @type TabInfo[] */
const tabs = [...$ul.querySelectorAll('li')].map(($li) => {
const title = $li.textContent;
const name = title.toLowerCase().trim();
return {
title,
name,
$tab: $li,
};
});
const panel = document.createElement('div');
panel.classList.add('hero-horiz-tabs-panel');
if (text) panel.appendChild(text);
// turn ul html element into nav
const nav = document.createElement('nav');
nav.classList.add('hero-horiz-tabs-nav');

function getImage(block) {
const div = getNamedValueFromTable(block, 'Image');
div.classList.add('hero-horiz-tabs-img');
return div;
}
nav.replaceChildren($ul);
panel.appendChild(nav);
// move $ul below section div
$block.replaceChildren(panel);

// search referenced sections and move them inside the tab-container
const $wrapper = $block.parentElement;
const $container = $wrapper.parentElement;
const $sections = document.querySelectorAll('[data-tab]');

// move the tab's sections before the tab riders.
[...$sections].forEach(($tabContent) => {
const name = $tabContent.dataset.tab.toLowerCase().trim();
/** @type TabInfo */
const tab = tabs.find((t) => t.name === name);
if (tab) {
const sectionWrapper = document.createElement('div');

export function getTabs(block, curLocation) {
const tabs = document.createElement('nav');
const div = getNamedValueFromTable(block, 'tabs');
[...$tabContent.classList].forEach((c) => {
sectionWrapper.classList.add(c);
});

div.querySelectorAll('ul > li > a').forEach((a) => {
if (normalizeURL(a.href) === normalizeURL(curLocation.href)) {
a.classList.add('current');
sectionWrapper.classList.add();
const $el = document.createElement('div');
$el.classList.add('tab-item');
$el.append(...$tabContent.children);
$el.classList.add('hidden');
sectionWrapper.append($el);
$container.insertBefore(sectionWrapper, $wrapper);
$tabContent.remove();
tab.$content = $el;
}
tabs.appendChild(a);
});
return tabs;
}

function getImage(block) {
const div = getNamedValueFromTable(block, 'Image');
if (!div) return null;
div.classList.add('hero-horiz-tabs-img');
return div;
}

function getText(block) {
const div = getNamedValueFromTable(block, 'Contents');
if (!div) return null;
div.classList.add('hero-horiz-tabs-text');
return div;
}

export default async function decorate(block, curLocation = window.location) {
const text = getText(block);
const image = getImage(block);
const tabs = getTabs(block, curLocation);
export default function decorate($block) {
const image = getImage($block);
const text = getText($block);
const tabs = createTabs($block, text);

// move the tab riders in front
const $wrapper = $block.parentElement;
const $container = $wrapper.parentElement;
$container.insertBefore($wrapper, $container.firstElementChild);

tabs.forEach((tab, index) => {
const $button = document.createElement('button');
const { $tab, title, name } = tab;
$button.textContent = title.split(',');
$button.classList.add('tab');

$tab.replaceChildren($button);

const leftDiv = document.createElement('div');
leftDiv.classList.add('hero-horiz-tabs-panel');
leftDiv.append(text);
leftDiv.append(tabs);
$tab.addEventListener('click', () => {
const $activeButton = $block.querySelector('button.active');

if ($activeButton !== $tab) {
$activeButton.classList.remove('active');
// remove active class from parent li
$activeButton.parentElement.classList.remove('active');

$button.classList.add('active');
// add active class to parent li
$tab.classList.add('active');

tabs.forEach((t) => {
if (name === t.name) {
t.$content.classList.remove('hidden');
} else {
t.$content.classList.add('hidden');
}
});
}
});

if (index === 0) {
$button.classList.add('active');
// add active class to parent li
$tab.classList.add('active');
if (tab.$content) tab.$content.classList.remove('hidden');
}
});

block.replaceChildren(leftDiv);
block.append(image);
if (image) $block.append(image);
}
31 changes: 31 additions & 0 deletions blocks/horizontal-list/horizontal-list.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
.horizontal-list ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}

.horizontal-list.careers-tags ul {
font-size: var(--body-font-size-xs);
}

.horizontal-list li {
display: inline-block;
margin-right: 1rem;
text-align: center;
}

.horizontal-list li::before {
display: inline-block;
content: '';
background: inherit;
background-color: var(--text-color);
height: 12px;
width: 12px;
margin-right: 4px;
border-radius: 50%;
}

.horizontal-list li:last-child {
margin-right: 0;
}
5 changes: 5 additions & 0 deletions blocks/horizontal-list/horizontal-list.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
export default function decorate(block) {
const list = block.children[0].children[0].children[0];

block.replaceChildren(list);
}
7 changes: 7 additions & 0 deletions blocks/link/link.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,10 @@
left: 0.3rem;
top: 0.05rem;
}

.link.block.arrow a::after {
content: url("../../icons/angle-right-blue.svg");
position:relative;
left: 0.3rem;
top: 0.5rem;
}
83 changes: 83 additions & 0 deletions blocks/network-item/network-item.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
.network-item div.tags {
display: flex;
flex-wrap: wrap;
margin-bottom: 24px;
}

.network-item .tags div {
display: flex;
font-size: var(--body-font-size-xs);
margin-right: 1rem;
align-items: center;
}

.network-item .tags div::before {
display: inline-block;
content: '';
background: inherit;
background-color: var(--text-color);
height: 12px;
width: 12px;
margin-right: 4px;
border-radius: 50%;
}

.network-item h3.title {
font-weight: var(--font-weight-bold);
}

.network-item .tags div.blue {
color: #009CBD; /* oral care */
}

.network-item .tags div.yellow {
color: #D9AB41; /* safety mobility */
}

.network-item .tags div.orange {
color: #F87C56; /* health beauty */
}

.network-item .tags div.green {
color: #00A499; /* living environment */
}

.network-item .tags div.green::before {
background-color: #00A499; /* living environment */
}

.network-item .tags div.blue::before {
background-color: #009CBD; /* oral care */
}

.network-item .tags div.yellow::before {
background-color: #D9AB41; /* safety mobility */
}

.network-item .tags div.orange::before {
background-color: #F87C56; /* health beauty */
}

.network-item .tags div:last-child {
margin-right: 0;
}

div.network-item {
margin-bottom: 24px;
border-bottom: 1px solid #3c465033;
}

.network-item div.our-hr a::after {
content: url("../../icons/angle-right-blue.svg");
position:relative;
left: 0.3rem;
top: 0.5rem;
}

div.network-item h3.title,
div.network-item div.recruiting-link,
div.network-item div.career-opportunities,
div.network-item div.our-hr,
div.network-item div.website {
padding-bottom: 1rem;
}
Loading

0 comments on commit beb7915

Please sign in to comment.