Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

55 строки
2.3 KiB

  1. import './tile-grid.scss';
  2. import {createElement, createImage} from "../../_global/scripts/helpers";
  3. import {TileGridData} from "./TileGridData";
  4. import IHKTileGrid from "./tile-grid";
  5. import IHKEventOverviewTiles from "../eventoverview-stage/eventoverview";
  6. export const createTileGrid = ({
  7. headline = 'Daten und Fakten auf einen Blick',
  8. tiles = TileGridData,
  9. }) => {
  10. const section = createElement('section', ['tile-grid']);
  11. const container = createElement('div', ['container'], null, section);
  12. createElement('h2', [], headline, container);
  13. const row = createElement('div', ['row'], null, container);
  14. tiles.map((group, index) => {
  15. // ungerade cols bekommen variant-accent und gerade cols bekommen variant-solid
  16. const variant = index % 2 === 0 ? 'variant-accent' : 'variant-solid';
  17. const col = createElement('div', ['col', variant], null, row);
  18. const head = createElement('div', ['tile-head'], null, col);
  19. const tileLink = createElement('a', ['tile-head-outer'], null, head);
  20. tileLink.href = group.titleUrl;
  21. createElement('h3', ['like-h4'], group.title, tileLink);
  22. group.tiles.map((item) => {
  23. const tile = createElement('div', ['tile'], null, col);
  24. // ungerade cols bekommen variant-subtle-secondary und gerade cols bekommen variant-subtle-primary
  25. const tileVariant = index % 2 === 0 ? 'variant-subtle-secondary' : 'variant-subtle-primary';
  26. let tileLink;
  27. if (item.url) {
  28. tileLink = createElement('a', ['tile-outer', tileVariant], null, tile);
  29. tileLink.href = item.url;
  30. } else {
  31. tileLink = createElement('span', ['tile-outer', tileVariant], null, tile);
  32. }
  33. if (item.icon) {
  34. const iconBox = createElement('div', ['icon'], null, tileLink);
  35. createImage(item.icon, 220, 220, ['icon'], [], iconBox);
  36. }
  37. if (item.dynamicIcon) {
  38. const iconBox = createElement('div', ['icon','dynamic-icon'], null, tileLink);
  39. iconBox.classList.add(item.dynamicIcon);
  40. }
  41. const p = createElement('p', [], null, tileLink);
  42. const num = createElement('span', ['number'], item.number, p);
  43. if (item.unit) {
  44. createElement('small', [], item.unit, num);
  45. }
  46. createElement('span', ['label'], item.label, p);
  47. })
  48. new IHKTileGrid($(section));
  49. })
  50. return section;
  51. }