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.
 
 
 
 

91 wiersze
2.6 KiB

  1. import $ from 'jquery';
  2. import {createHeader} from "../../components/header/HeaderComponent";
  3. import {createFooter} from "../../components/footer/FooterComponent";
  4. import {createPageDetails} from "../../components/page-details/PageDetailsComponent";
  5. import IHKSidebar from "./sidebar";
  6. export function createElement(tag, classes = [], content = '', parentElement = null, styles = null) {
  7. const el = document.createElement(tag);
  8. el.innerHTML = content;
  9. if (styles) {
  10. el.style = styles;
  11. }
  12. classes.map((c) => {
  13. el.classList.add(c);
  14. })
  15. if (parentElement) {
  16. parentElement.appendChild(el);
  17. }
  18. return el;
  19. }
  20. export function createImage(src = '', width = 0, height = 0, alt = '', classes = [], parentElement = null, loading = 'lazy') {
  21. const img = new Image();
  22. img.src = src;
  23. img.width = width;
  24. img.height = height;
  25. img.loading = loading;
  26. img.classList.add('loading');
  27. classes.map((c) => {
  28. img.classList.add(c);
  29. });
  30. if (parentElement) {
  31. parentElement.appendChild(img);
  32. }
  33. img.addEventListener('load', (e) => {
  34. img.classList.add('loaded');
  35. img.classList.remove('loading');
  36. });
  37. return img;
  38. }
  39. export const createSidebarPage = ({
  40. addPageDetails = true,
  41. breadcrumb = ['Start', 'Beratung und Service', 'Finanzierung digitaler Projekte'],
  42. }) => {
  43. const page = createElement('div', ['page']);
  44. const header = createHeader({});
  45. const wrapper = createElement('div', ['page-wrapper'], null, page);
  46. const pageContent = createElement('div', ['page-content', 'has-sidebar'], null, wrapper);
  47. const container = createElement('div', ['container'], null, pageContent);
  48. const row = createElement('div', ['row'], null, container);
  49. const main = createElement('main', ['main-col'], null, row);
  50. const aside = createElement('aside', ['sidebar'], null, row);
  51. const footer = createFooter({});
  52. if (addPageDetails) {
  53. const pageDetails = createPageDetails({breadcrumb: breadcrumb});
  54. wrapper.insertBefore(pageDetails, pageContent);
  55. }
  56. page.insertBefore(header, wrapper);
  57. page.appendChild(footer);
  58. main.id = 'main';
  59. main.role = 'main';
  60. aside.id = 'sidebar';
  61. aside.role = 'complementary';
  62. new IHKSidebar($(aside));
  63. return {
  64. page: page,
  65. main: main,
  66. aside: aside,
  67. }
  68. }
  69. export function getUrlVars(url = window.location.href) {
  70. let vars = {};
  71. url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) {
  72. vars[key] = value;
  73. });
  74. return vars;
  75. }
  76. export function formatNumber(num, decimals) {
  77. return new Intl.NumberFormat('de-DE',{
  78. minimumFractionDigits: decimals,
  79. maximumFractionDigits: decimals,
  80. }).format(num);
  81. }