xv-webcomponents 1.22.2 → 1.22.4-qa.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/maplibre-gl-CCZS3Rg5.js +900 -0
  3. package/dist/cjs/{xv-accordion-v2_48.cjs.entry.js → xv-accordion-v2_49.cjs.entry.js} +700 -73
  4. package/dist/cjs/xv-header-next.cjs.entry.js +1 -1
  5. package/dist/cjs/xv-mega-menu-next.cjs.entry.js +2 -2
  6. package/dist/cjs/xv-webcomponents.cjs.js +1 -1
  7. package/dist/collection/collection-manifest.json +1 -0
  8. package/dist/collection/components/xv-accordion/xv-accordion.js +24 -4
  9. package/dist/collection/components/xv-accordion-item/xv-accordion-item.js +11 -5
  10. package/dist/collection/components/xv-breadcrumbs/xv-breadcrumbs.js +1 -1
  11. package/dist/collection/components/xv-button/xv-button.js +2 -2
  12. package/dist/collection/components/xv-button-group/xv-button-group.js +1 -1
  13. package/dist/collection/components/xv-card/xv-card.js +1 -1
  14. package/dist/collection/components/xv-checkbox/xv-checkbox.js +2 -2
  15. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.js +1 -1
  16. package/dist/collection/components/xv-content-switcher/xv-content-switcher.js +2 -2
  17. package/dist/collection/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.js +1 -1
  18. package/dist/collection/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.js +1 -1
  19. package/dist/collection/components/xv-data-table/xv-data-table-row/xv-data-table-row.js +2 -2
  20. package/dist/collection/components/xv-data-table/xv-data-table.css +4 -4
  21. package/dist/collection/components/xv-data-table/xv-data-table.js +1 -1
  22. package/dist/collection/components/xv-datepicker/xv-datepicker.js +63 -5
  23. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.js +1 -1
  24. package/dist/collection/components/xv-dropdown/xv-dropdown.js +1 -1
  25. package/dist/collection/components/xv-file-uploader/xv-file-uploader.css +39 -1
  26. package/dist/collection/components/xv-file-uploader/xv-file-uploader.js +57 -7
  27. package/dist/collection/components/xv-footer/xv-footer.js +1 -1
  28. package/dist/collection/components/xv-geo-map/xv-geo-map.css +907 -0
  29. package/dist/collection/components/xv-geo-map/xv-geo-map.js +1052 -0
  30. package/dist/collection/components/xv-header/xv-header.js +1 -1
  31. package/dist/collection/components/xv-header-next/xv-header-next.js +1 -1
  32. package/dist/collection/components/xv-image-viewer/xv-image-viewer.js +1 -1
  33. package/dist/collection/components/xv-link/xv-link.js +1 -1
  34. package/dist/collection/components/xv-mega-menu/xv-mega-menu.js +2 -2
  35. package/dist/collection/components/xv-mega-menu-next/xv-mega-menu-next.js +2 -2
  36. package/dist/collection/components/xv-modal/xv-modal.js +1 -1
  37. package/dist/collection/components/xv-notification/xv-notification.js +1 -1
  38. package/dist/collection/components/xv-number-input/xv-number-input.js +2 -2
  39. package/dist/collection/components/xv-pagination/xv-pagination.js +1 -1
  40. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.js +1 -1
  41. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js +1 -1
  42. package/dist/collection/components/xv-radio/xv-radio.js +2 -2
  43. package/dist/collection/components/xv-slider/xv-slider.js +1 -1
  44. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +1 -1
  45. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +1 -1
  46. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +1 -1
  47. package/dist/collection/components/xv-table/xv-table.js +1 -1
  48. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +1 -1
  49. package/dist/collection/components/xv-tag/xv-tag.js +1 -1
  50. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.js +2 -2
  51. package/dist/collection/components/xv-text-input/xv-text-input.js +2 -2
  52. package/dist/collection/components/xv-textarea/xv-textarea.js +2 -2
  53. package/dist/collection/components/xv-tile/xv-tile.js +2 -2
  54. package/dist/collection/components/xv-toggle/xv-toggle.js +1 -1
  55. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.js +1 -1
  56. package/dist/collection/components/xv-tooltip/xv-tooltip.js +2 -2
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/maplibre-gl-CS4Eagm9.js +813 -0
  59. package/dist/esm/maplibre-gl-shared.mjs +6 -0
  60. package/dist/esm/maplibre-gl-worker.mjs +6 -0
  61. package/dist/esm/{xv-accordion-v2_48.entry.js → xv-accordion-v2_49.entry.js} +700 -74
  62. package/dist/esm/xv-header-next.entry.js +1 -1
  63. package/dist/esm/xv-mega-menu-next.entry.js +2 -2
  64. package/dist/esm/xv-webcomponents.js +1 -1
  65. package/dist/types/components/xv-accordion/xv-accordion.d.ts +5 -4
  66. package/dist/types/components/xv-accordion-item/xv-accordion-item.d.ts +3 -0
  67. package/dist/types/components/xv-datepicker/xv-datepicker.d.ts +12 -0
  68. package/dist/types/components/xv-file-uploader/xv-file-uploader.d.ts +3 -0
  69. package/dist/types/components/xv-geo-map/xv-geo-map.d.ts +126 -0
  70. package/dist/types/components.d.ts +241 -0
  71. package/dist/xv-webcomponents/p-6d402ea7.entry.js +8 -0
  72. package/dist/xv-webcomponents/{p-7e05cb50.entry.js → p-71205fad.entry.js} +1 -1
  73. package/dist/xv-webcomponents/{p-38e5f1e1.entry.js → p-9bd6edd0.entry.js} +1 -1
  74. package/dist/xv-webcomponents/p-CS4Eagm9.js +10 -0
  75. package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
  76. package/package.json +2 -1
  77. package/dist/xv-webcomponents/p-511519a7.entry.js +0 -8
