@solid-design-system/components 3.22.17 → 3.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. package/dist/components/es/combobox.js +11 -0
  2. package/dist/components/es/map-marker.js +1 -1
  3. package/dist/components/es/optgroup.js +1 -0
  4. package/dist/components/es/option-renderer.js +1 -0
  5. package/dist/components/es/select.js +7 -3
  6. package/dist/components/es/solid-components2.js +7 -7
  7. package/dist/components/es/utils.js +1 -0
  8. package/dist/components/umd/solid-components.js +37 -23
  9. package/dist/custom-elements.json +1 -1
  10. package/dist/package/components/combobox/combobox.d.ts +129 -0
  11. package/dist/package/components/combobox/combobox.js +958 -0
  12. package/dist/package/components/combobox/option-renderer.d.ts +5 -0
  13. package/dist/package/components/combobox/option-renderer.js +4 -0
  14. package/dist/package/components/combobox/utils.d.ts +8 -0
  15. package/dist/package/components/combobox/utils.js +14 -0
  16. package/dist/package/components/optgroup/optgroup.d.ts +20 -0
  17. package/dist/package/components/optgroup/optgroup.js +68 -0
  18. package/dist/package/components/select/select.d.ts +6 -1
  19. package/dist/package/components/select/select.js +100 -30
  20. package/dist/package/solid-components.d.ts +2 -0
  21. package/dist/package/solid-components.js +74 -70
  22. package/dist/package/styles/tailwind.css.js +1 -1
  23. package/dist/package/translations/de.js +8 -4
  24. package/dist/package/translations/en.js +8 -4
  25. package/dist/package/utilities/localize.d.ts +4 -0
  26. package/dist/versioned-components/es/accordion-group.js +1 -1
  27. package/dist/versioned-components/es/accordion.js +1 -1
  28. package/dist/versioned-components/es/audio.js +1 -1
  29. package/dist/versioned-components/es/badge.js +1 -1
  30. package/dist/versioned-components/es/brandshape.js +1 -1
  31. package/dist/versioned-components/es/button.js +1 -1
  32. package/dist/versioned-components/es/carousel-item.js +1 -1
  33. package/dist/versioned-components/es/carousel.js +3 -3
  34. package/dist/versioned-components/es/checkbox-group.js +1 -1
  35. package/dist/versioned-components/es/checkbox.js +1 -1
  36. package/dist/versioned-components/es/combobox.js +11 -0
  37. package/dist/versioned-components/es/dialog.js +1 -1
  38. package/dist/versioned-components/es/divider.js +1 -1
  39. package/dist/versioned-components/es/drawer.js +1 -1
  40. package/dist/versioned-components/es/dropdown.js +1 -1
  41. package/dist/versioned-components/es/expandable.js +1 -1
  42. package/dist/versioned-components/es/flipcard.js +1 -1
  43. package/dist/versioned-components/es/form.js +1 -1
  44. package/dist/versioned-components/es/header.js +1 -1
  45. package/dist/versioned-components/es/icon.js +1 -1
  46. package/dist/versioned-components/es/include.js +1 -1
  47. package/dist/versioned-components/es/input.js +1 -1
  48. package/dist/versioned-components/es/link.js +1 -1
  49. package/dist/versioned-components/es/map-marker.js +1 -1
  50. package/dist/versioned-components/es/navigation-item.js +1 -1
  51. package/dist/versioned-components/es/notification.js +1 -1
  52. package/dist/versioned-components/es/optgroup.js +1 -0
  53. package/dist/versioned-components/es/option-renderer.js +1 -0
  54. package/dist/versioned-components/es/option.js +1 -1
  55. package/dist/versioned-components/es/quickfact.js +1 -1
  56. package/dist/versioned-components/es/radio-button.js +1 -1
  57. package/dist/versioned-components/es/radio-group.js +1 -1
  58. package/dist/versioned-components/es/radio.js +1 -1
  59. package/dist/versioned-components/es/scrollable.js +1 -1
  60. package/dist/versioned-components/es/select.js +7 -3
  61. package/dist/versioned-components/es/solid-components2.js +7 -7
  62. package/dist/versioned-components/es/spinner.js +1 -1
  63. package/dist/versioned-components/es/step-group.js +1 -1
  64. package/dist/versioned-components/es/step.js +1 -1
  65. package/dist/versioned-components/es/switch.js +1 -1
  66. package/dist/versioned-components/es/tab-group.js +1 -1
  67. package/dist/versioned-components/es/tab-panel.js +1 -1
  68. package/dist/versioned-components/es/tab.js +1 -1
  69. package/dist/versioned-components/es/tag.js +1 -1
  70. package/dist/versioned-components/es/teaser-media.js +1 -1
  71. package/dist/versioned-components/es/teaser.js +1 -1
  72. package/dist/versioned-components/es/textarea.js +1 -1
  73. package/dist/versioned-components/es/tooltip.js +2 -2
  74. package/dist/versioned-components/es/utils.js +1 -0
  75. package/dist/versioned-components/es/video.js +1 -1
  76. package/dist/versioned-package/_components/button-group/button-group.d.ts +1 -1
  77. package/dist/versioned-package/_components/button-group/button-group.js +11 -11
  78. package/dist/versioned-package/components/accordion/accordion.d.ts +1 -1
  79. package/dist/versioned-package/components/accordion/accordion.js +2 -2
  80. package/dist/versioned-package/components/accordion-group/accordion-group.d.ts +1 -1
  81. package/dist/versioned-package/components/accordion-group/accordion-group.js +3 -3
  82. package/dist/versioned-package/components/audio/audio.d.ts +1 -1
  83. package/dist/versioned-package/components/audio/audio.js +6 -6
  84. package/dist/versioned-package/components/badge/badge.d.ts +1 -1
  85. package/dist/versioned-package/components/badge/badge.js +1 -1
  86. package/dist/versioned-package/components/brandshape/brandshape.d.ts +1 -1
  87. package/dist/versioned-package/components/brandshape/brandshape.js +1 -1
  88. package/dist/versioned-package/components/button/button.d.ts +1 -1
  89. package/dist/versioned-package/components/button/button.js +4 -4
  90. package/dist/versioned-package/components/carousel/carousel.d.ts +1 -1
  91. package/dist/versioned-package/components/carousel/carousel.js +6 -6
  92. package/dist/versioned-package/components/carousel-item/carousel-item.d.ts +1 -1
  93. package/dist/versioned-package/components/carousel-item/carousel-item.js +1 -1
  94. package/dist/versioned-package/components/checkbox/checkbox.d.ts +1 -1
  95. package/dist/versioned-package/components/checkbox/checkbox.js +3 -3
  96. package/dist/versioned-package/components/checkbox-group/checkbox-group.d.ts +1 -1
  97. package/dist/versioned-package/components/checkbox-group/checkbox-group.js +5 -5
  98. package/dist/versioned-package/components/combobox/combobox.d.ts +129 -0
  99. package/dist/versioned-package/components/combobox/combobox.js +958 -0
  100. package/dist/versioned-package/components/combobox/option-renderer.d.ts +5 -0
  101. package/dist/versioned-package/components/combobox/option-renderer.js +4 -0
  102. package/dist/versioned-package/components/combobox/utils.d.ts +8 -0
  103. package/dist/versioned-package/components/combobox/utils.js +14 -0
  104. package/dist/versioned-package/components/dialog/dialog.d.ts +1 -1
  105. package/dist/versioned-package/components/dialog/dialog.js +2 -2
  106. package/dist/versioned-package/components/divider/divider.d.ts +1 -1
  107. package/dist/versioned-package/components/divider/divider.js +2 -2
  108. package/dist/versioned-package/components/drawer/drawer.d.ts +1 -1
  109. package/dist/versioned-package/components/drawer/drawer.js +2 -2
  110. package/dist/versioned-package/components/dropdown/dropdown.d.ts +1 -1
  111. package/dist/versioned-package/components/dropdown/dropdown.js +8 -8
  112. package/dist/versioned-package/components/expandable/expandable.d.ts +1 -1
  113. package/dist/versioned-package/components/expandable/expandable.js +2 -2
  114. package/dist/versioned-package/components/flipcard/flipcard.d.ts +1 -1
  115. package/dist/versioned-package/components/flipcard/flipcard.js +1 -1
  116. package/dist/versioned-package/components/header/header.d.ts +1 -1
  117. package/dist/versioned-package/components/header/header.js +4 -4
  118. package/dist/versioned-package/components/icon/icon.d.ts +1 -1
  119. package/dist/versioned-package/components/icon/icon.js +1 -1
  120. package/dist/versioned-package/components/include/include.d.ts +1 -1
  121. package/dist/versioned-package/components/include/include.js +1 -1
  122. package/dist/versioned-package/components/input/input.d.ts +1 -1
  123. package/dist/versioned-package/components/input/input.js +3 -3
  124. package/dist/versioned-package/components/link/link.d.ts +1 -1
  125. package/dist/versioned-package/components/link/link.js +2 -2
  126. package/dist/versioned-package/components/map-marker/map-marker.d.ts +1 -1
  127. package/dist/versioned-package/components/map-marker/map-marker.js +1 -1
  128. package/dist/versioned-package/components/navigation-item/navigation-item.d.ts +1 -1
  129. package/dist/versioned-package/components/navigation-item/navigation-item.js +5 -5
  130. package/dist/versioned-package/components/notification/notification.d.ts +1 -1
  131. package/dist/versioned-package/components/notification/notification.js +5 -5
  132. package/dist/versioned-package/components/optgroup/optgroup.d.ts +20 -0
  133. package/dist/versioned-package/components/optgroup/optgroup.js +68 -0
  134. package/dist/versioned-package/components/option/option.d.ts +1 -1
  135. package/dist/versioned-package/components/option/option.js +2 -2
  136. package/dist/versioned-package/components/popup/popup.d.ts +1 -1
  137. package/dist/versioned-package/components/popup/popup.js +1 -1
  138. package/dist/versioned-package/components/quickfact/quickfact.d.ts +1 -1
  139. package/dist/versioned-package/components/quickfact/quickfact.js +2 -2
  140. package/dist/versioned-package/components/radio/radio.d.ts +1 -1
  141. package/dist/versioned-package/components/radio/radio.js +2 -2
  142. package/dist/versioned-package/components/radio-button/radio-button.d.ts +1 -1
  143. package/dist/versioned-package/components/radio-button/radio-button.js +2 -2
  144. package/dist/versioned-package/components/radio-group/radio-group.d.ts +2 -2
  145. package/dist/versioned-package/components/radio-group/radio-group.js +13 -13
  146. package/dist/versioned-package/components/scrollable/scrollable.d.ts +1 -1
  147. package/dist/versioned-package/components/scrollable/scrollable.js +3 -3
  148. package/dist/versioned-package/components/select/select.d.ts +10 -5
  149. package/dist/versioned-package/components/select/select.js +121 -51
  150. package/dist/versioned-package/components/spinner/spinner.d.ts +1 -1
  151. package/dist/versioned-package/components/spinner/spinner.js +1 -1
  152. package/dist/versioned-package/components/step/step.d.ts +1 -1
  153. package/dist/versioned-package/components/step/step.js +2 -2
  154. package/dist/versioned-package/components/step-group/step-group.d.ts +1 -1
  155. package/dist/versioned-package/components/step-group/step-group.js +2 -2
  156. package/dist/versioned-package/components/switch/switch.d.ts +1 -1
  157. package/dist/versioned-package/components/switch/switch.js +1 -1
  158. package/dist/versioned-package/components/tab/tab.d.ts +1 -1
  159. package/dist/versioned-package/components/tab/tab.js +2 -2
  160. package/dist/versioned-package/components/tab-group/tab-group.d.ts +1 -1
  161. package/dist/versioned-package/components/tab-group/tab-group.js +13 -13
  162. package/dist/versioned-package/components/tab-panel/tab-panel.d.ts +1 -1
  163. package/dist/versioned-package/components/tab-panel/tab-panel.js +2 -2
  164. package/dist/versioned-package/components/tag/tag.d.ts +1 -1
  165. package/dist/versioned-package/components/tag/tag.js +2 -2
  166. package/dist/versioned-package/components/teaser/teaser.js +1 -1
  167. package/dist/versioned-package/components/teaser-media/teaser-media.js +1 -1
  168. package/dist/versioned-package/components/textarea/textarea.d.ts +1 -1
  169. package/dist/versioned-package/components/textarea/textarea.js +2 -2
  170. package/dist/versioned-package/components/tooltip/tooltip.d.ts +1 -1
  171. package/dist/versioned-package/components/tooltip/tooltip.js +5 -5
  172. package/dist/versioned-package/components/video/video.d.ts +1 -1
  173. package/dist/versioned-package/components/video/video.js +2 -2
  174. package/dist/versioned-package/internal/form.js +3 -3
  175. package/dist/versioned-package/solid-components.d.ts +2 -0
  176. package/dist/versioned-package/solid-components.js +74 -70
  177. package/dist/versioned-package/styles/headline/headline.css.js +1 -1
  178. package/dist/versioned-package/styles/tailwind.css.js +1 -1
  179. package/dist/versioned-package/translations/de.js +8 -4
  180. package/dist/versioned-package/translations/en.js +8 -4
  181. package/dist/versioned-package/utilities/autocomplete-config.js +4 -4
  182. package/dist/versioned-package/utilities/localize.d.ts +4 -0
  183. package/dist/versioned-styles/solid-styles.css +1 -1
  184. package/dist/vscode.html-custom-data.json +371 -45
  185. package/dist/web-types.json +5471 -3959
  186. package/package.json +3 -3
