@lion/ui 0.23.0 → 0.24.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 (787) 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 +40 -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 +7 -6
  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 +4 -1
  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 +166 -151
  430. package/components/overlays/src/OverlayMixin.js +61 -63
  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 +375 -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/local-positioning.test.js +101 -103
  456. package/components/overlays/test/utils-tests/active-element.test.js +12 -27
  457. package/components/overlays/test/utils-tests/adopt-styles.test.js +25 -56
  458. package/components/overlays/test/utils-tests/deep-contains.test.js +73 -74
  459. package/components/overlays/test/utils-tests/get-focusable-elements.test.js +6 -23
  460. package/components/overlays/test/utils-tests/is-equal-config.test.js +32 -13
  461. package/components/overlays/test/utils-tests/visibility.test.js +44 -79
  462. package/components/overlays/test-helpers/createShadowHost.js +5 -3
  463. package/components/overlays/test-helpers/normalizeTransformStyle.js +2 -4
  464. package/components/overlays/test-suites/OverlayMixin.suite.js +152 -181
  465. package/components/overlays/test-suites/WithHoverInteraction.suite.js +96 -79
  466. package/components/overlays/translations/bg-BG.js +0 -1
  467. package/components/overlays/translations/cs-CZ.js +0 -1
  468. package/components/overlays/translations/de-DE.js +0 -1
  469. package/components/overlays/translations/en-AU.js +0 -1
  470. package/components/overlays/translations/en-GB.js +0 -1
  471. package/components/overlays/translations/en-US.js +0 -1
  472. package/components/overlays/translations/es-ES.js +0 -1
  473. package/components/overlays/translations/fr-BE.js +0 -1
  474. package/components/overlays/translations/fr-FR.js +0 -1
  475. package/components/overlays/translations/hu-HU.js +0 -1
  476. package/components/overlays/translations/it-IT.js +0 -1
  477. package/components/overlays/translations/nl-BE.js +0 -1
  478. package/components/overlays/translations/nl-NL.js +0 -1
  479. package/components/overlays/translations/pl-PL.js +0 -1
  480. package/components/overlays/translations/ro-RO.js +0 -1
  481. package/components/overlays/translations/ru-RU.js +0 -1
  482. package/components/overlays/translations/sk-SK.js +0 -1
  483. package/components/overlays/translations/tr-TR.js +0 -1
  484. package/components/overlays/translations/uk-UA.js +0 -1
  485. package/components/pagination/src/LionPagination.js +9 -12
  486. package/components/pagination/test/lion-pagination.test.js +18 -50
  487. package/components/progress-indicator/src/LionProgressIndicator.js +10 -12
  488. package/components/progress-indicator/test/lion-progress-indicator.test.js +1 -22
  489. package/components/radio-group/src/LionRadioGroup.js +1 -2
  490. package/components/radio-group/test/lion-radio-group-integrations.test.js +0 -1
  491. package/components/radio-group/test/lion-radio-group.test.js +27 -27
  492. package/components/radio-group/test/lion-radio-integrations.test.js +3 -2
  493. package/components/radio-group/test/lion-radio.test.js +30 -16
  494. package/components/select/src/LionSelect.js +12 -13
  495. package/components/select/test/lion-select.test.js +7 -12
  496. package/components/select-rich/src/LionSelectInvoker.js +18 -11
  497. package/components/select-rich/src/LionSelectRich.js +20 -43
  498. package/components/select-rich/test/demos.screenshots-test.js +40 -9
  499. package/components/select-rich/test/lion-select-invoker.test.js +26 -43
  500. package/components/select-rich/test/lion-select-listbox-suite-integration.test.js +3 -3
  501. package/components/select-rich/test/lion-select-rich-dialog-integration.test.js +4 -9
  502. package/components/select-rich/test/lion-select-rich-interaction.test.js +116 -116
  503. package/components/select-rich/test/lion-select-rich-upgrade.test.js +3 -7
  504. package/components/select-rich/test/lion-select-rich.test.js +153 -195
  505. package/components/select-rich/test-helpers/getSelectRichMembers.js +4 -1
  506. package/components/steps/src/LionStep.js +21 -12
  507. package/components/steps/src/LionSteps.js +25 -25
  508. package/components/steps/test/lion-step.test.js +18 -25
  509. package/components/steps/test/lion-steps.test.js +45 -78
  510. package/components/switch/src/LionSwitch.js +2 -7
  511. package/components/switch/src/LionSwitchButton.js +5 -6
  512. package/components/switch/test/lion-switch-button.test.js +16 -28
  513. package/components/switch/test/lion-switch.test.js +17 -31
  514. package/components/tabs/src/LionTabs.js +25 -28
  515. package/components/tabs/test/lion-tabs.test.js +156 -154
  516. package/components/textarea/src/LionTextarea.js +4 -23
  517. package/components/textarea/test/lion-textarea-integrations.test.js +0 -5
  518. package/components/textarea/test/lion-textarea.test.js +2 -28
  519. package/components/tooltip/src/LionTooltip.js +6 -6
  520. package/components/tooltip/test/lion-tooltip.test.js +75 -102
  521. package/components/validate-messages/src/getLocalizedMessage.js +8 -7
  522. package/components/validate-messages/src/loadDefaultFeedbackMessages.js +3 -1
  523. package/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js +9 -5
  524. package/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js +5 -2
  525. package/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js +99 -35
  526. package/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js +4 -3
  527. package/components/validate-messages/test/loadDefaultFeedbackMessages.test.js +5 -3
  528. package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.test.js +80 -45
  529. package/components/validate-messages/translations/bg-BG.js +0 -1
  530. package/components/validate-messages/translations/cs-CZ.js +0 -1
  531. package/components/validate-messages/translations/de-DE.js +0 -1
  532. package/components/validate-messages/translations/en-AU.js +0 -1
  533. package/components/validate-messages/translations/en-GB.js +0 -1
  534. package/components/validate-messages/translations/en-PH.js +0 -1
  535. package/components/validate-messages/translations/en-US.js +0 -1
  536. package/components/validate-messages/translations/es-ES.js +0 -1
  537. package/components/validate-messages/translations/fr-BE.js +0 -1
  538. package/components/validate-messages/translations/fr-FR.js +0 -1
  539. package/components/validate-messages/translations/hu-HU.js +0 -1
  540. package/components/validate-messages/translations/it-IT.js +0 -1
  541. package/components/validate-messages/translations/nl-BE.js +0 -1
  542. package/components/validate-messages/translations/nl-NL.js +0 -1
  543. package/components/validate-messages/translations/pl-PL.js +0 -1
  544. package/components/validate-messages/translations/ro-RO.js +0 -1
  545. package/components/validate-messages/translations/ru-RU.js +0 -1
  546. package/components/validate-messages/translations/sk-SK.js +0 -1
  547. package/components/validate-messages/translations/tr-TR.js +0 -1
  548. package/components/validate-messages/translations/uk-UA.js +0 -1
  549. package/custom-elements.json +191 -56
  550. package/dist-types/components/core/src/SlotMixin.d.ts +6 -1
  551. package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
  552. package/dist-types/components/core/types/SlotMixinTypes.d.ts +5 -1
  553. package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
  554. package/dist-types/components/form-core/src/LionField.d.ts +3 -1
  555. package/dist-types/components/form-core/src/LionField.d.ts.map +1 -1
  556. package/dist-types/components/input-tel/src/LionInputTel.d.ts +6 -6
  557. package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
  558. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts +2 -2
  559. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts.map +1 -1
  560. package/dist-types/components/input-tel/src/formatters.d.ts +2 -2
  561. package/dist-types/components/input-tel/src/formatters.d.ts.map +1 -1
  562. package/dist-types/components/input-tel/src/preprocessors.d.ts +2 -2
  563. package/dist-types/components/input-tel/src/preprocessors.d.ts.map +1 -1
  564. package/dist-types/components/input-tel/test/validators.test.d.ts +1 -1
  565. package/dist-types/components/input-tel/test/validators.test.d.ts.map +1 -1
  566. package/dist-types/components/listbox/src/LionOption.d.ts +5 -2
  567. package/dist-types/components/listbox/src/LionOption.d.ts.map +1 -1
  568. package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
  569. package/dist-types/components/overlays/src/overlayDocumentStyle.d.ts.map +1 -1
  570. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts +3 -1
  571. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts.map +1 -1
  572. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +1 -1
  573. package/dist-types/tsconfig.tsbuildinfo +1 -1
  574. package/docs/components/accordion/overview.md +2 -2
  575. package/docs/components/accordion/reference.md +2 -2
  576. package/docs/components/accordion/use-cases.md +2 -2
  577. package/docs/components/button/examples.md +2 -2
  578. package/docs/components/button/extensions.md +2 -2
  579. package/docs/components/button/overview.md +2 -2
  580. package/docs/components/button/use-cases.md +2 -2
  581. package/docs/components/calendar/overview.md +2 -2
  582. package/docs/components/calendar/use-cases.md +2 -2
  583. package/docs/components/checkbox-group/overview.md +4 -4
  584. package/docs/components/checkbox-group/use-cases.md +2 -2
  585. package/docs/components/collapsible/examples.md +2 -2
  586. package/docs/components/collapsible/overview.md +3 -3
  587. package/docs/components/collapsible/use-cases.md +2 -2
  588. package/docs/components/combobox/extensions.md +2 -2
  589. package/docs/components/combobox/overview.md +3 -3
  590. package/docs/components/combobox/use-cases.md +3 -3
  591. package/docs/components/dialog/overview.md +3 -3
  592. package/docs/components/dialog/use-cases.md +2 -2
  593. package/docs/components/drawer/overview.md +2 -2
  594. package/docs/components/drawer/use-cases.md +2 -2
  595. package/docs/components/fieldset/overview.md +7 -7
  596. package/docs/components/fieldset/use-cases.md +2 -2
  597. package/docs/components/form/overview.md +5 -5
  598. package/docs/components/form/use-cases.md +4 -4
  599. package/docs/components/icon/overview.md +2 -2
  600. package/docs/components/icon/use-cases.md +3 -3
  601. package/docs/components/input/overview.md +3 -3
  602. package/docs/components/input/use-cases.md +2 -2
  603. package/docs/components/input-amount/overview.md +5 -5
  604. package/docs/components/input-amount/use-cases.md +2 -2
  605. package/docs/components/input-amount-dropdown/use-cases.md +2 -2
  606. package/docs/components/input-date/overview.md +5 -5
  607. package/docs/components/input-date/use-cases.md +2 -2
  608. package/docs/components/input-datepicker/overview.md +7 -7
  609. package/docs/components/input-datepicker/use-cases.md +2 -2
  610. package/docs/components/input-email/overview.md +4 -4
  611. package/docs/components/input-email/use-cases.md +2 -2
  612. package/docs/components/input-file/overview.md +3 -3
  613. package/docs/components/input-file/use-cases.md +2 -2
  614. package/docs/components/input-iban/overview.md +4 -4
  615. package/docs/components/input-iban/use-cases.md +2 -2
  616. package/docs/components/input-range/overview.md +4 -4
  617. package/docs/components/input-range/use-cases.md +2 -2
  618. package/docs/components/input-stepper/overview.md +3 -3
  619. package/docs/components/input-stepper/use-cases.md +2 -2
  620. package/docs/components/input-tel/overview.md +3 -3
  621. package/docs/components/input-tel/use-cases.md +8 -8
  622. package/docs/components/input-tel-dropdown/extensions.md +2 -2
  623. package/docs/components/input-tel-dropdown/overview.md +3 -3
  624. package/docs/components/input-tel-dropdown/use-cases.md +2 -2
  625. package/docs/components/listbox/overview.md +2 -2
  626. package/docs/components/listbox/use-cases.md +3 -3
  627. package/docs/components/menu/extensions.md +2 -2
  628. package/docs/components/menu/migration.md +2 -2
  629. package/docs/components/menu/overview.md +2 -2
  630. package/docs/components/menu/use-cases.md +1 -1
  631. package/docs/components/pagination/overview.md +2 -2
  632. package/docs/components/pagination/use-cases.md +2 -2
  633. package/docs/components/progress-indicator/examples.md +2 -2
  634. package/docs/components/progress-indicator/overview.md +2 -2
  635. package/docs/components/radio-group/overview.md +5 -5
  636. package/docs/components/radio-group/use-cases.md +2 -2
  637. package/docs/components/select/overview.md +2 -2
  638. package/docs/components/select/use-cases.md +3 -3
  639. package/docs/components/select-rich/examples.md +2 -2
  640. package/docs/components/select-rich/overview.md +2 -2
  641. package/docs/components/select-rich/use-cases.md +4 -4
  642. package/docs/components/steps/overview.md +2 -2
  643. package/docs/components/steps/use-cases.md +2 -2
  644. package/docs/components/switch/overview.md +2 -2
  645. package/docs/components/switch/reference.md +2 -2
  646. package/docs/components/switch/use-cases.md +2 -2
  647. package/docs/components/tabs/examples.md +3 -3
  648. package/docs/components/tabs/overview.md +2 -2
  649. package/docs/components/tabs/use-cases.md +2 -2
  650. package/docs/components/textarea/overview.md +2 -2
  651. package/docs/components/textarea/use-cases.md +2 -2
  652. package/docs/components/tooltip/examples.md +2 -2
  653. package/docs/components/tooltip/overview.md +2 -2
  654. package/docs/components/tooltip/use-cases.md +2 -2
  655. package/docs/fundamentals/index.md +4 -4
  656. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +2 -2
  657. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +2 -2
  658. package/docs/fundamentals/node-tools/providence-analytics/index.md +2 -2
  659. package/docs/fundamentals/node-tools/providence-analytics/overview.md +2 -2
  660. package/docs/fundamentals/node-tools/publish-docs/index.md +2 -2
  661. package/docs/fundamentals/node-tools/publish-docs/overview.md +5 -5
  662. package/docs/fundamentals/node-tools/remark-extend/index.md +2 -2
  663. package/docs/fundamentals/node-tools/remark-extend/overview.md +2 -2
  664. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +2 -2
  665. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +4 -4
  666. package/docs/fundamentals/rationales/TypeScript.md +62 -2
  667. package/docs/fundamentals/rationales/accessibility.md +5 -5
  668. package/docs/fundamentals/rationales/side-effects.md +2 -2
  669. package/docs/fundamentals/rationales/versioning.md +2 -2
  670. package/docs/fundamentals/systems/core/SlotMixin.md +3 -3
  671. package/docs/fundamentals/systems/core/index.md +2 -2
  672. package/docs/fundamentals/systems/core/overview.md +3 -3
  673. package/docs/fundamentals/systems/form/formatting-and-parsing.md +6 -6
  674. package/docs/fundamentals/systems/form/index.md +2 -2
  675. package/docs/fundamentals/systems/form/interaction-states.md +2 -2
  676. package/docs/fundamentals/systems/form/model-value.md +3 -3
  677. package/docs/fundamentals/systems/form/overview.md +30 -30
  678. package/docs/fundamentals/systems/form/styling.md +2 -2
  679. package/docs/fundamentals/systems/form/use-cases.md +2 -2
  680. package/docs/fundamentals/systems/form/validate.md +4 -4
  681. package/docs/fundamentals/systems/icon/index.md +2 -2
  682. package/docs/fundamentals/systems/icon/overview.md +2 -2
  683. package/docs/fundamentals/systems/localize/dates.md +2 -2
  684. package/docs/fundamentals/systems/localize/index.md +2 -2
  685. package/docs/fundamentals/systems/localize/numbers.md +2 -2
  686. package/docs/fundamentals/systems/localize/overview.md +6 -6
  687. package/docs/fundamentals/systems/localize/rationale.md +2 -2
  688. package/docs/fundamentals/systems/localize/text.md +2 -2
  689. package/docs/fundamentals/systems/localize/use-cases.md +2 -2
  690. package/docs/fundamentals/systems/overlays/_edge-cases.md +2 -2
  691. package/docs/fundamentals/systems/overlays/configuration.md +4 -4
  692. package/docs/fundamentals/systems/overlays/index.md +2 -2
  693. package/docs/fundamentals/systems/overlays/overview.md +7 -7
  694. package/docs/fundamentals/systems/overlays/rationale.md +2 -2
  695. package/docs/fundamentals/systems/overlays/use-cases.md +4 -4
  696. package/docs/fundamentals/tools/ajax/index.md +2 -2
  697. package/docs/fundamentals/tools/ajax/overview.md +2 -2
  698. package/docs/fundamentals/tools/ajax/use-cases.md +2 -2
  699. package/docs/fundamentals/tools/helpers/action-logger.md +2 -2
  700. package/docs/fundamentals/tools/helpers/index.md +2 -2
  701. package/docs/fundamentals/tools/helpers/overview.md +3 -3
  702. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +2 -2
  703. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +2 -2
  704. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +2 -2
  705. package/docs/fundamentals/tools/singleton-manager/index.md +2 -2
  706. package/docs/fundamentals/tools/singleton-manager/overview.md +6 -6
  707. package/docs/guides/how-to/create-a-custom-field.md +7 -7
  708. package/docs/guides/how-to/create-a-form.md +6 -6
  709. package/docs/guides/how-to/extend-a-native-input.md +4 -4
  710. package/docs/guides/how-to/get-started.md +2 -2
  711. package/docs/guides/how-to/index.md +1 -1
  712. package/docs/guides/index.md +8 -8
  713. package/docs/guides/principles/definitions-and-terms.md +2 -2
  714. package/docs/guides/principles/index.md +5 -5
  715. package/docs/guides/principles/scoped-elements.md +2 -2
  716. package/docs/guides/principles/styling.md +3 -3
  717. package/docs/guides/principles/subclasser-apis.md +2 -2
  718. package/exports/define/lion-accordion.js +0 -1
  719. package/exports/define/lion-button-reset.js +0 -1
  720. package/exports/define/lion-button-submit.js +0 -1
  721. package/exports/define/lion-button.js +0 -1
  722. package/exports/define/lion-calendar.js +0 -1
  723. package/exports/define/lion-checkbox-group.js +0 -1
  724. package/exports/define/lion-checkbox-indeterminate.js +0 -1
  725. package/exports/define/lion-checkbox.js +0 -1
  726. package/exports/define/lion-collapsible.js +0 -1
  727. package/exports/define/lion-combobox.js +0 -1
  728. package/exports/define/lion-dialog.js +0 -1
  729. package/exports/define/lion-drawer.js +0 -1
  730. package/exports/define/lion-field.js +0 -1
  731. package/exports/define/lion-fieldset.js +0 -1
  732. package/exports/define/lion-form.js +0 -1
  733. package/exports/define/lion-icon.js +0 -1
  734. package/exports/define/lion-input-amount-dropdown.js +0 -1
  735. package/exports/define/lion-input-amount.js +0 -1
  736. package/exports/define/lion-input-date.js +0 -1
  737. package/exports/define/lion-input-datepicker.js +0 -1
  738. package/exports/define/lion-input-email.js +0 -1
  739. package/exports/define/lion-input-file.js +0 -1
  740. package/exports/define/lion-input-iban.js +0 -1
  741. package/exports/define/lion-input-range.js +0 -1
  742. package/exports/define/lion-input-stepper.js +0 -1
  743. package/exports/define/lion-input-tel-dropdown.js +0 -1
  744. package/exports/define/lion-input-tel.js +0 -1
  745. package/exports/define/lion-input.js +0 -1
  746. package/exports/define/lion-item.js +0 -1
  747. package/exports/define/lion-listbox.js +0 -1
  748. package/exports/define/lion-menu.js +0 -1
  749. package/exports/define/lion-menuitem.js +0 -1
  750. package/exports/define/lion-option.js +0 -1
  751. package/exports/define/lion-options.js +0 -1
  752. package/exports/define/lion-pagination.js +0 -1
  753. package/exports/define/lion-progress-indicator.js +0 -1
  754. package/exports/define/lion-radio-group.js +0 -1
  755. package/exports/define/lion-radio.js +0 -1
  756. package/exports/define/lion-select-invoker.js +0 -1
  757. package/exports/define/lion-select-rich.js +0 -1
  758. package/exports/define/lion-select.js +0 -1
  759. package/exports/define/lion-selected-file-list.js +0 -1
  760. package/exports/define/lion-step.js +0 -1
  761. package/exports/define/lion-steps.js +0 -1
  762. package/exports/define/lion-switch-button.js +0 -1
  763. package/exports/define/lion-switch.js +0 -1
  764. package/exports/define/lion-tabs.js +0 -1
  765. package/exports/define/lion-textarea.js +0 -1
  766. package/exports/define/lion-tooltip.js +0 -1
  767. package/exports/define/lion-validation-feedback.js +0 -1
  768. package/exports/define-helpers/sb-action-logger.js +0 -1
  769. package/exports/define-helpers/sb-locale-switcher.js +0 -1
  770. package/exports/form-core.js +0 -8
  771. package/exports/localize-no-side-effects.js +0 -1
  772. package/exports/localize.js +0 -2
  773. package/exports/overlays.js +0 -4
  774. package/generated/awesome-phonenumber/LICENSE +22 -0
  775. package/generated/awesome-phonenumber/LICENSE.closure-library +176 -0
  776. package/generated/awesome-phonenumber/LICENSE.libphonenumber +176 -0
  777. package/generated/awesome-phonenumber/checksums.json +6 -0
  778. package/generated/awesome-phonenumber/index-esm.mjs +817 -0
  779. package/generated/awesome-phonenumber/index.d.ts +227 -0
  780. package/generated/awesome-phonenumber/index.js +45 -0
  781. package/generated/awesome-phonenumber/lib/index.js +710 -0
  782. package/generated/awesome-phonenumber/package.json +9 -0
  783. package/generated/awesome-phonenumber/provenance.json +13 -0
  784. package/package.json +32 -10
  785. package/web-types.json +1 -1
  786. package/vendor/README.md +0 -61
  787. package/vendor/awesome-phonenumber-7.9.0-tlouisse.libphonenumber-9.0.41.tgz +0 -0