@@ -282,7 +282,7 @@ export class XvDropdown {
282
282
  /* endregion Search methods */
283
283
  render() {
284
284
  const message = resolveFieldMessage({ error: this.error, warning: this.warning, helper: this.helper });
285
- return (h(Host, { key: '2e0a4b087e8b1a66bf4bf3ddac2fb342fb988f1e', class: { 'xv-dropdown': true, [this.variant]: !!this.variant }, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": this.open ? 'true' : 'false', "aria-controls": this.open ? this.listboxId : null, size: this.size, open: this.open, error: !!this.error, disabled: this.disabled, tabindex: (this.disabled || this.readonly) ? -1 : 0 }, (this.label || this.info) && (h("label", { key: '9317e138effdd7ec69133304fe50d11c406b8faf', class: "label" }, h("slot", { key: '896604f1fef1f4531793a865c2083eaa5b744aa0', name: "label" }, this.label), this.info && h("xv-tooltip-v2", { key: 'd862a834642e1c115a063601926711339c53168b', class: "label_info", message: this.info }))), h("div", { key: '2cf34c1d32737ac0b664757b1a53bea34a507c72', class: { "xv-dropdown-control control": true, readonly: !!this.readonly }, onClick: this.handleOpen }, (this.multiple && this.selectedMap.size > 0) && (h("xv-tag-v2", { key: '9dd7be50d9ce42e037822502720a949ac071d8e0', class: "control_count", onClick: (e) => e.stopPropagation(), onCloseClick: this.clearHandle, closeable: !this.required, bg: "var(--background-inverse)", color: "var(--icon-inverse)" }, this.selectedMap.size)), this.selected.length ? (h("p", { class: "control_value" }, this.selected.join(', '))) : (h("p", { class: "control_placeholder" }, this.placeholder || '')), this._renderIcon(), h("svg", { key: '023c89db58f385e8a00cab6dce050048b2765b82', class: "control_arrow", focusable: "false", preserveAspectRatio: "xMidYMid meet", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", "aria-hidden": "true", width: "16", height: "16", viewBox: "0 0 448 512" }, h("path", { key: '5994fb2f805d0f1c904558f0ded054cd30c14210', d: "M441.9 167.3l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L224 328.2 42.9 147.5c-4.7-4.7-12.3-4.7-17 0L6.1 167.3c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17z" }))), this.open && h("div", { key: 'a2872c7cb6fbeb25583d4ed809b79b11aa533c4e', ref: (el) => (this.optionsEl = el), id: this.listboxId, role: "listbox", "aria-multiselectable": this.multiple ? 'true' : null, class: { options: true, right: this._appliedPosition() === 'right', search: !!this.search } }, this.search && (h("div", { key: '8908992fae99c07e3e9d2e06b705c55a4d73fb0a', class: "options_search" }, h("xv-text-input-v2", { key: '21fb4c673a3e46c024379ec7252026c0cf199ff4', type: "search", ref: (el) => (this.searchInputEl = el), block: true, autocomplete: "off", size: this.size, value: this.searchQuery, placeholder: this.searchPlaceholder, onValueChange: this.handleSearchInput }))), h("slot", { key: "xv-dropdown-options" })), message && h("p", { key: '104c79569b898fd9f0a9826654de18d16bc68a16', class: "helper" }, message.text)));
285
+ return (h(Host, { key: '01b71caf620b27aa3cf098ab9449196c1b7b56ea', class: { 'xv-dropdown': true, [this.variant]: !!this.variant }, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": this.open ? 'true' : 'false', "aria-controls": this.open ? this.listboxId : null, size: this.size, open: this.open, error: !!this.error, disabled: this.disabled, tabindex: (this.disabled || this.readonly) ? -1 : 0 }, (this.label || this.info) && (h("label", { key: 'd99f47f2abbbe370efde3a702b5d1c61b11aa4ca', class: "label" }, h("slot", { key: '2ca43ab5d65eb331d6ffd2ca10c251bcd6f6c3d0', name: "label" }, this.label), this.info && h("xv-tooltip-v2", { key: '7d55fa244097898202318adc3b03b898cb4b3f11', class: "label_info", message: this.info }))), h("div", { key: 'c854210410d358b440559702c4efab8b9ac894b8', class: { "xv-dropdown-control control": true, readonly: !!this.readonly }, onClick: this.handleOpen }, (this.multiple && this.selectedMap.size > 0) && (h("xv-tag-v2", { key: '4d46c14e2aab62651692a98b6c3d321d7073849c', class: "control_count", onClick: (e) => e.stopPropagation(), onCloseClick: this.clearHandle, closeable: !this.required, bg: "var(--background-inverse)", color: "var(--icon-inverse)" }, this.selectedMap.size)), this.selected.length ? (h("p", { class: "control_value" }, this.selected.join(', '))) : (h("p", { class: "control_placeholder" }, this.placeholder || '')), this._renderIcon(), h("svg", { key: 'e3bf3f8eb0b3e71038423e8eb2e14d78dc4ca33a', class: "control_arrow", focusable: "false", preserveAspectRatio: "xMidYMid meet", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor", "aria-hidden": "true", width: "16", height: "16", viewBox: "0 0 448 512" }, h("path", { key: '48f1408c0ebaa4c3b0c947dd4d9fdb2ab21a11c9', d: "M441.9 167.3l-19.8-19.8c-4.7-4.7-12.3-4.7-17 0L224 328.2 42.9 147.5c-4.7-4.7-12.3-4.7-17 0L6.1 167.3c-4.7 4.7-4.7 12.3 0 17l209.4 209.4c4.7 4.7 12.3 4.7 17 0l209.4-209.4c4.7-4.7 4.7-12.3 0-17z" }))), this.open && h("div", { key: '8915c7c514f6847a0d479c3ad1d39e00dbef46c2', ref: (el) => (this.optionsEl = el), id: this.listboxId, role: "listbox", "aria-multiselectable": this.multiple ? 'true' : null, class: { options: true, right: this._appliedPosition() === 'right', search: !!this.search } }, this.search && (h("div", { key: '2f59d1e41e8cf05038174123bad5b55038be5d75', class: "options_search" }, h("xv-text-input-v2", { key: '8670ba300bb2410d9ba708f4d07ba8f8def0c6c9', type: "search", ref: (el) => (this.searchInputEl = el), block: true, autocomplete: "off", size: this.size, value: this.searchQuery, placeholder: this.searchPlaceholder, onValueChange: this.handleSearchInput }))), h("slot", { key: "xv-dropdown-options" })), message && h("p", { key: 'cade20ffd199293bcdb1ee7fa5c6d20e7294929e', class: "helper" }, message.text)));
286
286
  }