@@ -0,0 +1,5 @@
1
+ import type { TemplateResult } from 'lit';
2
+ import type SdOption from '../option/option.js';
3
+ export type OptionRenderer = (option: SdOption, query?: string) => TemplateResult | string | HTMLElement;
4
+ export declare const defaultOptionRenderer: OptionRenderer;
5
+ export declare const highlightOptionRenderer: OptionRenderer;
@@ -0,0 +1,4 @@
1
+ const defaultOptionRenderer = (option) => option;
2
+ export {
3
+ defaultOptionRenderer
4
+ };
@@ -0,0 +1,8 @@
1
+ import type SdOptGroup from '../optgroup/optgroup.js';
2
+ import type SdOption from '../option/option.js';
3
+ export declare const getAssignedElementsForSlot: (slot: HTMLSlotElement) => HTMLElement[];
4
+ export declare const getOptionOrNestedOptions: (item: HTMLElement) => SdOption | SdOption[];
5
+ export declare const isOptgroup: (item: HTMLElement) => item is SdOptGroup;
6
+ export declare const getAllOptions: (items: HTMLElement[]) => (SdOption | SdOption[])[];
7
+ export declare const filterOnlyOptgroups: (items: HTMLElement[]) => SdOptGroup[];
8
+ export declare const normalizeString: (str: string) => string;
@@ -0,0 +1,14 @@
1
+ const getAssignedElementsForSlot = (slot) => Array.from(slot.assignedElements({ flatten: true }));
2
+ const getOptionOrNestedOptions = (item) => item.tagName.toLocaleLowerCase() === "sd-option" ? item : Array.from(item.querySelectorAll(":scope > sd-option"));
3
+ const isOptgroup = (item) => item.tagName.toLocaleLowerCase() === "sd-optgroup";
4
+ const getAllOptions = (items) => items.map(getOptionOrNestedOptions);
5
+ const filterOnlyOptgroups = (items) => items.filter(isOptgroup);
6
+ const normalizeString = (str) => str.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase();
7
+ export {
8
+ filterOnlyOptgroups,
9
+ getAllOptions,
10
+ getAssignedElementsForSlot,
11
+ getOptionOrNestedOptions,
12
+ isOptgroup,
13
+ normalizeString
14
+ };
@@ -0,0 +1,20 @@
1
+ import SdDivider from '../divider/divider';
2
+ import SolidElement from '../../internal/solid-element';
3
+ import type { CSSResultGroup } from 'lit';
4
+ export default class SdOptgroup extends SolidElement {
5
+ static dependencies: {
6
+ 'sd-divider': typeof SdDivider;
7
+ };
8
+ defaultSlot: HTMLSlotElement;
9
+ private handleDisableOptions;
10
+ disabled: boolean;
11
+ label: string;
12
+ handleDisabledChange(): void;
13
+ render(): import("lit").TemplateResult;
14
+ static styles: CSSResultGroup;
15
+ }
16
+ declare global {
17
+ interface HTMLElementTagNameMap {
18
+ 'sd-optgroup': SdOptgroup;
19
+ }
20
+ }
@@ -0,0 +1,68 @@
1
+ import { css } from "lit";
2
+ import { customElement } from "../../internal/register-custom-element.js";
3
+ import { html } from "lit/static-html.js";
4
+ import { query, property } from "lit/decorators.js";
5
+ import { watch } from "../../internal/watch.js";
6
+ import componentStyles from "../../styles/component.styles.js";
7
+ import cx from "classix";
8
+ import SdDivider from "../divider/divider.js";
9
+ import SolidElement from "../../internal/solid-element.js";
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __decorateClass = (decorators, target, key, kind) => {
13
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
14
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
15
+ if (decorator = decorators[i])
16
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
17
+ if (kind && result) __defProp(target, key, result);
18
+ return result;
19
+ };
20
+ let SdOptgroup = class extends SolidElement {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.disabled = false;
24
+ this.label = "";
25
+ }
26
+ /**
27
+ * Syncs the disabled prop for all slotted sd-options when it is triggered
28
+ */
29
+ handleDisableOptions() {
30
+ const { disabled } = this;
31
+ this.defaultSlot.assignedElements().filter((opt) => opt.tagName.toLowerCase() === "sd-option").forEach((opt) => {
32
+ opt.disabled = disabled;
33
+ });
34
+ }
35
+ handleDisabledChange() {
36
+ this.handleDisableOptions();
37
+ }
38
+ render() {
39
+ const { disabled } = this;
40
+ return html`<div role="${disabled ? "presentation" : "group"}" class="${cx(this.disabled ? "text-neutral-500" : "")}" part="base" aria-labelledby="group-label"><sd-divider id="divider" class="pt-2 pb-4" part="divider"></sd-divider><div part="label-container" class="${cx(this.disabled ? "text-neutral-500" : "text-black")} px-4 font-bold text-left" role="presentation" id="group-label"><slot name="label"><span>${this.label}</span></slot></div><div role="group" part="options"><slot @slotchange="${this.handleDisableOptions}"></slot></div></div>`;
41
+ }
42
+ };
43
+ SdOptgroup.dependencies = {
44
+ "sd-divider": SdDivider
45
+ };
46
+ SdOptgroup.styles = [
47
+ componentStyles,
48
+ SolidElement.styles,
49
+ css`:host{--display-divider:block}#divider{display:var(--display-divider)}`
50
+ ];
51
+ __decorateClass([
52
+ query("slot:not([name])")
53
+ ], SdOptgroup.prototype, "defaultSlot", 2);
54
+ __decorateClass([
55
+ property({ reflect: true, type: Boolean })
56
+ ], SdOptgroup.prototype, "disabled", 2);
57
+ __decorateClass([
58
+ property()
59
+ ], SdOptgroup.prototype, "label", 2);
60
+ __decorateClass([
61
+ watch("disabled", { waitUntilFirstUpdate: true })
62
+ ], SdOptgroup.prototype, "handleDisabledChange", 1);
63
+ SdOptgroup = __decorateClass([
64
+ customElement("sd-optgroup")
65
+ ], SdOptgroup);
66
+ export {
67
+ SdOptgroup as default
68
+ };
@@ -26,6 +26,7 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
26
26
  invalidMessage: HTMLDivElement;
