You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

50 rivejä
1.7 KiB

  1. import './event-teaser-large.scss';
  2. import {createElement} from "../../_global/scripts/helpers";
  3. import {EventTeaserLargeData} from "./EventTeaserLargeData";
  4. import {createButton} from "../../atoms/button/ButtonComponent";
  5. export const createEventTeaserLarge = ({
  6. event = EventTeaserLargeData,
  7. widemode = false,
  8. moreCta = {
  9. label: 'Mehr erfahren',
  10. target: '_self',
  11. },
  12. }) => {
  13. const a = createElement('a', ['event-teaser-large']);
  14. if (widemode) {
  15. a.classList.add('widemode');
  16. }
  17. const blueBox = createElement('div', ['blue-box'], null, a);
  18. const textBox = createElement('div', ['text-box', 'date-wrapper'], null, a);
  19. createElement('div', ['icon-box', 'pictogram-' + event.icon.toLowerCase().split(' ').join('-')], null, blueBox);
  20. createElement('p', ['ev-title'], event.title, blueBox);
  21. createElement('p', ['ev-cat'], event.category, blueBox);
  22. createElement('p', ['ev-desc'], event.desc, textBox);
  23. const detailBox = createElement('div', ['detail-box'], null, textBox);
  24. if (event.details) {
  25. for (const [key, value] of Object.entries(event.details)) {
  26. if (typeof value === 'string') {
  27. createElement('div', [key], value, detailBox);
  28. } else if (typeof value === 'object') {
  29. createElement('div', [key, value.type], value.label, detailBox);
  30. }
  31. }
  32. }
  33. if (moreCta) {
  34. detailBox.appendChild(createButton({
  35. label: moreCta.label,
  36. link: event.link,
  37. color: 'primary',
  38. size: 'small',
  39. }))
  40. }
  41. if (event.bgimage && event.bgimage .length > 0) {
  42. blueBox.style = 'background-image: url(' + event.bgimage + ');';
  43. blueBox.classList.add('background-image');
  44. }
  45. a.href = event.link;
  46. return a;
  47. }