@lion/ui 0.23.0 → 0.25.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 (803) hide show
  1. package/README.md +50 -20
  2. package/components/accordion/src/LionAccordion.js +31 -42
  3. package/components/accordion/test/lion-accordion.test.js +108 -134
  4. package/components/button/src/LionButton.js +9 -12
  5. package/components/button/src/LionButtonReset.js +0 -5
  6. package/components/button/src/LionButtonSubmit.js +7 -12
  7. package/components/button/test/demos.screenshots-test.js +50 -11
  8. package/components/button/test/lion-button.test.js +0 -1
  9. package/components/button/test-suites/LionButton.suite.js +135 -145
  10. package/components/button/test-suites/LionButtonReset.suite.js +54 -72
  11. package/components/button/test-suites/LionButtonSubmit.suite.js +49 -68
  12. package/components/calendar/src/LionCalendar.js +151 -104
  13. package/components/calendar/src/calendarStyle.js +0 -1
  14. package/components/calendar/src/utils/createMonth.js +3 -4
  15. package/components/calendar/src/utils/createMultipleMonth.js +15 -7
  16. package/components/calendar/src/utils/createWeek.js +0 -2
  17. package/components/calendar/src/utils/dataTemplate.js +8 -4
  18. package/components/calendar/src/utils/dayTemplate.js +0 -6
  19. package/components/calendar/src/utils/getDayMonthYear.js +6 -2
  20. package/components/calendar/test/demos.screenshots-test.js +40 -9
  21. package/components/calendar/test/lion-calendar.test.js +171 -282
  22. package/components/calendar/test/utils/createMonth.test.js +61 -22
  23. package/components/calendar/test/utils/createMultipleMonth.test.js +14 -7
  24. package/components/calendar/test/utils/createWeek.test.js +51 -17
  25. package/components/calendar/test/utils/dataTemplate.test.js +3 -4
  26. package/components/calendar/test/utils/dayTemplate.test.js +106 -34
  27. package/components/calendar/test/utils/getFirstDayNextMonth.test.js +0 -1
  28. package/components/calendar/test/utils/getLastDayPreviousMonth.test.js +0 -1
  29. package/components/calendar/test/utils/isSameDate.test.js +0 -1
  30. package/components/calendar/test/utils/snapshots/monthTemplate_en-GB_Sunday_2018-12.js +1 -2
  31. package/components/calendar/test-helpers/CalendarObject.js +31 -62
  32. package/components/calendar/test-helpers/DayObject.js +7 -15
  33. package/components/calendar/test-suites/LionCalendar.suite.js +7 -9
  34. package/components/checkbox-group/src/LionCheckboxIndeterminate.js +17 -30
  35. package/components/checkbox-group/test/lion-checkbox-group-integrations.test.js +0 -1
  36. package/components/checkbox-group/test/lion-checkbox-group.test.js +21 -16
  37. package/components/checkbox-group/test/lion-checkbox-indeterminate-integrations.test.js +3 -3
  38. package/components/checkbox-group/test/lion-checkbox-integrations.test.js +3 -2
  39. package/components/checkbox-group/test/lion-checkbox.test.js +30 -16
  40. package/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.js +147 -191
  41. package/components/collapsible/src/LionCollapsible.js +10 -15
  42. package/components/collapsible/test/lion-collapsible.test.js +4 -18
  43. package/components/combobox/src/LionCombobox.js +35 -53
  44. package/components/combobox/src/utils/makeMatchingTextBold.js +2 -5
  45. package/components/combobox/src/validators.js +0 -1
  46. package/components/combobox/test/lion-combobox-integrations.test.js +6 -6
  47. package/components/combobox/test/lion-combobox.test.js +576 -869
  48. package/components/combobox/test/validators.test.js +6 -13
  49. package/components/combobox/test-helpers/combobox-helpers.js +24 -11
  50. package/components/core/src/DisabledMixin.js +61 -66
  51. package/components/core/src/DisabledWithTabIndexMixin.js +76 -83
  52. package/components/core/src/EventTargetShim.js +1 -4
  53. package/components/core/src/ScopedElementsMixin.js +4 -15
  54. package/components/core/src/ScopedStylesController.js +1 -5
  55. package/components/core/src/SlotMixin.js +236 -239
  56. package/components/core/src/browserDetection.js +5 -12
  57. package/components/core/test/DisabledMixin.test.js +24 -39
  58. package/components/core/test/DisabledWithTabIndexMixin.test.js +21 -34
  59. package/components/core/test/EventTargetShim.test.js +0 -8
  60. package/components/core/test/ScopedElementsMixin.test.js +22 -38
  61. package/components/core/test/ScopedStylesController.test.js +11 -20
  62. package/components/core/test/SlotMixin.test.js +102 -154
  63. package/components/core/test-helpers/getCachedFixture.js +5 -11
  64. package/components/core/types/SlotMixinTypes.ts +8 -3
  65. package/components/dialog/src/LionDialog.js +4 -3
  66. package/components/dialog/test/lion-dialog.integration.test.js +10 -20
  67. package/components/dialog/test/lion-dialog.test.js +48 -62
  68. package/components/dialog/test-helpers/test-router.js +4 -6
  69. package/components/drawer/src/LionDrawer.js +18 -34
  70. package/components/drawer/src/drawerStyle.js +0 -1
  71. package/components/drawer/test/lion-drawer.test.js +1 -17
  72. package/components/fieldset/test/lion-fieldset.test.js +6 -4
  73. package/components/form/src/LionForm.js +18 -13
  74. package/components/form/test/lion-form.test.js +22 -52
  75. package/components/form-core/src/FocusMixin.js +172 -174
  76. package/components/form-core/src/FormControlMixin.js +811 -813
  77. package/components/form-core/src/FormatMixin.js +537 -537
  78. package/components/form-core/src/InteractionStateMixin.js +196 -183
  79. package/components/form-core/src/LionField.js +9 -5
  80. package/components/form-core/src/NativeTextFieldMixin.js +114 -116
  81. package/components/form-core/src/choice-group/ChoiceGroupMixin.js +322 -364
  82. package/components/form-core/src/choice-group/ChoiceInputMixin.js +306 -296
  83. package/components/form-core/src/choice-group/CustomChoiceGroupMixin.js +114 -139
  84. package/components/form-core/src/form-group/FormElementsHaveNoError.js +0 -2
  85. package/components/form-core/src/form-group/FormGroupMixin.js +551 -557
  86. package/components/form-core/src/registration/FormRegisteringMixin.js +72 -71
  87. package/components/form-core/src/registration/FormRegistrarMixin.js +201 -217
  88. package/components/form-core/src/registration/FormRegistrarPortalMixin.js +31 -37
  89. package/components/form-core/src/utils/SyncUpdatableMixin.js +106 -117
  90. package/components/form-core/src/utils/getAriaElementsInRightDomOrder.js +1 -2
  91. package/components/form-core/src/validate/LionValidationFeedback.js +12 -8
  92. package/components/form-core/src/validate/Unparseable.js +4 -2
  93. package/components/form-core/src/validate/ValidateMixin.js +829 -883
  94. package/components/form-core/src/validate/Validator.js +3 -6
  95. package/components/form-core/src/validate/resultValidators/DefaultSuccess.js +1 -2
  96. package/components/form-core/src/validate/validators/DateValidators.js +0 -5
  97. package/components/form-core/src/validate/validators/NumberValidators.js +1 -5
  98. package/components/form-core/src/validate/validators/Required.js +1 -1
  99. package/components/form-core/src/validate/validators/StringValidators.js +1 -8
  100. package/components/form-core/test/FocusMixin.test.js +96 -82
  101. package/components/form-core/test/FormControlMixin.test.js +120 -176
  102. package/components/form-core/test/FormRegistrationMixins.test.js +0 -2
  103. package/components/form-core/test/FormatMixin.test.js +0 -1
  104. package/components/form-core/test/InteractionStateMixin.test.js +0 -1
  105. package/components/form-core/test/NativeTextFieldMixin.test.js +0 -1
  106. package/components/form-core/test/choice-group/ChoiceGroupMixin.test.js +0 -1
  107. package/components/form-core/test/choice-group/ChoiceInputMixin.test.js +0 -1
  108. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.js +6 -8
  109. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.test.js +0 -3
  110. package/components/form-core/test/form-group/FormGroupMixin.test.js +0 -1
  111. package/components/form-core/test/lion-field.test.js +88 -98
  112. package/components/form-core/test/utils/SyncUpdatableMixin.test.js +51 -65
  113. package/components/form-core/test/utils/getAriaElementsInRightDomOrder.test.js +3 -3
  114. package/components/form-core/test/validate/DateValidators.test.js +5 -27
  115. package/components/form-core/test/validate/NumberValidators.test.js +4 -16
  116. package/components/form-core/test/validate/Required.test.js +8 -21
  117. package/components/form-core/test/validate/ResultValidator.test.js +1 -2
  118. package/components/form-core/test/validate/StringValidators.test.js +4 -35
  119. package/components/form-core/test/validate/ValidateMixin.test.js +0 -1
  120. package/components/form-core/test/validate/ValidateMixinFeedbackPart.test.js +0 -1
  121. package/components/form-core/test/validate/Validator.test.js +39 -34
  122. package/components/form-core/test/validate/lion-validation-feedback.test.js +81 -43
  123. package/components/form-core/test-helpers/ExampleValidators.js +0 -5
  124. package/components/form-core/test-helpers/getFormControlMembers.js +2 -2
  125. package/components/form-core/test-helpers/mimicUserInput.js +5 -1
  126. package/components/form-core/test-suites/FormRegistrationMixins.suite.js +65 -122
  127. package/components/form-core/test-suites/FormatMixin.suite.js +202 -227
  128. package/components/form-core/test-suites/InteractionStateMixin.suite.js +47 -60
  129. package/components/form-core/test-suites/NativeTextFieldMixin.suite.js +8 -11
  130. package/components/form-core/test-suites/ValidateMixin.suite.js +280 -359
  131. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +112 -163
  132. package/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.js +185 -218
  133. package/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.js +116 -109
  134. package/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.js +36 -70
  135. package/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.js +57 -65
  136. package/components/form-core/test-suites/form-group/FormGroupMixin.suite.js +664 -523
  137. package/components/form-core/translations/bg-BG.js +0 -1
  138. package/components/form-core/translations/cs-CZ.js +0 -1
  139. package/components/form-core/translations/de-DE.js +0 -1
  140. package/components/form-core/translations/en-AU.js +0 -1
  141. package/components/form-core/translations/en-GB.js +0 -1
  142. package/components/form-core/translations/en-US.js +0 -1
  143. package/components/form-core/translations/es-ES.js +0 -1
  144. package/components/form-core/translations/fr-BE.js +0 -1
  145. package/components/form-core/translations/fr-FR.js +0 -1
  146. package/components/form-core/translations/hu-HU.js +0 -1
  147. package/components/form-core/translations/it-IT.js +0 -1
  148. package/components/form-core/translations/nl-BE.js +0 -1
  149. package/components/form-core/translations/nl-NL.js +0 -1
  150. package/components/form-core/translations/pl-PL.js +0 -1
  151. package/components/form-core/translations/ro-RO.js +0 -1
  152. package/components/form-core/translations/ru-RU.js +0 -1
  153. package/components/form-core/translations/sk-SK.js +0 -1
  154. package/components/form-core/translations/tr-TR.js +0 -1
  155. package/components/form-core/translations/uk-UA.js +0 -1
  156. package/components/form-integrations/test/dialog-integrations.test.js +1 -4
  157. package/components/form-integrations/test/form-group-methods.test.js +28 -31
  158. package/components/form-integrations/test/form-integrations.test.js +27 -28
  159. package/components/form-integrations/test/form-validation-integrations.test.js +21 -29
  160. package/components/form-integrations/test/helpers/umbrella-form.js +3 -5
  161. package/components/form-integrations/test/model-value-consistency.test.js +75 -77
  162. package/components/form-integrations/test/model-value-event.test.js +10 -20
  163. package/components/helpers/src/SbActionLogger.js +13 -17
  164. package/components/helpers/src/SbLocaleSwitcher.js +5 -5
  165. package/components/helpers/src/sortEachDepth.js +0 -2
  166. package/components/helpers/test/renderLitAsNode.test.js +0 -4
  167. package/components/helpers/test/sb-action-logger.test.js +24 -55
  168. package/components/icon/src/IconManager.js +0 -2
  169. package/components/icon/src/LionIcon.js +2 -7
  170. package/components/icon/src/icons.js +0 -2
  171. package/components/icon/test/IconManager.test.js +0 -15
  172. package/components/icon/test/hammer.svg.js +3 -4
  173. package/components/icon/test/heart.svg.js +3 -4
  174. package/components/icon/test/lion-icon.test.js +14 -43
  175. package/components/input/src/LionInput.js +2 -8
  176. package/components/input/test/input-integrations.test.js +0 -5
  177. package/components/input/test/lion-input-integrations.test.js +0 -4
  178. package/components/input/test/lion-input.test.js +28 -58
  179. package/components/input/test-helpers/getInputMembers.js +2 -2
  180. package/components/input-amount/src/LionInputAmount.js +20 -20
  181. package/components/input-amount/src/formatters.js +0 -3
  182. package/components/input-amount/src/parsers.js +0 -3
  183. package/components/input-amount/test/formatters.test.js +24 -16
  184. package/components/input-amount/test/lion-input-amount-integrations.test.js +0 -4
  185. package/components/input-amount/test/lion-input-amount.test.js +123 -147
  186. package/components/input-amount/test/parsers.test.js +33 -17
  187. package/components/input-amount/test/preprocessors.test.js +0 -3
  188. package/components/input-amount-dropdown/src/LionInputAmountDropdown.js +49 -59
  189. package/components/input-amount-dropdown/src/currencyUtil.js +8 -7
  190. package/components/input-amount-dropdown/src/parsers.js +0 -1
  191. package/components/input-amount-dropdown/src/validators.js +0 -1
  192. package/components/input-amount-dropdown/test/LionInputAmountDropdown.test.js +34 -36
  193. package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +18 -13
  194. package/components/input-amount-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
  195. package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +132 -107
  196. package/components/input-date/src/LionInputDate.js +4 -3
  197. package/components/input-date/test/lion-input-date-integrations.test.js +0 -3
  198. package/components/input-date/test/lion-input-date.test.js +19 -32
  199. package/components/input-datepicker/src/LionInputDatepicker.js +17 -29
  200. package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -2
  201. package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +0 -3
  202. package/components/input-datepicker/test/lion-input-datepicker.test.js +88 -153
  203. package/components/input-datepicker/test-helpers/DatepickerInputObject.js +9 -12
  204. package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +6 -4
  205. package/components/input-datepicker/translations/bg-BG.js +0 -1
  206. package/components/input-datepicker/translations/cs-CZ.js +0 -1
  207. package/components/input-datepicker/translations/de-DE.js +0 -1
  208. package/components/input-datepicker/translations/en-AU.js +0 -1
  209. package/components/input-datepicker/translations/en-GB.js +0 -1
  210. package/components/input-datepicker/translations/en-US.js +0 -1
  211. package/components/input-datepicker/translations/es-ES.js +0 -1
  212. package/components/input-datepicker/translations/fr-BE.js +0 -1
  213. package/components/input-datepicker/translations/fr-FR.js +0 -1
  214. package/components/input-datepicker/translations/hu-HU.js +0 -1
  215. package/components/input-datepicker/translations/it-IT.js +0 -1
  216. package/components/input-datepicker/translations/nl-BE.js +0 -1
  217. package/components/input-datepicker/translations/nl-NL.js +0 -1
  218. package/components/input-datepicker/translations/pl-PL.js +0 -1
  219. package/components/input-datepicker/translations/ro-RO.js +0 -1
  220. package/components/input-datepicker/translations/ru-RU.js +0 -1
  221. package/components/input-datepicker/translations/sk-SK.js +0 -1
  222. package/components/input-datepicker/translations/tr-TR.js +0 -1
  223. package/components/input-datepicker/translations/uk-UA.js +0 -1
  224. package/components/input-email/test/lion-input-email-integrations.test.js +0 -2
  225. package/components/input-email/test/lion-input-email.test.js +1 -7
  226. package/components/input-file/src/FileHandle.js +0 -3
  227. package/components/input-file/src/LionInputFile.js +85 -83
  228. package/components/input-file/src/LionSelectedFileList.js +12 -12
  229. package/components/input-file/src/validators.js +10 -9
  230. package/components/input-file/test/FileValidators.test.js +170 -80
  231. package/components/input-file/test/lion-input-file.test.js +160 -244
  232. package/components/input-file/test/lion-selected-file-list.test.js +13 -22
  233. package/components/input-file/translations/bg-BG.js +0 -1
  234. package/components/input-file/translations/cs-CZ.js +0 -1
  235. package/components/input-file/translations/de-DE.js +0 -1
  236. package/components/input-file/translations/en-AU.js +0 -1
  237. package/components/input-file/translations/en-GB.js +0 -1
  238. package/components/input-file/translations/en-PH.js +0 -1
  239. package/components/input-file/translations/en-US.js +0 -1
  240. package/components/input-file/translations/en.js +2 -1
  241. package/components/input-file/translations/es-ES.js +0 -1
  242. package/components/input-file/translations/fr-BE.js +0 -1
  243. package/components/input-file/translations/fr-FR.js +0 -1
  244. package/components/input-file/translations/hu-HU.js +0 -1
  245. package/components/input-file/translations/id-ID.js +0 -1
  246. package/components/input-file/translations/id.js +2 -1
  247. package/components/input-file/translations/it-IT.js +0 -1
  248. package/components/input-file/translations/nl-BE.js +0 -1
  249. package/components/input-file/translations/nl-NL.js +0 -1
  250. package/components/input-file/translations/pl-PL.js +0 -1
  251. package/components/input-file/translations/ro-RO.js +0 -1
  252. package/components/input-file/translations/ru-RU.js +0 -1
  253. package/components/input-file/translations/sk-SK.js +0 -1
  254. package/components/input-file/translations/uk-UA.js +0 -1
  255. package/components/input-file/translations/zh-CN.js +0 -1
  256. package/components/input-iban/src/validators.js +6 -11
  257. package/components/input-iban/test/formatters.test.js +0 -3
  258. package/components/input-iban/test/lion-input-iban-integrations.test.js +0 -2
  259. package/components/input-iban/test/lion-input-iban.test.js +1 -9
  260. package/components/input-iban/test/parsers.test.js +0 -2
  261. package/components/input-iban/test/validators.test.js +0 -12
  262. package/components/input-iban/translations/bg-BG.js +0 -1
  263. package/components/input-iban/translations/cs-CZ.js +0 -1
  264. package/components/input-iban/translations/de-DE.js +0 -1
  265. package/components/input-iban/translations/en-AU.js +0 -1
  266. package/components/input-iban/translations/en-GB.js +0 -1
  267. package/components/input-iban/translations/en-US.js +0 -1
  268. package/components/input-iban/translations/es-ES.js +0 -1
  269. package/components/input-iban/translations/fr-BE.js +0 -1
  270. package/components/input-iban/translations/fr-FR.js +0 -1
  271. package/components/input-iban/translations/hu-HU.js +0 -1
  272. package/components/input-iban/translations/it-IT.js +0 -1
  273. package/components/input-iban/translations/nl-BE.js +0 -1
  274. package/components/input-iban/translations/nl-NL.js +0 -1
  275. package/components/input-iban/translations/pl-PL.js +0 -1
  276. package/components/input-iban/translations/ro-RO.js +0 -1
  277. package/components/input-iban/translations/ru-RU.js +0 -1
  278. package/components/input-iban/translations/sk-SK.js +0 -1
  279. package/components/input-iban/translations/uk-UA.js +0 -1
  280. package/components/input-range/src/LionInputRange.js +18 -19
  281. package/components/input-range/test/lion-input-range.test.js +23 -48
  282. package/components/input-range/translations/bg-BG.js +0 -1
  283. package/components/input-range/translations/cs-CZ.js +0 -1
  284. package/components/input-range/translations/de-DE.js +0 -1
  285. package/components/input-range/translations/en-AU.js +0 -1
  286. package/components/input-range/translations/en-GB.js +0 -1
  287. package/components/input-range/translations/en-PH.js +0 -1
  288. package/components/input-range/translations/en-US.js +0 -1
  289. package/components/input-range/translations/es-ES.js +0 -1
  290. package/components/input-range/translations/fr-BE.js +0 -1
  291. package/components/input-range/translations/fr-FR.js +0 -1
  292. package/components/input-range/translations/hu-HU.js +0 -1
  293. package/components/input-range/translations/it-IT.js +0 -1
  294. package/components/input-range/translations/nl-BE.js +0 -1
  295. package/components/input-range/translations/nl-NL.js +0 -1
  296. package/components/input-range/translations/pl-PL.js +0 -1
  297. package/components/input-range/translations/ro-RO.js +0 -1
  298. package/components/input-range/translations/ru-RU.js +0 -1
  299. package/components/input-range/translations/sk-SK.js +0 -1
  300. package/components/input-range/translations/uk-UA.js +0 -1
  301. package/components/input-range/translations/zh-CN.js +0 -1
  302. package/components/input-stepper/src/LionInputStepper.js +19 -38
  303. package/components/input-stepper/test/lion-input-stepper-integrations.test.js +0 -1
  304. package/components/input-stepper/test/lion-input-stepper.test.js +0 -1
  305. package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +0 -2
  306. package/components/input-stepper/test-suites/lion-input-stepper.suite.js +56 -105
  307. package/components/input-stepper/translations/bg-BG.js +0 -1
  308. package/components/input-stepper/translations/cs-CZ.js +0 -1
  309. package/components/input-stepper/translations/de-DE.js +0 -1
  310. package/components/input-stepper/translations/en-AU.js +0 -1
  311. package/components/input-stepper/translations/en-GB.js +0 -1
  312. package/components/input-stepper/translations/en-US.js +0 -1
  313. package/components/input-stepper/translations/es-ES.js +0 -1
  314. package/components/input-stepper/translations/fr-BE.js +0 -1
  315. package/components/input-stepper/translations/fr-FR.js +0 -1
  316. package/components/input-stepper/translations/hu-HU.js +0 -1
  317. package/components/input-stepper/translations/it-IT.js +0 -1
  318. package/components/input-stepper/translations/nl-BE.js +0 -1
  319. package/components/input-stepper/translations/nl-NL.js +0 -1
  320. package/components/input-stepper/translations/pl-PL.js +0 -1
  321. package/components/input-stepper/translations/ro-RO.js +0 -1
  322. package/components/input-stepper/translations/ru-RU.js +0 -1
  323. package/components/input-stepper/translations/sk-SK.js +0 -1
  324. package/components/input-stepper/translations/uk-UA.js +0 -1
  325. package/components/input-tel/src/LionInputTel.js +53 -37
  326. package/components/input-tel/src/PhoneUtilManager.js +6 -4
  327. package/components/input-tel/src/formatters.js +12 -10
  328. package/components/input-tel/src/parsers.js +3 -3
  329. package/components/input-tel/src/preprocessors.js +15 -7
  330. package/components/input-tel/src/validators.js +4 -6
  331. package/components/input-tel/test/LionInputTel.test.js +4 -2
  332. package/components/input-tel/test/formatters.test.js +22 -10
  333. package/components/input-tel/test/parsers.test.js +127 -11
  334. package/components/input-tel/test/preprocessors.test.js +24 -13
  335. package/components/input-tel/test/validators.test.js +7 -14
  336. package/components/input-tel/test-helpers/mockPhoneUtilManager.js +20 -8
  337. package/components/input-tel/test-suites/LionInputTel.suite.js +33 -73
  338. package/components/input-tel/translations/bg-BG.js +0 -1
  339. package/components/input-tel/translations/cs-CZ.js +0 -1
  340. package/components/input-tel/translations/de-DE.js +0 -1
  341. package/components/input-tel/translations/en-AU.js +0 -1
  342. package/components/input-tel/translations/en-GB.js +0 -1
  343. package/components/input-tel/translations/en-US.js +0 -1
  344. package/components/input-tel/translations/es-ES.js +0 -1
  345. package/components/input-tel/translations/fr-BE.js +0 -1
  346. package/components/input-tel/translations/fr-FR.js +0 -1
  347. package/components/input-tel/translations/hu-HU.js +0 -1
  348. package/components/input-tel/translations/it-IT.js +0 -1
  349. package/components/input-tel/translations/nl-BE.js +0 -1
  350. package/components/input-tel/translations/nl-NL.js +0 -1
  351. package/components/input-tel/translations/pl-PL.js +0 -1
  352. package/components/input-tel/translations/ro-RO.js +0 -1
  353. package/components/input-tel/translations/ru-RU.js +0 -1
  354. package/components/input-tel/translations/sk-SK.js +0 -1
  355. package/components/input-tel/translations/uk-UA.js +0 -1
  356. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +10 -28
  357. package/components/input-tel-dropdown/src/regionCodeToLocale.js +3 -1
  358. package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +31 -38
  359. package/components/input-tel-dropdown/test/regionCodeToLocale.test.js +0 -1
  360. package/components/input-tel-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
  361. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +16 -11
  362. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +54 -79
  363. package/components/listbox/src/LionListbox.js +5 -2
  364. package/components/listbox/src/LionOption.js +8 -7
  365. package/components/listbox/src/LionOptions.js +0 -3
  366. package/components/listbox/src/ListboxMixin.js +786 -820
  367. package/components/listbox/test/lion-listbox.test.js +0 -1
  368. package/components/listbox/test/lion-option.test.js +53 -64
  369. package/components/listbox/test/lion-options.test.js +3 -4
  370. package/components/listbox/test-helpers/getListboxMembers.js +6 -3
  371. package/components/listbox/test-suites/ListboxMixin.suite.js +101 -261
  372. package/components/localize/src/LocalizeManager.js +40 -40
  373. package/components/localize/src/LocalizeMixin.js +130 -157
  374. package/components/localize/src/date/formatDate.js +1 -5
  375. package/components/localize/src/date/getDateFormatBasedOnLocale.js +5 -3
  376. package/components/localize/src/date/getMonthNames.js +3 -5
  377. package/components/localize/src/date/getWeekdayNames.js +1 -5
  378. package/components/localize/src/date/parseDate.js +5 -20
  379. package/components/localize/src/date/utils/normalizeIntlDate.js +0 -7
  380. package/components/localize/src/getLocalizeManager.js +0 -3
  381. package/components/localize/src/number/formatNumber.js +3 -7
  382. package/components/localize/src/number/formatNumberToParts.js +52 -18
  383. package/components/localize/src/number/getCurrencyName.js +5 -5
  384. package/components/localize/src/number/getFractionDigits.js +4 -4
  385. package/components/localize/src/number/getSeparatorsFromNumber.js +1 -3
  386. package/components/localize/src/number/parseNumber.js +0 -3
  387. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceAddGroupSeparators.js +0 -1
  388. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceSpaceBetweenCurrencyCodeAndNumber.js +4 -1
  389. package/components/localize/test/LocalizeManager.test.js +385 -278
  390. package/components/localize/test/LocalizeMixin.test.js +28 -112
  391. package/components/localize/test/date/formatDate.test.js +18 -48
  392. package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +0 -3
  393. package/components/localize/test/date/getMonthNames.test.js +27 -12
  394. package/components/localize/test/date/getWeekdayNames.test.js +93 -49
  395. package/components/localize/test/date/normalizeDateTime.test.js +0 -2
  396. package/components/localize/test/date/parseDate.test.js +12 -16
  397. package/components/localize/test/getLocalizeManager.test.js +0 -3
  398. package/components/localize/test/isLocalizeESModule.test.js +32 -13
  399. package/components/localize/test/localize.test.js +0 -4
  400. package/components/localize/test/number/formatNumber.test.js +215 -106
  401. package/components/localize/test/number/formatNumberToParts.test.js +31 -38
  402. package/components/localize/test/number/getCurrencyName.test.js +20 -6
  403. package/components/localize/test/number/getDecimalSeparator.test.js +5 -4
  404. package/components/localize/test/number/getFractionDigits.test.js +0 -2
  405. package/components/localize/test/number/getGroupSeparator.test.js +0 -2
  406. package/components/localize/test/number/getSeparatorsFromNumber.test.js +5 -3
  407. package/components/localize/test/number/parseNumber.test.js +123 -56
  408. package/components/localize/test/side-effect-free-entrypoint.test.js +0 -6
  409. package/components/localize/test-helpers/fake-imports.js +11 -6
  410. package/components/localize/test-helpers/localizeTearDown.js +0 -1
  411. package/components/menu/src/InteractiveListMixin.js +637 -638
  412. package/components/menu/src/LionMenu.js +46 -59
  413. package/components/menu/src/MoreButtonMenuMixin.js +215 -238
  414. package/components/menu/src/MultiLevelListMixin.js +240 -246
  415. package/components/menu/src/utils/isInView.js +0 -1
  416. package/components/menu/src/utils/listItemInteractions.js +4 -4
  417. package/components/menu/test/InteractiveListMixin.test.js +0 -1
  418. package/components/menu/test/MoreButtonMenuMixin.test.js +3 -2
  419. package/components/menu/test/MultiLevelListMixin.test.js +0 -1
  420. package/components/menu/test/lion-menu-interactions.test.js +0 -1
  421. package/components/menu/test/lion-menu.test.js +6 -2
  422. package/components/menu/test-helpers/mimicKeyPress.js +12 -2
  423. package/components/menu/test-suites/InteractiveListMixin.suite.js +4 -43
  424. package/components/menu/test-suites/LionMenu.suite.js +1 -8
  425. package/components/menu/test-suites/LionMenuInteractions.suite.js +22 -44
  426. package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +34 -41
  427. package/components/menu/test-suites/MultiLevelListMixin.suite.js +5 -23
  428. package/components/overlays/src/ArrowMixin.js +111 -127
  429. package/components/overlays/src/OverlayController.js +172 -152
  430. package/components/overlays/src/OverlayMixin.js +64 -69
  431. package/components/overlays/src/OverlaysManager.js +30 -32
  432. package/components/overlays/src/configurations/visibility-trigger-partials/withClickInteraction.js +0 -1
  433. package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +11 -11
  434. package/components/overlays/src/configurations/withBottomSheetConfig.js +12 -13
  435. package/components/overlays/src/configurations/withDropdownConfig.js +4 -2
  436. package/components/overlays/src/configurations/withModalDialogConfig.js +12 -13
  437. package/components/overlays/src/configurations/withPopoverConfig.js +27 -25
  438. package/components/overlays/src/configurations/withTooltipConfig.js +15 -13
  439. package/components/overlays/src/overlayDocumentStyle.js +1 -1
  440. package/components/overlays/src/overlayShadowDomStyle.js +0 -1
  441. package/components/overlays/src/singleton.js +0 -2
  442. package/components/overlays/src/utils/adopt-styles.js +18 -18
  443. package/components/overlays/src/utils/deep-contains.js +7 -6
  444. package/components/overlays/src/utils/get-focusable-elements.js +7 -10
  445. package/components/overlays/src/utils/inert-siblings.js +2 -4
  446. package/components/overlays/src/utils/is-equal-config.js +2 -3
  447. package/components/overlays/src/utils/is-visible.js +0 -1
  448. package/components/overlays/src/utils/simulate-tab.js +1 -4
  449. package/components/overlays/src/utils/sort-by-tabindex.js +2 -4
  450. package/components/overlays/test/ArrowMixin.test.js +18 -30
  451. package/components/overlays/test/OverlayController.test.js +406 -555
  452. package/components/overlays/test/OverlayMixin.test.js +0 -2
  453. package/components/overlays/test/OverlaysManager.test.js +30 -35
  454. package/components/overlays/test/global-positioning.test.js +6 -10
  455. package/components/overlays/test/invoker-compatibility.test.js +37 -0
  456. package/components/overlays/test/local-positioning.test.js +101 -103
  457. package/components/overlays/test/utils-tests/active-element.test.js +12 -27
  458. package/components/overlays/test/utils-tests/adopt-styles.test.js +25 -56
  459. package/components/overlays/test/utils-tests/deep-contains.test.js +73 -74
  460. package/components/overlays/test/utils-tests/get-focusable-elements.test.js +6 -23
  461. package/components/overlays/test/utils-tests/is-equal-config.test.js +32 -13
  462. package/components/overlays/test/utils-tests/visibility.test.js +44 -79
  463. package/components/overlays/test-helpers/createShadowHost.js +5 -3
  464. package/components/overlays/test-helpers/normalizeTransformStyle.js +2 -4
  465. package/components/overlays/test-suites/OverlayMixin.suite.js +152 -181
  466. package/components/overlays/test-suites/WithHoverInteraction.suite.js +96 -79
  467. package/components/overlays/translations/bg-BG.js +0 -1
  468. package/components/overlays/translations/cs-CZ.js +0 -1
  469. package/components/overlays/translations/de-DE.js +0 -1
  470. package/components/overlays/translations/en-AU.js +0 -1
  471. package/components/overlays/translations/en-GB.js +0 -1
  472. package/components/overlays/translations/en-US.js +0 -1
  473. package/components/overlays/translations/es-ES.js +0 -1
  474. package/components/overlays/translations/fr-BE.js +0 -1
  475. package/components/overlays/translations/fr-FR.js +0 -1
  476. package/components/overlays/translations/hu-HU.js +0 -1
  477. package/components/overlays/translations/it-IT.js +0 -1
  478. package/components/overlays/translations/nl-BE.js +0 -1
  479. package/components/overlays/translations/nl-NL.js +0 -1
  480. package/components/overlays/translations/pl-PL.js +0 -1
  481. package/components/overlays/translations/ro-RO.js +0 -1
  482. package/components/overlays/translations/ru-RU.js +0 -1
  483. package/components/overlays/translations/sk-SK.js +0 -1
  484. package/components/overlays/translations/tr-TR.js +0 -1
  485. package/components/overlays/translations/uk-UA.js +0 -1
  486. package/components/pagination/src/LionPagination.js +9 -12
  487. package/components/pagination/test/lion-pagination.test.js +18 -50
  488. package/components/progress-indicator/src/LionProgressIndicator.js +10 -12
  489. package/components/progress-indicator/test/lion-progress-indicator.test.js +1 -22
  490. package/components/radio-group/src/LionRadioGroup.js +1 -2
  491. package/components/radio-group/test/lion-radio-group-integrations.test.js +0 -1
  492. package/components/radio-group/test/lion-radio-group.test.js +27 -27
  493. package/components/radio-group/test/lion-radio-integrations.test.js +3 -2
  494. package/components/radio-group/test/lion-radio.test.js +30 -16
  495. package/components/select/src/LionSelect.js +12 -13
  496. package/components/select/test/lion-select.test.js +7 -12
  497. package/components/select-rich/src/LionSelectInvoker.js +18 -11
  498. package/components/select-rich/src/LionSelectRich.js +22 -44
  499. package/components/select-rich/test/demos.screenshots-test.js +40 -9
  500. package/components/select-rich/test/lion-select-invoker.test.js +26 -43
  501. package/components/select-rich/test/lion-select-listbox-suite-integration.test.js +3 -3
  502. package/components/select-rich/test/lion-select-rich-dialog-integration.test.js +4 -9
  503. package/components/select-rich/test/lion-select-rich-interaction.test.js +116 -116
  504. package/components/select-rich/test/lion-select-rich-upgrade.test.js +3 -7
  505. package/components/select-rich/test/lion-select-rich.test.js +153 -195
  506. package/components/select-rich/test-helpers/getSelectRichMembers.js +4 -1
  507. package/components/steps/src/LionStep.js +21 -12
  508. package/components/steps/src/LionSteps.js +25 -25
  509. package/components/steps/test/lion-step.test.js +18 -25
  510. package/components/steps/test/lion-steps.test.js +45 -78
  511. package/components/switch/src/LionSwitch.js +2 -7
  512. package/components/switch/src/LionSwitchButton.js +5 -6
  513. package/components/switch/test/lion-switch-button.test.js +16 -28
  514. package/components/switch/test/lion-switch.test.js +17 -31
  515. package/components/tabs/src/LionTabs.js +25 -28
  516. package/components/tabs/test/lion-tabs.test.js +156 -154
  517. package/components/textarea/src/LionTextarea.js +4 -23
  518. package/components/textarea/test/lion-textarea-integrations.test.js +0 -5
  519. package/components/textarea/test/lion-textarea.test.js +2 -28
  520. package/components/tooltip/src/LionTooltip.js +6 -6
  521. package/components/tooltip/test/lion-tooltip.test.js +75 -102
  522. package/components/validate-messages/src/getLocalizedMessage.js +8 -7
  523. package/components/validate-messages/src/loadDefaultFeedbackMessages.js +3 -1
  524. package/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js +9 -5
  525. package/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js +5 -2
  526. package/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js +99 -35
  527. package/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js +4 -3
  528. package/components/validate-messages/test/loadDefaultFeedbackMessages.test.js +5 -3
  529. package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.test.js +80 -45
  530. package/components/validate-messages/translations/bg-BG.js +0 -1
  531. package/components/validate-messages/translations/cs-CZ.js +0 -1
  532. package/components/validate-messages/translations/de-DE.js +0 -1
  533. package/components/validate-messages/translations/en-AU.js +0 -1
  534. package/components/validate-messages/translations/en-GB.js +0 -1
  535. package/components/validate-messages/translations/en-PH.js +0 -1
  536. package/components/validate-messages/translations/en-US.js +0 -1
  537. package/components/validate-messages/translations/es-ES.js +0 -1
  538. package/components/validate-messages/translations/fr-BE.js +0 -1
  539. package/components/validate-messages/translations/fr-FR.js +0 -1
  540. package/components/validate-messages/translations/hu-HU.js +0 -1
  541. package/components/validate-messages/translations/it-IT.js +0 -1
  542. package/components/validate-messages/translations/nl-BE.js +0 -1
  543. package/components/validate-messages/translations/nl-NL.js +0 -1
  544. package/components/validate-messages/translations/pl-PL.js +0 -1
  545. package/components/validate-messages/translations/ro-RO.js +0 -1
  546. package/components/validate-messages/translations/ru-RU.js +0 -1
  547. package/components/validate-messages/translations/sk-SK.js +0 -1
  548. package/components/validate-messages/translations/tr-TR.js +0 -1
  549. package/components/validate-messages/translations/uk-UA.js +0 -1
  550. package/custom-elements.json +229 -85
  551. package/dist-types/components/core/src/SlotMixin.d.ts +6 -1
  552. package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
  553. package/dist-types/components/core/types/SlotMixinTypes.d.ts +5 -1
  554. package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
  555. package/dist-types/components/form-core/src/LionField.d.ts +3 -1
  556. package/dist-types/components/form-core/src/LionField.d.ts.map +1 -1
  557. package/dist-types/components/input-tel/src/LionInputTel.d.ts +6 -6
  558. package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
  559. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts +2 -2
  560. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts.map +1 -1
  561. package/dist-types/components/input-tel/src/formatters.d.ts +2 -2
  562. package/dist-types/components/input-tel/src/formatters.d.ts.map +1 -1
  563. package/dist-types/components/input-tel/src/preprocessors.d.ts +2 -2
  564. package/dist-types/components/input-tel/src/preprocessors.d.ts.map +1 -1
  565. package/dist-types/components/input-tel/test/validators.test.d.ts +1 -1
  566. package/dist-types/components/input-tel/test/validators.test.d.ts.map +1 -1
  567. package/dist-types/components/input-tel/test-helpers/mockPhoneUtilManager.d.ts +5 -0
  568. package/dist-types/components/input-tel/test-helpers/mockPhoneUtilManager.d.ts.map +1 -1
  569. package/dist-types/components/listbox/src/LionListbox.d.ts +2 -2
  570. package/dist-types/components/listbox/src/LionListbox.d.ts.map +1 -1
  571. package/dist-types/components/listbox/src/LionOption.d.ts +5 -2
  572. package/dist-types/components/listbox/src/LionOption.d.ts.map +1 -1
  573. package/dist-types/components/overlays/src/OverlayController.d.ts +3 -1
  574. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  575. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  576. package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
  577. package/dist-types/components/overlays/src/overlayDocumentStyle.d.ts.map +1 -1
  578. package/dist-types/components/overlays/test/invoker-compatibility.test.d.ts +3 -0
  579. package/dist-types/components/overlays/test/invoker-compatibility.test.d.ts.map +1 -0
  580. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts +3 -1
  581. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts.map +1 -1
  582. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +6 -5
  583. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  584. package/dist-types/tsconfig.tsbuildinfo +1 -1
  585. package/docs/components/accordion/overview.md +2 -2
  586. package/docs/components/accordion/reference.md +2 -2
  587. package/docs/components/accordion/use-cases.md +2 -2
  588. package/docs/components/button/examples.md +2 -2
  589. package/docs/components/button/extensions.md +2 -2
  590. package/docs/components/button/overview.md +2 -2
  591. package/docs/components/button/use-cases.md +2 -2
  592. package/docs/components/calendar/overview.md +2 -2
  593. package/docs/components/calendar/use-cases.md +2 -2
  594. package/docs/components/checkbox-group/overview.md +4 -4
  595. package/docs/components/checkbox-group/use-cases.md +2 -2
  596. package/docs/components/collapsible/examples.md +2 -2
  597. package/docs/components/collapsible/overview.md +3 -3
  598. package/docs/components/collapsible/use-cases.md +2 -2
  599. package/docs/components/combobox/api-table.md +1 -1
  600. package/docs/components/combobox/extensions.md +2 -2
  601. package/docs/components/combobox/overview.md +3 -3
  602. package/docs/components/combobox/use-cases.md +3 -3
  603. package/docs/components/dialog/overview.md +3 -3
  604. package/docs/components/dialog/use-cases.md +2 -2
  605. package/docs/components/drawer/overview.md +2 -2
  606. package/docs/components/drawer/use-cases.md +2 -2
  607. package/docs/components/fieldset/overview.md +7 -7
  608. package/docs/components/fieldset/use-cases.md +2 -2
  609. package/docs/components/form/overview.md +5 -5
  610. package/docs/components/form/use-cases.md +4 -4
  611. package/docs/components/icon/overview.md +2 -2
  612. package/docs/components/icon/use-cases.md +3 -3
  613. package/docs/components/input/overview.md +3 -3
  614. package/docs/components/input/use-cases.md +2 -2
  615. package/docs/components/input-amount/overview.md +5 -5
  616. package/docs/components/input-amount/use-cases.md +2 -2
  617. package/docs/components/input-amount-dropdown/use-cases.md +2 -2
  618. package/docs/components/input-date/overview.md +5 -5
  619. package/docs/components/input-date/use-cases.md +2 -2
  620. package/docs/components/input-datepicker/overview.md +7 -7
  621. package/docs/components/input-datepicker/use-cases.md +2 -2
  622. package/docs/components/input-email/overview.md +4 -4
  623. package/docs/components/input-email/use-cases.md +2 -2
  624. package/docs/components/input-file/overview.md +3 -3
  625. package/docs/components/input-file/use-cases.md +2 -2
  626. package/docs/components/input-iban/overview.md +4 -4
  627. package/docs/components/input-iban/use-cases.md +2 -2
  628. package/docs/components/input-range/overview.md +4 -4
  629. package/docs/components/input-range/use-cases.md +2 -2
  630. package/docs/components/input-stepper/overview.md +3 -3
  631. package/docs/components/input-stepper/use-cases.md +2 -2
  632. package/docs/components/input-tel/overview.md +3 -3
  633. package/docs/components/input-tel/use-cases.md +8 -8
  634. package/docs/components/input-tel-dropdown/extensions.md +2 -2
  635. package/docs/components/input-tel-dropdown/overview.md +3 -3
  636. package/docs/components/input-tel-dropdown/use-cases.md +2 -2
  637. package/docs/components/listbox/api-table.md +4 -4
  638. package/docs/components/listbox/overview.md +2 -2
  639. package/docs/components/listbox/use-cases.md +3 -3
  640. package/docs/components/menu/extensions.md +2 -2
  641. package/docs/components/menu/migration.md +2 -2
  642. package/docs/components/menu/overview.md +2 -2
  643. package/docs/components/menu/use-cases.md +1 -1
  644. package/docs/components/pagination/overview.md +2 -2
  645. package/docs/components/pagination/use-cases.md +2 -2
  646. package/docs/components/progress-indicator/examples.md +2 -2
  647. package/docs/components/progress-indicator/overview.md +2 -2
  648. package/docs/components/radio-group/overview.md +5 -5
  649. package/docs/components/radio-group/use-cases.md +2 -2
  650. package/docs/components/select/overview.md +2 -2
  651. package/docs/components/select/use-cases.md +3 -3
  652. package/docs/components/select-rich/api-table.md +1 -1
  653. package/docs/components/select-rich/examples.md +2 -2
  654. package/docs/components/select-rich/overview.md +2 -2
  655. package/docs/components/select-rich/use-cases.md +4 -4
  656. package/docs/components/steps/overview.md +2 -2
  657. package/docs/components/steps/use-cases.md +2 -2
  658. package/docs/components/switch/overview.md +2 -2
  659. package/docs/components/switch/reference.md +2 -2
  660. package/docs/components/switch/use-cases.md +2 -2
  661. package/docs/components/tabs/examples.md +3 -3
  662. package/docs/components/tabs/overview.md +2 -2
  663. package/docs/components/tabs/use-cases.md +2 -2
  664. package/docs/components/textarea/overview.md +2 -2
  665. package/docs/components/textarea/use-cases.md +2 -2
  666. package/docs/components/tooltip/examples.md +2 -2
  667. package/docs/components/tooltip/overview.md +2 -2
  668. package/docs/components/tooltip/use-cases.md +2 -2
  669. package/docs/fundamentals/index.md +4 -4
  670. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +2 -2
  671. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +2 -2
  672. package/docs/fundamentals/node-tools/providence-analytics/index.md +2 -2
  673. package/docs/fundamentals/node-tools/providence-analytics/overview.md +2 -2
  674. package/docs/fundamentals/node-tools/publish-docs/index.md +2 -2
  675. package/docs/fundamentals/node-tools/publish-docs/overview.md +5 -5
  676. package/docs/fundamentals/node-tools/remark-extend/index.md +2 -2
  677. package/docs/fundamentals/node-tools/remark-extend/overview.md +2 -2
  678. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +2 -2
  679. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +4 -4
  680. package/docs/fundamentals/rationales/TypeScript.md +62 -2
  681. package/docs/fundamentals/rationales/accessibility.md +5 -5
  682. package/docs/fundamentals/rationales/side-effects.md +2 -2
  683. package/docs/fundamentals/rationales/versioning.md +2 -2
  684. package/docs/fundamentals/systems/core/SlotMixin.md +3 -3
  685. package/docs/fundamentals/systems/core/index.md +2 -2
  686. package/docs/fundamentals/systems/core/overview.md +3 -3
  687. package/docs/fundamentals/systems/form/formatting-and-parsing.md +6 -6
  688. package/docs/fundamentals/systems/form/index.md +2 -2
  689. package/docs/fundamentals/systems/form/interaction-states.md +2 -2
  690. package/docs/fundamentals/systems/form/model-value.md +3 -3
  691. package/docs/fundamentals/systems/form/overview.md +30 -30
  692. package/docs/fundamentals/systems/form/styling.md +2 -2
  693. package/docs/fundamentals/systems/form/use-cases.md +2 -2
  694. package/docs/fundamentals/systems/form/validate.md +4 -4
  695. package/docs/fundamentals/systems/icon/index.md +2 -2
  696. package/docs/fundamentals/systems/icon/overview.md +2 -2
  697. package/docs/fundamentals/systems/localize/dates.md +2 -2
  698. package/docs/fundamentals/systems/localize/index.md +2 -2
  699. package/docs/fundamentals/systems/localize/numbers.md +2 -2
  700. package/docs/fundamentals/systems/localize/overview.md +6 -6
  701. package/docs/fundamentals/systems/localize/rationale.md +2 -2
  702. package/docs/fundamentals/systems/localize/text.md +2 -2
  703. package/docs/fundamentals/systems/localize/use-cases.md +2 -2
  704. package/docs/fundamentals/systems/overlays/_edge-cases.md +2 -2
  705. package/docs/fundamentals/systems/overlays/api-table.md +1 -1
  706. package/docs/fundamentals/systems/overlays/configuration.md +4 -4
  707. package/docs/fundamentals/systems/overlays/index.md +2 -2
  708. package/docs/fundamentals/systems/overlays/overview.md +7 -7
  709. package/docs/fundamentals/systems/overlays/rationale.md +2 -2
  710. package/docs/fundamentals/systems/overlays/use-cases.md +4 -4
  711. package/docs/fundamentals/tools/ajax/index.md +2 -2
  712. package/docs/fundamentals/tools/ajax/overview.md +2 -2
  713. package/docs/fundamentals/tools/ajax/use-cases.md +2 -2
  714. package/docs/fundamentals/tools/helpers/action-logger.md +2 -2
  715. package/docs/fundamentals/tools/helpers/index.md +2 -2
  716. package/docs/fundamentals/tools/helpers/overview.md +3 -3
  717. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +2 -2
  718. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +2 -2
  719. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +2 -2
  720. package/docs/fundamentals/tools/singleton-manager/index.md +2 -2
  721. package/docs/fundamentals/tools/singleton-manager/overview.md +6 -6
  722. package/docs/guides/how-to/create-a-custom-field.md +7 -7
  723. package/docs/guides/how-to/create-a-form.md +6 -6
  724. package/docs/guides/how-to/extend-a-native-input.md +4 -4
  725. package/docs/guides/how-to/get-started.md +2 -2
  726. package/docs/guides/how-to/index.md +1 -1
  727. package/docs/guides/index.md +8 -8
  728. package/docs/guides/principles/definitions-and-terms.md +2 -2
  729. package/docs/guides/principles/index.md +5 -5
  730. package/docs/guides/principles/scoped-elements.md +2 -2
  731. package/docs/guides/principles/styling.md +3 -3
  732. package/docs/guides/principles/subclasser-apis.md +2 -2
  733. package/exports/define/lion-accordion.js +0 -1
  734. package/exports/define/lion-button-reset.js +0 -1
  735. package/exports/define/lion-button-submit.js +0 -1
  736. package/exports/define/lion-button.js +0 -1
  737. package/exports/define/lion-calendar.js +0 -1
  738. package/exports/define/lion-checkbox-group.js +0 -1
  739. package/exports/define/lion-checkbox-indeterminate.js +0 -1
  740. package/exports/define/lion-checkbox.js +0 -1
  741. package/exports/define/lion-collapsible.js +0 -1
  742. package/exports/define/lion-combobox.js +0 -1
  743. package/exports/define/lion-dialog.js +0 -1
  744. package/exports/define/lion-drawer.js +0 -1
  745. package/exports/define/lion-field.js +0 -1
  746. package/exports/define/lion-fieldset.js +0 -1
  747. package/exports/define/lion-form.js +0 -1
  748. package/exports/define/lion-icon.js +0 -1
  749. package/exports/define/lion-input-amount-dropdown.js +0 -1
  750. package/exports/define/lion-input-amount.js +0 -1
  751. package/exports/define/lion-input-date.js +0 -1
  752. package/exports/define/lion-input-datepicker.js +0 -1
  753. package/exports/define/lion-input-email.js +0 -1
  754. package/exports/define/lion-input-file.js +0 -1
  755. package/exports/define/lion-input-iban.js +0 -1
  756. package/exports/define/lion-input-range.js +0 -1
  757. package/exports/define/lion-input-stepper.js +0 -1
  758. package/exports/define/lion-input-tel-dropdown.js +0 -1
  759. package/exports/define/lion-input-tel.js +0 -1
  760. package/exports/define/lion-input.js +0 -1
  761. package/exports/define/lion-item.js +0 -1
  762. package/exports/define/lion-listbox.js +0 -1
  763. package/exports/define/lion-menu.js +0 -1
  764. package/exports/define/lion-menuitem.js +0 -1
  765. package/exports/define/lion-option.js +0 -1
  766. package/exports/define/lion-options.js +0 -1
  767. package/exports/define/lion-pagination.js +0 -1
  768. package/exports/define/lion-progress-indicator.js +0 -1
  769. package/exports/define/lion-radio-group.js +0 -1
  770. package/exports/define/lion-radio.js +0 -1
  771. package/exports/define/lion-select-invoker.js +0 -1
  772. package/exports/define/lion-select-rich.js +0 -1
  773. package/exports/define/lion-select.js +0 -1
  774. package/exports/define/lion-selected-file-list.js +0 -1
  775. package/exports/define/lion-step.js +0 -1
  776. package/exports/define/lion-steps.js +0 -1
  777. package/exports/define/lion-switch-button.js +0 -1
  778. package/exports/define/lion-switch.js +0 -1
  779. package/exports/define/lion-tabs.js +0 -1
  780. package/exports/define/lion-textarea.js +0 -1
  781. package/exports/define/lion-tooltip.js +0 -1
  782. package/exports/define/lion-validation-feedback.js +0 -1
  783. package/exports/define-helpers/sb-action-logger.js +0 -1
  784. package/exports/define-helpers/sb-locale-switcher.js +0 -1
  785. package/exports/form-core.js +0 -8
  786. package/exports/localize-no-side-effects.js +0 -1
  787. package/exports/localize.js +0 -2
  788. package/exports/overlays.js +0 -4
  789. package/generated/awesome-phonenumber/LICENSE +22 -0
  790. package/generated/awesome-phonenumber/LICENSE.closure-library +176 -0
  791. package/generated/awesome-phonenumber/LICENSE.libphonenumber +176 -0
  792. package/generated/awesome-phonenumber/checksums.json +6 -0
  793. package/generated/awesome-phonenumber/index-esm.mjs +817 -0
  794. package/generated/awesome-phonenumber/index.d.ts +227 -0
  795. package/generated/awesome-phonenumber/index.js +45 -0
  796. package/generated/awesome-phonenumber/lib/index.js +710 -0
  797. package/generated/awesome-phonenumber/package.json +9 -0
  798. package/generated/awesome-phonenumber/provenance.json +13 -0
  799. package/package.json +38 -15
  800. package/vscode.html-custom-data.json +5 -5
  801. package/web-types.json +1 -1
  802. package/vendor/README.md +0 -61
  803. package/vendor/awesome-phonenumber-7.9.0-tlouisse.libphonenumber-9.0.41.tgz +0 -0
