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.
 
 
 
 

51 lines
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 imgCon = createElement('div', ['img-con'], null, blueBox);
  19. const textBox = createElement('div', ['text-box', 'date-wrapper'], null, a);
  20. createElement('div', ['icon-box', 'pictogram-' + event.icon.toLowerCase().split(' ').join('-')], null, blueBox);
  21. createElement('p', ['ev-title'], event.title, blueBox);
  22. createElement('p', ['ev-cat'], event.category, blueBox);
  23. createElement('p', ['ev-desc'], event.desc, textBox);
  24. const detailBox = createElement('div', ['detail-box'], null, textBox);
  25. if (event.details) {
  26. for (const [key, value] of Object.entries(event.details)) {
  27. if (typeof value === 'string') {
  28. createElement('div', [key], value, detailBox);
  29. } else if (typeof value === 'object') {
  30. createElement('div', [key, value.type], value.label, detailBox);
  31. }
  32. }
  33. }
  34. if (moreCta) {
  35. detailBox.appendChild(createButton({
  36. label: moreCta.label,
  37. link: event.link,
  38. color: 'primary',
  39. size: 'small',
  40. }))
  41. }
  42. if (event.bgimage && event.bgimage .length > 0) {
  43. imgCon.style = 'background-image: url(' + event.bgimage + ');';
  44. blueBox.classList.add('background-image');
  45. }
  46. a.href = event.link;
  47. return a;
  48. }