@vonage/vivid 5.21.0 → 5.22.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 (276) hide show
  1. package/accordion/index.cjs +1 -1
  2. package/accordion/index.js +2 -2
  3. package/alert/index.cjs +1 -1
  4. package/alert/index.js +1 -1
  5. package/audio-player/index.cjs +3 -5
  6. package/audio-player/index.js +30 -32
  7. package/avatar/index.cjs +1 -1
  8. package/avatar/index.js +1 -1
  9. package/banner/index.cjs +1 -1
  10. package/banner/index.js +1 -1
  11. package/bundled/affix.cjs +4 -4
  12. package/bundled/affix.js +4 -4
  13. package/bundled/base-color-picker.cjs +2 -2
  14. package/bundled/base-color-picker.js +2 -2
  15. package/bundled/button.cjs +1 -1
  16. package/bundled/button.js +1 -1
  17. package/bundled/definition10.cjs +1 -1
  18. package/bundled/definition10.js +1 -1
  19. package/bundled/definition13.cjs +1 -1
  20. package/bundled/definition13.js +1 -1
  21. package/bundled/definition15.cjs +1 -1
  22. package/bundled/definition15.js +2 -2
  23. package/bundled/definition16.cjs +2 -2
  24. package/bundled/definition16.js +2 -2
  25. package/bundled/definition17.cjs +1 -1
  26. package/bundled/definition17.js +1 -1
  27. package/bundled/definition18.cjs +2 -2
  28. package/bundled/definition18.js +14 -5
  29. package/bundled/definition19.cjs +1 -1
  30. package/bundled/definition19.js +1 -1
  31. package/bundled/definition20.cjs +1 -1
  32. package/bundled/definition20.js +1 -1
  33. package/bundled/definition21.cjs +1 -1
  34. package/bundled/definition21.js +2 -2
  35. package/bundled/definition24.cjs +1 -1
  36. package/bundled/definition24.js +1 -1
  37. package/bundled/definition3.cjs +1 -1
  38. package/bundled/definition3.js +3 -3
  39. package/bundled/definition4.cjs +1 -1
  40. package/bundled/definition4.js +1 -1
  41. package/bundled/definition5.cjs +1 -1
  42. package/bundled/definition5.js +1 -1
  43. package/bundled/definition6.cjs +1 -1
  44. package/bundled/definition6.js +1 -1
  45. package/bundled/definition8.cjs +1 -1
  46. package/bundled/definition8.js +12 -6
  47. package/bundled/definition9.cjs +1 -1
  48. package/bundled/definition9.js +1 -1
  49. package/bundled/form-associated.cjs +1 -1
  50. package/bundled/form-associated.js +2 -2
  51. package/bundled/listbox.cjs +1 -1
  52. package/bundled/listbox.js +5 -5
  53. package/bundled/numberConverter.cjs +1 -1
  54. package/bundled/numberConverter.js +1 -1
  55. package/bundled/slider.template.cjs +1 -1
  56. package/bundled/slider.template.js +1 -1
  57. package/bundled/vivid-element.cjs +1 -1
  58. package/bundled/vivid-element.js +1 -1
  59. package/bundled/with-contextual-help.cjs +1 -1
  60. package/bundled/with-contextual-help.js +1 -1
  61. package/calendar/index.cjs +1 -1
  62. package/calendar/index.js +3 -3
  63. package/color-picker/index.cjs +20 -20
  64. package/color-picker/index.js +22 -22
  65. package/combobox/index.cjs +1 -1
  66. package/combobox/index.js +6 -6
  67. package/country-group/index.cjs +1 -1
  68. package/country-group/index.js +1 -1
  69. package/custom-elements.json +2880 -2838
  70. package/data-grid/index.cjs +2 -2
  71. package/data-grid/index.js +12 -10
  72. package/dial-pad/index.cjs +1 -1
  73. package/dial-pad/index.js +2 -2
  74. package/dialog/index.cjs +1 -1
  75. package/dialog/index.js +1 -1
  76. package/header/index.cjs +1 -1
  77. package/header/index.js +1 -1
  78. package/lib/audio-player/audio-player.d.ts +0 -1
  79. package/lib/calendar/helpers/calendar.keyboard-interactions.d.ts +1 -1
  80. package/lib/checkbox/checkbox.d.ts +16 -16
  81. package/lib/color-picker/color-picker.d.ts +16 -16
  82. package/lib/combobox/combobox.d.ts +21 -21
  83. package/lib/date-picker/date-picker.d.ts +26 -26
  84. package/lib/date-range-picker/date-range-picker.d.ts +14 -14
  85. package/lib/date-time-picker/date-time-picker.d.ts +24 -24
  86. package/lib/dial-pad/dial-pad.d.ts +1 -1
  87. package/lib/file-picker/file-picker.d.ts +21 -21
  88. package/lib/menu/menu.d.ts +1 -1
  89. package/lib/number-field/number-field.d.ts +22 -22
  90. package/lib/popup/popup.d.ts +2 -1
  91. package/lib/radio/radio.d.ts +16 -16
  92. package/lib/range-slider/range-slider.d.ts +10 -10
  93. package/lib/rich-text-editor/popover.d.ts +1 -1
  94. package/lib/rich-text-editor/rte/exports.d.ts +1 -0
  95. package/lib/rich-text-editor/rte/feature.d.ts +5 -5
  96. package/lib/rich-text-editor/rte/features/drop-handler.d.ts +1 -2
  97. package/lib/rich-text-editor/rte/features/internal/core.d.ts +8 -0
  98. package/lib/rich-text-editor/rte/features/keyboard-shortcuts.d.ts +1 -1
  99. package/lib/rich-text-editor/rte/features/text-color-picker.d.ts +1 -1
  100. package/lib/rich-text-editor/rte/instance.d.ts +1 -0
  101. package/lib/rich-text-editor/rte/public-interface.d.ts +3 -0
  102. package/lib/rich-text-editor/rte/utils/ui.d.ts +1 -1
  103. package/lib/searchable-select/searchable-select.d.ts +21 -21
  104. package/lib/select/select.d.ts +22 -22
  105. package/lib/simple-color-picker/simple-color-picker.d.ts +5 -5
  106. package/lib/slider/slider.d.ts +5 -5
  107. package/lib/switch/switch.d.ts +5 -5
  108. package/lib/table/table-body.template.d.ts +1 -2
  109. package/lib/table/table-cell.template.d.ts +1 -2
  110. package/lib/table/table-head.template.d.ts +1 -2
  111. package/lib/table/table-row.template.d.ts +1 -2
  112. package/lib/table/table.template.d.ts +1 -2
  113. package/lib/text-area/text-area.d.ts +21 -21
  114. package/lib/text-field/text-field.d.ts +22 -22
  115. package/lib/time-picker/time-picker.d.ts +12 -12
  116. package/nav-disclosure/index.cjs +1 -1
  117. package/nav-disclosure/index.js +1 -1
  118. package/nav-item/index.cjs +1 -1
  119. package/nav-item/index.js +1 -1
  120. package/package.json +8 -6
  121. package/pagination/index.cjs +1 -1
  122. package/pagination/index.js +9 -2
  123. package/popover/index.cjs +1 -1
  124. package/popover/index.js +1 -1
  125. package/progress/index.cjs +1 -1
  126. package/progress/index.js +1 -1
  127. package/radio-group/index.cjs +1 -1
  128. package/radio-group/index.js +21 -19
  129. package/range-slider/index.cjs +1 -1
  130. package/range-slider/index.js +1 -1
  131. package/rich-text-editor/index.cjs +4 -3
  132. package/rich-text-editor/index.js +55 -27
  133. package/selectable-box/index.cjs +1 -1
  134. package/selectable-box/index.js +6 -1
  135. package/shared/color-picker/base-color-picker.d.ts +5 -5
  136. package/shared/feedback/mixins.d.ts +1 -1
  137. package/shared/foundation/button/button.d.ts +5 -5
  138. package/shared/foundation/form-associated/form-associated.d.ts +10 -10
  139. package/shared/foundation/listbox/listbox.d.ts +1 -1
  140. package/shared/patterns/form-elements/form-element.d.ts +5 -5
  141. package/shared/patterns/form-elements/with-contextual-help.d.ts +5 -5
  142. package/shared/patterns/form-elements/with-error-text.d.ts +6 -6
  143. package/shared/picker-field/mixins/calendar-picker.d.ts +6 -6
  144. package/shared/picker-field/mixins/calendar-picker.template.d.ts +6 -6
  145. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +8 -8
  146. package/shared/picker-field/mixins/single-date-picker.d.ts +6 -6
  147. package/shared/picker-field/mixins/single-value-picker.d.ts +6 -6
  148. package/shared/picker-field/mixins/time-selection-picker.d.ts +6 -6
  149. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +12 -12
  150. package/shared/picker-field/picker-field.d.ts +21 -21
  151. package/shared/utils/slottable-request.d.ts +1 -1
  152. package/switch/index.cjs +1 -1
  153. package/switch/index.js +1 -1
  154. package/table/index.cjs +5 -5
  155. package/table/index.js +5 -5
  156. package/tabs/index.cjs +1 -1
  157. package/tabs/index.js +2 -2
  158. package/tag/index.cjs +1 -1
  159. package/tag/index.js +1 -1
  160. package/tree-view/index.cjs +1 -1
  161. package/tree-view/index.js +0 -2
  162. package/unbundled/affix.cjs +4 -4
  163. package/unbundled/affix.js +4 -4
  164. package/unbundled/base-color-picker.cjs +3 -3
  165. package/unbundled/base-color-picker.js +3 -3
  166. package/unbundled/button.cjs +5 -5
  167. package/unbundled/button.js +5 -5
  168. package/unbundled/definition10.cjs +15 -4
  169. package/unbundled/definition10.js +15 -4
  170. package/unbundled/definition11.cjs +3 -3
  171. package/unbundled/definition11.js +3 -3
  172. package/unbundled/definition12.cjs +1 -1
  173. package/unbundled/definition12.js +1 -1
  174. package/unbundled/definition13.cjs +2 -2
  175. package/unbundled/definition13.js +2 -2
  176. package/unbundled/definition14.cjs +73 -76
  177. package/unbundled/definition14.js +73 -76
  178. package/unbundled/definition15.cjs +1 -1
  179. package/unbundled/definition15.js +1 -1
  180. package/unbundled/definition17.cjs +1 -1
  181. package/unbundled/definition17.js +1 -1
  182. package/unbundled/definition19.cjs +2 -1
  183. package/unbundled/definition19.js +2 -1
  184. package/unbundled/definition2.cjs +1 -1
  185. package/unbundled/definition2.js +1 -1
  186. package/unbundled/definition21.cjs +3 -3
  187. package/unbundled/definition21.js +3 -3
  188. package/unbundled/definition23.cjs +2 -2
  189. package/unbundled/definition23.js +2 -2
  190. package/unbundled/definition24.cjs +1 -1
  191. package/unbundled/definition24.js +1 -1
  192. package/unbundled/definition27.cjs +1 -1
  193. package/unbundled/definition27.js +1 -1
  194. package/unbundled/definition28.cjs +23 -23
  195. package/unbundled/definition28.js +23 -23
  196. package/unbundled/definition29.cjs +1 -1
  197. package/unbundled/definition29.js +1 -1
  198. package/unbundled/definition3.cjs +2 -2
  199. package/unbundled/definition3.js +2 -2
  200. package/unbundled/definition30.cjs +7 -7
  201. package/unbundled/definition30.js +7 -7
  202. package/unbundled/definition32.cjs +1 -1
  203. package/unbundled/definition32.js +1 -1
  204. package/unbundled/definition34.cjs +9 -8
  205. package/unbundled/definition34.js +9 -8
  206. package/unbundled/definition35.cjs +1 -1
  207. package/unbundled/definition35.js +1 -1
  208. package/unbundled/definition39.cjs +2 -2
  209. package/unbundled/definition39.js +2 -2
  210. package/unbundled/definition40.cjs +1 -1
  211. package/unbundled/definition40.js +1 -1
  212. package/unbundled/definition44.cjs +1 -1
  213. package/unbundled/definition44.js +1 -1
  214. package/unbundled/definition48.cjs +1 -1
  215. package/unbundled/definition48.js +1 -1
  216. package/unbundled/definition49.cjs +1 -1
  217. package/unbundled/definition49.js +1 -1
  218. package/unbundled/definition5.cjs +1 -1
  219. package/unbundled/definition5.js +1 -1
  220. package/unbundled/definition53.cjs +10 -3
  221. package/unbundled/definition53.js +10 -3
  222. package/unbundled/definition55.cjs +1 -1
  223. package/unbundled/definition55.js +1 -1
  224. package/unbundled/definition56.cjs +1 -1
  225. package/unbundled/definition56.js +1 -1
  226. package/unbundled/definition57.cjs +4 -5
  227. package/unbundled/definition57.js +4 -5
  228. package/unbundled/definition58.cjs +20 -19
  229. package/unbundled/definition58.js +20 -19
  230. package/unbundled/definition59.cjs +1 -1
  231. package/unbundled/definition59.js +1 -1
  232. package/unbundled/definition60.cjs +47 -9
  233. package/unbundled/definition60.js +47 -9
  234. package/unbundled/definition61.cjs +12 -6
  235. package/unbundled/definition61.js +12 -6
  236. package/unbundled/definition64.cjs +4 -1
  237. package/unbundled/definition64.js +4 -1
  238. package/unbundled/definition65.cjs +2 -1
  239. package/unbundled/definition65.js +2 -1
  240. package/unbundled/definition69.cjs +3 -2
  241. package/unbundled/definition69.js +3 -2
  242. package/unbundled/definition7.cjs +1 -1
  243. package/unbundled/definition7.js +1 -1
  244. package/unbundled/definition71.cjs +1 -1
  245. package/unbundled/definition71.js +1 -1
  246. package/unbundled/definition72.cjs +5 -5
  247. package/unbundled/definition72.js +5 -5
  248. package/unbundled/definition73.cjs +2 -2
  249. package/unbundled/definition73.js +2 -2
  250. package/unbundled/definition75.cjs +1 -1
  251. package/unbundled/definition75.js +1 -1
  252. package/unbundled/definition78.cjs +1 -1
  253. package/unbundled/definition78.js +1 -1
  254. package/unbundled/definition79.cjs +0 -2
  255. package/unbundled/definition79.js +0 -2
  256. package/unbundled/definition80.cjs +1 -1
  257. package/unbundled/definition80.js +1 -1
  258. package/unbundled/definition9.cjs +1 -1
  259. package/unbundled/definition9.js +1 -1
  260. package/unbundled/form-associated.cjs +2 -2
  261. package/unbundled/form-associated.js +2 -2
  262. package/unbundled/listbox.cjs +7 -7
  263. package/unbundled/listbox.js +7 -7
  264. package/unbundled/numberConverter.cjs +1 -1
  265. package/unbundled/numberConverter.js +1 -1
  266. package/unbundled/slider.template.cjs +1 -1
  267. package/unbundled/slider.template.js +1 -1
  268. package/unbundled/slottable-request.cjs +5 -5
  269. package/unbundled/slottable-request.js +5 -5
  270. package/unbundled/vivid-element.cjs +1 -1
  271. package/unbundled/vivid-element.js +1 -1
  272. package/unbundled/with-contextual-help.cjs +4 -1
  273. package/unbundled/with-contextual-help.js +4 -1
  274. package/video-player/index.cjs +1 -1
  275. package/video-player/index.js +1 -1
  276. package/vivid.api.json +60 -18
