xv-webcomponents 1.20.2 → 1.22.1-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 (146) hide show
  1. package/dist/cjs/{index-DwneAp1a.js → index-Cb30DBqk.js} +16 -0
  2. package/dist/cjs/index-DpLAFt0R.js +3728 -0
  3. package/dist/cjs/index.cjs.js +1 -1
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/maplibre-gl-CCZS3Rg5.js +900 -0
  6. package/dist/cjs/{xv-accordion-v2_48.cjs.entry.js → xv-accordion-v2_49.cjs.entry.js} +736 -119
  7. package/dist/cjs/xv-header-next.cjs.entry.js +4 -4
  8. package/dist/cjs/xv-mega-menu-next.cjs.entry.js +5 -5
  9. package/dist/cjs/xv-webcomponents.cjs.js +2 -2
  10. package/dist/collection/collection-manifest.json +1 -0
  11. package/dist/collection/components/xv-accordion/xv-accordion.css +0 -127
  12. package/dist/collection/components/xv-accordion/xv-accordion.js +24 -4
  13. package/dist/collection/components/xv-accordion-item/xv-accordion-item.css +0 -127
  14. package/dist/collection/components/xv-accordion-item/xv-accordion-item.js +11 -5
  15. package/dist/collection/components/xv-breadcrumbs/xv-breadcrumbs.css +0 -127
  16. package/dist/collection/components/xv-breadcrumbs/xv-breadcrumbs.js +1 -1
  17. package/dist/collection/components/xv-button/xv-button-v2.css +3 -130
  18. package/dist/collection/components/xv-button/xv-button.js +4 -4
  19. package/dist/collection/components/xv-button-group/xv-button-group.css +0 -127
  20. package/dist/collection/components/xv-button-group/xv-button-group.js +1 -1
  21. package/dist/collection/components/xv-card/xv-card.css +0 -127
  22. package/dist/collection/components/xv-card/xv-card.js +1 -1
  23. package/dist/collection/components/xv-checkbox/xv-checkbox.css +0 -127
  24. package/dist/collection/components/xv-checkbox/xv-checkbox.js +2 -2
  25. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.css +0 -127
  26. package/dist/collection/components/xv-content-switcher/xv-content-switcher-item/xv-content-switcher-item.js +1 -1
  27. package/dist/collection/components/xv-content-switcher/xv-content-switcher.css +0 -127
  28. package/dist/collection/components/xv-content-switcher/xv-content-switcher.js +2 -2
  29. package/dist/collection/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.css +0 -127
  30. package/dist/collection/components/xv-data-table/xv-data-table-cell/xv-data-table-cell.js +1 -1
  31. package/dist/collection/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.css +0 -127
  32. package/dist/collection/components/xv-data-table/xv-data-table-collapse/xv-data-table-collapse.js +1 -1
  33. package/dist/collection/components/xv-data-table/xv-data-table-row/xv-data-table-row.css +0 -127
  34. package/dist/collection/components/xv-data-table/xv-data-table-row/xv-data-table-row.js +2 -2
  35. package/dist/collection/components/xv-data-table/xv-data-table.css +0 -127
  36. package/dist/collection/components/xv-data-table/xv-data-table.js +1 -1
  37. package/dist/collection/components/xv-datepicker/xv-datepicker.css +3 -127
  38. package/dist/collection/components/xv-datepicker/xv-datepicker.js +69 -5
  39. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.css +0 -127
  40. package/dist/collection/components/xv-dropdown/xv-dropdown-item/xv-dropdown-item.js +1 -1
  41. package/dist/collection/components/xv-dropdown/xv-dropdown.css +3 -129
  42. package/dist/collection/components/xv-dropdown/xv-dropdown.js +5 -4
  43. package/dist/collection/components/xv-file-uploader/xv-file-uploader.css +0 -127
  44. package/dist/collection/components/xv-file-uploader/xv-file-uploader.js +1 -1
  45. package/dist/collection/components/xv-footer/xv-footer.css +0 -222
  46. package/dist/collection/components/xv-footer/xv-footer.js +1 -1
  47. package/dist/collection/components/xv-geo-map/xv-geo-map.css +907 -0
  48. package/dist/collection/components/xv-geo-map/xv-geo-map.js +984 -0
  49. package/dist/collection/components/xv-header/xv-header.css +0 -222
  50. package/dist/collection/components/xv-header/xv-header.js +1 -1
  51. package/dist/collection/components/xv-header-next/xv-header-next.css +0 -222
  52. package/dist/collection/components/xv-header-next/xv-header-next.js +1 -1
  53. package/dist/collection/components/xv-image-viewer/xv-image-viewer.css +0 -127
  54. package/dist/collection/components/xv-image-viewer/xv-image-viewer.js +1 -1
  55. package/dist/collection/components/xv-link/xv-link.css +0 -127
  56. package/dist/collection/components/xv-link/xv-link.js +1 -1
  57. package/dist/collection/components/xv-loader/xv-loader.css +0 -127
  58. package/dist/collection/components/xv-login-modal/xv-login-modal.css +0 -127
  59. package/dist/collection/components/xv-mega-menu/xv-mega-menu.css +0 -254
  60. package/dist/collection/components/xv-mega-menu/xv-mega-menu.js +2 -2
  61. package/dist/collection/components/xv-mega-menu-next/xv-mega-menu-next.css +0 -254
  62. package/dist/collection/components/xv-mega-menu-next/xv-mega-menu-next.js +2 -2
  63. package/dist/collection/components/xv-modal/xv-modal.css +0 -127
  64. package/dist/collection/components/xv-modal/xv-modal.js +1 -1
  65. package/dist/collection/components/xv-notification/xv-notification.css +0 -127
  66. package/dist/collection/components/xv-notification/xv-notification.js +1 -1
  67. package/dist/collection/components/xv-number-input/xv-number-input.css +0 -127
  68. package/dist/collection/components/xv-number-input/xv-number-input.js +4 -2
  69. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu-item/xv-overflow-menu-item.css +0 -127
  70. package/dist/collection/components/xv-overflow-menu/xv-overflow-menu.css +0 -127
  71. package/dist/collection/components/xv-pagination/xv-pagination.css +0 -127
  72. package/dist/collection/components/xv-pagination/xv-pagination.js +59 -3
  73. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.css +0 -127
  74. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator-item/xv-progress-indicator-item.js +1 -1
  75. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.css +0 -127
  76. package/dist/collection/components/xv-progress-indicator/xv-progress-indicator.js +1 -1
  77. package/dist/collection/components/xv-radio/xv-radio.css +3 -127
  78. package/dist/collection/components/xv-radio/xv-radio.js +23 -2
  79. package/dist/collection/components/xv-slider/xv-slider.css +0 -127
  80. package/dist/collection/components/xv-slider/xv-slider.js +1 -1
  81. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.css +0 -127
  82. package/dist/collection/components/xv-table/xv-table-cell/xv-table-cell.js +1 -1
  83. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.css +0 -127
  84. package/dist/collection/components/xv-table/xv-table-expand/xv-table-expand.js +1 -1
  85. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.css +0 -127
  86. package/dist/collection/components/xv-table/xv-table-row/xv-table-row.js +1 -1
  87. package/dist/collection/components/xv-table/xv-table.css +0 -127
  88. package/dist/collection/components/xv-table/xv-table.js +1 -1
  89. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.css +0 -127
  90. package/dist/collection/components/xv-tabs/xv-tab/xv-tab.js +1 -1
  91. package/dist/collection/components/xv-tabs/xv-tabs.css +0 -127
  92. package/dist/collection/components/xv-tag/xv-tag.css +0 -127
  93. package/dist/collection/components/xv-tag/xv-tag.js +1 -1
  94. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.css +2 -129
  95. package/dist/collection/components/xv-tag-combobox/xv-tag-combobox.js +23 -2
  96. package/dist/collection/components/xv-text-input/xv-text-input.css +0 -127
  97. package/dist/collection/components/xv-text-input/xv-text-input.js +4 -2
  98. package/dist/collection/components/xv-textarea/xv-textarea.css +11 -128
  99. package/dist/collection/components/xv-textarea/xv-textarea.js +4 -2
  100. package/dist/collection/components/xv-tile/xv-tile.css +0 -127
  101. package/dist/collection/components/xv-tile/xv-tile.js +2 -2
  102. package/dist/collection/components/xv-toggle/xv-toggle.css +0 -127
  103. package/dist/collection/components/xv-toggle/xv-toggle.js +1 -1
  104. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.css +0 -127
  105. package/dist/collection/components/xv-toggle-tip/xv-toggle-tip.js +1 -1
  106. package/dist/collection/components/xv-tooltip/xv-tooltip.css +0 -32
  107. package/dist/collection/components/xv-tooltip/xv-tooltip.js +2 -2
  108. package/dist/collection/utils/utils.js +15 -0
  109. package/dist/esm/{index-OqHMuwQF.js → index-CQm2sRKT.js} +16 -1
  110. package/dist/esm/index-DmxA2ysB.js +3717 -0
  111. package/dist/esm/index.js +1 -1
  112. package/dist/esm/loader.js +3 -3
  113. package/dist/esm/maplibre-gl-CS4Eagm9.js +813 -0
  114. package/dist/esm/maplibre-gl-shared.mjs +6 -0
  115. package/dist/esm/maplibre-gl-worker.mjs +6 -0
  116. package/dist/esm/{xv-accordion-v2_48.entry.js → xv-accordion-v2_49.entry.js} +736 -120
  117. package/dist/esm/xv-header-next.entry.js +4 -4
  118. package/dist/esm/xv-mega-menu-next.entry.js +5 -5
  119. package/dist/esm/xv-webcomponents.js +3 -3
  120. package/dist/types/components/xv-accordion/xv-accordion.d.ts +5 -4
  121. package/dist/types/components/xv-accordion-item/xv-accordion-item.d.ts +3 -0
  122. package/dist/types/components/xv-button/xv-button.d.ts +1 -1
  123. package/dist/types/components/xv-datepicker/xv-datepicker.d.ts +12 -0
  124. package/dist/types/components/xv-geo-map/xv-geo-map.d.ts +115 -0
  125. package/dist/types/components/xv-pagination/xv-pagination.d.ts +3 -1
  126. package/dist/types/components/xv-radio/xv-radio.d.ts +1 -0
  127. package/dist/types/components/xv-tag-combobox/xv-tag-combobox.d.ts +1 -0
  128. package/dist/types/components.d.ts +239 -2
  129. package/dist/types/utils/utils.d.ts +9 -0
  130. package/dist/xv-webcomponents/index.esm.js +1 -1
  131. package/dist/xv-webcomponents/p-77bd6e1f.entry.js +8 -0
  132. package/dist/xv-webcomponents/p-93bd2dca.entry.js +1 -0
  133. package/dist/xv-webcomponents/p-9e3130ff.entry.js +1 -0
  134. package/dist/xv-webcomponents/p-CQm2sRKT.js +1 -0
  135. package/dist/xv-webcomponents/p-CS4Eagm9.js +10 -0
  136. package/dist/xv-webcomponents/p-DmxA2ysB.js +2 -0
  137. package/dist/xv-webcomponents/xv-webcomponents.css +2 -17
  138. package/dist/xv-webcomponents/xv-webcomponents.esm.js +1 -1
  139. package/package.json +2 -1
  140. package/dist/cjs/index-C4fJ70r4.js +0 -3728
  141. package/dist/esm/index-Cv2gugMt.js +0 -3717
  142. package/dist/xv-webcomponents/p-00197757.entry.js +0 -8
  143. package/dist/xv-webcomponents/p-0b0ce8e2.entry.js +0 -1
  144. package/dist/xv-webcomponents/p-Cv2gugMt.js +0 -2
  145. package/dist/xv-webcomponents/p-OqHMuwQF.js +0 -1
  146. package/dist/xv-webcomponents/p-fa1779f0.entry.js +0 -1
