import './timeline.scss'; import $ from 'jquery'; import {createElement, createImage} from "../../_global/scripts/helpers"; import {TimelineData} from "./TimelineData"; import {createTabs} from "../../atoms/tabs/TabsComponent"; import IHKTimeline from "./timeline"; export const createTimeline = ({ single = false, data = TimelineData, }) => { const wrapper = createElement('div', ['timelines']); const tabsWrapper = createElement('div', ['timeline-tabs'], null, wrapper); const timelineWrapper = createElement('section', ['timeline'], null, wrapper); createElement('div', ['item-slider'], null, timelineWrapper); const years = createElement('div', ['years'], null, timelineWrapper); const container = createElement('div', ['container'], null, years); const yearsWrapper = createElement('div', ['years-wrapper'], null, container); const tabsData = []; if (single) { data = [data[0]]; } data.map((section) => { tabsData.push({ label: section.tab, link: '#' + section.id, }) const anchorItem = createElement('div', ['year-item', 'anchor'], null, yearsWrapper); createElement('p', ['year'], section.nav, anchorItem); const anchorUl = createElement('ul', ['items'], null, anchorItem); const anchorLi = createElement('li', [], null, anchorUl); createElement('p', ['title'], null, anchorLi); const anchorSlide = createElement('div', ['slide'], null, anchorLi); const anchorContainer = createElement('div', ['container'], null, anchorSlide); const anchorTextBox = createElement('div', ['text-box'], null, anchorContainer); createElement('p', ['year'], section.title, anchorTextBox); anchorSlide.id = section.id; section.years.map((year) => { const yearItem = createElement('div', ['year-item'], null, yearsWrapper); createElement('p', ['year'], year.year, yearItem); const yearUl = createElement('ul', ['items'], null, yearItem); year.items.map((item) => { const itemLi = createElement('li', [], null, yearUl); createElement('p', ['title'], item.title, itemLi); const itemSlide = createElement('div', item.image ? ['slide', 'has-image'] : ['slide'], null, itemLi); const itemContainer = createElement('div', ['container'], null, itemSlide); if (item.image) { const imageBox = createElement('div', ['image-box', item.image.size], null, itemContainer); createImage(item.image.src, item.image.width, item.image.height, item.image.alt, [], imageBox); if (item.image.caption || item.image.copyright) { const caption = createElement('div', ['caption'], null, imageBox); if (item.image.caption) { createElement('span', [], item.image.caption, caption); } if (item.image.copyright) { createElement('span', ['copyright'], item.image.copyright, caption); } } } const itemTextBox = createElement('div', ['text-box'], null, itemContainer); createElement('p', ['year'], year.year, itemTextBox); if (item.subhead) { createElement('p', ['subhead'], item.subhead, itemTextBox); } if (item.copy) { createElement('p', [], item.copy, itemTextBox); } }); }) }); if (single || data.length === 1) { tabsWrapper.remove(); } else { tabsWrapper.appendChild(createTabs({size: 'small', color: 'white', data: tabsData})); } $(document).ready(() => { new IHKTimeline($(timelineWrapper)); }) return wrapper; }