@solid-design-system/components 3.22.17 → 3.23.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 (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