287
287
  componentDidLoad() {
288
288
  this.syncOpenState();
@@ -14,6 +14,7 @@
14
14
  font-size: 1em;
15
15
  margin: 0;
16
16
  color: var(--text-secondary);
17
+ white-space: pre-line;
17
18
  }
18
19
  :host .upload-btn {
19
20
  padding: 0 1.14em;
@@ -33,6 +34,7 @@
33
34
  min-height: 90px;
34
35
  border: 1px dashed var(--border-strong-01);
35
36
  background-color: transparent;
37
+ color: var(--link-primary, #346800);
36
38
  padding: 1.14em;
37
39
  border-radius: 0.285em;
38
40
  transition: border-color 0.2s ease, background-color 0.2s ease;
@@ -100,15 +102,43 @@
100
102
  color: var(--text-secondary, #515151);
101
103
  white-space: pre-line;
102
104
  }
103
- :host .global-error {
105
+ :host .message {
106
+ display: flex;
107
+ align-items: center;
108
+ gap: var(--spacing-03);
104
109
  text-align: left;
105
110
  margin: 0;
106
111
  padding: 0 var(--spacing-05);
107
112
  font-size: 0.858em;
108
113
  font-style: normal;
109
114
  font-weight: 400;
115
+ color: var(--text-helper, #646464);
116
+ }
117
+ :host .message.error {
110
118
  color: var(--text-error);
111
119
  }
120
+ :host .message.warning {
121
+ color: var(--text-secondary, #515151);
122
+ }
123
+ :host .message .status-icon {
124
+ display: inline-flex;
125
+ align-items: center;
126
+ justify-content: center;
127
+ flex: none;
128
+ }
129
+ :host .message .status-icon.error {
130
+ width: 16px;
131
+ height: 16px;
132
+ border-radius: 8px;
133
+ background-color: var(--support-error);
134
+ color: white;
135
+ font-size: 12px;
136
+ font-weight: bold;
137
+ }
138
+ :host .message .status-icon.warning {
139
+ color: var(--support-warning, #FF7F04);
140
+ font-size: 1.15em;
141
+ }
112
142
 
113
143
  :host(.disabled) {
114
144
  pointer-events: none;
@@ -133,6 +163,14 @@
133
163
  border-color: var(--support-error);
134
164
  }
135
165
 
166
+ :host(.warning) .uploadBtn {
167
+ outline: 1px solid var(--support-warning, #FF7F04);
168
+ border-radius: 0.285em;
169
+ }
170
+ :host(.warning) .drop-zone {
171
+ border-color: var(--support-warning, #FF7F04);
172
+ }
173
+
136
174
  :host([size=xs]) {
137
175
  font-size: 10px;
138
176
  }
@@ -1,6 +1,7 @@
1
1
  import { h, Host, Fragment } from "@stencil/core";
2
2
  import { SIZE_VAR } from "../../types/enum";
3
3
  import { XvFileUploaderVariants } from "./_vars";
4
+ import { resolveFieldMessage } from "../../utils/utils";
4
5
  export class XvFileUploader {
5
6
  constructor() {
6
7
  this.variant = XvFileUploaderVariants.BUTTON;
@@ -15,6 +16,8 @@ export class XvFileUploader {
15
16
  this.errors = [];
16
17
  this.dragActive = false;
17
18
  this.errorMessages = [];
19
+ // Kept apart from `error` so a consumer-supplied message survives the next pick.
20
+ this.internalError = null;
18
21
  this.onFileSelect = (event) => {
19
22
  const input = event.target;
20
23
  const selectedFiles = Array.from(input.files || []);
@@ -53,10 +56,10 @@ export class XvFileUploader {
53
56
  const uniqueFiles = [];
54
57
  for (const file of files) {
55
58
  let error = null;
56
- if (!seenFileNames.has(file.name)) {
57
- seenFileNames.add(file.name);
58
- uniqueFiles.push(file);
59
- }
59
+ if (seenFileNames.has(file.name))
60
+ continue;
61
+ seenFileNames.add(file.name);
62
+ uniqueFiles.push(file);
60
63
  const dotIndex = file.name.lastIndexOf('.');
61
64
  const extension = file.name.substring(dotIndex).toLowerCase();
62
65
  const isAccepted = this.accept.length === 0 || this.accept.some(type => type.toLowerCase() === extension);
@@ -68,7 +71,7 @@ export class XvFileUploader {
68
71
  }
69
72
  errorMessages.push(error);
70
73
  }
71
- this.error = uniqueFiles.length > this.maxFiles
74
+ this.internalError = uniqueFiles.length > this.maxFiles
72
75
  ? `Only ${this.maxFiles} file(s) allowed.`
73
76
  : null;
74
77
  this.errorMessages = errorMessages;
@@ -84,7 +87,15 @@ export class XvFileUploader {
84
87
  }
85
88
  }
86
89
  render() {
87
- return (h(Host, { key: '3423ccf72c581a004e5ca59d9cbf6f673f7896c1', class: { 'upload-wrapper': true, [`uploader-${this.size}`]: true, disabled: !!this.disabled, error: !!this.error } }, this.label && h("label", { key: '93b7b8edc0ac8e980910dc83d7cabf2030f97b35', class: "label" }, this.label), this.description && h("p", { key: 'c6b030335b34ee97ada3127fc8641f7b009d6c55', class: "description" }, this.description), this.variant === 'button' ? (h("xv-button-v2", { class: "uploadBtn", variant: this.buttonVariant, disabled: this.disabled, onClick: () => this.fileInput.click() }, this.addText || 'Dateien auswählen')) : (h("div", { class: { 'drop-zone': true, active: this.dragActive }, onDrop: this.onDrop, onDragOver: this.onDragOver, onDragLeave: this.onDragLeave, onClick: () => this.fileInput.click() }, this.addText || 'Dateien hierher ziehen oder darauf klicken, um eine Datei auszuwählen.')), h("input", { key: '04a082fae037f176533bee68ea0a8b24f8f36257', ref: el => (this.fileInput = el), type: "file", hidden: true, onChange: this.onFileSelect, multiple: this.multiple, accept: this.accept.join(',') }), this.error && h("p", { key: '6fb7b7c5517030caf1f22206a6612077b0c14e7e', class: "global-error" }, this.error), h("ul", { key: 'e3d5461797abbc1168117c6772238780a0a7e14a', class: "file-list" }, this.files.map((file, index) => {
90
+ const error = this.error || this.internalError;
91
+ const message = resolveFieldMessage({ error, warning: this.warning, helper: this.helper });
92
+ return (h(Host, { key: '04568eba6facb5a18a4b4bc9ae6de9ce0f3e3db7', class: {
93
+ 'upload-wrapper': true,
94
+ [`uploader-${this.size}`]: true,
95
+ disabled: !!this.disabled,
96
+ error: !!error,
97
+ warning: !!this.warning && !error,
98
+ } }, this.label && h("label", { key: '5c5861bee814ecacdd43fd92dcb47240869f895b', class: "label" }, this.label), this.description && h("p", { key: 'd4a5de6bb093e02010ba98031dd5eda4c748ec9f', class: "description" }, this.description), this.variant === 'button' ? (h("xv-button-v2", { class: "uploadBtn", variant: this.buttonVariant, disabled: this.disabled, onClick: () => this.fileInput.click() }, this.addText || 'Dateien auswählen')) : (h("div", { class: { 'drop-zone': true, active: this.dragActive }, onDrop: this.onDrop, onDragOver: this.onDragOver, onDragLeave: this.onDragLeave, onClick: () => this.fileInput.click() }, this.addText || 'Dateien hierher ziehen oder darauf klicken, um eine Datei auszuwählen.')), h("input", { key: '08df6268214165b3b40ae177de230eae800d1a23', ref: el => (this.fileInput = el), type: "file", hidden: true, onChange: this.onFileSelect, multiple: this.multiple, accept: this.accept.join(',') }), message && (h("p", { key: '8f777fdc47a98f8ff9be67fafb8b1da79eabad09', class: { message: true, [message.level]: true } }, message.level === 'error' && h("span", { key: '4c550a739de39651a8326569546162b08555ef63', class: "status-icon error", "aria-hidden": "true" }, "!"), message.level === 'warning' && h("span", { key: 'b8a8229a57c053f94b691d86404313677b1f26ca', class: "status-icon warning", "aria-hidden": "true" }, "\u26A0"), message.text)), h("ul", { key: '6d82ac56ab535618bc958068c06ff987bdab1022', class: "file-list" }, this.files.map((file, index) => {
88
99
  var _a, _b;
89
100
  return (h("li", { class: { file: true, withError: !!(((_a = this.errors) === null || _a === void 0 ? void 0 : _a[index]) || ((_b = this.errorMessages) === null || _b === void 0 ? void 0 : _b[index])) } }, h("div", { class: "file_container" }, h("span", { class: "file_container_name" }, file.name), this._renderLoaderState(index)), this._renderError(index)));
90
101
  }))));
@@ -416,6 +427,44 @@ export class XvFileUploader {
416
427
  "reflect": true,
417
428
  "attribute": "error"
418
429
  },
430
+ "warning": {
431
+ "type": "any",
432
+ "mutable": false,
433
+ "complexType": {
434
+ "original": "string | boolean",
435
+ "resolved": "boolean | string",
436
+ "references": {}
437
+ },
438
+ "required": false,
439
+ "optional": true,
440
+ "docs": {
441
+ "tags": [],
442
+ "text": ""
443
+ },
444
+ "getter": false,
445
+ "setter": false,
446
+ "reflect": false,
447
+ "attribute": "warning"
448
+ },
449
+ "helper": {
450
+ "type": "string",
451
+ "mutable": false,
452
+ "complexType": {
453
+ "original": "string",
454
+ "resolved": "string",
455
+ "references": {}
456
+ },
457
+ "required": false,
458
+ "optional": true,
459
+ "docs": {
460
+ "tags": [],
461
+ "text": ""
462
+ },
463
+ "getter": false,
464
+ "setter": false,
465
+ "reflect": false,
466
+ "attribute": "helper"
467
+ },
419
468
  "errors": {
420
469
  "type": "unknown",
421
470
  "mutable": true,
@@ -439,7 +488,8 @@ export class XvFileUploader {
439
488
  static get states() {
440
489
  return {
441
490
  "dragActive": {},
442
- "errorMessages": {}
491
+ "errorMessages": {},
492
+ "internalError": {}
443
493
  };
444
494
  }
445
495
  static get events() {
@@ -34,7 +34,7 @@ export class Xvfooter {
34
34
  render() {
35
35
  const { categories, socials, logo, legalLinks, payments, partners, advantages } = this.data || {};
36
36
  const hasDataLength = ((categories === null || categories === void 0 ? void 0 : categories.length) || (partners === null || partners === void 0 ? void 0 : partners.length) || (payments === null || payments === void 0 ? void 0 : payments.length) || (socials === null || socials === void 0 ? void 0 : socials.length));
37
- return (h("footer", { key: 'c3406d777693fe2311102e6fcb9852383fc9ac6a', class: "xv-footer" }, (advantages === null || advantages === void 0 ? void 0 : advantages.length) > 0 && (h("div", { key: 'f5636ec1f9f660f5735d27a79924bd9c40adf75f', class: "xv-footer-advantages" }, h("div", { key: '42656264cb7590f5e61ce1bbe38aa37a63f04ee9', class: "xv-container" }, this._renderFooterList(advantages, { itemWithLabel: true })))), hasDataLength && (h("div", { key: 'e142aa994a80d0fe5be4e00a8f0c4039da1791d6', class: "xv-container" }, h("div", { key: 'b7d5ab5f3613736775b3ef83cc2cc676449663ba', class: "xv-footer__grid xv-footer-y-spacing" }, h("div", { key: 'c997c4022a8d2bea3547230f5ba9ed7a37635d46', class: "xv-footer__col-main" }, h("ul", { key: 'c1be504d2ce2a411dab6f1681564524f8b2446b3', class: "xv-footer-categories" }, categories === null || categories === void 0 ? void 0 : categories.map((category) => (h("li", null, h("p", { class: "xv-label-02" }, category.label), h("ul", { class: "xv-footer-routes" }, category.routes.map((item) => (h("li", null, h("a", { class: "xv-body-compact-02", href: item.href, target: item.target }, item.label)))))))))), h("div", { key: 'f82ccaf18e1fe63b47f109bf20845af9ea0d4add', class: "xv-footer__col-sidebar" }, this._renderFooterList(partners, { label: 'crossvertise Partner' }), this._renderFooterList(payments, { label: 'Bequem und sicher bezahlen' }), this._renderFooterList(socials, { label: 'Folgen Sie uns', isRow: true }))))), (legalLinks === null || legalLinks === void 0 ? void 0 : legalLinks.length) > 0 && (h("div", { key: 'e1d12515175bffaa970ac5bfe41ad0cf27d5097e', class: "xv-footer-legal" }, h("div", { key: '969c103e50bdfeb52f9139c3dd53189d80d9a22d', class: "xv-container" }, h("div", { key: '5b3e4f18da410ea82fc62074f22daa8e226d6d4b', class: "xv-footer-legal-row" }, logo && (h("a", { key: '8e7bf3fd82686faa5a2e83131a542730eba7389f', class: "xv-footer-logo", href: logo.href, target: logo.target }, logo.label && h("span", { key: 'b211963ee69c7a6151cdae1a2476223f8ef73e34', class: "xv-label-02" }, logo.label), h("img", { key: '243eed6378143f9328a174f515c2c6276a90a09a', loading: "lazy", src: logo.image, alt: logo.label }))), h("ul", { key: '88538ee0047edf6df20a4e27d4d9bf348724bc56' }, legalLinks.map((item) => {
37
+ return (h("footer", { key: '726a05b831d337bdef052ca16b478a85ef5dfd9b', class: "xv-footer" }, (advantages === null || advantages === void 0 ? void 0 : advantages.length) > 0 && (h("div", { key: '22a41f8bd514f4b61bc62df31ddcabc5de7b7bc6', class: "xv-footer-advantages" }, h("div", { key: '5e4035e086ad3bd7987ff802736096c4364f8530', class: "xv-container" }, this._renderFooterList(advantages, { itemWithLabel: true })))), hasDataLength && (h("div", { key: '003822874e51506b991f76e92c4f5d8c96073f99', class: "xv-container" }, h("div", { key: '4e09e7f929eff1a781d6d64120915ca4d30f5d86', class: "xv-footer__grid xv-footer-y-spacing" }, h("div", { key: 'ebd4fd1e5e72fd08f9c49c10bf0e760fb644864f', class: "xv-footer__col-main" }, h("ul", { key: 'bdfa7fc3986ea83b3b3514ae61e0c463f1070f3c', class: "xv-footer-categories" }, categories === null || categories === void 0 ? void 0 : categories.map((category) => (h("li", null, h("p", { class: "xv-label-02" }, category.label), h("ul", { class: "xv-footer-routes" }, category.routes.map((item) => (h("li", null, h("a", { class: "xv-body-compact-02", href: item.href, target: item.target }, item.label)))))))))), h("div", { key: 'f912a89f9b8132ae932a12ab3ff844e4781ecd48', class: "xv-footer__col-sidebar" }, this._renderFooterList(partners, { label: 'crossvertise Partner' }), this._renderFooterList(payments, { label: 'Bequem und sicher bezahlen' }), this._renderFooterList(socials, { label: 'Folgen Sie uns', isRow: true }))))), (legalLinks === null || legalLinks === void 0 ? void 0 : legalLinks.length) > 0 && (h("div", { key: '0ab1803fd376c5f10be8b0e664d81dd8158577de', class: "xv-footer-legal" }, h("div", { key: 'b755d56da4c5ce178a1b3b0e1883e3444144b54b', class: "xv-container" }, h("div", { key: '356cc0b19cccf1e69b5531ff580a6c63274c0783', class: "xv-footer-legal-row" }, logo && (h("a", { key: '325a93b944d086c42565bdf6b973301f25fbd778', class: "xv-footer-logo", href: logo.href, target: logo.target }, logo.label && h("span", { key: '6292ac8dc8630818902d96da3b275e1e3f763281', class: "xv-label-02" }, logo.label), h("img", { key: '847e90de5ebb14fdf255c7c37ad1f90c99424f02', loading: "lazy", src: logo.image, alt: logo.label }))), h("ul", { key: 'd692fb126d2e382fe142fd3b033f794fc38f66fd' }, legalLinks.map((item) => {
38
38
  if (item.label === 'Cookie Einstellungen') {
39
39
  return h("li", null, h("a", { class: "xv-helper-text-02", onClick: this.openCookieSettings }, item.label));
40
40
  }