25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

72 lines
2.7 KiB

  1. import './eventteaserlargeslider.scss';
  2. import {createElement} from "../../_global/scripts/helpers";
  3. import $ from 'jquery';
  4. import {createButton} from "../../atoms/button/ButtonComponent";
  5. import IHKETLSlider from "./eventteaserlargeslider";
  6. import {sliderData} from "./EventTeaserLargeSliderData";
  7. export const createETLSlider =
  8. ({
  9. slides = sliderData,
  10. widemode = true,
  11. moreCta = {
  12. label: 'Mehr erfahren',
  13. target: '_self',
  14. },
  15. headline = 'Premium Seminare',
  16. }) => {
  17. const section = createElement('section', ['rotationslider'], null);
  18. const hcontainer = createElement('div', ['container'], null, section);
  19. const container = createElement('div', ['container', 'right-open-container'], null, section);
  20. if (headline && headline.length > 0) {
  21. createElement('h1', [], headline, hcontainer);
  22. }
  23. const sliderComponent = createElement('div', ['eventteaserlargeslider'], null, container);
  24. slides.map((slideData, index) => {
  25. const slide = createElement('div', ['slide'], null, sliderComponent);
  26. const outer = createElement('outer', ['outer'], null, slide);
  27. const a = createElement('a', ['event-teaser-large'], null, outer);
  28. if (widemode) {
  29. a.classList.add('widemode');
  30. }
  31. const blueBox = createElement('div', ['blue-box'], null, a);
  32. const imgCon = createElement('div', ['img-con'], null, blueBox);
  33. const textBox = createElement('div', ['text-box', 'date-wrapper'], null, a);
  34. createElement('div', ['icon-box', 'pictogram-' + slideData.icon.toLowerCase().split(' ').join('-')], null, blueBox);
  35. createElement('p', ['ev-title'], slideData.title, blueBox);
  36. createElement('p', ['ev-cat'], slideData.category, blueBox);
  37. createElement('p', ['ev-desc'], slideData.desc, textBox);
  38. const detailBox = createElement('div', ['detail-box'], null, textBox);
  39. if (slideData.details) {
  40. for (const [key, value] of Object.entries(slideData.details)) {
  41. if (typeof value === 'string') {
  42. createElement('div', [key], value, detailBox);
  43. } else if (typeof value === 'object') {
  44. createElement('div', [key, value.type], value.label, detailBox);
  45. }
  46. }
  47. }
  48. if (moreCta) {
  49. detailBox.appendChild(createButton({
  50. elementType: 'span',
  51. label: moreCta.label,
  52. color: 'primary',
  53. size: 'small',
  54. preventClick: false
  55. }))
  56. }
  57. if (slideData.bgimage && slideData.bgimage .length > 0) {
  58. imgCon.style = 'background-image: url(' + slideData.bgimage + ');';
  59. blueBox.classList.add('background-image');
  60. }
  61. a.href = slideData.link;
  62. })
  63. new IHKETLSlider($(section));
  64. return section;
  65. }