Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

174 řádky
6.7 KiB

  1. import './marketingheader.scss';
  2. import '../../components/artwork/artwork.scss';
  3. import $ from 'jquery';
  4. import {createElement, createImage} from "../../_global/scripts/helpers";
  5. import {searchData, teaserData, sliderData} from "./MarketingHeaderData";
  6. import {createArtwork} from "../../components/artwork/ArtworkComponent";
  7. import {createSearchInput} from "../../atoms/search-input/SearchInputComponent";
  8. import {createSearchButton} from "../../atoms/search-button/SearchButtonComponent";
  9. import IHKSearchTypeahead from "./marketingheader-typeahead";
  10. import {createButton} from "../../atoms/button/ButtonComponent";
  11. import IHKMHSlider from "./marketingheaderslider";
  12. export const createMarketingHeader =
  13. ({
  14. artworkStyle = 'artwork-both-sides',
  15. placeholder = 'Hier Ihr Thema finden',
  16. api = 'services/search/{SEARCHTERM}.json',
  17. tiles = searchData,
  18. imageSrc = 'https://source.unsplash.com/2vCqH34PqWs/1080x648',
  19. kicker = 'Noch 7 Tage offen',
  20. headline = 'Jetzt und digital mitreden',
  21. copy = 'Mit der digitalen Beteiligung erhalten Mitgliedsunternehmen die Möglichkeit, sich einfach und schnell über laufende Verfahren und Abstimmungen zu informieren und sich aktiv daran zu beteiligen.',
  22. moreCta = {
  23. label: 'Mehr Infos',
  24. link: '#',
  25. target: '_self',
  26. },
  27. buttonCta = {
  28. label: 'Jetzt beteiligen',
  29. link: '#',
  30. target: '_self',
  31. },
  32. showProgress = true,
  33. progress = 60,
  34. backgroundImage = null,
  35. isFirstElement = false,
  36. slides = sliderData,
  37. }) => {
  38. const section = createElement('section', ['marketingheader'], null);
  39. const search = createElement('div', ['search'], null, section);
  40. const artwork = createArtwork({type: artworkStyle});
  41. search.appendChild(artwork);
  42. search.dataset.type = artworkStyle;
  43. const container = createElement('div', ['container', 'small'], null, search);
  44. const row = createElement('div', ['row'], null, container);
  45. const col = createElement('div', ['col'], null, row);
  46. const form = createElement('form', [], null, col);
  47. const label = createElement('label', ['visually-hidden'], 'IHK durchsuchen', form);
  48. label.for = 'search-term';
  49. form.appendChild(createSearchInput({api: api, placeholder: placeholder}));
  50. form.appendChild(createSearchButton({}));
  51. form.action = '#';
  52. const tilesContainer = createElement('div', ['tiles'], null, col);
  53. tiles.map((tile) => {
  54. const div = createElement('div', ['tile'], null, tilesContainer);
  55. const a = createElement('a', [], tile.title, div);
  56. a.href = tile.link;
  57. })
  58. if (api) {
  59. new IHKSearchTypeahead($(form).find('input.typeahead'));
  60. }
  61. /* SLIDER */
  62. const section2 = createElement('section', ['marketingheader'], null);
  63. const container2 = createElement('div', ['container', 'small'], null, section2);
  64. const sliderComponent = createElement('div', ['slider'], null, container2);
  65. slides.map((slideData, index) => {
  66. const slide = createElement('div', ['slide'], null, sliderComponent);
  67. const outer = createElement('outer', ['outer'], null, slide);
  68. const contextBoxContent = slideData.context ? slideData.context : '';
  69. const contextBoxContentImg = slideData.contextImg ? slideData.contextImg : '';
  70. if (slideData.imageSrc && slideData.imageSrc.length > 0) {
  71. const imageBox = createElement('div', ['image-box'], null, outer);
  72. createImage(slideData.imageSrc, 900, 600, 'Slide ' + index, [], imageBox);
  73. if (contextBoxContentImg) {
  74. const contentBoxImg = createElement('div', ['context-box', 'context-box--image'], null, imageBox);
  75. createImage(contextBoxContentImg, 200, 50, '', [], contentBoxImg);
  76. } else if (contextBoxContent) {
  77. createElement('div', ['context-box'], contextBoxContent, imageBox);
  78. }
  79. }
  80. const textBox = createElement('div', ['text-box'], null, outer);
  81. if (slideData.kicker && slideData.kicker.length > 0) {
  82. createElement('span', ['kicker'], slideData.kicker, textBox);
  83. }
  84. if (slideData.headline && slideData.headline.length > 0) {
  85. createElement('h3', ['like-h2'], slideData.headline, textBox);
  86. }
  87. if (slideData.kicker && slideData.kicker.length > 0) {
  88. createElement('p', [], slideData.copy, textBox);
  89. }
  90. if (slideData.cta && slideData.link) {
  91. const buttonP = createElement('p', [], '', textBox);
  92. const btn = createButton({
  93. color: 'white', icon: 'pfeil-simple-rechts', iconPosition: 'icon-right', label: slideData.cta
  94. });
  95. buttonP.appendChild(btn);
  96. }
  97. if (!slideData.imageSrc || slideData.imageSrc.length <= 0) {
  98. if (contextBoxContent) {
  99. textBox.classList.add('context');
  100. if (contextBoxContentImg) {
  101. const contentBox = createElement('div', ['context-box', 'context-box--image'], null, textBox);
  102. createImage(contextBoxContentImg, 200, 50, '', [], contentBox);
  103. } else if (contextBoxContent) {
  104. createElement('div', ['context-box'], contextBoxContent, textBox);
  105. }
  106. }
  107. }
  108. })
  109. /*
  110. const hasImage = imageSrc && imageSrc.length > 0;
  111. const stage = createElement('div', ['participation', 'participation-stage'], null, section);
  112. const container2 = createElement('div', ['container'], null, stage);
  113. const row2 = createElement('div', ['row'], null, container2);
  114. const col2 = createElement('div', ['col'], null, row2);
  115. const tb2 = createElement('div', ['text-box'], null, col2);
  116. if (backgroundImage && backgroundImage.length > 0) {
  117. //section.content('style=background: red;');
  118. stage.style = 'background-image: url(' + backgroundImage + ');';
  119. stage.classList.add('background-image');
  120. }
  121. if (isFirstElement) {
  122. stage.classList.add('first-element');
  123. }
  124. if (kicker && kicker.length > 0) {
  125. createElement('p', ['kicker'], kicker, tb2);
  126. }
  127. if (showProgress) {
  128. tb2.appendChild(createProgressBar({progress}));
  129. }
  130. createElement('h1', ['like-h2'], headline, tb2);
  131. createElement('p', [], copy, tb2);
  132. if (moreCta) {
  133. const more = createElement('a', [], moreCta.label, tb2);
  134. more.href = moreCta.link;
  135. more.target = moreCta.target;
  136. }
  137. if (buttonCta) {
  138. const button2 = createButton({
  139. elementType: 'a',
  140. link: buttonCta.link,
  141. color: 'white',
  142. label: buttonCta.label,
  143. iconPosition: 'icon-right',
  144. icon: 'small-arrow-right-simple',
  145. });
  146. tb2.appendChild(button2);
  147. }
  148. if (hasImage) {
  149. stage.classList.add('image-stage');
  150. const ib2 = createElement('div', ['image-box'], null, col2);
  151. createImage(imageSrc, 1080, 648, 'Beteiligung', [], ib2);
  152. }
  153. */
  154. return section;
  155. }