@@ -32,7 +32,7 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
32
32
  this.radioChangeHandler = (e) => {
33
33
  const changedRadio = e.target;
34
34
  if (changedRadio.checked) {
35
- this.slottedRadioButtons?.forEach((radio) => {
35
+ this.slottedRadioButtons.forEach((radio) => {
36
36
  if (radio !== changedRadio) radio.checked = false;
37
37
  });
38
38
  this.value = changedRadio.value;
@@ -46,16 +46,17 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
46
46
  radio.focus();
47
47
  };
48
48
  this.moveRightOffGroup = () => {
49
- this.nextElementSibling?.focus();
49
+ const next = this.nextElementSibling;
50
+ if (next instanceof HTMLElement) next.focus();
50
51
  };
51
52
  this.moveLeftOffGroup = () => {
52
- this.previousElementSibling?.focus();
53
+ const prev = this.previousElementSibling;
54
+ if (prev instanceof HTMLElement) prev.focus();
53
55
  };
54
56
  this.moveRight = (e) => {
55
57
  const radio = e.target;
56
58
  const group = this.#focusableRadioButtons;
57
- let index = 0;
58
- index = group.indexOf(radio) + 1;
59
+ let index = group.indexOf(radio) + 1;
59
60
  if (index === group.length && this.isInsideToolbar && e.key === "ArrowRight") {
60
61
  this.moveRightOffGroup();
61
62
  return;
@@ -78,15 +79,15 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
78
79
  switch (e.key) {
79
80
  case _microsoft_fast_web_utilities.keyEnter:
80
81
  this.checkFocusedRadio(e.target);
81
- break;
82
+ return;
82
83
  case require_key_codes.keyArrowRight:
83
84
  case _microsoft_fast_web_utilities.keyArrowDown:
84
85
  this.moveRight(e);
85
- break;
86
+ return;
86
87
  case require_key_codes.keyArrowLeft:
87
88
  case _microsoft_fast_web_utilities.keyArrowUp:
88
89
  this.moveLeft(e);
89
- break;
90
+ return;
90
91
  default: return true;
91
92
  }
92
93
  };
@@ -95,7 +96,7 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
95
96
  * @internal
96
97
  */
97
98
  requiredChanged() {
98
- this.slottedRadioButtons?.forEach((radio) => {
99
+ this.slottedRadioButtons.forEach((radio) => {
99
100
  if (this.required) radio.required = true;
100
101
  else radio.required = false;
101
102
  });
@@ -104,7 +105,7 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
104
105
  * @internal
105
106
  */
106
107
  readOnlyChanged() {
107
- this.slottedRadioButtons?.forEach((radio) => {
108
+ this.slottedRadioButtons.forEach((radio) => {
108
109
  if (this.readOnly) radio.readOnly = true;
109
110
  else radio.readOnly = false;
110
111
  });
@@ -113,13 +114,13 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
113
114
  * @internal
114
115
  */
115
116
  disabledChanged() {
116
- this.slottedRadioButtons?.forEach((radio) => {
117
+ this.slottedRadioButtons.forEach((radio) => {
117
118
  if (this.disabled) radio.disabled = true;
118
119
  else radio.disabled = false;
119
120
  });
120
121
  }
121
122
  nameChanged() {
122
- this.slottedRadioButtons?.forEach((radio) => {
123
+ this.slottedRadioButtons.forEach((radio) => {
123
124
  radio.setAttribute("name", this.name);
124
125
  });
125
126
  }
@@ -127,7 +128,7 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
127
128
  * @internal
128
129
  */
129
130
  valueChanged() {
130
- this.slottedRadioButtons?.forEach((radio) => {
131
+ this.slottedRadioButtons.forEach((radio) => {
131
132
  if (radio.value === this.value) radio.checked = true;
132
133
  });
133
134
  this.$emit("change");
@@ -136,7 +137,7 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
136
137
  * @internal
137
138
  */
138
139
  handleSlotChange() {
139
- if (this.errorText) this.slottedRadioButtons?.forEach((radio) => {
140
+ if (this.errorText) this.slottedRadioButtons.forEach((radio) => {
140
141
  radio.errorText = this.errorText;
141
142
  });
142
143
  }
@@ -148,13 +149,13 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
148
149
  else this.errorValidationMessage = "";
149
150
  }
150
151
  get #focusableRadioButtons() {
151
- return this.slottedRadioButtons?.filter((radio) => !radio.disabled);
152
+ return this.slottedRadioButtons.filter((radio) => !radio.disabled);
152
153
  }
153
154
  /**
154
155
  * @internal
155
156
  */
156
157
  slottedRadioButtonsChanged() {
157
- if (this.slottedRadioButtons && this.slottedRadioButtons.length > 0) this.setupRadioButtons();
158
+ if (this.slottedRadioButtons.length > 0) this.setupRadioButtons();
158
159
  }
159
160
  get isInsideToolbar() {
160
161
  return !!this.closest("[role=\"toolbar\"]");
@@ -167,7 +168,7 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
167
168
  this.setupRadioButtons();
168
169
  }
169
170
  disconnectedCallback() {
170
- this.slottedRadioButtons?.forEach((radio) => {
171
+ this.slottedRadioButtons.forEach((radio) => {
171
172
  radio.removeEventListener("change", this.radioChangeHandler);
172
173
  radio.removeEventListener("invalid", this.radioErrorHandler);
173
174
  });
@@ -187,8 +188,8 @@ var RadioGroup = class extends require_mixins.WithFeedback(require_vivid_element
187
188
  radio.addEventListener("change", this.radioChangeHandler);
188
189
  radio.addEventListener("invalid", this.radioErrorHandler);
189
190
  }
190
- if (this.value === void 0 && this.slottedRadioButtons?.length > 0) {
191
- const checkedRadios = this.slottedRadioButtons?.filter((radio) => radio.hasAttribute("checked"));
191
+ if (this.value === void 0 && this.slottedRadioButtons.length > 0) {
192
+ const checkedRadios = this.slottedRadioButtons.filter((radio) => radio.hasAttribute("checked"));
192
193
  if (checkedRadios.length > 0 && !foundMatchingVal) {
193
194
  const lastCheckedRadio = checkedRadios[checkedRadios.length - 1];
194
195
  lastCheckedRadio.checked = true;
@@ -31,7 +31,7 @@ var RadioGroup = class extends WithFeedback(VividElement) {
31
31
  this.radioChangeHandler = (e) => {
32
32
  const changedRadio = e.target;
33
33
  if (changedRadio.checked) {
34
- this.slottedRadioButtons?.forEach((radio) => {
34
+ this.slottedRadioButtons.forEach((radio) => {
35
35
  if (radio !== changedRadio) radio.checked = false;
36
36
  });
37
37
  this.value = changedRadio.value;
@@ -45,16 +45,17 @@ var RadioGroup = class extends WithFeedback(VividElement) {
45
45
  radio.focus();
46
46
  };
47
47
  this.moveRightOffGroup = () => {
48
- this.nextElementSibling?.focus();
48
+ const next = this.nextElementSibling;
49
+ if (next instanceof HTMLElement) next.focus();
49
50
  };
50
51
  this.moveLeftOffGroup = () => {
51
- this.previousElementSibling?.focus();
52
+ const prev = this.previousElementSibling;
53
+ if (prev instanceof HTMLElement) prev.focus();
52
54
  };
53
55
  this.moveRight = (e) => {
54
56
  const radio = e.target;
55
57
  const group = this.#focusableRadioButtons;
56
- let index = 0;
57
- index = group.indexOf(radio) + 1;
58
+ let index = group.indexOf(radio) + 1;
58
59
  if (index === group.length && this.isInsideToolbar && e.key === "ArrowRight") {
59
60
  this.moveRightOffGroup();
60
61
  return;
@@ -77,15 +78,15 @@ var RadioGroup = class extends WithFeedback(VividElement) {
77
78
  switch (e.key) {
78
79
  case keyEnter:
79
80
  this.checkFocusedRadio(e.target);
80
- break;
81
+ return;
81
82
  case keyArrowRight$1:
82
83
  case keyArrowDown:
83
84
  this.moveRight(e);
84
- break;
85
+ return;
85
86
  case keyArrowLeft$1:
86
87
  case keyArrowUp:
87
88
  this.moveLeft(e);
88
- break;
89
+ return;
89
90
  default: return true;
90
91
  }
91
92
  };
@@ -94,7 +95,7 @@ var RadioGroup = class extends WithFeedback(VividElement) {
94
95
  * @internal
95
96
  */
96
97
  requiredChanged() {
97
- this.slottedRadioButtons?.forEach((radio) => {
98
+ this.slottedRadioButtons.forEach((radio) => {
98
99
  if (this.required) radio.required = true;
99
100
  else radio.required = false;
100
101
  });
@@ -103,7 +104,7 @@ var RadioGroup = class extends WithFeedback(VividElement) {
103
104
  * @internal
104
105
  */
105
106
  readOnlyChanged() {
106
- this.slottedRadioButtons?.forEach((radio) => {
107
+ this.slottedRadioButtons.forEach((radio) => {
107
108
  if (this.readOnly) radio.readOnly = true;
108
109
  else radio.readOnly = false;
109
110
  });
@@ -112,13 +113,13 @@ var RadioGroup = class extends WithFeedback(VividElement) {
112
113
  * @internal
113
114
  */
114
115
  disabledChanged() {
115
- this.slottedRadioButtons?.forEach((radio) => {
116
+ this.slottedRadioButtons.forEach((radio) => {
116
117
  if (this.disabled) radio.disabled = true;
117
118
  else radio.disabled = false;
118
119
  });
119
120
  }
120
121
  nameChanged() {
121
- this.slottedRadioButtons?.forEach((radio) => {
122
+ this.slottedRadioButtons.forEach((radio) => {
122
123
  radio.setAttribute("name", this.name);
123
124
  });
124
125
  }
@@ -126,7 +127,7 @@ var RadioGroup = class extends WithFeedback(VividElement) {
126
127
  * @internal
127
128
  */
128
129
  valueChanged() {
129
- this.slottedRadioButtons?.forEach((radio) => {
130
+ this.slottedRadioButtons.forEach((radio) => {
130
131
  if (radio.value === this.value) radio.checked = true;
131
132
  });
132
133
  this.$emit("change");
@@ -135,7 +136,7 @@ var RadioGroup = class extends WithFeedback(VividElement) {
135
136
  * @internal
136
137
  */
137
138
  handleSlotChange() {
138
- if (this.errorText) this.slottedRadioButtons?.forEach((radio) => {
139
+ if (this.errorText) this.slottedRadioButtons.forEach((radio) => {
139
140
  radio.errorText = this.errorText;
140
141
  });
141
142
  }
@@ -147,13 +148,13 @@ var RadioGroup = class extends WithFeedback(VividElement) {
147
148
  else this.errorValidationMessage = "";
148
149
  }
149
150
  get #focusableRadioButtons() {
150
- return this.slottedRadioButtons?.filter((radio) => !radio.disabled);
151
+ return this.slottedRadioButtons.filter((radio) => !radio.disabled);
151
152
  }
152
153
  /**
153
154
  * @internal
154
155
  */
155
156
  slottedRadioButtonsChanged() {
156
- if (this.slottedRadioButtons && this.slottedRadioButtons.length > 0) this.setupRadioButtons();
157
+ if (this.slottedRadioButtons.length > 0) this.setupRadioButtons();
157
158
  }
158
159
  get isInsideToolbar() {
159
160
  return !!this.closest("[role=\"toolbar\"]");
@@ -166,7 +167,7 @@ var RadioGroup = class extends WithFeedback(VividElement) {
166
167
  this.setupRadioButtons();
167
168
  }
168
169
  disconnectedCallback() {
169
- this.slottedRadioButtons?.forEach((radio) => {
170
+ this.slottedRadioButtons.forEach((radio) => {
170
171
  radio.removeEventListener("change", this.radioChangeHandler);
171
172
  radio.removeEventListener("invalid", this.radioErrorHandler);
172
173
  });
@@ -186,8 +187,8 @@ var RadioGroup = class extends WithFeedback(VividElement) {
186
187
  radio.addEventListener("change", this.radioChangeHandler);
187
188
  radio.addEventListener("invalid", this.radioErrorHandler);
188
189
  }
189
- if (this.value === void 0 && this.slottedRadioButtons?.length > 0) {
190
- const checkedRadios = this.slottedRadioButtons?.filter((radio) => radio.hasAttribute("checked"));
190
+ if (this.value === void 0 && this.slottedRadioButtons.length > 0) {
191
+ const checkedRadios = this.slottedRadioButtons.filter((radio) => radio.hasAttribute("checked"));
191
192
  if (checkedRadios.length > 0 && !foundMatchingVal) {
192
193
  const lastCheckedRadio = checkedRadios[checkedRadios.length - 1];
193
194
  lastCheckedRadio.checked = true;
@@ -418,7 +418,7 @@ require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.pr
418
418
  require_decorate.__decorate([_microsoft_fast_element.observable], RangeSlider.prototype, "_selectedRangeCss", void 0);
419
419
  //#endregion
420
420
  //#region src/lib/range-slider/range-slider.template.ts
421
- var getClasses = ({ disabled, connotation }) => (0, _microsoft_fast_web_utilities.classNames)("control", ["disabled", Boolean(disabled)], [`connotation-${connotation}`, Boolean(connotation)]);
421
+ var getClasses = ({ disabled, connotation }) => (0, _microsoft_fast_web_utilities.classNames)("control", ["disabled", disabled], [`connotation-${connotation}`, Boolean(connotation)]);
422
422
  var getThumbClassesFor = (thumb) => ({ _visiblyFocusedThumb }) => (0, _microsoft_fast_web_utilities.classNames)("thumb-container", ["focus-visible", _visiblyFocusedThumb === thumb]);
423
423
  var RangeSliderTemplate = (context) => {
424
424
  const popupTag = context.tagFor(require_definition.Popup);
@@ -417,7 +417,7 @@ __decorate([observable], RangeSlider.prototype, "_endThumbCss", void 0);
417
417
  __decorate([observable], RangeSlider.prototype, "_selectedRangeCss", void 0);
418
418
  //#endregion
419
419
  //#region src/lib/range-slider/range-slider.template.ts
420
- var getClasses = ({ disabled, connotation }) => classNames("control", ["disabled", Boolean(disabled)], [`connotation-${connotation}`, Boolean(connotation)]);
420
+ var getClasses = ({ disabled, connotation }) => classNames("control", ["disabled", disabled], [`connotation-${connotation}`, Boolean(connotation)]);
421
421
  var getThumbClassesFor = (thumb) => ({ _visiblyFocusedThumb }) => classNames("thumb-container", ["focus-visible", _visiblyFocusedThumb === thumb]);
422
422
  var RangeSliderTemplate = (context) => {
423
423
  const popupTag = context.tagFor(Popup);
@@ -113,12 +113,20 @@ var Kind = {
113
113
  default: {
114
114
  placement: void 0,
115
115
  placementStrategy: require_definition$2.PlacementStrategy.AutoPlacementHorizontal,
116
+ shiftCrossAxis: false,
116
117
  strategy: "absolute"
117
118
  },
118
119
  autocomplete: {
119
120
  placement: "bottom-start",
120
121
  placementStrategy: require_definition$2.PlacementStrategy.Flip,
122
+ shiftCrossAxis: false,
121
123
  strategy: "fixed"
124
+ },
125
+ imageOptions: {
126
+ placement: "bottom",
127
+ placementStrategy: require_definition$2.PlacementStrategy.Flip,
128
+ shiftCrossAxis: true,
129
+ strategy: "absolute"
122
130
  }
123
131
  };
124
132
  var popoverTemplate = (context) => {
@@ -127,6 +135,7 @@ var popoverTemplate = (context) => {
127
135
  :anchor="${(x) => x.anchorEl}"
128
136
  :placement="${(x) => Kind[x.kind].placement}"
129
137
  :placementStrategy="${(x) => Kind[x.kind].placementStrategy}"
138
+ :shiftCrossAxis="${(x) => Kind[x.kind].shiftCrossAxis}"
130
139
  :open="${(x) => x.open}"
131
140
  :offset="${(x) => x.offset}"
132
141
  :strategy="${(x) => Kind[x.kind].strategy}"
@@ -316,6 +325,8 @@ var RteCoreImpl = class extends require_slottable_request.RteFeatureImpl {
316
325
  super(..._args);
317
326
  this.name = "RteCore";
318
327
  this.disabled = new FeatureState(false);
328
+ this.scrollThreshold = void 0;
329
+ this.scrollMargin = void 0;
319
330
  }
320
331
  getStyles() {
321
332
  return [
@@ -595,6 +606,15 @@ var RteInstance = class {
595
606
  else tr.setSelection(prosemirror_state.TextSelection.atStart(tr.doc));
596
607
  dispatchTransaction(tr);
597
608
  }
609
+ /**
610
+ * Scrolls the cursor into view.
611
+ * Has no effect if the editor is not currently mounted.
612
+ */
613
+ scrollIntoView() {
614
+ const instance = this[require_slottable_request.impl];
615
+ if (!instance.view) return;
616
+ instance.dispatchTransaction(instance.tr.scrollIntoView());
617
+ }
598
618
  };
599
619
  var RteInstanceImpl = class {
600
620
  getFeature(name) {
@@ -649,12 +669,15 @@ var RteInstanceImpl = class {
649
669
  this.view?.updateState(this.state);
650
670
  }
651
671
  createView(target) {
672
+ const core = this.config.featureMap.get("RteCore");
652
673
  this.view = new prosemirror_view.EditorView((editor) => {
653
674
  editor.part = "editor";
654
675
  target.appendChild(editor);
655
676
  }, {
656
677
  state: this.state,
657
- dispatchTransaction: this.dispatchTransaction
678
+ dispatchTransaction: this.dispatchTransaction,
679
+ ...core?.scrollThreshold !== void 0 && { scrollThreshold: core.scrollThreshold },
680
+ ...core?.scrollMargin !== void 0 && { scrollMargin: core.scrollMargin }
658
681
  });
659
682
  }
660
683
  destroyViewIfNeeded() {
@@ -1365,6 +1388,20 @@ var RteBaseImpl = class extends require_slottable_request.RteFeatureImpl {
1365
1388
  },
1366
1389
  set disabled(value) {
1367
1390
  core.disabled.setValue(rte, value);
1391
+ },
1392
+ get scrollThreshold() {
1393
+ return core.scrollThreshold;
1394
+ },
1395
+ set scrollThreshold(value) {
1396
+ core.scrollThreshold = value;
1397
+ rte.view?.setProps({ scrollThreshold: value });
1398
+ },
1399
+ get scrollMargin() {
1400
+ return core.scrollMargin;
1401
+ },
1402
+ set scrollMargin(value) {
1403
+ core.scrollMargin = value;
1404
+ rte.view?.setProps({ scrollMargin: value });
1368
1405
  }
1369
1406
  };
1370
1407
  }
@@ -1955,7 +1992,7 @@ var RteTextColorPickerFeatureImpl = class extends require_slottable_request.RteF
1955
1992
  if (selectionColor === null) selectionColor = observedColor ?? null;
1956
1993
  else if (observedColor !== selectionColor) selectionColor = mixedColor;
1957
1994
  };
1958
- state.doc.nodesBetween(from, to, (node, pos, parent) => {
1995
+ state.doc.nodesBetween(from, to, (node, _pos, parent) => {
1959
1996
  if (selectionColor === mixedColor) return false;
1960
1997
  if (!node.isLeaf) {
1961
1998
  if (node.type.allowsMarkType(textColor) && node.childCount === 0) observeColor(this.defaultColorForNode?.[node.type.name]);
@@ -2704,7 +2741,7 @@ var InlineImageView = class {
2704
2741
  this.img.className = "inline-image";
2705
2742
  this.update(node);
2706
2743
  this.img.addEventListener("load", () => {
2707
- const pos = this.getPos?.();
2744
+ const pos = this.getPos();
2708
2745
  if (pos) {
2709
2746
  const { state, dispatch } = this.view;
2710
2747
  const currentNode = state.doc.nodeAt(pos);
@@ -2811,6 +2848,7 @@ var RteInlineImageFeatureImpl = class extends require_slottable_request.RteFeatu
2811
2848
  shouldReturnFocusToEditor: true
2812
2849
  });
2813
2850
  popover = rte.createComponent(Popover);
2851
+ popover.kind = "imageOptions";
2814
2852
  popover.offset = 4;
2815
2853
  const content = createDiv(ctx, {
2816
2854
  className: "inline-image-popover",
@@ -2871,7 +2909,7 @@ var RteInlineImageFeatureImpl = class extends require_slottable_request.RteFeatu
2871
2909
  } }))];
2872
2910
  }
2873
2911
  calculateSmallWidth(naturalWidth) {
2874
- return Math.min(300, naturalWidth / 2) + "px";
2912
+ return `${Math.min(300, naturalWidth / 2)}px`;
2875
2913
  }
2876
2914
  getSelectedInlineImage(state) {
2877
2915
  const sel = state.selection;
@@ -3004,13 +3042,13 @@ var RteFileHandlerFeatureImpl = class extends require_slottable_request.RteFeatu
3004
3042
  if (resolved.type === "error") console.error("Error in handleFiles handler:", resolved.error);
3005
3043
  };
3006
3044
  return [this.contribution(insertPointPlaceholderPlugin), this.contribution(new prosemirror_state.Plugin({ props: {
3007
- handlePaste: (view, event) => {
3045
+ handlePaste: (_view, event) => {
3008
3046
  const files = Array.from(event.clipboardData.files);
3009
3047
  if (!files.length) return false;
3010
3048
  handleFiles(files, { type: "selection" });
3011
3049
  return true;
3012
3050
  },
3013
- handleDrop: (view, event, slice, moved) => {
3051
+ handleDrop: (view, event) => {
3014
3052
  const files = Array.from(event.dataTransfer.files);
3015
3053
  if (!files.length) return false;
3016
3054
  let target = view.posAtCoords({
@@ -3039,7 +3077,7 @@ var RteDropHandlerFeatureImpl = class extends require_slottable_request.RteFeatu
3039
3077
  this.config = config;
3040
3078
  this.name = "RteDebugFeature";
3041
3079
  }
3042
- getPlugins(rte) {
3080
+ getPlugins() {
3043
3081
  const dragOverResults = /* @__PURE__ */ new WeakMap();
3044
3082
  let lastResult = false;
3045
3083
  const onDragOver = (event) => {
@@ -3077,7 +3115,7 @@ var RteDropHandlerFeatureImpl = class extends require_slottable_request.RteFeatu
3077
3115
  viewport.removeEventListener("dragleave", onDragLeave);
3078
3116
  } };
3079
3117
  } })), this.contribution(new prosemirror_state.Plugin({ props: { handleDOMEvents: {
3080
- dragover: (view, event) => {
3118
+ dragover: (_view, event) => {
3081
3119
  const result = this.config.onViewportDragOver?.(event) ?? false;
3082
3120
  dragOverResults.set(event, result);
3083
3121
  lastResult = result;
@@ -3088,7 +3126,7 @@ var RteDropHandlerFeatureImpl = class extends require_slottable_request.RteFeatu
3088
3126
  }
3089
3127
  return false;
3090
3128
  },
3091
- drop: (view, event) => {
3129
+ drop: () => {
3092
3130
  return lastResult;
3093
3131
  }
3094
3132
  } } }), require_slottable_request.contributionPriority.high)];
@@ -111,12 +111,20 @@ var Kind = {
111
111
  default: {
112
112
  placement: void 0,
113
113
  placementStrategy: PlacementStrategy.AutoPlacementHorizontal,
114
+ shiftCrossAxis: false,
114
115
  strategy: "absolute"
115
116
  },
116
117
  autocomplete: {
117
118
  placement: "bottom-start",
118
119
  placementStrategy: PlacementStrategy.Flip,
120
+ shiftCrossAxis: false,
119
121
  strategy: "fixed"
122
+ },
123
+ imageOptions: {
124
+ placement: "bottom",
125
+ placementStrategy: PlacementStrategy.Flip,
126
+ shiftCrossAxis: true,
127
+ strategy: "absolute"
120
128
  }
121
129
  };
122
130
  var popoverTemplate = (context) => {
@@ -125,6 +133,7 @@ var popoverTemplate = (context) => {
125
133
  :anchor="${(x) => x.anchorEl}"
126
134
  :placement="${(x) => Kind[x.kind].placement}"
127
135
  :placementStrategy="${(x) => Kind[x.kind].placementStrategy}"
136
+ :shiftCrossAxis="${(x) => Kind[x.kind].shiftCrossAxis}"
128
137
  :open="${(x) => x.open}"
129
138
  :offset="${(x) => x.offset}"
130
139
  :strategy="${(x) => Kind[x.kind].strategy}"
@@ -314,6 +323,8 @@ var RteCoreImpl = class extends RteFeatureImpl {
314
323
  super(..._args);
315
324
  this.name = "RteCore";
316
325
  this.disabled = new FeatureState(false);
326
+ this.scrollThreshold = void 0;
327
+ this.scrollMargin = void 0;
317
328
  }
318
329
  getStyles() {
319
330
  return [
@@ -593,6 +604,15 @@ var RteInstance = class {
593
604
  else tr.setSelection(TextSelection.atStart(tr.doc));
594
605
  dispatchTransaction(tr);
595
606
  }
607
+ /**
608
+ * Scrolls the cursor into view.
609
+ * Has no effect if the editor is not currently mounted.
610
+ */
611
+ scrollIntoView() {
612
+ const instance = this[impl];
613
+ if (!instance.view) return;
614
+ instance.dispatchTransaction(instance.tr.scrollIntoView());
615
+ }
596
616
  };
597
617
  var RteInstanceImpl = class {
598
618
  getFeature(name) {
@@ -647,12 +667,15 @@ var RteInstanceImpl = class {
647
667
  this.view?.updateState(this.state);
648
668
  }
649
669
  createView(target) {
670
+ const core = this.config.featureMap.get("RteCore");
650
671
  this.view = new EditorView((editor) => {
651
672
  editor.part = "editor";
652
673
  target.appendChild(editor);
653
674
  }, {
654
675
  state: this.state,
655
- dispatchTransaction: this.dispatchTransaction
676
+ dispatchTransaction: this.dispatchTransaction,
677
+ ...core?.scrollThreshold !== void 0 && { scrollThreshold: core.scrollThreshold },
678
+ ...core?.scrollMargin !== void 0 && { scrollMargin: core.scrollMargin }
656
679
  });
657
680
  }
658
681
  destroyViewIfNeeded() {
@@ -1363,6 +1386,20 @@ var RteBaseImpl = class extends RteFeatureImpl {
1363
1386
  },
1364
1387
  set disabled(value) {
1365
1388
  core.disabled.setValue(rte, value);
1389
+ },
1390
+ get scrollThreshold() {
1391
+ return core.scrollThreshold;
1392
+ },
1393
+ set scrollThreshold(value) {
1394
+ core.scrollThreshold = value;
1395
+ rte.view?.setProps({ scrollThreshold: value });
1396
+ },
1397
+ get scrollMargin() {
1398
+ return core.scrollMargin;
1399
+ },
1400
+ set scrollMargin(value) {
1401
+ core.scrollMargin = value;
1402
+ rte.view?.setProps({ scrollMargin: value });
1366
1403
  }
1367
1404
  };
1368
1405
  }
@@ -1953,7 +1990,7 @@ var RteTextColorPickerFeatureImpl = class extends RteFeatureImpl {
1953
1990
  if (selectionColor === null) selectionColor = observedColor ?? null;
1954
1991
  else if (observedColor !== selectionColor) selectionColor = mixedColor;
1955
1992
  };
1956
- state.doc.nodesBetween(from, to, (node, pos, parent) => {
1993
+ state.doc.nodesBetween(from, to, (node, _pos, parent) => {
1957
1994
  if (selectionColor === mixedColor) return false;
1958
1995
  if (!node.isLeaf) {
1959
1996
  if (node.type.allowsMarkType(textColor) && node.childCount === 0) observeColor(this.defaultColorForNode?.[node.type.name]);
@@ -2702,7 +2739,7 @@ var InlineImageView = class {
2702
2739
  this.img.className = "inline-image";
2703
2740
  this.update(node);
2704
2741
  this.img.addEventListener("load", () => {
2705
- const pos = this.getPos?.();
2742
+ const pos = this.getPos();
2706
2743
  if (pos) {
2707
2744
  const { state, dispatch } = this.view;
2708
2745
  const currentNode = state.doc.nodeAt(pos);
@@ -2809,6 +2846,7 @@ var RteInlineImageFeatureImpl = class extends RteFeatureImpl {
2809
2846
  shouldReturnFocusToEditor: true
2810
2847
  });
2811
2848
  popover = rte.createComponent(Popover);
2849
+ popover.kind = "imageOptions";
2812
2850
  popover.offset = 4;
2813
2851
  const content = createDiv(ctx, {
2814
2852
  className: "inline-image-popover",
@@ -2869,7 +2907,7 @@ var RteInlineImageFeatureImpl = class extends RteFeatureImpl {
2869
2907
  } }))];
2870
2908
  }
2871
2909
  calculateSmallWidth(naturalWidth) {
2872
- return Math.min(300, naturalWidth / 2) + "px";
2910
+ return `${Math.min(300, naturalWidth / 2)}px`;
2873
2911
  }
2874
2912
  getSelectedInlineImage(state) {
2875
2913
  const sel = state.selection;
@@ -3002,13 +3040,13 @@ var RteFileHandlerFeatureImpl = class extends RteFeatureImpl {
3002
3040
  if (resolved.type === "error") console.error("Error in handleFiles handler:", resolved.error);
3003
3041
  };
3004
3042
  return [this.contribution(insertPointPlaceholderPlugin), this.contribution(new Plugin({ props: {
3005
- handlePaste: (view, event) => {
3043
+ handlePaste: (_view, event) => {
3006
3044
  const files = Array.from(event.clipboardData.files);
3007
3045
  if (!files.length) return false;
3008
3046
  handleFiles(files, { type: "selection" });
3009
3047
  return true;
3010
3048
  },
3011
- handleDrop: (view, event, slice, moved) => {
3049
+ handleDrop: (view, event) => {
3012
3050
  const files = Array.from(event.dataTransfer.files);
3013
3051
  if (!files.length) return false;
3014
3052
  let target = view.posAtCoords({
@@ -3037,7 +3075,7 @@ var RteDropHandlerFeatureImpl = class extends RteFeatureImpl {
3037
3075
  this.config = config;
3038
3076
  this.name = "RteDebugFeature";
3039
3077
  }
3040
- getPlugins(rte) {
3078
+ getPlugins() {
3041
3079
  const dragOverResults = /* @__PURE__ */ new WeakMap();
3042
3080
  let lastResult = false;
3043
3081
  const onDragOver = (event) => {
@@ -3075,7 +3113,7 @@ var RteDropHandlerFeatureImpl = class extends RteFeatureImpl {
3075
3113
  viewport.removeEventListener("dragleave", onDragLeave);
3076
3114
  } };
3077
3115
  } })), this.contribution(new Plugin({ props: { handleDOMEvents: {
3078
- dragover: (view, event) => {
3116
+ dragover: (_view, event) => {
3079
3117
  const result = this.config.onViewportDragOver?.(event) ?? false;
3080
3118
  dragOverResults.set(event, result);
3081
3119
  lastResult = result;
@@ -3086,7 +3124,7 @@ var RteDropHandlerFeatureImpl = class extends RteFeatureImpl {
3086
3124
  }
3087
3125
  return false;
3088
3126
  },
3089
- drop: (view, event) => {
3127
+ drop: () => {
3090
3128
  return lastResult;
3091
3129
  }
3092
3130
  } } }), contributionPriority.high)];
@@ -200,7 +200,10 @@ var Select = class extends require_mixins.WithLightDOMFeedback(require_with_cont
200
200
  * @internal
201
201
  */
202
202
  focusinHandler(e) {
203
- if (!this.multiple) return super.focusinHandler(e);
203
+ if (!this.multiple) {
204
+ super.focusinHandler(e);
205
+ return;
206
+ }
204
207
  /* v8 ignore else -- @preserve */
205
208
  if (!this.shouldSkipFocus && e.target === e.currentTarget) {
206
209
  this.uncheckAllOptions();
@@ -290,7 +293,7 @@ var Select = class extends require_mixins.WithLightDOMFeedback(require_with_cont
290
293
  _microsoft_fast_element.Updates.enqueue(() => this.focus());
291
294
  return;
292
295
  }
293
- const didClose = prev === true && next === false;
296
+ const didClose = prev && !next;
294
297
  const selectionChangedWhileOpen = this.indexWhenOpened !== this.selectedIndex;
295
298
  if (didClose && selectionChangedWhileOpen) this.updateValue(true);
296
299
  }
@@ -484,7 +487,7 @@ var Select = class extends require_mixins.WithLightDOMFeedback(require_with_cont
484
487
  }
485
488
  default:
486
489
  /* v8 ignore else -- @preserve */
487
- if (key.length === 1) this.handleTypeAhead(`${key}`);
490
+ if (key.length === 1) this.handleTypeAhead(key);
488
491
  return;
489
492
  }
490
493
  }
@@ -617,7 +620,7 @@ var Select = class extends require_mixins.WithLightDOMFeedback(require_with_cont
617
620
  * @internal
618
621
  */
619
622
  _onClearButtonClick() {
620
- if (this.multiple) this.selectedOptions?.forEach((o) => {
623
+ if (this.multiple) this.selectedOptions.forEach((o) => {
621
624
  /* v8 ignore else -- @preserve */
622
625
  if (!o.disabled) o.selected = false;
623
626
  });
@@ -764,7 +767,10 @@ function renderControl(context) {
764
767
  */
765
768
  function ifNotFromFeedback(handler) {
766
769
  return (x, c) => {
767
- if (!c.event.composedPath().includes(x._feedbackWrapper)) return handler(x, c.event);
770
+ if (!c.event.composedPath().includes(x._feedbackWrapper)) {
771
+ handler(x, c.event);
772
+ return;
773
+ }
768
774
  return true;
769
775
  };
770
776
  }
@@ -786,7 +792,7 @@ var SelectTemplate = (context) => {
786
792
  @focusin="${ifNotFromFeedback((x, e) => x.focusinHandler(e))}"
787
793
  @focusout="${ifNotFromFeedback((x, e) => x.focusoutHandler(e))}"
788
794
  @keydown="${ifNotFromFeedback((x, e) => {
789
- x.open && require_dialog.handleEscapeKeyAndStopPropogation(e);
795
+ if (x.open) require_dialog.handleEscapeKeyAndStopPropogation(e);
790
796
  return x.keydownHandler(e);
791
797
  })}"
792
798
  @mousedown="${ifNotFromFeedback((x, e) => x.mousedownHandler(e))}"