@@ -15,12 +15,9 @@ import {
15
15
 
16
16
  describe('FormControlMixin', () => {
17
17
  const inputSlot = html`<input slot="input" />`;
18
-
19
18
  class FormControlMixinClass extends FormControlMixin(LitElement) {}
20
-
21
19
  const tagString = defineCE(FormControlMixinClass);
22
20
  const tag = unsafeStatic(tagString);
23
-
24
21
  it('is hidden when attribute hidden is true', async () => {
25
22
  const el = await fixture(html`
26
23
  <${tag} hidden>
@@ -29,77 +26,67 @@ describe('FormControlMixin', () => {
29
26
  </${tag}>`);
30
27
  expect(el).not.to.be.displayed;
31
28
  });
32
-
33
29
  describe('Label and helpText api', () => {
34
30
  it('has a label', async () => {
35
- const elAttr = /** @type {FormControlMixinClass} */ (
31
+ const elAttr =
32
+ /** @type {FormControlMixinClass} */
36
33
  await fixture(html`
37
34
  <${tag} label="Email address">${inputSlot}</${tag}>
38
- `)
39
- );
40
-
35
+ `);
41
36
  expect(elAttr.label).to.equal('Email address', 'as an attribute');
42
-
43
- const elProp = /** @type {FormControlMixinClass} */ (
37
+ const elProp =
38
+ /** @type {FormControlMixinClass} */
44
39
  await fixture(html`
45
40
  <${tag}
46
41
  .label=${'Email address'}
47
42
  >${inputSlot}
48
- </${tag}>`)
49
- );
43
+ </${tag}>`);
50
44
  expect(elProp.label).to.equal('Email address', 'as a property');
51
-
52
- const elElem = /** @type {FormControlMixinClass} */ (
45
+ const elElem =
46
+ /** @type {FormControlMixinClass} */
53
47
  await fixture(html`
54
48
  <${tag}>
55
49
  <label slot="label"><b>Email</b> address</label>
56
50
  ${inputSlot}
57
- </${tag}>`)
58
- );
51
+ </${tag}>`);
59
52
  expect(elElem.label).to.equal('Email address', 'as an element');
60
53
  // @ts-expect-error
61
54
  expect(elElem._labelNode.innerHTML).to.equal('<b>Email</b> address', 'html as an element');
62
55
  });
63
-
64
56
  it('has a label that supports inner html', async () => {
65
- const el = /** @type {FormControlMixinClass} */ (
57
+ const el =
58
+ /** @type {FormControlMixinClass} */
66
59
  await fixture(html`
67
60
  <${tag}>
68
61
  <label slot="label">Email <span>address</span></label>
69
62
  ${inputSlot}
70
- </${tag}>`)
71
- );
63
+ </${tag}>`);
72
64
  expect(el.label).to.equal('Email address');
73
65
  // @ts-expect-error
74
66
  expect(el._labelNode.innerHTML).to.equal('Email <span>address</span>');
75
67
  });
76
-
77
68
  it('only takes label of direct child', async () => {
78
- const el = /** @type {FormControlMixinClass} */ (
69
+ const el =
70
+ /** @type {FormControlMixinClass} */
79
71
  await fixture(html`
80
72
  <${tag}>
81
73
  <${tag} label="Email address">
82
74
  ${inputSlot}
83
75
  </${tag}>
84
- </${tag}>`)
85
- );
76
+ </${tag}>`);
86
77
  expect(el.label).to.equal('');
87
78
  });
88
-
89
79
  it('supports empty string as label', async () => {
90
- const el = /** @type {FormControlMixinClass} */ (
80
+ const el =
81
+ /** @type {FormControlMixinClass} */
91
82
  await fixture(html`
92
83
  <${tag} label="With Value">${inputSlot}</${tag}>
93
- `)
94
- );
95
-
84
+ `);
96
85
  expect(el.label).to.equal('With Value');
97
86
  // @ts-expect-error
98
87
  expect(el._labelNode.innerHTML).to.equal('With Value');
99
-
100
88
  el.label = '';
101
89
  await el.updateComplete;
102
-
103
90
  expect(el.label).to.equal('');
104
91
  // @ts-expect-error
105
92
  expect(el._labelNode.innerHTML).to.equal('');
@@ -107,14 +94,11 @@ describe('FormControlMixin', () => {
107
94
  // Reset
108
95
  el.label = 'With Value';
109
96
  await el.updateComplete;
110
-
111
97
  expect(el.label).to.equal('With Value');
112
98
  // @ts-expect-error
113
99
  expect(el._labelNode.innerHTML).to.equal('With Value');
114
-
115
100
  el.setAttribute('label', '');
116
101
  await el.updateComplete;
117
-
118
102
  expect(el.label).to.equal('');
119
103
  // @ts-expect-error
120
104
  expect(el._labelNode.innerHTML).to.equal('');
@@ -126,14 +110,13 @@ describe('FormControlMixin', () => {
126
110
  * will not have the desired effect on for instance lion-input
127
111
  */
128
112
  it('supports "label-sr-only" to make label visually hidden, but accessible for screen reader users', async () => {
129
- const el = /** @type {FormControlMixinClass} */ (
113
+ const el =
114
+ /** @type {FormControlMixinClass} */
130
115
  await fixture(html`
131
116
  <${tag} label-sr-only>
132
117
  <label slot="label">Email <span>address</span></label>
133
118
  ${inputSlot}
134
- </${tag}>`)
135
- );
136
-
119
+ </${tag}>`);
137
120
  const expectedValues = {
138
121
  position: 'absolute',
139
122
  top: '0px',
@@ -147,7 +130,6 @@ describe('FormControlMixin', () => {
147
130
  margin: '0px',
148
131
  padding: '0px',
149
132
  };
150
-
151
133
  const labelStyle = window.getComputedStyle(
152
134
  // @ts-ignore
153
135
  el.shadowRoot?.querySelector('.form-field__label'),
@@ -157,75 +139,66 @@ describe('FormControlMixin', () => {
157
139
  expect(labelStyle[key]).to.equal(val);
158
140
  });
159
141
  });
160
-
161
142
  it('can have a help-text', async () => {
162
- const elAttr = /** @type {FormControlMixinClass} */ (
143
+ const elAttr =
144
+ /** @type {FormControlMixinClass} */
163
145
  await fixture(html`
164
146
  <${tag} help-text="We will not send you any spam">${inputSlot}</${tag}>
165
- `)
166
- );
147
+ `);
167
148
  expect(elAttr.helpText).to.equal('We will not send you any spam', 'as an attribute');
168
-
169
- const elProp = /** @type {FormControlMixinClass} */ (
149
+ const elProp =
150
+ /** @type {FormControlMixinClass} */
170
151
  await fixture(html`
171
152
  <${tag}
172
153
  .helpText=${'We will not send you any spam'}
173
154
  >${inputSlot}
174
- </${tag}>`)
175
- );
155
+ </${tag}>`);
176
156
  expect(elProp.helpText).to.equal('We will not send you any spam', 'as a property');
177
-
178
- const elElem = /** @type {FormControlMixinClass} */ (
157
+ const elElem =
158
+ /** @type {FormControlMixinClass} */
179
159
  await fixture(html`
180
160
  <${tag}>
181
161
  <div slot="help-text">We will <b>not</b> send you any spam</div>
182
162
  ${inputSlot}
183
- </${tag}>`)
184
- );
163
+ </${tag}>`);
185
164
  expect(elElem.helpText).to.equal('We will not send you any spam', 'as an element');
186
165
  // @ts-expect-error
187
166
  expect(elElem._helpTextNode.innerHTML).to.equal('We will <b>not</b> send you any spam');
188
167
  });
189
-
190
168
  it('can have a help-text that supports inner html', async () => {
191
- const el = /** @type {FormControlMixinClass} */ (
169
+ const el =
170
+ /** @type {FormControlMixinClass} */
192
171
  await fixture(html`
193
172
  <${tag}>
194
173
  <div slot="help-text">We will not send you any <span>spam</span></div>
195
174
  ${inputSlot}
196
- </${tag}>`)
197
- );
175
+ </${tag}>`);
198
176
  expect(el.helpText).to.equal('We will not send you any spam');
199
177
  // @ts-expect-error
200
178
  expect(el._helpTextNode.innerHTML).to.equal('We will not send you any <span>spam</span>');
201
179
  });
202
-
203
180
  it('only takes help-text of direct child', async () => {
204
- const el = /** @type {FormControlMixinClass} */ (
181
+ const el =
182
+ /** @type {FormControlMixinClass} */
205
183
  await fixture(html`
206
184
  <${tag}>
207
185
  <${tag} help-text="We will not send you any spam">
208
186
  ${inputSlot}
209
187
  </${tag}>
210
- </${tag}>`)
211
- );
188
+ </${tag}>`);
212
189
  expect(el.helpText).to.equal('');
213
190
  });
214
-
215
191
  it('supports empty string as help-text', async () => {
216
- const el = /** @type {FormControlMixinClass} */ (
192
+ const el =
193
+ /** @type {FormControlMixinClass} */
217
194
  await fixture(html`
218
195
  <${tag} help-text="With Value">${inputSlot}</${tag}>
219
- `)
220
- );
221
-
196
+ `);
222
197
  expect(el.helpText).to.equal('With Value');
223
198
  // @ts-expect-error
224
199
  expect(el._helpTextNode.innerHTML).to.equal('With Value');
225
-
226
200
  el.helpText = '';
227
201
  await el.updateComplete;
228
-
229
202
  expect(el.helpText).to.equal('');
230
203
  // @ts-expect-error
231
204
  expect(el._helpTextNode.innerHTML).to.equal('');
@@ -233,88 +206,72 @@ describe('FormControlMixin', () => {
233
206
  // Reset
234
207
  el.helpText = 'With Value';
235
208
  await el.updateComplete;
236
-
237
209
  expect(el.helpText).to.equal('With Value');
238
210
  // @ts-expect-error
239
211
  expect(el._helpTextNode.innerHTML).to.equal('With Value');
240
-
241
212
  el.setAttribute('help-text', '');
242
213
  await el.updateComplete;
243
-
244
214
  expect(el.helpText).to.equal('');
245
215
  // @ts-expect-error
246
216
  expect(el._helpTextNode.innerHTML).to.equal('');
247
217
  });
248
218
  });
249
-
250
219
  describe('Accessibility', () => {
251
220
  it('does not duplicate aria-describedby and aria-labelledby ids on reconnect', async () => {
252
- const wrapper = /** @type {HTMLElement} */ (
221
+ const wrapper =
222
+ /** @type {HTMLElement} */
253
223
  await fixture(html`
254
224
  <div id="wrapper">
255
225
  <${tag} help-text="This element will be disconnected/reconnected">${inputSlot}</${tag}>
256
226
  </div>
257
- `)
258
- );
259
- const el = /** @type {FormControlMixinClass} */ (wrapper.querySelector(tagString));
227
+ `);
228
+ const el = /** @type {FormControlMixinClass} */ wrapper.querySelector(tagString);
260
229
  const { _inputNode } = getFormControlMembers(el);
261
-
262
- const labelIdsBefore = /** @type {string} */ (_inputNode.getAttribute('aria-labelledby'));
263
- const descriptionIdsBefore = /** @type {string} */ (
264
- _inputNode.getAttribute('aria-describedby')
265
- );
230
+ const labelIdsBefore = /** @type {string} */ _inputNode.getAttribute('aria-labelledby');
231
+ const descriptionIdsBefore =
232
+ /** @type {string} */
233
+ _inputNode.getAttribute('aria-describedby');
266
234
  // Reconnect
267
235
  wrapper.removeChild(el);
268
236
  wrapper.appendChild(el);
269
- const labelIdsAfter = /** @type {string} */ (_inputNode.getAttribute('aria-labelledby'));
270
- const descriptionIdsAfter = /** @type {string} */ (
271
- _inputNode.getAttribute('aria-describedby')
272
- );
273
-
237
+ const labelIdsAfter = /** @type {string} */ _inputNode.getAttribute('aria-labelledby');
238
+ const descriptionIdsAfter = /** @type {string} */ _inputNode.getAttribute('aria-describedby');
274
239
  expect(labelIdsBefore).to.equal(labelIdsAfter);
275
240
  expect(descriptionIdsBefore).to.equal(descriptionIdsAfter);
276
241
  });
277
-
278
242
  it('sets aria-disabled on inputNode based on disabled property', async () => {
279
- const el = /** @type {FormControlMixinClass} */ (
243
+ const el =
244
+ /** @type {FormControlMixinClass} */
280
245
  await fixture(html`
281
246
  <${tag}>${inputSlot}</${tag}>
282
- `)
283
- );
247
+ `);
284
248
  const { _inputNode } = getFormControlMembers(el);
285
249
  expect(_inputNode.hasAttribute('aria-disabled')).to.be.true;
286
250
  expect(_inputNode.getAttribute('aria-disabled')).to.equal('false');
287
-
288
251
  el.disabled = true;
289
-
290
252
  expect(_inputNode.getAttribute('aria-disabled')).to.equal('false');
291
253
  });
292
-
293
254
  it('clicking the label should call `_onLabelClick`', async () => {
294
255
  const spy = sinon.spy();
295
- const el = /** @type {FormControlMixinClass} */ (
256
+ const el =
257
+ /** @type {FormControlMixinClass} */
296
258
  await fixture(html`
297
259
  <${tag} ._onLabelClick="${spy}">
298
260
  ${inputSlot}
299
261
  </${tag}>
300
- `)
301
- );
262
+ `);
302
263
  const { _labelNode } = getFormControlMembers(el);
303
-
304
264
  expect(spy).to.not.have.been.called;
305
265
  _labelNode.click();
306
266
  expect(spy).to.have.been.calledOnce;
307
267
  });
308
-
309
268
  describe('Feedback slot aria-live', () => {
310
269
  // See: https://www.w3.org/WAI/tutorials/forms/notifications/#on-focus-change
311
270
  it(`adds aria-live="polite" to the feedback slot on focus, aria-live="assertive" to the feedback slot on blur,
312
271
  so error messages appearing on blur will be read before those of the next input`, async () => {
313
272
  const FormControlWithRegistrarMixinClass = class extends FormGroupMixin(LitElement) {};
314
-
315
273
  const groupTagString = defineCE(FormControlWithRegistrarMixinClass);
316
274
  const groupTag = unsafeStatic(groupTagString);
317
-
318
275
  const focusableTagString = defineCE(
319
276
  class extends FocusMixin(FormControlMixin(LitElement)) {
320
277
  /**
@@ -326,7 +283,6 @@ describe('FormControlMixin', () => {
326
283
  },
327
284
  );
328
285
  const focusableTag = unsafeStatic(focusableTagString);
329
-
330
286
  const formEl = await fixture(html`
331
287
  <${groupTag} name="form">
332
288
  <${groupTag} name="fieldset">
@@ -361,19 +317,16 @@ describe('FormControlMixin', () => {
361
317
  /**
362
318
  * @typedef {* & import('../types/FormControlMixinTypes.js').FormControlHost} FormControl
363
319
  */
364
- const field1El = /** @type {FormControl} */ (formEl.querySelector('[name=field1]'));
365
- const field2El = /** @type {FormControl} */ (formEl.querySelector('[name=field2]'));
366
- const field3El = /** @type {FormControl} */ (formEl.querySelector('[name=field3]'));
367
- const fieldsetEl = /** @type {FormControl} */ (formEl.querySelector('[name=fieldset]'));
368
-
320
+ const field1El = /** @type {FormControl} */ formEl.querySelector('[name=field1]');
321
+ const field2El = /** @type {FormControl} */ formEl.querySelector('[name=field2]');
322
+ const field3El = /** @type {FormControl} */ formEl.querySelector('[name=field3]');
323
+ const fieldsetEl = /** @type {FormControl} */ formEl.querySelector('[name=fieldset]');
369
324
  field1El.focus();
370
325
  expect(field1El._feedbackNode.getAttribute('aria-live')).to.equal('polite');
371
-
372
326
  field2El.focus();
373
327
  // field1El just blurred
374
328
  expect(field1El._feedbackNode.getAttribute('aria-live')).to.equal('assertive');
375
329
  expect(field2El._feedbackNode.getAttribute('aria-live')).to.equal('polite');
376
-
377
330
  field3El.focus();
378
331
  // field2El just blurred
379
332
  expect(field2El._feedbackNode.getAttribute('aria-live')).to.equal('assertive');
@@ -383,11 +336,11 @@ describe('FormControlMixin', () => {
383
336
  expect(field3El._feedbackNode.getAttribute('aria-live')).to.equal('polite');
384
337
  });
385
338
  });
386
-
387
339
  describe('Adding extra labels and descriptions', () => {
388
340
  it(`supports centrally orchestrated labels/descriptions via addToAriaLabelledBy() /
389
341
  removeFromAriaLabelledBy() / addToAriaDescribedBy() / removeFromAriaDescribedBy()`, async () => {
390
- const wrapper = /** @type {HTMLElement} */ (
342
+ const wrapper =
343
+ /** @type {HTMLElement} */
391
344
  await fixture(html`
392
345
  <div id="wrapper">
393
346
  <${tag}>
@@ -397,9 +350,8 @@ describe('FormControlMixin', () => {
397
350
  </${tag}>
398
351
  <div id="additionalLabel"> This also needs to be read whenever the input has focus</div>
399
352
  <div id="additionalDescription"> Same for this </div>
400
- </div>`)
401
- );
402
- const el = /** @type {FormControlMixinClass} */ (wrapper.querySelector(tagString));
353
+ </div>`);
354
+ const el = /** @type {FormControlMixinClass} */ wrapper.querySelector(tagString);
403
355
  const { _inputNode } = getFormControlMembers(el);
404
356
 
405
357
  // wait until the field element is done rendering
@@ -411,15 +363,15 @@ describe('FormControlMixin', () => {
411
363
 
412
364
  // 1a. addToAriaLabelledBy()
413
365
  // Check if the aria attr is filled initially
414
- expect(/** @type {string} */ (_inputNode.getAttribute('aria-labelledby'))).to.contain(
366
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-labelledby')).to.contain(
415
367
  `label-${inputId}`,
416
368
  );
417
- const additionalLabel = /** @type {HTMLElement} */ (
418
- wrapper.querySelector('#additionalLabel')
419
- );
369
+ const additionalLabel =
370
+ /** @type {HTMLElement} */
371
+ wrapper.querySelector('#additionalLabel');
420
372
  el.addToAriaLabelledBy(additionalLabel);
421
373
  await el.updateComplete;
422
- let labelledbyAttr = /** @type {string} */ (_inputNode.getAttribute('aria-labelledby'));
374
+ let labelledbyAttr = /** @type {string} */ _inputNode.getAttribute('aria-labelledby');
423
375
  // Now check if ids are added to the end (not overridden)
424
376
  expect(labelledbyAttr).to.contain(`additionalLabel`);
425
377
  // Should be placed in the end
@@ -430,17 +382,16 @@ describe('FormControlMixin', () => {
430
382
  // 1b. removeFromAriaLabelledBy()
431
383
  el.removeFromAriaLabelledBy(additionalLabel);
432
384
  await el.updateComplete;
433
- labelledbyAttr = /** @type {string} */ (_inputNode.getAttribute('aria-labelledby'));
385
+ labelledbyAttr = /** @type {string} */ _inputNode.getAttribute('aria-labelledby');
434
386
  // Now check if ids are added to the end (not overridden)
435
387
  expect(labelledbyAttr).to.not.contain(`additionalLabel`);
436
388
 
437
389
  // 2a. addToAriaDescribedBy()
438
390
  // Check if the aria attr is filled initially
439
- expect(/** @type {string} */ (_inputNode.getAttribute('aria-describedby'))).to.contain(
391
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-describedby')).to.contain(
440
392
  `feedback-${inputId}`,
441
393
  );
442
394
  });
443
-
444
395
  it('sorts internal elements based on assigned slots, and allows opt-out', async () => {
445
396
  const wrapper = await fixture(html`
446
397
  <div id="wrapper">
@@ -453,30 +404,29 @@ describe('FormControlMixin', () => {
453
404
  </${tag}>
454
405
  </div>
455
406
  `);
456
- const el = /** @type {FormControlMixinClass} */ (wrapper.querySelector(tagString));
407
+ const el = /** @type {FormControlMixinClass} */ wrapper.querySelector(tagString);
457
408
  const { _inputNode } = getFormControlMembers(el);
458
409
 
459
410
  // N.B. in real life we would never add the input to aria-describedby or -labelledby,
460
411
  // but this example purely demonstrates dom order is respected.
461
412
  // A real life scenario would be for instance when
462
413
  // a Field or FormGroup would be extended and an extra slot would be added in the template
463
- const myInput = /** @type {HTMLElement} */ (wrapper.querySelector('#myInput'));
464
- const internalLabel = /** @type {HTMLElement} */ (wrapper.querySelector('#internalLabel'));
465
- const internalDescription = /** @type {HTMLElement} */ (
466
- wrapper.querySelector('#internalDescription')
467
- );
468
-
414
+ const myInput = /** @type {HTMLElement} */ wrapper.querySelector('#myInput');
415
+ const internalLabel = /** @type {HTMLElement} */ wrapper.querySelector('#internalLabel');
416
+ const internalDescription =
417
+ /** @type {HTMLElement} */
418
+ wrapper.querySelector('#internalDescription');
469
419
  el.addToAriaLabelledBy(myInput);
470
420
  await el.updateComplete;
471
421
  el.addToAriaDescribedBy(myInput);
472
422
  await el.updateComplete;
473
-
474
- expect(
475
- /** @type {string} */ (_inputNode.getAttribute('aria-labelledby')).split(' '),
476
- ).to.eql(['internalLabel', 'myInput']);
477
- expect(
478
- /** @type {string} */ (_inputNode.getAttribute('aria-describedby')).split(' '),
479
- ).to.eql(['internalDescription', 'myInput']);
423
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-labelledby').split(' ')).to.eql([
424
+ 'internalLabel',
425
+ 'myInput',
426
+ ]);
427
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-describedby').split(' ')).to.eql(
428
+ ['internalDescription', 'myInput'],
429
+ );
480
430
 
481
431
  // cleanup
482
432
  el.removeFromAriaLabelledBy(internalLabel);
@@ -485,19 +435,22 @@ describe('FormControlMixin', () => {
485
435
  await el.updateComplete;
486
436
 
487
437
  // opt-out of reorder
488
- el.addToAriaLabelledBy(internalLabel, { reorder: false });
438
+ el.addToAriaLabelledBy(internalLabel, {
439
+ reorder: false,
440
+ });
489
441
  await el.updateComplete;
490
- el.addToAriaDescribedBy(internalDescription, { reorder: false });
442
+ el.addToAriaDescribedBy(internalDescription, {
443
+ reorder: false,
444
+ });
491
445
  await el.updateComplete;
492
-
493
- expect(
494
- /** @type {string} */ (_inputNode.getAttribute('aria-labelledby')).split(' '),
495
- ).to.eql(['myInput', 'internalLabel']);
496
- expect(
497
- /** @type {string} */ (_inputNode.getAttribute('aria-describedby')).split(' '),
498
- ).to.eql(['myInput', 'internalDescription']);
446
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-labelledby').split(' ')).to.eql([
447
+ 'myInput',
448
+ 'internalLabel',
449
+ ]);
450
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-describedby').split(' ')).to.eql(
451
+ ['myInput', 'internalDescription'],
452
+ );
499
453
  });
500
-
501
454
  it('respects provided order for external elements', async () => {
502
455
  const wrapper = await fixture(html`
503
456
  <div id="wrapper">
@@ -511,65 +464,59 @@ describe('FormControlMixin', () => {
511
464
  <div id="externalLabelB">should go after input internals</div>
512
465
  <div id="externalDescriptionB">should go after input internals</div>
513
466
  </div>`);
514
- const el = /** @type {FormControlMixinClass} */ (wrapper.querySelector(tagString));
467
+ const el = /** @type {FormControlMixinClass} */ wrapper.querySelector(tagString);
515
468
  const { _inputNode } = getFormControlMembers(el);
516
469
 
517
470
  // 1. addToAriaLabelledBy()
518
- const labelA = /** @type {HTMLElement} */ (wrapper.querySelector('#externalLabelA'));
519
- const labelB = /** @type {HTMLElement} */ (wrapper.querySelector('#externalLabelB'));
471
+ const labelA = /** @type {HTMLElement} */ wrapper.querySelector('#externalLabelA');
472
+ const labelB = /** @type {HTMLElement} */ wrapper.querySelector('#externalLabelB');
520
473
  // external inputs should go in order defined by user
521
474
  el.addToAriaLabelledBy(labelA);
522
475
  el.addToAriaLabelledBy(labelB);
523
476
  await el.updateComplete;
524
-
525
- expect(
526
- /** @type {string} */ (_inputNode.getAttribute('aria-labelledby')).split(' '),
527
- ).to.eql(['internalLabel', 'externalLabelA', 'externalLabelB']);
477
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-labelledby').split(' ')).to.eql([
478
+ 'internalLabel',
479
+ 'externalLabelA',
480
+ 'externalLabelB',
481
+ ]);
528
482
 
529
483
  // 2. addToAriaDescribedBy()
530
- const descrA = /** @type {HTMLElement} */ (wrapper.querySelector('#externalDescriptionA'));
531
- const descrB = /** @type {HTMLElement} */ (wrapper.querySelector('#externalDescriptionB'));
532
-
484
+ const descrA = /** @type {HTMLElement} */ wrapper.querySelector('#externalDescriptionA');
485
+ const descrB = /** @type {HTMLElement} */ wrapper.querySelector('#externalDescriptionB');
533
486
  el.addToAriaDescribedBy(descrA);
534
487
  el.addToAriaDescribedBy(descrB);
535
488
  await el.updateComplete;
536
-
537
- expect(
538
- /** @type {string} */ (_inputNode.getAttribute('aria-describedby')).split(' '),
539
- ).to.eql(['internalDescription', 'externalDescriptionA', 'externalDescriptionB']);
489
+ expect(/** @type {string} */ _inputNode.getAttribute('aria-describedby').split(' ')).to.eql(
490
+ ['internalDescription', 'externalDescriptionA', 'externalDescriptionB'],
491
+ );
540
492
  });
541
493
  });
542
494
  });
543
-
544
495
  describe('Model-value-changed event propagation', () => {
545
496
  const FormControlWithRegistrarMixinClass = class extends FormControlMixin(
546
497
  FormRegistrarMixin(LitElement),
547
498
  ) {};
548
-
549
499
  const groupElem = defineCE(FormControlWithRegistrarMixinClass);
550
500
  const groupTag = unsafeStatic(groupElem);
551
-
552
501
  describe('On initialization', () => {
553
502
  it('redispatches one event from host', async () => {
554
503
  const formSpy = sinon.spy();
555
504
  const fieldsetSpy = sinon.spy();
556
- const formEl = /** @type {FormControlMixinClass} */ (
505
+ const formEl =
506
+ /** @type {FormControlMixinClass} */
557
507
  await fixture(html`
558
508
  <${groupTag} name="form" ._repropagationRole=${'form-group'} @model-value-changed=${formSpy}>
559
509
  <${groupTag} name="fieldset" ._repropagationRole=${'form-group'} @model-value-changed=${fieldsetSpy}>
560
510
  <${tag} name="field"></${tag}>
561
511
  </${groupTag}>
562
512
  </${groupTag}>
563
- `)
564
- );
513
+ `);
565
514
  const fieldsetEl = formEl.querySelector('[name=fieldset]');
566
-
567
515
  expect(fieldsetSpy.callCount).to.equal(1);
568
516
  const fieldsetEv = fieldsetSpy.firstCall.args[0];
569
517
  expect(fieldsetEv.target).to.equal(fieldsetEl);
570
518
  expect(fieldsetEv.detail.formPath).to.eql([fieldsetEl]);
571
519
  expect(fieldsetEv.detail.initialize).to.be.true;
572
-
573
520
  expect(formSpy.callCount).to.equal(1);
574
521
  const formEv = formSpy.firstCall.args[0];
575
522
  expect(formEv.target).to.equal(formEl);
@@ -595,24 +542,23 @@ describe('FormControlMixin', () => {
595
542
  `);
596
543
  const fieldEl = formEl.querySelector('[name=field]');
597
544
  const fieldsetEl = formEl.querySelector('[name=fieldset]');
598
-
599
545
  formEl.addEventListener('model-value-changed', formSpy);
600
546
  fieldsetEl?.addEventListener('model-value-changed', fieldsetSpy);
601
547
  fieldEl?.addEventListener('model-value-changed', fieldSpy);
602
-
603
- fieldEl?.dispatchEvent(new Event('model-value-changed', { bubbles: true }));
604
-
548
+ fieldEl?.dispatchEvent(
549
+ new Event('model-value-changed', {
550
+ bubbles: true,
551
+ }),
552
+ );
605
553
  expect(fieldsetSpy.callCount).to.equal(1);
606
554
  const fieldsetEv = fieldsetSpy.firstCall.args[0];
607
555
  expect(fieldsetEv.target).to.equal(fieldsetEl);
608
556
  expect(fieldsetEv.detail.formPath).to.eql([fieldEl, fieldsetEl]);
609
-
610
557
  expect(formSpy.callCount).to.equal(1);
611
558
  const formEv = formSpy.firstCall.args[0];
612
559
  expect(formEv.target).to.equal(formEl);
613
560
  expect(formEv.detail.formPath).to.eql([fieldEl, fieldsetEl, formEl]);
614
561
  });
615
-
616
562
  it('sets "isTriggeredByUser" event detail when event triggered by user', async () => {
617
563
  const formSpy = sinon.spy();
618
564
  const fieldsetSpy = sinon.spy();
@@ -626,21 +572,19 @@ describe('FormControlMixin', () => {
626
572
  `);
627
573
  const fieldEl = formEl.querySelector('[name=field]');
628
574
  const fieldsetEl = formEl.querySelector('[name=fieldset]');
629
-
630
575
  formEl.addEventListener('model-value-changed', formSpy);
631
576
  fieldsetEl?.addEventListener('model-value-changed', fieldsetSpy);
632
577
  fieldEl?.addEventListener('model-value-changed', fieldSpy);
633
-
634
578
  fieldEl?.dispatchEvent(
635
579
  new CustomEvent('model-value-changed', {
636
580
  bubbles: true,
637
- detail: { isTriggeredByUser: true },
581
+ detail: {
582
+ isTriggeredByUser: true,
583
+ },
638
584
  }),
639
585
  );
640
-
641
586
  const fieldsetEv = fieldsetSpy.firstCall.args[0];
642
587
  expect(fieldsetEv.detail.isTriggeredByUser).to.be.true;
643
-
644
588
  const formEv = formSpy.firstCall.args[0];
645
589
  expect(formEv.detail.isTriggeredByUser).to.be.true;
646
590
  });
@@ -1,12 +1,10 @@
1
1
  import { LitElement } from 'lit';
2
2
  import { html } from 'lit/static-html.js';
3
3
  import { runRegistrationSuite } from '../test-suites/FormRegistrationMixins.suite.js';
4
-
5
4
  runRegistrationSuite({
6
5
  suffix: 'with LitElement',
7
6
  baseElement: LitElement,
8
7
  });
9
-
10
8
  runRegistrationSuite({
11
9
  suffix: 'with LitElement, using shadow dom',
12
10
  baseElement: class ShadowElement extends LitElement {