Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 

86 wiersze
2.6 KiB

  1. import './search-results.scss';
  2. import {createElement} from "../../_global/scripts/helpers";
  3. import {
  4. SearchResultsDownloads,
  5. SearchResultsEvents,
  6. SearchResultsEventsExtended,
  7. SearchResultsNoBorder
  8. } from "./SearchResultsData";
  9. import {createButton} from "../../atoms/button/ButtonComponent";
  10. import {createEventTeaser} from "../../atoms/event-teaser/EventTeaserComponent";
  11. export const createSearchResults = ({
  12. type = 'downloads',
  13. }) => {
  14. const variant = type === 'no-border' ? 'variant-base' : 'variant-subtle-primary';
  15. const wrapper = createElement('div', ['results-wrapper', variant, type]);
  16. let data = null;
  17. if (type === 'no-border') {
  18. data = SearchResultsNoBorder;
  19. }
  20. if (type === 'downloads') {
  21. data = SearchResultsDownloads;
  22. }
  23. if (type === 'events') {
  24. data = SearchResultsEvents;
  25. }
  26. if (type === 'events-extended') {
  27. data = SearchResultsEventsExtended;
  28. }
  29. if (data.icon) {
  30. wrapper.classList.add(data.icon);
  31. }
  32. if (data.headline) {
  33. createElement('h3', [], data.headline, wrapper);
  34. }
  35. if (type === 'no-border') {
  36. data.items.map((item) => {
  37. const result = createElement('div', item.icon ? ['result', item.icon] : ['result'], null, wrapper);
  38. const a = createElement('a', [], null, result);
  39. a.href = item.link;
  40. if (item.kicker && item.kicker.length > 0) {
  41. createElement('div', ['h-kicker'], item.kicker, a);
  42. }
  43. if (item.title && item.title.length > 0) {
  44. createElement('div', ['h-title'], item.title, a);
  45. }
  46. if (item.copy && item.copy.length > 0) {
  47. createElement('p', [], item.copy, result);
  48. }
  49. })
  50. } else if (type === 'events') {
  51. data.items.map((item) => {
  52. const result = createElement('div', ['result'], null, wrapper);
  53. result.appendChild(createEventTeaser(item));
  54. })
  55. } else if (type === 'events-extended') {
  56. for (let i = 0; i < 12; i++) {
  57. const result = createElement('div', ['result'], null, wrapper);
  58. result.appendChild(createEventTeaser({isExtended: true}));
  59. }
  60. } else {
  61. const results = createElement('ul', ['results','variant-base'], null, wrapper);
  62. data.items.map((item) => {
  63. const li = createElement('li', [], null, results);
  64. const a = createElement('a', ['result-link'], item.title, li);
  65. a.href = item.link;
  66. })
  67. }
  68. if (data.totalCount) {
  69. const moreWrapper = createElement('div', ['more-wrapper'], null, wrapper);
  70. moreWrapper.appendChild(createButton({
  71. label: 'Alle <strong>' + data.totalCount + ' Treffer</strong> anzeigen',
  72. icon: 'pfeil-simple-rechts',
  73. iconPosition: 'icon-right',
  74. color: 'white',
  75. }));
  76. }
  77. return wrapper;
  78. }