27
27
  hasHover: boolean;
28
28
  private displayLabel;
29
+ private deletedTagLabel;
29
30
  hasFocus: boolean;
30
31
  currentOption: SdOption;
31
32
  selectedOptions: SdOption[];
@@ -54,6 +55,7 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
54
55
  get validity(): ValidityState;
55
56
  get validationMessage(): string;
56
57
  connectedCallback(): void;
58
+ firstUpdated(): void;
57
59
  private addOpenListeners;
58
60
  private removeOpenListeners;
59
61
  private handleFocus;
@@ -61,10 +63,13 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
61
63
  private handleDocumentFocusIn;
62
64
  private handleDocumentKeyDown;
63
65
  private handleDocumentMouseDown;
66
+ private handleTagKeyDown;
67
+ private handleTagMaxOptionsKeyDown;
64
68
  private handleLabelClick;
65
69
  private handleComboboxMouseDown;
66
70
  private handleComboboxKeyDown;
67
71
  private handleClearClick;
72
+ private clearSelect;
68
73
  private handleClearMouseDown;
69
74
  private handleOptionClick;
70
75
  private handleDefaultSlotChange;
@@ -75,7 +80,7 @@ export default class SdSelect extends SolidElement implements SolidFormControl {
75
80
  private setSelectedOptions;
76
81
  private toggleOptionSelection;
77
82
  private selectionChanged;
78
- protected get tags(): TemplateResult<1>[];
83
+ protected get tags(): (TemplateResult<1> | TemplateResult<1>[])[];
79
84
  private handleInvalid;
80
85
  private handleMouseEnter;
81
86
  private handleMouseLeave;
@@ -38,6 +38,7 @@ let SdSelect = class extends SolidElement {
38
38
  this.typeToSelectString = "";
39
39
  this.hasHover = false;
40
40
  this.displayLabel = "";
41
+ this.deletedTagLabel = "";
41
42
  this.hasFocus = false;
42
43
  this.selectedOptions = [];
43
44
  this.showValidStyle = false;
@@ -66,7 +67,7 @@ let SdSelect = class extends SolidElement {
66
67
  base:tag__base,
67
68
  content:tag__content,
68
69
  removable-indicator:tag__removable-indicator,
69
- " size="${this.size === "sm" ? "sm" : "lg"}" removable @sd-remove="${(event) => this.handleTagRemove(event, option)}">${option.getTextLabel()}</sd-tag>`;
70
+ " size="${this.size === "sm" ? "sm" : "lg"}" removable @keydown="${(event) => this.handleTagKeyDown(event, option)}" @sd-remove="${(event) => this.handleTagRemove(event, option)}">${option.getTextLabel()}</sd-tag>`;
70
71
  };
71
72
  this.handleDocumentFocusIn = (event) => {
72
73
  const path = event.composedPath();
@@ -181,9 +182,11 @@ let SdSelect = class extends SolidElement {
181
182
  }
182
183
  connectedCallback() {
183
184
  super.connectedCallback();
184
- this.applySizeToOptions();
185
185
  this.open = false;
186
186
  }
187
+ firstUpdated() {
188
+ this.applySizeToOptions();
189
+ }
187
190
  addOpenListeners() {
188
191
  document.addEventListener("focusin", this.handleDocumentFocusIn);
189
192
  document.addEventListener("keydown", this.handleDocumentKeyDown);
@@ -203,6 +206,40 @@ let SdSelect = class extends SolidElement {
203
206
  this.hasFocus = false;
204
207
  this.emit("sd-blur");
205
208
  }
209
+ handleTagKeyDown(event, option) {
210
+ var _a, _b, _c;
211
+ if (event.key === "Backspace" && this.multiple) {
212
+ event.stopPropagation();
213
+ const tagParent = (_a = event.currentTarget) == null ? void 0 : _a.parentElement;
214
+ const previousTag = (_b = tagParent == null ? void 0 : tagParent.previousElementSibling) == null ? void 0 : _b.querySelector("sd-tag");
215
+ const nextTag = (_c = tagParent == null ? void 0 : tagParent.nextElementSibling) == null ? void 0 : _c.querySelector("sd-tag");
216
+ this.handleTagRemove(new CustomEvent("sd-remove"), option);
217
+ this.updateComplete.then(() => {
218
+ if (nextTag) {
219
+ nextTag.focus();
220
+ } else if (previousTag) {
221
+ previousTag.focus();
222
+ } else {
223
+ this.focus({ preventScroll: true });
224
+ }
225
+ });
226
+ }
227
+ }
228
+ handleTagMaxOptionsKeyDown(event) {
229
+ if (event.key === "Backspace" && this.multiple) {
230
+ event.stopPropagation();
231
+ this.handleTagRemove(new CustomEvent("sd-remove"), this.selectedOptions[this.selectedOptions.length - 1]);
232
+ this.updateComplete.then(() => {
233
+ var _a;
234
+ const tags = (_a = this.shadowRoot) == null ? void 0 : _a.querySelectorAll("sd-tag");
235
+ if (tags && tags.length > 0) {
236
+ tags == null ? void 0 : tags[(tags == null ? void 0 : tags.length) - 1].focus();
237
+ } else {
238
+ this.focus({ preventScroll: true });
239
+ }
240
+ });
241
+ }
242
+ }
206
243
  handleLabelClick() {
207
244
  this.displayInput.focus();
208
245
  }
@@ -222,15 +259,16 @@ let SdSelect = class extends SolidElement {
222
259
  }
223
260
  handleClearClick(event) {
224
261
  event.stopPropagation();
225
- if (this.value !== "") {
226
- this.setSelectedOptions([]);
227
- this.displayInput.focus({ preventScroll: true });
228
- this.updateComplete.then(() => {
229
- this.emit("sd-clear");
230
- this.emit("sd-input");
231
- this.emit("sd-change");
232
- });
233
- }
262
+ this.clearSelect();
263
+ }
264
+ clearSelect() {
265
+ this.setSelectedOptions([]);
266
+ this.displayInput.focus({ preventScroll: true });
267
+ this.updateComplete.then(() => {
268
+ this.emit("sd-clear");
269
+ this.emit("sd-input");
270
+ this.emit("sd-change");
271
+ });
234
272
  }
235
273
  handleClearMouseDown(event) {
236
274
  event.stopPropagation();
@@ -277,8 +315,12 @@ let SdSelect = class extends SolidElement {
277
315
  }
278
316
  handleTagRemove(event, option) {
279
317
  event.stopPropagation();
280
- if (!this.disabled) {
318
+ if (!option) {
319
+ this.clearSelect();
320
+ }
321
+ if (option && !this.disabled) {
281
322
  this.toggleOptionSelection(option, false);
323
+ this.deletedTagLabel = this.localize.term("removed", option.textContent);
282
324
  this.updateComplete.then(() => {
283
325
  this.emit("sd-input");
284
326
  this.emit("sd-change");
@@ -316,7 +358,11 @@ let SdSelect = class extends SolidElement {
316
358
  if (newSelectedOptions.length) {
317
359
  newSelectedOptions.forEach((el) => el.selected = true);
318
360
  }
319
- this.selectionChanged();
361
+ if (Array.isArray(option)) {
362
+ this.selectionChanged();
363
+ } else {
364
+ this.selectionChanged(option);
365
+ }
320
366
  }
321
367
  // Toggles an option's selected state
322
368
  toggleOptionSelection(option, force) {
@@ -325,13 +371,25 @@ let SdSelect = class extends SolidElement {
325
371
  } else {
326
372
  option.selected = !option.selected;
327
373
  }
328
- this.selectionChanged();
374
+ if (Array.isArray(option)) {
375
+ this.selectionChanged();
376
+ } else {
377
+ this.selectionChanged(option);
378
+ }
329
379
  }
330
380
  // This method must be called whenever the selection changes. It will update the selected options cache, the current
331
381
  // value, and the display value
332
- selectionChanged() {
382
+ selectionChanged(option) {
333
383
  var _a, _b;
334
- this.selectedOptions = this.getAllOptions().filter((el) => el.selected);
384
+ if (option && this.multiple) {
385
+ if (this.selectedOptions.find((el) => el.value === option.value)) {
386
+ this.selectedOptions = this.selectedOptions.filter((el) => el.value !== option.value);
387
+ } else {
388
+ this.selectedOptions = [...this.selectedOptions, option];
389
+ }
390
+ } else {
391
+ this.selectedOptions = this.getAllOptions().filter((el) => el.selected);
392
+ }
335
393
  if (this.multiple) {
336
394
  this.value = this.selectedOptions.map((el) => el.value);
337
395
  if (this.useTags || this.value.length === 0) {
@@ -348,15 +406,23 @@ let SdSelect = class extends SolidElement {
348
406
  });
349
407
  }
350
408
  get tags() {
351
- return this.selectedOptions.map((option, index) => {
352
- if (index < this.maxOptionsVisible || this.maxOptionsVisible <= 0) {
353
- const tag = this.getTag(option, index);
354
- return html`<div @sd-remove="${(e) => this.handleTagRemove(e, option)}">${typeof tag === "string" ? unsafeHTML(tag) : tag}</div>`;
355
- } else if (index === this.maxOptionsVisible) {
356
- return html`<sd-tag size="${this.size === "sm" ? "sm" : "lg"}" ?disabled="${this.disabled}">+${this.selectedOptions.length - index}</sd-tag>`;
357
- }
358
- return html``;
359
- });
409
+ if (this.selectedOptions.length <= this.maxOptionsVisible) {
410
+ return this.selectedOptions.map((option, index) => {
411
+ if (index < this.maxOptionsVisible || this.maxOptionsVisible <= 0) {
412
+ const tag = this.getTag(option, index);
413
+ return html`<div @sd-remove="${(e) => this.handleTagRemove(e, option)}">${typeof tag === "string" ? unsafeHTML(tag) : tag}</div>`;
414
+ }
415
+ return [html``];
416
+ });
417
+ } else {
418
+ return [
419
+ html`<sd-tag ?disabled="${this.disabled}" part="tag" exportparts="
420
+ base:tag__base,
421
+ content:tag__content,
422
+ removable-indicator:tag__removable-indicator,
423
+ " size="${this.size === "sm" ? "sm" : "lg"}" removable @keydown="${(event) => this.handleTagMaxOptionsKeyDown(event)}" @sd-remove="${(event) => this.handleTagRemove(event)}">${this.selectedOptions.length} ${this.localize.term("tagsSelected")}</sd-tag>`
424
+ ];
425
+ }
360
426
  }
361
427
  handleInvalid(event) {
362
428
  this.formControlController.setValidity(false);
@@ -392,7 +458,7 @@ let SdSelect = class extends SolidElement {
392
458
  }
393
459
  async handleOpenChange() {
394
460
  if (this.open && !this.disabled) {
395
- this.setCurrentOption(this.selectedOptions[0] || this.getFirstOption());
461
+ if (!this.multiple) this.setCurrentOption(this.selectedOptions[0] || this.getFirstOption());
396
462
  this.emit("sd-show");
397
463
  this.addOpenListeners();
398
464
  await stopAnimations(this);
@@ -424,6 +490,7 @@ let SdSelect = class extends SolidElement {
424
490
  });
425
491
  }
426
492
  handleValueChange() {
493
+ if (this.selectedOptions.length === (Array.isArray(this.value) ? this.value.length : 1)) return;
427
494
  const allOptions = this.getAllOptions();
428
495
  const value = Array.isArray(this.value) ? this.value : [this.value];
429
496
  this.setSelectedOptions(allOptions.filter((el) => value.includes(el.value)));
@@ -497,7 +564,7 @@ let SdSelect = class extends SolidElement {
497
564
  cursorStyles,
498
565
  this.size === "sm" ? "text-sm" : "text-base",
499
566
  this.open && "z-50"
500
- )}"><div class="flex items-center gap-1 mb-2"><label id="label" part="form-control-label" class="${hasLabel && "inline-block"}" aria-hidden="${hasLabel ? "false" : "true"}" @click="${this.handleLabelClick}"><slot name="label">${this.label}</slot></label><slot name="tooltip"></slot></div><div part="form-control-input" class="${cx("relative w-full bg-white", selectState === "disabled" ? "text-neutral-500" : "text-black")}"><div part="border" class="${cx(
567
+ )}"><span class="sr-only" role="alert" aria-live="assertive">${this.deletedTagLabel}</span><div class="flex items-center gap-1 mb-2"><label id="label" part="form-control-label" class="${hasLabel && "inline-block"}" aria-hidden="${hasLabel ? "false" : "true"}" @click="${this.handleLabelClick}"><slot name="label">${this.label}</slot></label><slot name="tooltip"></slot></div><div part="form-control-input" class="${cx("relative w-full bg-white", selectState === "disabled" ? "text-neutral-500" : "text-black")}"><div part="border" class="${cx(
501
568
  "absolute top-0 w-full h-full pointer-events-none border rounded-default",
502
569
  this.hasHover && "bg-neutral-200",
503
570
  {
@@ -528,13 +595,13 @@ let SdSelect = class extends SolidElement {
528
595
  "appearance-none outline-none flex-grow bg-transparent w-full placeholder-neutral-700",
529
596
  cursorStyles,
530
597
  this.multiple && this.useTags && this.value.length > 0 ? "hidden" : ""
531
- )}" type="text" placeholder="${this.placeholder}" .disabled="${this.disabled}" .value="${this.displayLabel}" autocomplete="off" spellcheck="false" autocapitalize="off" readonly="readonly" aria-controls="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-haspopup="listbox" aria-labelledby="label" aria-disabled="${this.disabled ? "true" : "false"}" aria-describedby="help-text invalid-message" role="combobox" tabindex="0" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${this.multiple && this.useTags ? html`<div part="tags" class="flex-grow flex flex-wrap items-center gap-1">${this.tags}</div>` : ""} <input class="${cx("value-input absolute top-0 left-0 w-full h-full opacity-0 -z-10", cursorStyles)}" type="text" ?disabled="${this.disabled}" ?required="${this.required}" .value="${Array.isArray(this.value) ? this.value.join(", ") : this.value}" tabindex="-1" aria-hidden="true" @focus="${() => this.focus()}" @invalid="${this.handleInvalid}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("select__clear flex justify-center", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @mousedown="${this.handleClearMouseDown}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-icon class="${cx("text-icon-fill-neutral-800", iconSize)}" library="system" name="closing-round"></sd-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-icon part="invalid-icon" class="${cx(iconMarginLeft, iconSize, "text-error")}" library="system" name="risk"></sd-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-icon part="valid-icon" class="${cx("flex-shrink-0 text-success", iconMarginLeft, iconSize)}" library="system" name="status-check"></sd-icon>` : ""}<slot name="expand-icon" part="expand-icon" class="${cx(
598
+ )}" type="text" placeholder="${this.placeholder}" .disabled="${this.disabled}" .value="${this.displayLabel}" autocomplete="off" spellcheck="false" autocapitalize="off" readonly="readonly" aria-controls="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-haspopup="listbox" aria-labelledby="label" aria-disabled="${this.disabled ? "true" : "false"}" aria-invalid="${this.showInvalidStyle}" aria-describedby="help-text invalid-message" role="combobox" tabindex="0" @focus="${this.handleFocus}" @blur="${this.handleBlur}"> ${this.multiple && this.useTags ? html`<div part="tags" class="flex-grow flex flex-wrap items-center gap-1">${this.tags}</div>` : ""}<div aria-live="polite" id="control-value" class="absolute top-0 left-0 opacity-0 -z-10">${this.selectedOptions.map((option) => option == null ? void 0 : option.getTextLabel()).join(", ")}</div><input class="${cx("value-input absolute top-0 left-0 w-full h-full opacity-0 -z-10", cursorStyles)}" type="text" ?disabled="${this.disabled}" ?required="${this.required}" .value="${Array.isArray(this.value) ? this.value.join(", ") : this.value}" tabindex="-1" aria-controls="control-value" aria-hidden="true" @focus="${() => this.focus()}" @invalid="${this.handleInvalid}"> ${hasClearIcon ? html`<button part="clear-button" class="${cx("select__clear flex justify-center", iconMarginLeft)}" type="button" aria-label="${this.localize.term("clearEntry")}" @mousedown="${this.handleClearMouseDown}" @click="${this.handleClearClick}" tabindex="-1"><slot name="clear-icon"><sd-icon class="${cx("text-icon-fill-neutral-800", iconSize)}" library="system" name="closing-round"></sd-icon></slot></button>` : ""} ${this.showInvalidStyle ? html`<sd-icon part="invalid-icon" class="${cx(iconMarginLeft, iconSize, "text-error")}" library="system" name="risk"></sd-icon>` : ""} ${this.styleOnValid && this.showValidStyle ? html`<sd-icon part="valid-icon" class="${cx("flex-shrink-0 text-success", iconMarginLeft, iconSize)}" library="system" name="status-check"></sd-icon>` : ""}<slot name="expand-icon" part="expand-icon" class="${cx(
532
599
  "inline-flex ml-2 transition-all",
533
600
  this.open ? "rotate-180" : "rotate-0",
534
601
  this.disabled ? "text-neutral-500" : "text-primary",
535
602
  iconSize
536
603
  )}"><sd-icon name="chevron-down" part="chevron" library="system" color="currentColor"></sd-icon></slot></div><div id="listbox" role="listbox" aria-expanded="${this.open ? "true" : "false"}" aria-multiselectable="${this.multiple ? "true" : "false"}" aria-labelledby="label" part="listbox" class="${cx(
537
- "bg-white px-2 py-3 relative border-primary overflow-y-auto",
604
+ "bg-white px-2 py-3 relative border-primary overflow-y-scroll",
538
605
  this.open && "shadow",
539
606
  this.currentPlacement === "bottom" ? "border-r-2 border-b-2 border-l-2 rounded-br-default rounded-bl-default" : "border-r-2 border-t-2 border-l-2 rounded-tr-default rounded-tl-default"
540
607
  )}" tabindex="-1" @mouseup="${this.handleOptionClick}" @slotchange="${this.handleDefaultSlotChange}"><slot></slot></div></sd-popup></div><div class="text-sm text-neutral-700" part="form-control-help-text" id="help-text" aria-hidden="${hasHelpText ? "false" : "true"}"><slot name="help-text">${this.helpText}</slot></div></div>${this.formControlController.renderInvalidMessage()}`;
@@ -548,7 +615,7 @@ SdSelect.dependencies = {
548
615
  SdSelect.styles = [
549
616
  componentStyles,
550
617
  SolidElement.styles,
551
- css`:host{position:relative;display:block;width:100%}:host([required]) #label::after{content:' *'}[part=listbox]{max-height:var(--auto-size-available-height,auto)}sd-popup::part(popup){z-index:var(--sd-z-index-dropdown,900);overflow-y:scroll}sd-tag::part(base){border-radius:var(--sd-border-radius-default,.25rem);padding-left:var(--sd-spacing-1,.25rem);padding-right:var(--sd-spacing-1,.25rem)}sd-tag[size=lg]::part(base){padding-left:var(--sd-spacing-2,.5rem);padding-right:var(--sd-spacing-2,.5rem)}sd-tag[disabled=false]::part(base):hover{--tw-bg-opacity:1;background-color:rgb(var(--sd-color-primary-100,236 240 249) / var(--tw-bg-opacity))}`
618
+ css`:host{position:relative;display:block;width:100%}:host([required]) #label::after{content:' *'}[part=listbox]{max-height:var(--auto-size-available-height,auto)}sd-popup::part(popup){z-index:var(--sd-z-index-dropdown,900)}sd-tag::part(base){border-radius:var(--sd-border-radius-default,.25rem);padding-left:var(--sd-spacing-1,.25rem);padding-right:var(--sd-spacing-1,.25rem)}sd-tag[size=lg]::part(base){padding-left:var(--sd-spacing-2,.5rem);padding-right:var(--sd-spacing-2,.5rem)}sd-tag[disabled=false]::part(base):hover{--tw-bg-opacity:1;background-color:rgb(var(--sd-color-primary-100,236 240 249) / var(--tw-bg-opacity))}`
552
619
  ];
553
620
  __decorateClass([
554
621
  queryAssignedElements({ selector: "sd-option" })
@@ -577,6 +644,9 @@ __decorateClass([
577
644
  __decorateClass([
578
645
  state()
579
646
  ], SdSelect.prototype, "displayLabel", 2);
647
+ __decorateClass([
648
+ state()
649
+ ], SdSelect.prototype, "deletedTagLabel", 2);
580
650
  __decorateClass([
581
651
  state()
582
652
  ], SdSelect.prototype, "hasFocus", 2);
@@ -8,6 +8,7 @@ export { default as SdCarousel } from './components/carousel/carousel';
8
8
  export { default as SdCarouselItem } from './components/carousel-item/carousel-item';
9
9
  export { default as SdCheckbox } from './components/checkbox/checkbox';
10
10
  export { default as SdCheckboxGroup } from './components/checkbox-group/checkbox-group';
11
+ export { default as SdCombobox } from './components/combobox/combobox';
11
12
  export { default as SdDialog } from './components/dialog/dialog';
12
13
  export { default as SdDivider } from './components/divider/divider';
13
14
  export { default as SdDrawer } from './components/drawer/drawer';
@@ -22,6 +23,7 @@ export { default as SdLink } from './components/link/link';
22
23
  export { default as SdMapMarker } from './components/map-marker/map-marker';
23
24
  export { default as SdNavigationItem } from './components/navigation-item/navigation-item';
24
25
  export { default as SdNotification } from './components/notification/notification';
26
+ export { default as SdOptgroup } from './components/optgroup/optgroup';
25
27
  export { default as SdOption } from './components/option/option';
26
28
  export { default as SdPopup } from './components/popup/popup';
27
29
  export { default as SdQuickfact } from './components/quickfact/quickfact';
@@ -8,41 +8,43 @@ import { default as default8 } from "./components/carousel/carousel.js";
8
8
  import { default as default9 } from "./components/carousel-item/carousel-item.js";
9
9
  import { default as default10 } from "./components/checkbox/checkbox.js";
10
10
  import { default as default11 } from "./components/checkbox-group/checkbox-group.js";
11
- import { default as default12 } from "./components/dialog/dialog.js";
12
- import { default as default13 } from "./components/divider/divider.js";
13
- import { default as default14 } from "./components/drawer/drawer.js";
14
- import { default as default15 } from "./components/dropdown/dropdown.js";
15
- import { default as default16 } from "./components/expandable/expandable.js";
16
- import { default as default17 } from "./components/flipcard/flipcard.js";
17
- import { default as default18 } from "./components/header/header.js";
18
- import { default as default19 } from "./components/icon/icon.js";
19
- import { default as default20 } from "./components/include/include.js";
20
- import { default as default21 } from "./components/input/input.js";
21
- import { default as default22 } from "./components/link/link.js";
22
- import { default as default23 } from "./components/map-marker/map-marker.js";
23
- import { default as default24 } from "./components/navigation-item/navigation-item.js";
24
- import { default as default25 } from "./components/notification/notification.js";
25
- import { default as default26 } from "./components/option/option.js";
26
- import { default as default27 } from "./components/popup/popup.js";
27
- import { default as default28 } from "./components/quickfact/quickfact.js";
28
- import { default as default29 } from "./components/radio/radio.js";
29
- import { default as default30 } from "./components/radio-button/radio-button.js";
30
- import { default as default31 } from "./components/radio-group/radio-group.js";
31
- import { default as default32 } from "./components/scrollable/scrollable.js";
32
- import { default as default33 } from "./components/select/select.js";
33
- import { default as default34 } from "./components/spinner/spinner.js";
34
- import { default as default35 } from "./components/step/step.js";
35
- import { default as default36 } from "./components/step-group/step-group.js";
36
- import { default as default37 } from "./components/switch/switch.js";
37
- import { default as default38 } from "./components/tab/tab.js";
38
- import { default as default39 } from "./components/tab-group/tab-group.js";
39
- import { default as default40 } from "./components/tab-panel/tab-panel.js";
40
- import { default as default41 } from "./components/tag/tag.js";
41
- import { default as default42 } from "./components/teaser/teaser.js";
42
- import { default as default43 } from "./components/teaser-media/teaser-media.js";
43
- import { default as default44 } from "./components/textarea/textarea.js";
44
- import { default as default45 } from "./components/tooltip/tooltip.js";
45
- import { default as default46 } from "./components/video/video.js";
11
+ import { default as default12 } from "./components/combobox/combobox.js";
12
+ import { default as default13 } from "./components/dialog/dialog.js";
13
+ import { default as default14 } from "./components/divider/divider.js";
14
+ import { default as default15 } from "./components/drawer/drawer.js";
15
+ import { default as default16 } from "./components/dropdown/dropdown.js";
16
+ import { default as default17 } from "./components/expandable/expandable.js";
17
+ import { default as default18 } from "./components/flipcard/flipcard.js";
18
+ import { default as default19 } from "./components/header/header.js";
19
+ import { default as default20 } from "./components/icon/icon.js";
20
+ import { default as default21 } from "./components/include/include.js";
21
+ import { default as default22 } from "./components/input/input.js";
22
+ import { default as default23 } from "./components/link/link.js";
23
+ import { default as default24 } from "./components/map-marker/map-marker.js";
24
+ import { default as default25 } from "./components/navigation-item/navigation-item.js";
25
+ import { default as default26 } from "./components/notification/notification.js";
26
+ import { default as default27 } from "./components/optgroup/optgroup.js";
27
+ import { default as default28 } from "./components/option/option.js";
28
+ import { default as default29 } from "./components/popup/popup.js";
29
+ import { default as default30 } from "./components/quickfact/quickfact.js";
30
+ import { default as default31 } from "./components/radio/radio.js";
31
+ import { default as default32 } from "./components/radio-button/radio-button.js";
32
+ import { default as default33 } from "./components/radio-group/radio-group.js";
33
+ import { default as default34 } from "./components/scrollable/scrollable.js";
34
+ import { default as default35 } from "./components/select/select.js";
35
+ import { default as default36 } from "./components/spinner/spinner.js";
36
+ import { default as default37 } from "./components/step/step.js";
37
+ import { default as default38 } from "./components/step-group/step-group.js";
38
+ import { default as default39 } from "./components/switch/switch.js";
39
+ import { default as default40 } from "./components/tab/tab.js";
40
+ import { default as default41 } from "./components/tab-group/tab-group.js";
41
+ import { default as default42 } from "./components/tab-panel/tab-panel.js";
42
+ import { default as default43 } from "./components/tag/tag.js";
43
+ import { default as default44 } from "./components/teaser/teaser.js";
44
+ import { default as default45 } from "./components/teaser-media/teaser-media.js";
45
+ import { default as default46 } from "./components/textarea/textarea.js";
46
+ import { default as default47 } from "./components/tooltip/tooltip.js";
47
+ import { default as default48 } from "./components/video/video.js";
46
48
  import { registerIconLibrary, unregisterIconLibrary } from "./components/icon/library.js";
47
49
  import { LocalizeController } from "./utilities/localize.js";
48
50
  import { setupAutocomplete } from "./utilities/autocomplete-config.js";
@@ -58,41 +60,43 @@ export {
58
60
  default9 as SdCarouselItem,
59
61
  default10 as SdCheckbox,
60
62
  default11 as SdCheckboxGroup,
61
- default12 as SdDialog,
62
- default13 as SdDivider,
63
- default14 as SdDrawer,
64
- default15 as SdDropdown,
65
- default16 as SdExpandable,
66
- default17 as SdFlipcard,
67
- default18 as SdHeader,
68
- default19 as SdIcon,
69
- default20 as SdInclude,
70
- default21 as SdInput,
71
- default22 as SdLink,
72
- default23 as SdMapMarker,
73
- default24 as SdNavigationItem,
74
- default25 as SdNotification,
75
- default26 as SdOption,
76
- default27 as SdPopup,
77
- default28 as SdQuickfact,
78
- default29 as SdRadio,
79
- default30 as SdRadioButton,
80
- default31 as SdRadioGroup,
81
- default32 as SdScrollable,
82
- default33 as SdSelect,
83
- default34 as SdSpinner,
84
- default35 as SdStep,
85
- default36 as SdStepGroup,
86
- default37 as SdSwitch,
87
- default38 as SdTab,
88
- default39 as SdTabGroup,
89
- default40 as SdTabPanel,
90
- default41 as SdTag,
91
- default42 as SdTeaser,
92
- default43 as SdTeaserMedia,
93
- default44 as SdTextarea,
94
- default45 as SdTooltip,
95
- default46 as SdVideo,
63
+ default12 as SdCombobox,
64
+ default13 as SdDialog,
65
+ default14 as SdDivider,
66
+ default15 as SdDrawer,
67
+ default16 as SdDropdown,
68
+ default17 as SdExpandable,
69
+ default18 as SdFlipcard,
70
+ default19 as SdHeader,
71
+ default20 as SdIcon,
72
+ default21 as SdInclude,
73
+ default22 as SdInput,
74
+ default23 as SdLink,
75
+ default24 as SdMapMarker,
76
+ default25 as SdNavigationItem,
77
+ default26 as SdNotification,
78
+ default27 as SdOptgroup,
79
+ default28 as SdOption,
80
+ default29 as SdPopup,
81
+ default30 as SdQuickfact,
82
+ default31 as SdRadio,
83
+ default32 as SdRadioButton,
84
+ default33 as SdRadioGroup,
85
+ default34 as SdScrollable,
86
+ default35 as SdSelect,
87
+ default36 as SdSpinner,
88
+ default37 as SdStep,
89
+ default38 as SdStepGroup,
90
+ default39 as SdSwitch,
91
+ default40 as SdTab,
92
+ default41 as SdTabGroup,
93
+ default42 as SdTabPanel,
94
+ default43 as SdTag,
95
+ default44 as SdTeaser,
96
+ default45 as SdTeaserMedia,
97
+ default46 as SdTextarea,
98
+ default47 as SdTooltip,
99
+ default48 as SdVideo,
96
100
  registerIconLibrary,
97
101
  setupAutocomplete,
98
102
  unregisterIconLibrary