@@ -20,7 +20,6 @@ import {
20
20
  waitUntil,
21
21
  } from '@open-wc/testing';
22
22
  import { cache } from 'lit/directives/cache.js';
23
-
24
23
  import { isActiveElement } from '../../core/test-helpers/isActiveElement.js';
25
24
 
26
25
  /**
@@ -30,30 +29,24 @@ import { isActiveElement } from '../../core/test-helpers/isActiveElement.js';
30
29
  * @typedef {import('lit').TemplateResult} TemplateResult
31
30
  */
32
31
 
33
- const fixture = /** @type {(arg: TemplateResult) => Promise<LionSelectRich>} */ (_fixture);
34
-
32
+ const fixture = /** @type {(arg: TemplateResult) => Promise<LionSelectRich>} */ _fixture;
35
33
  describe('lion-select-rich', () => {
36
34
  it('clicking the label should focus the invoker', async () => {
37
35
  const el = await fixture(html` <lion-select-rich label="foo"> </lion-select-rich> `);
38
36
  expect(isActiveElement(document.body)).to.be.true;
39
-
40
37
  const { _labelNode, _invokerNode } = getSelectRichMembers(el);
41
38
  _labelNode.click();
42
39
  expect(isActiveElement(_invokerNode)).to.be.true;
43
40
  });
44
-
45
41
  it('has an attribute focused when focused', async () => {
46
42
  const el = await fixture(html` <lion-select-rich label="foo"> </lion-select-rich> `);
47
-
48
43
  el.focus();
49
44
  await el.updateComplete;
50
45
  expect(el.hasAttribute('focused')).to.be.true;
51
-
52
46
  el.blur();
53
47
  await el.updateComplete;
54
48
  expect(el.hasAttribute('focused')).to.be.false;
55
49
  });
56
-
57
50
  it('checks the first enabled option', async () => {
58
51
  const el = await fixture(html`
59
52
  <lion-select-rich>
@@ -65,7 +58,6 @@ describe('lion-select-rich', () => {
65
58
  expect(el.activeIndex).to.equal(0);
66
59
  expect(el.checkedIndex).to.equal(0);
67
60
  });
68
-
69
61
  it('still has a checked value while disabled', async () => {
70
62
  const el = await fixture(html`
71
63
  <lion-select-rich disabled>
@@ -74,10 +66,8 @@ describe('lion-select-rich', () => {
74
66
  <lion-option .choiceValue=${'Blue'}>Blue</lion-option>
75
67
  </lion-select-rich>
76
68
  `);
77
-
78
69
  expect(el.modelValue).to.equal('Red');
79
70
  });
80
-
81
71
  it('supports having no default selection initially', async () => {
82
72
  const el = await fixture(html`
83
73
  <lion-select-rich id="color" name="color" label="Favorite color" has-no-default-selected>
@@ -90,16 +80,13 @@ describe('lion-select-rich', () => {
90
80
  expect(_invokerNode.selectedElement).to.be.undefined;
91
81
  expect(el.modelValue).to.equal('');
92
82
  });
93
-
94
83
  describe('Invoker', () => {
95
84
  it('generates an lion-select-invoker if no invoker is provided', async () => {
96
85
  const el = await fixture(html` <lion-select-rich> </lion-select-rich> `);
97
86
  const { _invokerNode } = getSelectRichMembers(el);
98
-
99
87
  expect(_invokerNode).to.exist;
100
88
  expect(_invokerNode).to.be.instanceOf(LionSelectInvoker);
101
89
  });
102
-
103
90
  it('sets the first option as the selectedElement if no option is checked', async () => {
104
91
  const el = await fixture(html`
105
92
  <lion-select-rich name="foo">
@@ -111,7 +98,6 @@ describe('lion-select-rich', () => {
111
98
  const options = el.formElements;
112
99
  expect(_invokerNode.selectedElement).dom.to.equal(options[0]);
113
100
  });
114
-
115
101
  it('syncs the selected element to the invoker', async () => {
116
102
  const el = await fixture(html`
117
103
  <lion-select-rich name="foo">
@@ -122,12 +108,10 @@ describe('lion-select-rich', () => {
122
108
  const { _invokerNode } = getSelectRichMembers(el);
123
109
  const options = el.querySelectorAll('lion-option');
124
110
  expect(_invokerNode.selectedElement).dom.to.equal(options[1]);
125
-
126
111
  el.checkedIndex = 0;
127
112
  await el.updateComplete;
128
113
  expect(_invokerNode.selectedElement).dom.to.equal(options[0]);
129
114
  });
130
-
131
115
  it('delegates readonly to the invoker', async () => {
132
116
  const el = await fixture(html`
133
117
  <lion-select-rich readonly>
@@ -139,7 +123,6 @@ describe('lion-select-rich', () => {
139
123
  expect(el.hasAttribute('readonly')).to.be.true;
140
124
  expect(_invokerNode.hasAttribute('readonly')).to.be.true;
141
125
  });
142
-
143
126
  it('delegates singleOption to the invoker', async () => {
144
127
  const el = await fixture(html`
145
128
  <lion-select-rich>
@@ -150,7 +133,6 @@ describe('lion-select-rich', () => {
150
133
  expect(el.singleOption).to.be.true;
151
134
  expect(_invokerNode.hasAttribute('single-option')).to.be.true;
152
135
  });
153
-
154
136
  it('sets and removes the button role and aria attributes on change of singleOption', async () => {
155
137
  const el = await fixture(html`
156
138
  <lion-select-rich>
@@ -159,56 +141,50 @@ describe('lion-select-rich', () => {
159
141
  </lion-select-rich>
160
142
  `);
161
143
  const { _invokerNode } = getSelectRichMembers(el);
162
-
163
144
  expect(_invokerNode.hasAttribute('role')).to.be.true;
164
145
  expect(_invokerNode.hasAttribute('aria-haspopup')).to.be.true;
165
146
  expect(_invokerNode.hasAttribute('aria-expanded')).to.be.true;
166
-
167
147
  el.singleOption = true;
168
148
  await el.updateComplete;
169
149
  expect(_invokerNode.hasAttribute('role')).to.be.false;
170
150
  expect(_invokerNode.hasAttribute('aria-haspopup')).to.be.false;
171
151
  expect(_invokerNode.hasAttribute('aria-expanded')).to.be.false;
172
-
173
152
  el.singleOption = false;
174
153
  await el.updateComplete;
175
154
  expect(_invokerNode.hasAttribute('role')).to.be.true;
176
155
  expect(_invokerNode.hasAttribute('aria-haspopup')).to.be.true;
177
156
  expect(_invokerNode.hasAttribute('aria-expanded')).to.be.true;
178
157
  });
179
-
180
158
  it('updates the invoker when the selected element is the same but the modelValue was updated asynchronously', async () => {
181
159
  const tagString = defineCE(
182
160
  class LionCustomOption extends LionOption {
183
161
  render() {
184
162
  return html`${this.modelValue.value}`;
185
163
  }
186
-
187
164
  createRenderRoot() {
188
165
  return this;
189
166
  }
190
167
  },
191
168
  );
192
169
  const tag = unsafeStatic(tagString);
193
- const firstOption = /** @type {LionOption} */ (
194
- await _fixture(html`<${tag} checked .choiceValue=${10}></${tag}>`)
195
- );
196
-
170
+ const firstOption =
171
+ /** @type {LionOption} */
172
+ await _fixture(html`<${tag} checked .choiceValue=${10}></${tag}>`);
197
173
  const el = await fixture(html`
198
174
  <lion-select-rich>
199
175
  ${firstOption}
200
176
  <${tag} .choiceValue=${20}></${tag}>
201
177
  </lion-select-rich>
202
178
  `);
203
-
204
179
  const { _invokerNode } = getSelectRichMembers(el);
205
-
206
- const firstChild = /** @type {HTMLElement} */ (
207
- /** @type {ShadowRoot} */ (_invokerNode.shadowRoot).firstElementChild
208
- );
180
+ const firstChild =
181
+ /** @type {HTMLElement} */
182
+ /** @type {ShadowRoot} */ _invokerNode.shadowRoot.firstElementChild;
209
183
  expect(firstChild.textContent).to.equal('10');
210
-
211
- firstOption.modelValue = { value: 30, checked: true };
184
+ firstOption.modelValue = {
185
+ value: 30,
186
+ checked: true,
187
+ };
212
188
  await el.updateComplete;
213
189
  expect(firstChild.textContent).to.equal('30');
214
190
  });
@@ -225,72 +201,55 @@ describe('lion-select-rich', () => {
225
201
  const options = el.formElements;
226
202
  await el.updateComplete;
227
203
  const { _invokerNode, _inputNode } = getSelectRichMembers(el);
228
-
229
204
  expect(_invokerNode.clientWidth).to.equal(options[1].clientWidth);
230
-
231
- const newOption = /** @type {LionOption} */ (document.createElement('lion-option'));
205
+ const newOption = /** @type {LionOption} */ document.createElement('lion-option');
232
206
  newOption.choiceValue = 30;
233
207
  newOption.textContent = '30 with longer label';
234
-
235
208
  _inputNode.appendChild(newOption);
236
209
  await el.updateComplete;
237
210
  expect(_invokerNode.clientWidth).to.equal(options[2].clientWidth);
238
-
239
211
  _inputNode.removeChild(newOption);
240
212
  await el.updateComplete;
241
213
  expect(_invokerNode.clientWidth).to.equal(options[1].clientWidth);
242
214
  });
243
215
  });
244
-
245
216
  describe('overlay', () => {
246
217
  it('should be closed by default', async () => {
247
218
  const el = await fixture(html` <lion-select-rich></lion-select-rich> `);
248
219
  expect(el.opened).to.be.false;
249
220
  });
250
-
251
221
  it('shows/hides the listbox via opened attribute', async () => {
252
222
  const el = await fixture(html` <lion-select-rich></lion-select-rich> `);
253
223
  const { _overlayCtrl } = getSelectRichMembers(el);
254
-
255
224
  el.opened = true;
256
225
  await el.updateComplete;
257
226
  expect(_overlayCtrl.isShown).to.be.true;
258
-
259
227
  el.opened = false;
260
228
  await el.updateComplete;
261
229
  await el.updateComplete; // safari takes a little longer
262
230
  expect(_overlayCtrl.isShown).to.be.false;
263
231
  });
264
-
265
232
  it('syncs opened state with overlay shown', async () => {
266
233
  const el = await fixture(html` <lion-select-rich .opened=${true}></lion-select-rich> `);
267
- const outerEl = /** @type {HTMLButtonElement} */ (
268
- await _fixture('<button>somewhere</button>')
269
- );
270
-
234
+ const outerEl = /** @type {HTMLButtonElement} */ await _fixture('<button>somewhere</button>');
271
235
  expect(el.opened).to.be.true;
272
-
273
236
  mimicClick(outerEl);
274
237
  await aTimeout(0);
275
238
  expect(el.opened).to.be.false;
276
239
  });
277
-
278
240
  it('will focus the listbox on open and invoker on close', async () => {
279
241
  const el = await fixture(html` <lion-select-rich></lion-select-rich> `);
280
242
  const { _overlayCtrl, _listboxNode, _invokerNode } = getSelectRichMembers(el);
281
-
282
243
  await _overlayCtrl.show();
283
244
  await el.updateComplete;
284
245
  expect(isActiveElement(_listboxNode)).to.be.true;
285
246
  expect(isActiveElement(_invokerNode)).to.be.false;
286
-
287
247
  el.opened = false;
288
248
  await el.updateComplete;
289
249
  await el.updateComplete; // safari takes a little longer
290
250
  expect(isActiveElement(_listboxNode)).to.be.false;
291
251
  expect(isActiveElement(_invokerNode)).to.be.true;
292
252
  });
293
-
294
253
  it('opens the listbox with checked option as active', async () => {
295
254
  const el = await fixture(html`
296
255
  <lion-select-rich>
@@ -299,15 +258,12 @@ describe('lion-select-rich', () => {
299
258
  </lion-select-rich>
300
259
  `);
301
260
  const { _overlayCtrl } = getSelectRichMembers(el);
302
-
303
261
  await _overlayCtrl.show();
304
262
  await el.updateComplete;
305
263
  const options = el.formElements;
306
-
307
264
  expect(options[1].active).to.be.true;
308
265
  expect(options[1].checked).to.be.true;
309
266
  });
310
-
311
267
  it('stays closed on click if it is disabled or readonly or has a single option', async () => {
312
268
  const elReadOnly = await fixture(html`
313
269
  <lion-select-rich readonly>
@@ -316,7 +272,6 @@ describe('lion-select-rich', () => {
316
272
  </lion-select-rich>
317
273
  `);
318
274
  const { _invokerNode: _invokerNodeReadOnly } = getSelectRichMembers(elReadOnly);
319
-
320
275
  const elDisabled = await fixture(html`
321
276
  <lion-select-rich disabled>
322
277
  <lion-option .choiceValue=${10}>Item 1</lion-option>
@@ -324,27 +279,22 @@ describe('lion-select-rich', () => {
324
279
  </lion-select-rich>
325
280
  `);
326
281
  const { _invokerNode: _invokerNodeDisabled } = getSelectRichMembers(elDisabled);
327
-
328
282
  const elSingleoption = await fixture(html`
329
283
  <lion-select-rich>
330
284
  <lion-option .choiceValue=${10}>Item 1</lion-option>
331
285
  </lion-select-rich>
332
286
  `);
333
287
  const { _invokerNode: _invokerNodeSingleOption } = getSelectRichMembers(elSingleoption);
334
-
335
288
  _invokerNodeReadOnly.click();
336
289
  await elReadOnly.updateComplete;
337
290
  expect(elReadOnly.opened).to.be.false;
338
-
339
291
  _invokerNodeDisabled.click();
340
292
  await elDisabled.updateComplete;
341
293
  expect(elDisabled.opened).to.be.false;
342
-
343
294
  _invokerNodeSingleOption.click();
344
295
  await elSingleoption.updateComplete;
345
296
  expect(elSingleoption.opened).to.be.false;
346
297
  });
347
-
348
298
  it('stays closed with [ArrowUp] or [ArrowDown] key in readonly mode or has a single option', async () => {
349
299
  const elReadOnly = await fixture(html`
350
300
  <lion-select-rich readonly>
@@ -352,26 +302,36 @@ describe('lion-select-rich', () => {
352
302
  <lion-option .choiceValue=${20} checked>Item 2</lion-option>
353
303
  </lion-select-rich>
354
304
  `);
355
-
356
305
  const elSingleOption = await fixture(html`
357
306
  <lion-select-rich>
358
307
  <lion-option .choiceValue=${10}>Item 1</lion-option>
359
308
  </lion-select-rich>
360
309
  `);
361
-
362
- elReadOnly.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowDown' }));
310
+ elReadOnly.dispatchEvent(
311
+ new KeyboardEvent('keyup', {
312
+ key: 'ArrowDown',
313
+ }),
314
+ );
363
315
  expect(elReadOnly.opened).to.be.false;
364
-
365
- elReadOnly.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowUp' }));
316
+ elReadOnly.dispatchEvent(
317
+ new KeyboardEvent('keyup', {
318
+ key: 'ArrowUp',
319
+ }),
320
+ );
366
321
  expect(elReadOnly.opened).to.be.false;
367
-
368
- elSingleOption.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowDown' }));
322
+ elSingleOption.dispatchEvent(
323
+ new KeyboardEvent('keyup', {
324
+ key: 'ArrowDown',
325
+ }),
326
+ );
369
327
  expect(elSingleOption.opened).to.be.false;
370
-
371
- elSingleOption.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowUp' }));
328
+ elSingleOption.dispatchEvent(
329
+ new KeyboardEvent('keyup', {
330
+ key: 'ArrowUp',
331
+ }),
332
+ );
372
333
  expect(elSingleOption.opened).to.be.false;
373
334
  });
374
-
375
335
  it('sets inheritsReferenceWidth to min by default', async () => {
376
336
  const el = await fixture(html`
377
337
  <lion-select-rich name="favoriteColor" label="Favorite color">
@@ -381,14 +341,11 @@ describe('lion-select-rich', () => {
381
341
  </lion-select-rich>
382
342
  `);
383
343
  const { _overlayCtrl } = getSelectRichMembers(el);
384
-
385
344
  expect(_overlayCtrl.inheritsReferenceWidth).to.equal('min');
386
345
  el.opened = true;
387
346
  await el.updateComplete;
388
-
389
347
  expect(_overlayCtrl.inheritsReferenceWidth).to.equal('min');
390
348
  });
391
-
392
349
  it('should override the inheritsWidth prop when no default selected feature is used', async () => {
393
350
  const el = await fixture(html`
394
351
  <lion-select-rich name="favoriteColor" label="Favorite color" has-no-default-selected>
@@ -397,13 +354,13 @@ describe('lion-select-rich', () => {
397
354
  <lion-option .choiceValue=${'teal'}>Teal</lion-option>
398
355
  </lion-select-rich>
399
356
  `);
400
-
401
357
  const { _overlayCtrl } = getSelectRichMembers(el);
402
358
 
403
359
  // The default is min, so we override that behavior here
404
- _overlayCtrl.updateConfig({ inheritsReferenceWidth: 'full' });
360
+ _overlayCtrl.updateConfig({
361
+ inheritsReferenceWidth: 'full',
362
+ });
405
363
  el._initialInheritsReferenceWidth = 'full';
406
-
407
364
  expect(_overlayCtrl.inheritsReferenceWidth).to.equal('full');
408
365
  el.opened = true;
409
366
  await el.updateComplete;
@@ -423,7 +380,6 @@ describe('lion-select-rich', () => {
423
380
  // noDefaultSelected will now flip the override back to what was the initial reference width
424
381
  expect(_overlayCtrl.inheritsReferenceWidth).to.equal('full');
425
382
  });
426
-
427
383
  it('should have singleOption only if there is exactly one option', async () => {
428
384
  const el = await fixture(html`
429
385
  <lion-select-rich>
@@ -431,12 +387,9 @@ describe('lion-select-rich', () => {
431
387
  <lion-option .choiceValue=${20}>Item 2</lion-option>
432
388
  </lion-select-rich>
433
389
  `);
434
-
435
390
  const { _inputNode, _invokerNode } = getSelectRichMembers(el);
436
-
437
391
  expect(el.singleOption).to.be.false;
438
392
  expect(_invokerNode.singleOption).to.be.false;
439
-
440
393
  const optionElm = el.formElements[0];
441
394
  optionElm.parentNode.removeChild(optionElm);
442
395
  // @ts-ignore [test] we don't need args in this case
@@ -444,8 +397,7 @@ describe('lion-select-rich', () => {
444
397
  await el.updateComplete;
445
398
  expect(el.singleOption).to.be.true;
446
399
  expect(_invokerNode.singleOption).to.be.true;
447
-
448
- const newOption = /** @type {LionOption} */ (document.createElement('lion-option'));
400
+ const newOption = /** @type {LionOption} */ document.createElement('lion-option');
449
401
  newOption.choiceValue = 30;
450
402
  _inputNode.appendChild(newOption);
451
403
  // @ts-ignore [test] allow to not provide args for testing purposes
@@ -454,54 +406,47 @@ describe('lion-select-rich', () => {
454
406
  expect(el.singleOption).to.be.false;
455
407
  expect(_invokerNode.singleOption).to.be.false;
456
408
  });
457
-
458
409
  it('should have singleOption only if one option and no hasNoDefaultSelected', async () => {
459
410
  const el = await fixture(html`
460
411
  <lion-select-rich has-no-default-selected>
461
412
  <lion-option .choiceValue=${10}>Item 1</lion-option>
462
413
  </lion-select-rich>
463
414
  `);
464
-
465
415
  const { _invokerNode } = getSelectRichMembers(el);
466
-
467
416
  expect(el.singleOption).to.be.false;
468
417
  expect(_invokerNode.singleOption).to.be.false;
469
418
  });
470
-
471
419
  it('adds/removes the autofocus attribute to/from _listboxNode', async () => {
472
420
  const el = await fixture(html` <lion-select-rich></lion-select-rich> `);
473
421
  const { _listboxNode } = getSelectRichMembers(el);
474
-
475
422
  expect(_listboxNode.hasAttribute('autofocus')).to.be.false;
476
-
477
423
  el.opened = true;
478
424
  await el.updateComplete;
479
425
  expect(_listboxNode.hasAttribute('autofocus')).to.be.true;
480
-
481
426
  el.opened = false;
482
427
  await el.updateComplete;
483
428
  await el.updateComplete; // safari takes a little longer
484
429
  expect(_listboxNode.hasAttribute('autofocus')).to.be.false;
485
430
  });
486
-
487
431
  it('adds focus to element with [role=listbox] when trapsKeyboardFocus is true', async () => {
488
432
  const el = await fixture(html`
489
- <lion-select-rich .config=${{ trapsKeyboardFocus: true }}></lion-select-rich>
433
+ <lion-select-rich
434
+ .config=${{
435
+ trapsKeyboardFocus: true,
436
+ }}
437
+ ></lion-select-rich>
490
438
  `);
491
439
  const { _listboxNode } = getSelectRichMembers(el);
492
440
  expect(isActiveElement(_listboxNode)).to.be.false;
493
-
494
441
  el.opened = true;
495
442
  await el.updateComplete;
496
443
  expect(isActiveElement(_listboxNode)).to.be.true;
497
-
498
444
  el.opened = false;
499
445
  await el.updateComplete;
500
446
  await el.updateComplete; // safari takes a little longer
501
447
  expect(isActiveElement(_listboxNode)).to.be.false;
502
448
  });
503
449
  });
504
-
505
450
  describe('interaction-mode', () => {
506
451
  it('allows to specify an interaction-mode which determines other behaviors', async () => {
507
452
  const el = await fixture(html`
@@ -510,7 +455,6 @@ describe('lion-select-rich', () => {
510
455
  expect(el.interactionMode).to.equal('mac');
511
456
  });
512
457
  });
513
-
514
458
  describe('Keyboard navigation', () => {
515
459
  it('opens the listbox with [Enter] key via click handler', async () => {
516
460
  const el = await fixture(html` <lion-select-rich> </lion-select-rich> `);
@@ -519,7 +463,6 @@ describe('lion-select-rich', () => {
519
463
  await aTimeout(0);
520
464
  expect(el.opened).to.be.true;
521
465
  });
522
-
523
466
  it('opens the listbox with [ ](Space) key via click handler', async () => {
524
467
  const el = await fixture(html` <lion-select-rich> </lion-select-rich> `);
525
468
  const { _invokerNode } = getSelectRichMembers(el);
@@ -527,33 +470,47 @@ describe('lion-select-rich', () => {
527
470
  await aTimeout(0);
528
471
  expect(el.opened).to.be.true;
529
472
  });
530
-
531
473
  it('closes the listbox with [Escape] key once opened', async () => {
532
474
  const el = await fixture(html` <lion-select-rich opened> </lion-select-rich> `);
533
475
  const { _listboxNode } = getSelectRichMembers(el);
534
- _listboxNode.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));
476
+ _listboxNode.dispatchEvent(
477
+ new KeyboardEvent('keydown', {
478
+ key: 'Escape',
479
+ }),
480
+ );
535
481
  expect(el.opened).to.be.false;
536
482
  });
537
-
538
483
  it('closes the listbox with [Tab] key once opened', async () => {
539
484
  const el = await fixture(html` <lion-select-rich opened> </lion-select-rich> `);
540
485
  // tab can only be caught via keydown
541
486
  const { _listboxNode } = getSelectRichMembers(el);
542
- _listboxNode.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));
487
+ _listboxNode.dispatchEvent(
488
+ new KeyboardEvent('keydown', {
489
+ key: 'Tab',
490
+ }),
491
+ );
543
492
  expect(el.opened).to.be.false;
544
493
  });
545
-
546
494
  it('does not close the listbox with [Tab] key once opened when trapsKeyboardFocus is true', async () => {
547
495
  const el = await fixture(html`
548
- <lion-select-rich opened .config=${{ trapsKeyboardFocus: true }}> </lion-select-rich>
496
+ <lion-select-rich
497
+ opened
498
+ .config=${{
499
+ trapsKeyboardFocus: true,
500
+ }}
501
+ >
502
+ </lion-select-rich>
549
503
  `);
550
504
  // tab can only be caught via keydown
551
505
  const { _listboxNode } = getSelectRichMembers(el);
552
- _listboxNode.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' }));
506
+ _listboxNode.dispatchEvent(
507
+ new KeyboardEvent('keydown', {
508
+ key: 'Tab',
509
+ }),
510
+ );
553
511
  expect(el.opened).to.be.true;
554
512
  });
555
513
  });
556
-
557
514
  describe('Mouse navigation', () => {
558
515
  it('opens the listbox via click on invoker', async () => {
559
516
  const el = await fixture(html` <lion-select-rich> </lion-select-rich> `);
@@ -563,7 +520,6 @@ describe('lion-select-rich', () => {
563
520
  await nextFrame(); // reflection of click takes some time
564
521
  expect(el.opened).to.be.true;
565
522
  });
566
-
567
523
  it('closes the listbox when an option gets clicked', async () => {
568
524
  const el = await fixture(html`
569
525
  <lion-select-rich opened>
@@ -575,16 +531,18 @@ describe('lion-select-rich', () => {
575
531
  expect(el.opened).to.be.false;
576
532
  });
577
533
  });
578
-
579
534
  describe('Keyboard navigation Windows', () => {
580
535
  it('closes the listbox with [Enter] key once opened', async () => {
581
536
  const el = await fixture(html` <lion-select-rich opened> </lion-select-rich> `);
582
537
  const { _listboxNode } = getSelectRichMembers(el);
583
- _listboxNode.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));
538
+ _listboxNode.dispatchEvent(
539
+ new KeyboardEvent('keydown', {
540
+ key: 'Enter',
541
+ }),
542
+ );
584
543
  expect(el.opened).to.be.false;
585
544
  });
586
545
  });
587
-
588
546
  describe('Keyboard navigation Mac', () => {
589
547
  it('checks active item and closes the listbox with [Enter] key via click handler once opened', async () => {
590
548
  const el = await fixture(html`
@@ -598,30 +556,39 @@ describe('lion-select-rich', () => {
598
556
  // changes active but not checked
599
557
  el.activeIndex = 1;
600
558
  expect(el.checkedIndex).to.equal(0);
601
- _listboxNode.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter' }));
559
+ _listboxNode.dispatchEvent(
560
+ new KeyboardEvent('keydown', {
561
+ key: 'Enter',
562
+ }),
563
+ );
602
564
  expect(el.opened).to.be.false;
603
565
  expect(el.checkedIndex).to.equal(1);
604
566
  });
605
-
606
567
  it('opens the listbox with [ArrowUp] key', async () => {
607
568
  const el = await fixture(html`
608
569
  <lion-select-rich interaction-mode="mac"> </lion-select-rich>
609
570
  `);
610
- el.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowUp' }));
571
+ el.dispatchEvent(
572
+ new KeyboardEvent('keyup', {
573
+ key: 'ArrowUp',
574
+ }),
575
+ );
611
576
  await el.updateComplete;
612
577
  expect(el.opened).to.be.true;
613
578
  });
614
-
615
579
  it('opens the listbox with [ArrowDown] key', async () => {
616
580
  const el = await fixture(html`
617
581
  <lion-select-rich interaction-mode="mac"> </lion-select-rich>
618
582
  `);
619
- el.dispatchEvent(new KeyboardEvent('keyup', { key: 'ArrowDown' }));
583
+ el.dispatchEvent(
584
+ new KeyboardEvent('keyup', {
585
+ key: 'ArrowDown',
586
+ }),
587
+ );
620
588
  await el.updateComplete;
621
589
  expect(el.opened).to.be.true;
622
590
  });
623
591
  });
624
-
625
592
  describe('Accessibility', () => {
626
593
  it('has the right references to its inner elements', async () => {
627
594
  const el = await fixture(html`
@@ -631,19 +598,16 @@ describe('lion-select-rich', () => {
631
598
  </lion-select-rich>
632
599
  `);
633
600
  const { _invokerNode, _feedbackNode, _labelNode, _helpTextNode } = getSelectRichMembers(el);
634
-
635
601
  expect(_invokerNode.getAttribute('aria-labelledby')).to.contain(_labelNode.id);
636
602
  expect(_invokerNode.getAttribute('aria-labelledby')).to.contain(_invokerNode.id);
637
603
  expect(_invokerNode.getAttribute('aria-describedby')).to.contain(_helpTextNode.id);
638
604
  expect(_invokerNode.getAttribute('aria-describedby')).to.contain(_feedbackNode.id);
639
605
  expect(_invokerNode.getAttribute('aria-haspopup')).to.equal('listbox');
640
606
  });
641
-
642
607
  it('notifies when the listbox is expanded or not', async () => {
643
608
  // smoke test for overlay functionality
644
609
  const el = await fixture(html` <lion-select-rich> </lion-select-rich> `);
645
610
  const { _invokerNode } = getSelectRichMembers(el);
646
-
647
611
  expect(_invokerNode.getAttribute('aria-expanded')).to.equal('false');
648
612
  el.opened = true;
649
613
  await el.updateComplete;
@@ -652,7 +616,6 @@ describe('lion-select-rich', () => {
652
616
  expect(_invokerNode.getAttribute('aria-expanded')).to.equal('true');
653
617
  });
654
618
  });
655
-
656
619
  describe('Use cases', () => {
657
620
  it('keeps showing the selected item after a new item has been added in the selectedIndex position', async () => {
658
621
  const mySelectContainerTagString = defineCE(
@@ -663,7 +626,6 @@ describe('lion-select-rich', () => {
663
626
  colorList: Array,
664
627
  };
665
628
  }
666
-
667
629
  constructor() {
668
630
  super();
669
631
  this.colorList = [
@@ -684,13 +646,16 @@ describe('lion-select-rich', () => {
684
646
  },
685
647
  ];
686
648
  }
687
-
688
649
  render() {
689
650
  return html`
690
651
  <lion-select-rich label="Favorite color" name="color">
691
652
  ${this.colorList.map(
692
- colorObj => html`
693
- <lion-option .modelValue=${{ value: colorObj.value, checked: colorObj.checked }}
653
+ (colorObj) => html`
654
+ <lion-option
655
+ .modelValue=${{
656
+ value: colorObj.value,
657
+ checked: colorObj.checked,
658
+ }}
694
659
  >${colorObj.label}</lion-option
695
660
  >
696
661
  `,
@@ -704,29 +669,26 @@ describe('lion-select-rich', () => {
704
669
  const el = await fixture(html`
705
670
  <${mySelectContainerTag}></${mySelectContainerTag}>
706
671
  `);
707
-
708
- const selectRich = /** @type {LionSelectRich} */ (
709
- /** @type {ShadowRoot} */ (el.shadowRoot).querySelector('lion-select-rich')
710
- );
711
-
672
+ const selectRich =
673
+ /** @type {LionSelectRich} */
674
+ /** @type {ShadowRoot} */ el.shadowRoot.querySelector('lion-select-rich');
712
675
  const { _invokerNode, _listboxNode } = getSelectRichMembers(selectRich);
713
-
714
676
  expect(selectRich.checkedIndex).to.equal(1);
715
677
  expect(selectRich.modelValue).to.equal('hotpink');
716
- expect(/** @type {LionOption} */ (_invokerNode.selectedElement).value).to.equal('hotpink');
717
-
718
- const newOption = /** @type {LionOption} */ (document.createElement('lion-option'));
719
- newOption.modelValue = { checked: false, value: 'blue' };
678
+ expect(/** @type {LionOption} */ _invokerNode.selectedElement.value).to.equal('hotpink');
679
+ const newOption = /** @type {LionOption} */ document.createElement('lion-option');
680
+ newOption.modelValue = {
681
+ checked: false,
682
+ value: 'blue',
683
+ };
720
684
  newOption.textContent = 'Blue';
721
685
  const hotpinkEl = _listboxNode.children[1];
722
686
  hotpinkEl.insertAdjacentElement('beforebegin', newOption);
723
-
724
687
  expect(selectRich.checkedIndex).to.equal(2);
725
688
  expect(selectRich.modelValue).to.equal('hotpink');
726
- expect(/** @type {LionOption} */ (_invokerNode.selectedElement).value).to.equal('hotpink');
689
+ expect(/** @type {LionOption} */ _invokerNode.selectedElement.value).to.equal('hotpink');
727
690
  });
728
691
  });
729
-
730
692
  describe('Render from `lit` `cache`', () => {
731
693
  describe('when `lion-option` is set by `.choiceValue` property with and no `checked` attribute', () => {
732
694
  it('should display the second option', async () => {
@@ -747,9 +709,10 @@ describe('lion-select-rich', () => {
747
709
  class Wrapper extends LitElement {
748
710
  static properties = {
749
711
  ...super.properties,
750
- activeTabIndex: { type: Number },
712
+ activeTabIndex: {
713
+ type: Number,
714
+ },
751
715
  };
752
-
753
716
  constructor() {
754
717
  super();
755
718
  this.activeTabIndex = 0;
@@ -761,7 +724,6 @@ describe('lion-select-rich', () => {
761
724
  changeActiveTabIndex(index) {
762
725
  this.activeTabIndex = index;
763
726
  }
764
-
765
727
  render() {
766
728
  const changeActiveTabIndexRef = this.changeActiveTabIndex.bind(this);
767
729
  return html`
@@ -774,7 +736,7 @@ describe('lion-select-rich', () => {
774
736
  this.activeTabIndex === 0
775
737
  ? html`<lion-select-rich name="favoriteColor" label="Favorite color">
776
738
  ${colours.map(
777
- colour =>
739
+ (colour) =>
778
740
  html`<lion-option .choiceValue="${colour.value}"
779
741
  >${colour.label}</lion-option
780
742
  >`,
@@ -791,13 +753,12 @@ describe('lion-select-rich', () => {
791
753
  `;
792
754
  }
793
755
  }
794
-
795
- const wrapperFixture = /** @type {(arg: TemplateResult) => Promise<Wrapper>} */ (_fixture);
756
+ const wrapperFixture = /** @type {(arg: TemplateResult) => Promise<Wrapper>} */ _fixture;
796
757
  const tagString = defineCE(Wrapper);
797
758
  const wrapperTag = unsafeStatic(tagString);
798
- const wrapperElement = /** @type {Wrapper} */ (
799
- await wrapperFixture(html`<${wrapperTag}></${wrapperTag}>`)
800
- );
759
+ const wrapperElement =
760
+ /** @type {Wrapper} */
761
+ await wrapperFixture(html`<${wrapperTag}></${wrapperTag}>`);
801
762
  await wrapperElement.updateComplete;
802
763
  const wrapperElementShadowRoot = wrapperElement.shadowRoot;
803
764
  /**
@@ -833,9 +794,10 @@ describe('lion-select-rich', () => {
833
794
  getInvoker()?.click();
834
795
  await waitUntil(isDialogVisible);
835
796
  // @ts-ignore [dynamic-key-access-in-test]
836
- const optionBlue = /** @type { HTMLElement | undefined } */ (
837
- wrapperElementShadowRoot?.querySelectorAll('lion-option')
838
- )?.[1];
797
+ const optionBlue =
798
+ /** @type { HTMLElement | undefined } */ wrapperElementShadowRoot?.querySelectorAll(
799
+ 'lion-option',
800
+ )?.[1];
839
801
  optionBlue?.click();
840
802
  await waitUntil(() => !isDialogVisible());
841
803
  const selectedColourLabelBeforeTabSwitch = getSelectedColourLabel();
@@ -869,9 +831,10 @@ describe('lion-select-rich', () => {
869
831
  class Wrapper extends LitElement {
870
832
  static properties = {
871
833
  ...super.properties,
872
- activeTabIndex: { type: Number },
834
+ activeTabIndex: {
835
+ type: Number,
836
+ },
873
837
  };
874
-
875
838
  constructor() {
876
839
  super();
877
840
  this.activeTabIndex = 0;
@@ -883,7 +846,6 @@ describe('lion-select-rich', () => {
883
846
  changeActiveTabIndex(index) {
884
847
  this.activeTabIndex = index;
885
848
  }
886
-
887
849
  render() {
888
850
  const changeActiveTabIndexRef = this.changeActiveTabIndex.bind(this);
889
851
  return html`
@@ -896,7 +858,7 @@ describe('lion-select-rich', () => {
896
858
  this.activeTabIndex === 0
897
859
  ? html`<lion-select-rich name="favoriteColor" label="Favorite color">
898
860
  ${colours.map(
899
- colour =>
861
+ (colour) =>
900
862
  html`<lion-option
901
863
  .choiceValue="${colour.value}"
902
864
  checked="${colour.checked || nothing}"
@@ -915,13 +877,12 @@ describe('lion-select-rich', () => {
915
877
  `;
916
878
  }
917
879
  }
918
-
919
- const wrapperFixture = /** @type {(arg: TemplateResult) => Promise<Wrapper>} */ (_fixture);
880
+ const wrapperFixture = /** @type {(arg: TemplateResult) => Promise<Wrapper>} */ _fixture;
920
881
  const tagString = defineCE(Wrapper);
921
882
  const wrapperTag = unsafeStatic(tagString);
922
- const wrapperElement = /** @type {Wrapper} */ (
923
- await wrapperFixture(html`<${wrapperTag}></${wrapperTag}>`)
924
- );
883
+ const wrapperElement =
884
+ /** @type {Wrapper} */
885
+ await wrapperFixture(html`<${wrapperTag}></${wrapperTag}>`);
925
886
  await wrapperElement.updateComplete;
926
887
  const wrapperElementShadowRoot = wrapperElement.shadowRoot;
927
888
  /**
@@ -957,9 +918,10 @@ describe('lion-select-rich', () => {
957
918
  getInvoker()?.click();
958
919
  await waitUntil(isDialogVisible);
959
920
  // @ts-ignore [dynamic-key-access-in-test]
960
- const optionBlue = /** @type { HTMLElement | undefined } */ (
961
- wrapperElementShadowRoot?.querySelectorAll('lion-option')
962
- )?.[1];
921
+ const optionBlue =
922
+ /** @type { HTMLElement | undefined } */ wrapperElementShadowRoot?.querySelectorAll(
923
+ 'lion-option',
924
+ )?.[1];
963
925
  optionBlue?.click();
964
926
  await waitUntil(() => !isDialogVisible());
965
927
  const selectedColourLabelBeforeTabSwitch = getSelectedColourLabel();
@@ -993,9 +955,10 @@ describe('lion-select-rich', () => {
993
955
  class Wrapper extends LitElement {
994
956
  static properties = {
995
957
  ...super.properties,
996
- activeTabIndex: { type: Number },
958
+ activeTabIndex: {
959
+ type: Number,
960
+ },
997
961
  };
998
-
999
962
  constructor() {
1000
963
  super();
1001
964
  this.activeTabIndex = 0;
@@ -1007,7 +970,6 @@ describe('lion-select-rich', () => {
1007
970
  changeActiveTabIndex(index) {
1008
971
  this.activeTabIndex = index;
1009
972
  }
1010
-
1011
973
  render() {
1012
974
  const changeActiveTabIndexRef = this.changeActiveTabIndex.bind(this);
1013
975
  return html`
@@ -1020,14 +982,17 @@ describe('lion-select-rich', () => {
1020
982
  this.activeTabIndex === 0
1021
983
  ? html`<lion-select-rich name="favoriteColor" label="Favorite color">
1022
984
  ${colours.map(
1023
- colour =>
985
+ (colour) =>
1024
986
  html`<lion-option
1025
987
  @model-value-changed=${(/** @type {Event} */ ev) => {
1026
- const lionOption = /** @type {LionOption} */ (ev.target);
988
+ const lionOption = /** @type {LionOption} */ ev.target;
1027
989
  // eslint-disable-next-line no-param-reassign
1028
990
  colour.checked = lionOption.modelValue.checked;
1029
991
  }}
1030
- .modelValue=${{ value: colour.value, checked: colour.checked }}
992
+ .modelValue=${{
993
+ value: colour.value,
994
+ checked: colour.checked,
995
+ }}
1031
996
  >${colour.label}</lion-option
1032
997
  >`,
1033
998
  )}
@@ -1043,13 +1008,12 @@ describe('lion-select-rich', () => {
1043
1008
  `;
1044
1009
  }
1045
1010
  }
1046
-
1047
- const wrapperFixture = /** @type {(arg: TemplateResult) => Promise<Wrapper>} */ (_fixture);
1011
+ const wrapperFixture = /** @type {(arg: TemplateResult) => Promise<Wrapper>} */ _fixture;
1048
1012
  const tagString = defineCE(Wrapper);
1049
1013
  const wrapperTag = unsafeStatic(tagString);
1050
- const wrapperElement = /** @type {Wrapper} */ (
1051
- await wrapperFixture(html`<${wrapperTag}></${wrapperTag}>`)
1052
- );
1014
+ const wrapperElement =
1015
+ /** @type {Wrapper} */
1016
+ await wrapperFixture(html`<${wrapperTag}></${wrapperTag}>`);
1053
1017
  await wrapperElement.updateComplete;
1054
1018
  const wrapperElementShadowRoot = wrapperElement.shadowRoot;
1055
1019
  /**
@@ -1085,9 +1049,10 @@ describe('lion-select-rich', () => {
1085
1049
  getInvoker()?.click();
1086
1050
  await waitUntil(isDialogVisible);
1087
1051
  // @ts-ignore [dynamic-key-access-in-test]
1088
- const optionBlue = /** @type { HTMLElement | undefined } */ (
1089
- wrapperElementShadowRoot?.querySelectorAll('lion-option')
1090
- )?.[1];
1052
+ const optionBlue =
1053
+ /** @type { HTMLElement | undefined } */ wrapperElementShadowRoot?.querySelectorAll(
1054
+ 'lion-option',
1055
+ )?.[1];
1091
1056
  optionBlue?.click();
1092
1057
  await waitUntil(() => !isDialogVisible());
1093
1058
  const selectedColourLabelBeforeTabSwitch = getSelectedColourLabel();
@@ -1101,15 +1066,13 @@ describe('lion-select-rich', () => {
1101
1066
  });
1102
1067
  });
1103
1068
  });
1104
-
1105
1069
  describe('Teardown', () => {
1106
1070
  it('does not throw when tearing down before the overlay controller is set up', () => {
1107
- const el = /** @type {LionSelectRich} */ (document.createElement('lion-select-rich'));
1071
+ const el = /** @type {LionSelectRich} */ document.createElement('lion-select-rich');
1108
1072
 
1109
1073
  // @ts-expect-error [allow-private] in tests
1110
1074
  expect(() => el._teardownOverlayCtrl()).not.to.throw();
1111
1075
  });
1112
-
1113
1076
  it('correctly removes event listeners when disconnected from dom', async () => {
1114
1077
  const el = await fixture(html`
1115
1078
  <lion-select-rich label="age">
@@ -1117,19 +1080,13 @@ describe('lion-select-rich', () => {
1117
1080
  <lion-option .choiceValue=${20}>Item 2</lion-option>
1118
1081
  </lion-select-rich>
1119
1082
  `);
1120
-
1121
1083
  const { _overlayCtrl } = getSelectRichMembers(el);
1122
1084
  const eventRemoveSpy = sinon.spy(_overlayCtrl, 'removeEventListener');
1123
-
1124
1085
  el.parentNode?.removeChild(el);
1125
-
1126
1086
  expect(eventRemoveSpy.callCount).to.equal(0);
1127
-
1128
1087
  await el.updateComplete;
1129
1088
  expect(eventRemoveSpy.callCount).to.equal(0);
1130
-
1131
1089
  await el.updateComplete;
1132
-
1133
1090
  const hasOneInstanceFor = (
1134
1091
  /** @type {string} */ eventName,
1135
1092
  /** @type {any[][]} */ eventsToSearch,
@@ -1151,7 +1108,6 @@ describe('lion-select-rich', () => {
1151
1108
  expect(hasOneInstanceFor('hide', eventRemoveSpy.args, el.__overlayOnHide)).to.be.true;
1152
1109
  });
1153
1110
  });
1154
-
1155
1111
  describe('Subclassers', () => {
1156
1112
  it('allows to override the type of overlay', async () => {
1157
1113
  const mySelectTagString = defineCE(
@@ -1165,21 +1121,27 @@ describe('lion-select-rich', () => {
1165
1121
  invokerNode,
1166
1122
  });
1167
1123
  this.addEventListener('switch', () => {
1168
- ctrl.updateConfig({ placementMode: 'local' });
1124
+ ctrl.updateConfig({
1125
+ placementMode: 'local',
1126
+ });
1169
1127
  });
1170
1128
  return ctrl;
1171
1129
  }
1172
1130
  },
1173
1131
  );
1174
-
1175
1132
  const mySelectTag = unsafeStatic(mySelectTagString);
1176
-
1177
1133
  const el = await fixture(html`
1178
1134
  <${mySelectTag} label="Favorite color" name="color">
1179
1135
 
1180
1136
  ${Array(2).map(
1181
1137
  (_, i) => html`
1182
- <lion-option .modelValue="${{ value: i, checked: false }}">value ${i}</lion-option>
1138
+ <lion-option
1139
+ .modelValue="${{
1140
+ value: i,
1141
+ checked: false,
1142
+ }}"
1143
+ >value ${i}</lion-option
1144
+ >
1183
1145
  `,
1184
1146
  )}
1185
1147
 
@@ -1187,12 +1149,10 @@ describe('lion-select-rich', () => {
1187
1149
  `);
1188
1150
  await el.updateComplete;
1189
1151
  const { _overlayCtrl } = getSelectRichMembers(el);
1190
-
1191
1152
  expect(_overlayCtrl.placementMode).to.equal('global');
1192
1153
  el.dispatchEvent(new Event('switch'));
1193
1154
  expect(_overlayCtrl.placementMode).to.equal('local');
1194
1155
  });
1195
-
1196
1156
  it('supports putting a placeholder template when there is no default selection initially', async () => {
1197
1157
  const invokerTagName = defineCE(
1198
1158
  class extends LionSelectInvoker {
@@ -1214,7 +1174,6 @@ describe('lion-select-rich', () => {
1214
1174
  },
1215
1175
  );
1216
1176
  const selectTag = unsafeStatic(selectTagName);
1217
-
1218
1177
  const el = await fixture(html`
1219
1178
  <${selectTag} id="color" name="color" label="Favorite color" has-no-default-selected>
1220
1179
 
@@ -1225,9 +1184,8 @@ describe('lion-select-rich', () => {
1225
1184
  </${selectTag}>
1226
1185
  `);
1227
1186
  const { _invokerNode } = getSelectRichMembers(el);
1228
-
1229
1187
  expect(
1230
- /** @type {ShadowRoot} */ (_invokerNode.shadowRoot).getElementById('content-wrapper'),
1188
+ /** @type {ShadowRoot} */ _invokerNode.shadowRoot.getElementById('content-wrapper'),
1231
1189
  ).dom.to.equal(`<div id="content-wrapper">Please select an option..</div>`);
1232
1190
  expect(el.modelValue).to.equal('');
1233
1191
  });