@@ -2,6 +2,7 @@ import { Host, h, Fragment, } from "@stencil/core";
2
2
  import dateFns from "date-fns";
3
3
  import { de } from "date-fns/locale";
4
4
  import { SIZE_VAR } from "../../types/enum";
5
+ import { resolveFieldMessage } from "../../utils/utils";
5
6
  import { createPopper } from "@popperjs/core";
6
7
  const WEEK = Array
7
8
  .from({ length: 7 })
@@ -30,7 +31,8 @@ export class XvDatepicker {
30
31
  return;
31
32
  }
32
33
  if ((this.minDate && dateFns.isBefore(newDate, this.minDate)) ||
33
- (this.maxDate && dateFns.isAfter(newDate, this.maxDate))) {
34
+ (this.maxDate && dateFns.isAfter(newDate, this.maxDate)) ||
35
+ this.disabledSet.has(val)) {
34
36
  return;
35
37
  }
36
38
  if (this.variant === 'single') {
@@ -55,7 +57,8 @@ export class XvDatepicker {
55
57
  const val = new Date(input.value);
56
58
  if (!dateFns.isValid(val) ||
57
59
  (this.minDate && dateFns.isBefore(val, this.minDate)) ||
58
- (this.maxDate && dateFns.isAfter(val, this.maxDate))) {
60
+ (this.maxDate && dateFns.isAfter(val, this.maxDate)) ||
61
+ this.disabledSet.has(input.value)) {
59
62
  this.value[range === 'start' ? 0 : 1] = undefined;
60
63
  input.value = '';
61
64
  this.localError = 'Das angegebene Datum ist nicht verfügbar.';
@@ -130,6 +133,30 @@ export class XvDatepicker {
130
133
  return iso;
131
134
  return dateFns.parse(this.max, 'yyyy-MM-dd', new Date());
132
135
  }
136
+ get disabledSet() {
137
+ var _a;
138
+ const keys = ((_a = this.disabledDates) !== null && _a !== void 0 ? _a : []).map(d => this.toDayKey(d)).filter(Boolean);
139
+ return new Set(keys);
140
+ }
141
+ /** Normalise a disabled-date entry to a local 'yyyy-MM-dd' key. */
142
+ toDayKey(value) {
143
+ if (value instanceof Date) {
144
+ return dateFns.isValid(value) ? dateFns.format(value, DEF_FORMAT) : '';
145
+ }
146
+ // Bare 'yyyy-MM-dd' is already a key — use verbatim to avoid a TZ shift
147
+ // from re-parsing it into a Date.
148
+ if (/^\d{4}-\d{2}-\d{2}$/.test(value))
149
+ return value;
150
+ const parsed = dateFns.parseISO(value);
151
+ return dateFns.isValid(parsed) ? dateFns.format(parsed, DEF_FORMAT) : '';
152
+ }
153
+ isDayDisabled(date, disabled = this.disabledSet) {
154
+ if (this.minDate && dateFns.isBefore(date, this.minDate))
155
+ return true;
156
+ if (this.maxDate && dateFns.isAfter(date, this.maxDate))
157
+ return true;
158
+ return disabled.has(dateFns.format(date, DEF_FORMAT));
159
+ }
133
160
  get isPrevDisabled() {
134
161
  if (!this.minDate)
135
162
  return false;
@@ -163,13 +190,14 @@ export class XvDatepicker {
163
190
  getCalendarGrid() {
164
191
  const start = dateFns.startOfWeek(dateFns.startOfMonth(this.month), { weekStartsOn: 1 });
165
192
  const end = dateFns.endOfWeek(dateFns.endOfMonth(this.month), { weekStartsOn: 1 });
193
+ const disabled = this.disabledSet;
166
194
  this.days = dateFns.eachDayOfInterval({ start, end }).map(date => ({
167
195
  date,
168
196
  week: dateFns.getWeek(date, { weekStartsOn: 1 }),
169
197
  day: date.getDate(),
170
198
  isCurrentMonth: dateFns.isSameMonth(date, this.month),
171
199
  isToday: dateFns.isToday(date),
172
- disabled: (this.minDate && dateFns.isBefore(date, this.minDate)) || (this.maxDate && dateFns.isAfter(date, this.maxDate))
200
+ disabled: this.isDayDisabled(date, disabled)
173
201
  }));
174
202
  return this.days;
175
203
  }
@@ -228,12 +256,17 @@ export class XvDatepicker {
228
256
  }
229
257
  render() {
230
258
  const [start, end] = this.value;
231
- return (h(Host, { key: '0aafb4638713263a78600eae3f9765384116536b', class: { disabled: !!this.disabled }, tabindex: this.disabled ? '-1' : undefined }, h("div", { key: '648d2c679e70a7a89ba9970c307d8242d58766c9', "aria-controls": "popover", class: "control" }, this.label && h("label", { key: 'ce60e99ae454e29d70daa95b2b02cc448b5e560e', class: "control_label" }, this.label), h("div", { key: '5ce3af8b823cba5e29c0c87a285da1349a69bc9c', class: {
259
+ const message = resolveFieldMessage({
260
+ error: (typeof this.error === 'string' && this.error) || this.localError,
261
+ warning: this.warning,
262
+ helper: this.helper,
263
+ });
264
+ return (h(Host, { key: 'd3824a5d7c420cf3956bac19dce90ad6a2bf7fa2', class: { disabled: !!this.disabled }, tabindex: this.disabled ? '-1' : undefined }, h("div", { key: 'd93850164d288cb74c8120596196088e44c33a23', "aria-controls": "popover", class: "control" }, this.label && h("label", { key: 'e136f0ef2de64fa2e95b77caeb3675cee7626575', class: "control_label" }, this.label), h("div", { key: '102e8ce2e9dc0d9e74ba9a771b513977acbeb0ba', class: {
232
265
  'control_field': true,
233
266
  loading: this.loading,
234
267
  error: !!this.error || !!this.localError,
235
268
  warning: this.warning !== undefined,
236
- }, onClick: this.handleOpen, ref: (el) => (this.controlEl = el) }, h("input", { key: '5d3cd24b98479a230f8add829b61c52a4a9a1f5d', lang: "de", type: "date", name: "start", disabled: this.loading || this.disabled, readonly: this.readonly || this.variant === 'range', min: this.min, max: this.max, value: start ? dateFns.format(start, DEF_FORMAT) : '', onChange: (e) => this.handleChange(e, 'start'), onBlur: (e) => this.handleBlur(e, 'start'), onKeyDown: (e) => this.handleKeydown(e, 'start') }), this.variant === 'range' && (h("input", { key: '308729dc895e0be29b86e89193a6ddb414c0ec4d', lang: "de", type: "date", name: "end", disabled: this.loading || this.disabled, readonly: this.readonly || this.variant === 'range', min: this.min, max: this.max, value: end ? dateFns.format(end, DEF_FORMAT) : '', onChange: (e) => this.handleChange(e, 'end'), onBlur: (e) => this.handleBlur(e, 'end'), onKeyDown: (e) => this.handleKeydown(e, 'end') }))), (this.helper || this.error || this.warning || this.localError) && (h("div", { key: '95f2973e5fdcb8720b274cddae28b64cc099da39' }, this.helper && h("p", { key: '9fbc0d4de5f35932b414bbc3a2b0ef23d5183652', class: "control_message helper" }, this.helper), (this.error || this.warning || this.localError) && (h("p", { key: 'e8abe7fd7c5772d10d012ced52f457aa7db168ce', class: { control_message: true, error: !!this.error || !!this.localError } }, this.error || this.localError || this.warning))))), h("div", { key: 'd4396486599a6ed66dd63eb3d9f46dc8430a6749', role: "dialog", class: { popover: true, open: this.open }, ref: (el) => (this.popoverEl = el) }, h("div", { key: 'aa227b586801a453468ea52d099eb8b269b1ab64', class: "header" }, h("xv-button-v2", { key: '1c440d5cf1924575b93bc859e9710892c8f3b3ca', tabindex: this.open ? undefined : '-1', disabled: this.isPrevDisabled, variant: "ghost", onClick: this.prevMonth }, h("span", { key: '1bfd67bbd807287fb5d84ee66e70fe449a4a3e5f', slot: "icon-left", class: "header_icon prev" })), h("p", { key: '615c56c593d8129bb8bec31cbe4d247311178cee', class: "header_date" }, dateFns.format(this.month, 'LLLL', { locale: de }), h("input", { key: '3821fb5922add935193bcb2dd78182935489f820', tabindex: this.open ? undefined : '-1', type: "number", value: this.month.getFullYear(), onInput: this.handleYearChange, onBlur: this.handleYearBlur })), h("xv-button-v2", { key: '7fda8d66daf94a359ac93bfde25e950160e99369', tabindex: this.open ? undefined : '-1', disabled: this.isNextDisabled, variant: "ghost", onClick: this.nextMonth }, h("span", { key: '89caa272c23b28a20df17c57561393447460e937', slot: "icon-left", class: "header_icon next" }))), h("div", { key: '4b1ed14eadc14cd9dd08527beba67506449cc3bd', class: "week" }, h("p", { key: 'd9d8d23fb60f508bf281a8d6582bfffa0b0be404', class: "week_day" }), WEEK.map((day) => h("p", { class: "week_day" }, day, "."))), h("div", { key: '0a09c7958ee87729cb0b46618c4691ebfa31ad04', class: "week" }, this.days.map((day, idx) => (h(Fragment, null, idx % 7 === 0 && (h("button", { tabindex: this.open ? undefined : '-1', disabled: true, class: "week_day disabled" }, day.week)), h("button", { tabindex: this.open ? undefined : '-1', onClick: () => this.handleSetDate(day), disabled: day.disabled, class: {
269
+ }, onClick: this.handleOpen, ref: (el) => (this.controlEl = el) }, h("input", { key: '815eb8a1b9aef9a4ffae56ce120175e4e727e2c0', lang: "de", type: "date", name: "start", disabled: this.loading || this.disabled, readonly: this.readonly || this.variant === 'range', min: this.min, max: this.max, value: start ? dateFns.format(start, DEF_FORMAT) : '', onChange: (e) => this.handleChange(e, 'start'), onBlur: (e) => this.handleBlur(e, 'start'), onKeyDown: (e) => this.handleKeydown(e, 'start') }), this.variant === 'range' && (h("input", { key: '4ae5693501d921d8431da8d261de777f159eb778', lang: "de", type: "date", name: "end", disabled: this.loading || this.disabled, readonly: this.readonly || this.variant === 'range', min: this.min, max: this.max, value: end ? dateFns.format(end, DEF_FORMAT) : '', onChange: (e) => this.handleChange(e, 'end'), onBlur: (e) => this.handleBlur(e, 'end'), onKeyDown: (e) => this.handleKeydown(e, 'end') }))), message && (h("p", { key: 'a3facc864173f9a8d74ef8542fff82ea935f5593', class: { control_message: true, [message.level]: true } }, message.text))), h("div", { key: '649f74e157bcd2e834d03c7a2d52968fbe3087c1', role: "dialog", class: { popover: true, open: this.open }, ref: (el) => (this.popoverEl = el) }, h("div", { key: '2cfbafcfaa23d86e610d488315ac6b1aa34dbf54', class: "header" }, h("xv-button-v2", { key: '3694744a0a8790fc80f65ae2a3a33d7f5a0a4d15', tabindex: this.open ? undefined : '-1', disabled: this.isPrevDisabled, variant: "ghost", onClick: this.prevMonth }, h("span", { key: '96aec7fad4fafc6ed43bea53b5000a1100815bf7', slot: "icon-left", class: "header_icon prev" })), h("p", { key: 'a52cafec3ee1d519d3acd39b65c59209b05a17f3', class: "header_date" }, dateFns.format(this.month, 'LLLL', { locale: de }), h("input", { key: 'f523d1ab179245a725a5bfe2ec97f3bce50533de', tabindex: this.open ? undefined : '-1', type: "number", value: this.month.getFullYear(), onInput: this.handleYearChange, onBlur: this.handleYearBlur })), h("xv-button-v2", { key: '16a1f92a5a461a4c812225a586ea705e858aeac7', tabindex: this.open ? undefined : '-1', disabled: this.isNextDisabled, variant: "ghost", onClick: this.nextMonth }, h("span", { key: '5b38b9fef3ab9914f879f8525dcd5b46f46058b4', slot: "icon-left", class: "header_icon next" }))), h("div", { key: '223691312e59a749bd1f8a982b7270fb529b6b32', class: "week" }, h("p", { key: '898552659a61a0cf789541cf694f7589eacdf457', class: "week_day" }), WEEK.map((day) => h("p", { class: "week_day" }, day, "."))), h("div", { key: '7c91b9a24f7d37f64f159f290a43cbfff4c9be1a', class: "week" }, this.days.map((day, idx) => (h(Fragment, null, idx % 7 === 0 && (h("button", { tabindex: this.open ? undefined : '-1', disabled: true, class: "week_day disabled" }, day.week)), h("button", { tabindex: this.open ? undefined : '-1', onClick: () => this.handleSetDate(day), disabled: day.disabled, class: {
237
270
  'week_day': true,
238
271
  inRange: this.variant === 'range' && dateFns.isWithinInterval(day.date, { start, end }),
239
272
  isToday: day.isToday,
@@ -515,6 +548,28 @@ export class XvDatepicker {
515
548
  "setter": false,
516
549
  "reflect": false,
517
550
  "attribute": "max"
551
+ },
552
+ "disabledDates": {
553
+ "type": "unknown",
554
+ "mutable": false,
555
+ "complexType": {
556
+ "original": "(Date | string)[]",
557
+ "resolved": "(string | Date)[]",
558
+ "references": {
559
+ "Date": {
560
+ "location": "global",
561
+ "id": "global::Date"
562
+ }
563
+ }
564
+ },
565
+ "required": false,
566
+ "optional": true,
567
+ "docs": {
568
+ "tags": [],
569
+ "text": "Individual dates to disable within the min/max range. Each entry may be a\n`Date`, a bare 'yyyy-MM-dd' string, or a full ISO string \u2014 all normalised\nto a local 'yyyy-MM-dd' key that matches the calendar grid.\nComposes with min/max: a day is selectable only when it is inside the range\nAND not listed here (e.g. to allow only certain weekdays / block holidays)."
570
+ },
571
+ "getter": false,
572
+ "setter": false
518
573
  }
519
574
  };
520
575
  }
@@ -577,6 +632,15 @@ export class XvDatepicker {
577
632
  }, {
578
633
  "propName": "month",
579
634
  "methodName": "getCalendarGrid"
635
+ }, {
636
+ "propName": "min",
637
+ "methodName": "getCalendarGrid"
638
+ }, {
639
+ "propName": "max",
640
+ "methodName": "getCalendarGrid"
641
+ }, {
642
+ "propName": "disabledDates",
643
+ "methodName": "getCalendarGrid"
580
644
  }, {
581
645
  "propName": "value",
582
646
  "methodName": "handleValueChange"
@@ -1,130 +1,3 @@
1
- .xv-container {
2
- width: 100%;
3
- max-width: 1170px;
4
- margin-inline: auto;
5
- }
6
- @media (min-width: 576px) {
7
- .xv-container {
8
- max-width: 540px;
9
- }
10
- }
11
- @media (min-width: 768px) {
12
- .xv-container {
13
- max-width: 720px;
14
- }
15
- }
16
- @media (min-width: 992px) {
17
- .xv-container {
18
- max-width: 960px;
19
- padding-inline: var(--bs-gutter-x, 0.75rem);
20
- }
21
- }
22
- @media (min-width: 1200px) {
23
- .xv-container {
24
- max-width: 1140px;
25
- }
26
- }
27
- @media (min-width: 1400px) {
28
- .xv-container {
29
- max-width: 1320px;
30
- }
31
- }
32
-
33
- .xv-tooltip[role=tooltip] {
34
- position: absolute;
35
- background-color: var(--background-inverse, #333333);
36
- color: var(--text-on-color);
37
- padding: var(--spacing-03) var(--spacing-04);
38
- border-radius: 3px;
39
- font-size: var(--fz-sm);
40
- z-index: 999;
41
- min-width: min(150px, 90vw);
42
- max-width: min(400px, 90vw);
43
- }
44
- .xv-tooltip[role=tooltip]::after {
45
- content: "";
46
- position: absolute;
47
- width: 0;
48
- height: 0;
49
- border-style: solid;
50
- }
51
- .xv-tooltip[role=tooltip][data-popper-placement=top]::after {
52
- bottom: -5px;
53
- left: 50%;
54
- transform: translateX(-50%);
55
- border-width: 5px 5px 0 5px;
56
- border-color: var(--background-inverse, black) transparent transparent transparent;
57
- }
58
- .xv-tooltip[role=tooltip][data-popper-placement=top-start]::after {
59
- bottom: -5px;
60
- left: 12px;
61
- border-width: 5px 5px 0 5px;
62
- border-color: var(--background-inverse, black) transparent transparent transparent;
63
- }
64
- .xv-tooltip[role=tooltip][data-popper-placement=top-end]::after {
65
- bottom: -5px;
66
- right: 12px;
67
- border-width: 5px 5px 0 5px;
68
- border-color: var(--background-inverse, black) transparent transparent transparent;
69
- }
70
- .xv-tooltip[role=tooltip][data-popper-placement=bottom]::after {
71
- top: -5px;
72
- left: 50%;
73
- transform: translateX(-50%);
74
- border-width: 0 5px 5px 5px;
75
- border-color: transparent transparent var(--background-inverse, black) transparent;
76
- }
77
- .xv-tooltip[role=tooltip][data-popper-placement=bottom-start]::after {
78
- top: -5px;
79
- left: 12px;
80
- border-width: 0 5px 5px 5px;
81
- border-color: transparent transparent var(--background-inverse, black) transparent;
82
- }
83
- .xv-tooltip[role=tooltip][data-popper-placement=bottom-end]::after {
84
- top: -5px;
85
- right: 12px;
86
- border-width: 0 5px 5px 5px;
87
- border-color: transparent transparent var(--background-inverse, black) transparent;
88
- }
89
- .xv-tooltip[role=tooltip][data-popper-placement=left]::after {
90
- top: 50%;
91
- right: -5px;
92
- transform: translateY(-50%);
93
- border-width: 5px 0 5px 5px;
94
- border-color: transparent transparent transparent var(--background-inverse, black);
95
- }
96
- .xv-tooltip[role=tooltip][data-popper-placement=left-start]::after {
97
- top: 12px;
98
- right: -5px;
99
- border-width: 5px 0 5px 5px;
100
- border-color: transparent transparent transparent var(--background-inverse, black);
101
- }
102
- .xv-tooltip[role=tooltip][data-popper-placement=left-end]::after {
103
- bottom: 12px;
104
- right: -5px;
105
- border-width: 5px 0 5px 5px;
106
- border-color: transparent transparent transparent var(--background-inverse, black);
107
- }
108
- .xv-tooltip[role=tooltip][data-popper-placement=right]::after {
109
- top: 50%;
110
- left: -5px;
111
- transform: translateY(-50%);
112
- border-width: 5px 5px 5px 0;
113
- border-color: transparent var(--background-inverse, black) transparent transparent;
114
- }
115
- .xv-tooltip[role=tooltip][data-popper-placement=right-start]::after {
116
- top: 12px;
117
- left: -5px;
118
- border-width: 5px 5px 5px 0;
119
- border-color: transparent var(--background-inverse, black) transparent transparent;
120
- }
121
- .xv-tooltip[role=tooltip][data-popper-placement=right-end]::after {
122
- bottom: 12px;
123
- left: -5px;
124
- border-width: 5px 5px 5px 0;
125
- border-color: transparent var(--background-inverse, black) transparent transparent;
126
- }
127
-
128
1
  :host {
129
2
  display: block;
130
3
  }
@@ -24,7 +24,7 @@ export class XvDropdownItem {
24
24
  });
25
25
  }
26
26
  render() {
27
- return (h(Host, { key: 'ebd69bf9875a413d092065c6c3a0f2ffe2de7da4', class: "xv-dropdown-item", value: this.value, role: "option", tabindex: this.disabled ? -1 : false }, this.multiple && (h("xv-checkbox-v2", { key: 'fe72e087d4bc21ac9979ca9c5e69df61bd84e8fe', class: "multiple-check", size: this.size, checked: this.selected, disabled: this.disabled })), h("slot", { key: 'aa88674788627153e8044a0d38270b6dc1d4c011' }), (!this.multiple && this.selected) && h("span", { key: 'e8f64a88b588c3b16a449acf67dbcaea9ec5b0d0', class: "checkmark far fa-check" })));
27
+ return (h(Host, { key: 'f099e23dd392e97ec646b24d88758ba47568fe15', class: "xv-dropdown-item", value: this.value, role: "option", tabindex: this.disabled ? -1 : false }, this.multiple && (h("xv-checkbox-v2", { key: '27641c4a60485d70a61b72c8dad725c2c7f9390f', class: "multiple-check", size: this.size, checked: this.selected, disabled: this.disabled })), h("slot", { key: 'eefbe58b06a4c2995e2561e78436f724fee77021' }), (!this.multiple && this.selected) && h("span", { key: '57b640d72e80899786d9d14659cc79a003907ba5', class: "checkmark far fa-check" })));
28
28
  }
29
29
  componentWillLoad() {
30
30
  if (!this.value)
@@ -1,130 +1,3 @@
1
- .xv-container {
2
- width: 100%;
3
- max-width: 1170px;
4
- margin-inline: auto;
5
- }
6
- @media (min-width: 576px) {
7
- .xv-container {
8
- max-width: 540px;
9
- }
10
- }
11
- @media (min-width: 768px) {
12
- .xv-container {
13
- max-width: 720px;
14
- }
15
- }
16
- @media (min-width: 992px) {
17
- .xv-container {
18
- max-width: 960px;
19
- padding-inline: var(--bs-gutter-x, 0.75rem);
20
- }
21
- }
22
- @media (min-width: 1200px) {
23
- .xv-container {
24
- max-width: 1140px;
25
- }
26
- }
27
- @media (min-width: 1400px) {
28
- .xv-container {
29
- max-width: 1320px;
30
- }
31
- }
32
-
33
- .xv-tooltip[role=tooltip] {
34
- position: absolute;
35
- background-color: var(--background-inverse, #333333);
36
- color: var(--text-on-color);
37
- padding: var(--spacing-03) var(--spacing-04);
38
- border-radius: 3px;
39
- font-size: var(--fz-sm);
40
- z-index: 999;
41
- min-width: min(150px, 90vw);
42
- max-width: min(400px, 90vw);
43
- }
44
- .xv-tooltip[role=tooltip]::after {
45
- content: "";
46
- position: absolute;
47
- width: 0;
48
- height: 0;
49
- border-style: solid;
50
- }
51
- .xv-tooltip[role=tooltip][data-popper-placement=top]::after {
52
- bottom: -5px;
53
- left: 50%;
54
- transform: translateX(-50%);
55
- border-width: 5px 5px 0 5px;
56
- border-color: var(--background-inverse, black) transparent transparent transparent;
57
- }
58
- .xv-tooltip[role=tooltip][data-popper-placement=top-start]::after {
59
- bottom: -5px;
60
- left: 12px;
61
- border-width: 5px 5px 0 5px;
62
- border-color: var(--background-inverse, black) transparent transparent transparent;
63
- }
64
- .xv-tooltip[role=tooltip][data-popper-placement=top-end]::after {
65
- bottom: -5px;
66
- right: 12px;
67
- border-width: 5px 5px 0 5px;
68
- border-color: var(--background-inverse, black) transparent transparent transparent;
69
- }
70
- .xv-tooltip[role=tooltip][data-popper-placement=bottom]::after {
71
- top: -5px;
72
- left: 50%;
73
- transform: translateX(-50%);
74
- border-width: 0 5px 5px 5px;
75
- border-color: transparent transparent var(--background-inverse, black) transparent;
76
- }
77
- .xv-tooltip[role=tooltip][data-popper-placement=bottom-start]::after {
78
- top: -5px;
79
- left: 12px;
80
- border-width: 0 5px 5px 5px;
81
- border-color: transparent transparent var(--background-inverse, black) transparent;
82
- }
83
- .xv-tooltip[role=tooltip][data-popper-placement=bottom-end]::after {
84
- top: -5px;
85
- right: 12px;
86
- border-width: 0 5px 5px 5px;
87
- border-color: transparent transparent var(--background-inverse, black) transparent;
88
- }
89
- .xv-tooltip[role=tooltip][data-popper-placement=left]::after {
90
- top: 50%;
91
- right: -5px;
92
- transform: translateY(-50%);
93
- border-width: 5px 0 5px 5px;
94
- border-color: transparent transparent transparent var(--background-inverse, black);
95
- }
96
- .xv-tooltip[role=tooltip][data-popper-placement=left-start]::after {
97
- top: 12px;
98
- right: -5px;
99
- border-width: 5px 0 5px 5px;
100
- border-color: transparent transparent transparent var(--background-inverse, black);
101
- }
102
- .xv-tooltip[role=tooltip][data-popper-placement=left-end]::after {
103
- bottom: 12px;
104
- right: -5px;
105
- border-width: 5px 0 5px 5px;
106
- border-color: transparent transparent transparent var(--background-inverse, black);
107
- }
108
- .xv-tooltip[role=tooltip][data-popper-placement=right]::after {
109
- top: 50%;
110
- left: -5px;
111
- transform: translateY(-50%);
112
- border-width: 5px 5px 5px 0;
113
- border-color: transparent var(--background-inverse, black) transparent transparent;
114
- }
115
- .xv-tooltip[role=tooltip][data-popper-placement=right-start]::after {
116
- top: 12px;
117
- left: -5px;
118
- border-width: 5px 5px 5px 0;
119
- border-color: transparent var(--background-inverse, black) transparent transparent;
120
- }
121
- .xv-tooltip[role=tooltip][data-popper-placement=right-end]::after {
122
- bottom: 12px;
123
- left: -5px;
124
- border-width: 5px 5px 5px 0;
125
- border-color: transparent var(--background-inverse, black) transparent transparent;
126
- }
127
-
128
1
  :host {
129
2
  --dropdown-height: 40px;
130
3
  --dropdown-padding-x: 16px;
@@ -211,8 +84,9 @@
211
84
  color: var(--text-primary, #333);
212
85
  }
213
86
  :host .control_icon {
214
- width: 18px;
215
- height: 18px;
87
+ width: 16px;
88
+ height: 16px;
89
+ margin-right: 5px;
216
90
  }
217
91
  :host .control_icon.error {
218
92
  color: var(--support-error, #F1290E);
@@ -1,7 +1,7 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  import { SIZE_VAR } from "../../types/enum";
3
3
  import { DropdownItemSelector } from "./_vars";
4
- import { forEach, setAttr } from "../../utils/utils";
4
+ import { forEach, setAttr, resolveFieldMessage } from "../../utils/utils";
5
5
  let dropdownUid = 0;
6
6
  export class XvDropdown {
7
7
  constructor() {
@@ -30,9 +30,9 @@ export class XvDropdown {
30
30
  return values;
31
31
  };
32
32
  this.handleOpen = () => {
33
- if (this.disabled || this.open || this.loading || this.readonly)
33
+ if (this.disabled || this.loading || this.readonly)
34
34
  return;
35
- this.open = true;
35
+ this.open = !this.open;
36
36
  };
37
37
  this.handleClickOutside = (ev) => {
38
38
  if (!this.open || this.el.contains(ev.target))
@@ -281,7 +281,8 @@ export class XvDropdown {
281
281
  }
282
282
  /* endregion Search methods */
283
283
  render() {
284
- return (h(Host, { key: 'f3db547d2489dc0df41c384ff6c5f6920dba77b8', 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: '92280cbde45dc37612083ccd7b57cf411f6cfa59', class: "label" }, h("slot", { key: '980a33a7b46542a7861ef936c316f599f4e4706b', name: "label" }, this.label), this.info && h("xv-tooltip-v2", { key: 'fe62f15b930d246597ede27da290476c6fd88769', class: "label_info", message: this.info }))), h("div", { key: 'd680025a2f348d541fcb5851f4373e4ba531123d', class: { "xv-dropdown-control control": true, readonly: !!this.readonly }, onClick: this.handleOpen }, (this.multiple && this.selectedMap.size > 0) && (h("xv-tag-v2", { key: '1b194b8b7797e36edb433ffc1caac4ca74883491', class: "control_count", 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: 'b8cca74c658cafd416fb034bc7e7d905ab18bb11', 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: '6f7b9ecd9c5c30ea089a00ced738a2eacab84fd2', 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: '9388b1b76b8c94f063bec3db8e59426830b1d9e8', 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: 'd5674d487690460b290ae7bb9fab76674486cea9', class: "options_search" }, h("xv-text-input-v2", { key: 'd55502d54267d46904e84b4e2f2835c5cfded135', 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" })), (this.helper || typeof this.error === 'string' || this.warning) && (h("p", { key: '583e977ce735986f372e5316247d0cb7cd46064d', class: "helper" }, this.error || this.warning || this.helper))));
284
+ const message = resolveFieldMessage({ error: this.error, warning: this.warning, helper: this.helper });
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)));
285
286
  }
286
287
  componentDidLoad() {
287
288
  this.syncOpenState();
@@ -1,130 +1,3 @@
1
- .xv-container {
2
- width: 100%;
3
- max-width: 1170px;
4
- margin-inline: auto;
5
- }
6
- @media (min-width: 576px) {
7
- .xv-container {
8
- max-width: 540px;
9
- }
10
- }
11
- @media (min-width: 768px) {
12
- .xv-container {
13
- max-width: 720px;
14
- }
15
- }
16
- @media (min-width: 992px) {
17
- .xv-container {
18
- max-width: 960px;
19
- padding-inline: var(--bs-gutter-x, 0.75rem);
20
- }
21
- }
22
- @media (min-width: 1200px) {
23
- .xv-container {
24
- max-width: 1140px;
25
- }
26
- }
27
- @media (min-width: 1400px) {
28
- .xv-container {
29
- max-width: 1320px;
30
- }
31
- }
32
-
33
- .xv-tooltip[role=tooltip] {
34
- position: absolute;
35
- background-color: var(--background-inverse, #333333);
36
- color: var(--text-on-color);
37
- padding: var(--spacing-03) var(--spacing-04);
38
- border-radius: 3px;
39
- font-size: var(--fz-sm);
40
- z-index: 999;
41
- min-width: min(150px, 90vw);
42
- max-width: min(400px, 90vw);
43
- }
44
- .xv-tooltip[role=tooltip]::after {
45
- content: "";
46
- position: absolute;
47
- width: 0;
48
- height: 0;
49
- border-style: solid;
50
- }
51
- .xv-tooltip[role=tooltip][data-popper-placement=top]::after {
52
- bottom: -5px;
53
- left: 50%;
54
- transform: translateX(-50%);
55
- border-width: 5px 5px 0 5px;
56
- border-color: var(--background-inverse, black) transparent transparent transparent;
57
- }
58
- .xv-tooltip[role=tooltip][data-popper-placement=top-start]::after {
59
- bottom: -5px;
60
- left: 12px;
61
- border-width: 5px 5px 0 5px;
62
- border-color: var(--background-inverse, black) transparent transparent transparent;
63
- }
64
- .xv-tooltip[role=tooltip][data-popper-placement=top-end]::after {
65
- bottom: -5px;
66
- right: 12px;
67
- border-width: 5px 5px 0 5px;
68
- border-color: var(--background-inverse, black) transparent transparent transparent;
69
- }
70
- .xv-tooltip[role=tooltip][data-popper-placement=bottom]::after {
71
- top: -5px;
72
- left: 50%;
73
- transform: translateX(-50%);
74
- border-width: 0 5px 5px 5px;
75
- border-color: transparent transparent var(--background-inverse, black) transparent;
76
- }
77
- .xv-tooltip[role=tooltip][data-popper-placement=bottom-start]::after {
78
- top: -5px;
79
- left: 12px;
80
- border-width: 0 5px 5px 5px;
81
- border-color: transparent transparent var(--background-inverse, black) transparent;
82
- }
83
- .xv-tooltip[role=tooltip][data-popper-placement=bottom-end]::after {
84
- top: -5px;
85
- right: 12px;
86
- border-width: 0 5px 5px 5px;
87
- border-color: transparent transparent var(--background-inverse, black) transparent;
88
- }
89
- .xv-tooltip[role=tooltip][data-popper-placement=left]::after {
90
- top: 50%;
91
- right: -5px;
92
- transform: translateY(-50%);
93
- border-width: 5px 0 5px 5px;
94
- border-color: transparent transparent transparent var(--background-inverse, black);
95
- }
96
- .xv-tooltip[role=tooltip][data-popper-placement=left-start]::after {
97
- top: 12px;
98
- right: -5px;
99
- border-width: 5px 0 5px 5px;
100
- border-color: transparent transparent transparent var(--background-inverse, black);
101
- }
102
- .xv-tooltip[role=tooltip][data-popper-placement=left-end]::after {
103
- bottom: 12px;
104
- right: -5px;
105
- border-width: 5px 0 5px 5px;
106
- border-color: transparent transparent transparent var(--background-inverse, black);
107
- }
108
- .xv-tooltip[role=tooltip][data-popper-placement=right]::after {
109
- top: 50%;
110
- left: -5px;
111
- transform: translateY(-50%);
112
- border-width: 5px 5px 5px 0;
113
- border-color: transparent var(--background-inverse, black) transparent transparent;
114
- }
115
- .xv-tooltip[role=tooltip][data-popper-placement=right-start]::after {
116
- top: 12px;
117
- left: -5px;
118
- border-width: 5px 5px 5px 0;
119
- border-color: transparent var(--background-inverse, black) transparent transparent;
120
- }
121
- .xv-tooltip[role=tooltip][data-popper-placement=right-end]::after {
122
- bottom: 12px;
123
- left: -5px;
124
- border-width: 5px 5px 5px 0;
125
- border-color: transparent var(--background-inverse, black) transparent transparent;
126
- }
127
-
128
1
  :host {
129
2
  font-family: inherit;
130
3
  display: flex;
@@ -84,7 +84,7 @@ export class XvFileUploader {
84
84
  }
85
85
  }
86
86
  render() {
87
- return (h(Host, { key: '6292271bd4914ff55c44d08738f27b9b0b7d600d', class: { 'upload-wrapper': true, [`uploader-${this.size}`]: true, disabled: !!this.disabled, error: !!this.error } }, this.label && h("label", { key: '2b0009b61d76a027b462a0d7dd1ce9a205f16cdb', class: "label" }, this.label), this.description && h("p", { key: '8bc79a289823a8baf4dfaa427a30ddcfcfe096e6', 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: '88384c7673c185b0e2ece0a6c3680868ca43535f', ref: el => (this.fileInput = el), type: "file", hidden: true, onChange: this.onFileSelect, multiple: this.multiple, accept: this.accept.join(',') }), this.error && h("p", { key: '125cf535821332a446a244643a9d62002ddc45f0', class: "global-error" }, this.error), h("ul", { key: 'f05b167c928d00863a4bc1e29686bd243254723e', class: "file-list" }, this.files.map((file, index) => {
87
+ return (h(Host, { key: 'b18153e870fd78c9ee386af30a4b0163e9345408', class: { 'upload-wrapper': true, [`uploader-${this.size}`]: true, disabled: !!this.disabled, error: !!this.error } }, this.label && h("label", { key: 'baaaee91572847ae722b2c6d2e28fccf72571a3a', class: "label" }, this.label), this.description && h("p", { key: '4ac3753917d2d174988a2cf75d9c5f456d4079cd', 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: '6cecaf189c5ab89323302a8a47375645617af1d7', ref: el => (this.fileInput = el), type: "file", hidden: true, onChange: this.onFileSelect, multiple: this.multiple, accept: this.accept.join(',') }), this.error && h("p", { key: '6fb87dc13c0f659c6d52e93cdaaaea1737f8fcc6', class: "global-error" }, this.error), h("ul", { key: '1dc56f103b4ab0dc016b46ab499e895e62ada3ed', class: "file-list" }, this.files.map((file, index) => {
88
88
  var _a, _b;
89
89
  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
90
  }))));