@lion/ui 0.22.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 (901) hide show
  1. package/README.md +65 -0
  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 +45 -55
  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 +598 -860
  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 -357
  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-core/types/choice-group/ChoiceGroupMixinTypes.ts +5 -0
  157. package/components/form-integrations/test/dialog-integrations.test.js +1 -4
  158. package/components/form-integrations/test/form-group-methods.test.js +28 -31
  159. package/components/form-integrations/test/form-integrations.test.js +27 -28
  160. package/components/form-integrations/test/form-validation-integrations.test.js +21 -29
  161. package/components/form-integrations/test/helpers/umbrella-form.js +3 -5
  162. package/components/form-integrations/test/model-value-consistency.test.js +75 -77
  163. package/components/form-integrations/test/model-value-event.test.js +10 -20
  164. package/components/helpers/src/SbActionLogger.js +13 -17
  165. package/components/helpers/src/SbLocaleSwitcher.js +5 -5
  166. package/components/helpers/src/sortEachDepth.js +0 -2
  167. package/components/helpers/test/renderLitAsNode.test.js +0 -4
  168. package/components/helpers/test/sb-action-logger.test.js +24 -55
  169. package/components/icon/src/IconManager.js +0 -2
  170. package/components/icon/src/LionIcon.js +2 -7
  171. package/components/icon/src/icons.js +0 -2
  172. package/components/icon/test/IconManager.test.js +0 -15
  173. package/components/icon/test/hammer.svg.js +3 -4
  174. package/components/icon/test/heart.svg.js +3 -4
  175. package/components/icon/test/lion-icon.test.js +14 -43
  176. package/components/input/src/LionInput.js +2 -8
  177. package/components/input/test/input-integrations.test.js +0 -5
  178. package/components/input/test/lion-input-integrations.test.js +0 -4
  179. package/components/input/test/lion-input.test.js +28 -58
  180. package/components/input/test-helpers/getInputMembers.js +2 -2
  181. package/components/input-amount/src/LionInputAmount.js +37 -26
  182. package/components/input-amount/src/formatters.js +4 -5
  183. package/components/input-amount/src/parsers.js +0 -3
  184. package/components/input-amount/test/formatters.test.js +102 -80
  185. package/components/input-amount/test/lion-input-amount-integrations.test.js +0 -4
  186. package/components/input-amount/test/lion-input-amount.test.js +155 -164
  187. package/components/input-amount/test/parsers.test.js +33 -17
  188. package/components/input-amount/test/preprocessors.test.js +0 -3
  189. package/components/input-amount-dropdown/src/LionInputAmountDropdown.js +49 -59
  190. package/components/input-amount-dropdown/src/currencyUtil.js +8 -7
  191. package/components/input-amount-dropdown/src/parsers.js +0 -1
  192. package/components/input-amount-dropdown/src/validators.js +0 -1
  193. package/components/input-amount-dropdown/test/LionInputAmountDropdown.test.js +34 -36
  194. package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +18 -13
  195. package/components/input-amount-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
  196. package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +132 -107
  197. package/components/input-date/src/LionInputDate.js +4 -3
  198. package/components/input-date/test/lion-input-date-integrations.test.js +0 -3
  199. package/components/input-date/test/lion-input-date.test.js +19 -32
  200. package/components/input-datepicker/src/LionInputDatepicker.js +17 -29
  201. package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -2
  202. package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +0 -3
  203. package/components/input-datepicker/test/lion-input-datepicker.test.js +88 -153
  204. package/components/input-datepicker/test-helpers/DatepickerInputObject.js +9 -12
  205. package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +6 -4
  206. package/components/input-datepicker/translations/bg-BG.js +0 -1
  207. package/components/input-datepicker/translations/cs-CZ.js +0 -1
  208. package/components/input-datepicker/translations/de-DE.js +0 -1
  209. package/components/input-datepicker/translations/en-AU.js +0 -1
  210. package/components/input-datepicker/translations/en-GB.js +0 -1
  211. package/components/input-datepicker/translations/en-US.js +0 -1
  212. package/components/input-datepicker/translations/es-ES.js +0 -1
  213. package/components/input-datepicker/translations/fr-BE.js +0 -1
  214. package/components/input-datepicker/translations/fr-FR.js +0 -1
  215. package/components/input-datepicker/translations/hu-HU.js +0 -1
  216. package/components/input-datepicker/translations/it-IT.js +0 -1
  217. package/components/input-datepicker/translations/nl-BE.js +0 -1
  218. package/components/input-datepicker/translations/nl-NL.js +0 -1
  219. package/components/input-datepicker/translations/pl-PL.js +0 -1
  220. package/components/input-datepicker/translations/ro-RO.js +0 -1
  221. package/components/input-datepicker/translations/ru-RU.js +0 -1
  222. package/components/input-datepicker/translations/sk-SK.js +0 -1
  223. package/components/input-datepicker/translations/tr-TR.js +0 -1
  224. package/components/input-datepicker/translations/uk-UA.js +0 -1
  225. package/components/input-email/test/lion-input-email-integrations.test.js +0 -2
  226. package/components/input-email/test/lion-input-email.test.js +1 -7
  227. package/components/input-file/src/FileHandle.js +0 -3
  228. package/components/input-file/src/LionInputFile.js +85 -83
  229. package/components/input-file/src/LionSelectedFileList.js +12 -12
  230. package/components/input-file/src/validators.js +10 -9
  231. package/components/input-file/test/FileValidators.test.js +170 -80
  232. package/components/input-file/test/lion-input-file.test.js +160 -244
  233. package/components/input-file/test/lion-selected-file-list.test.js +13 -22
  234. package/components/input-file/translations/bg-BG.js +0 -1
  235. package/components/input-file/translations/cs-CZ.js +0 -1
  236. package/components/input-file/translations/de-DE.js +0 -1
  237. package/components/input-file/translations/en-AU.js +0 -1
  238. package/components/input-file/translations/en-GB.js +0 -1
  239. package/components/input-file/translations/en-PH.js +0 -1
  240. package/components/input-file/translations/en-US.js +0 -1
  241. package/components/input-file/translations/en.js +2 -1
  242. package/components/input-file/translations/es-ES.js +0 -1
  243. package/components/input-file/translations/fr-BE.js +0 -1
  244. package/components/input-file/translations/fr-FR.js +0 -1
  245. package/components/input-file/translations/hu-HU.js +0 -1
  246. package/components/input-file/translations/id-ID.js +0 -1
  247. package/components/input-file/translations/id.js +2 -1
  248. package/components/input-file/translations/it-IT.js +0 -1
  249. package/components/input-file/translations/nl-BE.js +0 -1
  250. package/components/input-file/translations/nl-NL.js +0 -1
  251. package/components/input-file/translations/pl-PL.js +0 -1
  252. package/components/input-file/translations/ro-RO.js +0 -1
  253. package/components/input-file/translations/ru-RU.js +0 -1
  254. package/components/input-file/translations/sk-SK.js +0 -1
  255. package/components/input-file/translations/uk-UA.js +0 -1
  256. package/components/input-file/translations/zh-CN.js +0 -1
  257. package/components/input-iban/src/validators.js +6 -11
  258. package/components/input-iban/test/formatters.test.js +0 -3
  259. package/components/input-iban/test/lion-input-iban-integrations.test.js +0 -2
  260. package/components/input-iban/test/lion-input-iban.test.js +1 -9
  261. package/components/input-iban/test/parsers.test.js +0 -2
  262. package/components/input-iban/test/validators.test.js +0 -12
  263. package/components/input-iban/translations/bg-BG.js +0 -1
  264. package/components/input-iban/translations/cs-CZ.js +0 -1
  265. package/components/input-iban/translations/de-DE.js +0 -1
  266. package/components/input-iban/translations/en-AU.js +0 -1
  267. package/components/input-iban/translations/en-GB.js +0 -1
  268. package/components/input-iban/translations/en-US.js +0 -1
  269. package/components/input-iban/translations/es-ES.js +0 -1
  270. package/components/input-iban/translations/fr-BE.js +0 -1
  271. package/components/input-iban/translations/fr-FR.js +0 -1
  272. package/components/input-iban/translations/hu-HU.js +0 -1
  273. package/components/input-iban/translations/it-IT.js +0 -1
  274. package/components/input-iban/translations/nl-BE.js +0 -1
  275. package/components/input-iban/translations/nl-NL.js +0 -1
  276. package/components/input-iban/translations/pl-PL.js +0 -1
  277. package/components/input-iban/translations/ro-RO.js +0 -1
  278. package/components/input-iban/translations/ru-RU.js +0 -1
  279. package/components/input-iban/translations/sk-SK.js +0 -1
  280. package/components/input-iban/translations/uk-UA.js +0 -1
  281. package/components/input-range/src/LionInputRange.js +18 -19
  282. package/components/input-range/test/lion-input-range.test.js +23 -48
  283. package/components/input-range/translations/bg-BG.js +0 -1
  284. package/components/input-range/translations/cs-CZ.js +0 -1
  285. package/components/input-range/translations/de-DE.js +0 -1
  286. package/components/input-range/translations/en-AU.js +0 -1
  287. package/components/input-range/translations/en-GB.js +0 -1
  288. package/components/input-range/translations/en-PH.js +0 -1
  289. package/components/input-range/translations/en-US.js +0 -1
  290. package/components/input-range/translations/es-ES.js +0 -1
  291. package/components/input-range/translations/fr-BE.js +0 -1
  292. package/components/input-range/translations/fr-FR.js +0 -1
  293. package/components/input-range/translations/hu-HU.js +0 -1
  294. package/components/input-range/translations/it-IT.js +0 -1
  295. package/components/input-range/translations/nl-BE.js +0 -1
  296. package/components/input-range/translations/nl-NL.js +0 -1
  297. package/components/input-range/translations/pl-PL.js +0 -1
  298. package/components/input-range/translations/ro-RO.js +0 -1
  299. package/components/input-range/translations/ru-RU.js +0 -1
  300. package/components/input-range/translations/sk-SK.js +0 -1
  301. package/components/input-range/translations/uk-UA.js +0 -1
  302. package/components/input-range/translations/zh-CN.js +0 -1
  303. package/components/input-stepper/src/LionInputStepper.js +19 -38
  304. package/components/input-stepper/test/lion-input-stepper-integrations.test.js +0 -1
  305. package/components/input-stepper/test/lion-input-stepper.test.js +0 -1
  306. package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +0 -2
  307. package/components/input-stepper/test-suites/lion-input-stepper.suite.js +56 -105
  308. package/components/input-stepper/translations/bg-BG.js +0 -1
  309. package/components/input-stepper/translations/cs-CZ.js +0 -1
  310. package/components/input-stepper/translations/de-DE.js +0 -1
  311. package/components/input-stepper/translations/en-AU.js +0 -1
  312. package/components/input-stepper/translations/en-GB.js +0 -1
  313. package/components/input-stepper/translations/en-US.js +0 -1
  314. package/components/input-stepper/translations/es-ES.js +0 -1
  315. package/components/input-stepper/translations/fr-BE.js +0 -1
  316. package/components/input-stepper/translations/fr-FR.js +0 -1
  317. package/components/input-stepper/translations/hu-HU.js +0 -1
  318. package/components/input-stepper/translations/it-IT.js +0 -1
  319. package/components/input-stepper/translations/nl-BE.js +0 -1
  320. package/components/input-stepper/translations/nl-NL.js +0 -1
  321. package/components/input-stepper/translations/pl-PL.js +0 -1
  322. package/components/input-stepper/translations/ro-RO.js +0 -1
  323. package/components/input-stepper/translations/ru-RU.js +0 -1
  324. package/components/input-stepper/translations/sk-SK.js +0 -1
  325. package/components/input-stepper/translations/uk-UA.js +0 -1
  326. package/components/input-tel/src/LionInputTel.js +53 -37
  327. package/components/input-tel/src/PhoneUtilManager.js +6 -4
  328. package/components/input-tel/src/formatters.js +12 -10
  329. package/components/input-tel/src/parsers.js +3 -3
  330. package/components/input-tel/src/preprocessors.js +15 -7
  331. package/components/input-tel/src/validators.js +4 -6
  332. package/components/input-tel/test/LionInputTel.test.js +4 -2
  333. package/components/input-tel/test/formatters.test.js +22 -10
  334. package/components/input-tel/test/parsers.test.js +40 -11
  335. package/components/input-tel/test/preprocessors.test.js +24 -13
  336. package/components/input-tel/test/validators.test.js +15 -13
  337. package/components/input-tel/test-helpers/mockPhoneUtilManager.js +7 -6
  338. package/components/input-tel/test-suites/LionInputTel.suite.js +33 -73
  339. package/components/input-tel/translations/bg-BG.js +0 -1
  340. package/components/input-tel/translations/cs-CZ.js +0 -1
  341. package/components/input-tel/translations/de-DE.js +0 -1
  342. package/components/input-tel/translations/en-AU.js +0 -1
  343. package/components/input-tel/translations/en-GB.js +0 -1
  344. package/components/input-tel/translations/en-US.js +0 -1
  345. package/components/input-tel/translations/es-ES.js +0 -1
  346. package/components/input-tel/translations/fr-BE.js +0 -1
  347. package/components/input-tel/translations/fr-FR.js +0 -1
  348. package/components/input-tel/translations/hu-HU.js +0 -1
  349. package/components/input-tel/translations/it-IT.js +0 -1
  350. package/components/input-tel/translations/nl-BE.js +0 -1
  351. package/components/input-tel/translations/nl-NL.js +0 -1
  352. package/components/input-tel/translations/pl-PL.js +0 -1
  353. package/components/input-tel/translations/ro-RO.js +0 -1
  354. package/components/input-tel/translations/ru-RU.js +0 -1
  355. package/components/input-tel/translations/sk-SK.js +0 -1
  356. package/components/input-tel/translations/uk-UA.js +0 -1
  357. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +10 -28
  358. package/components/input-tel-dropdown/src/regionCodeToLocale.js +3 -1
  359. package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +31 -38
  360. package/components/input-tel-dropdown/test/regionCodeToLocale.test.js +0 -1
  361. package/components/input-tel-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
  362. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +16 -11
  363. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +54 -79
  364. package/components/listbox/src/LionListbox.js +4 -1
  365. package/components/listbox/src/LionOption.js +8 -7
  366. package/components/listbox/src/LionOptions.js +0 -3
  367. package/components/listbox/src/ListboxMixin.js +801 -819
  368. package/components/listbox/test/lion-listbox.test.js +0 -1
  369. package/components/listbox/test/lion-option.test.js +53 -64
  370. package/components/listbox/test/lion-options.test.js +3 -4
  371. package/components/listbox/test-helpers/getListboxMembers.js +6 -3
  372. package/components/listbox/test-suites/ListboxMixin.suite.js +101 -261
  373. package/components/listbox/types/ListboxMixinTypes.ts +7 -1
  374. package/components/localize/src/LocalizeManager.js +40 -40
  375. package/components/localize/src/LocalizeMixin.js +130 -157
  376. package/components/localize/src/date/formatDate.js +1 -5
  377. package/components/localize/src/date/getDateFormatBasedOnLocale.js +5 -3
  378. package/components/localize/src/date/getMonthNames.js +3 -5
  379. package/components/localize/src/date/getWeekdayNames.js +1 -5
  380. package/components/localize/src/date/parseDate.js +5 -20
  381. package/components/localize/src/date/utils/normalizeIntlDate.js +0 -7
  382. package/components/localize/src/getLocalizeManager.js +0 -3
  383. package/components/localize/src/number/formatNumber.js +3 -7
  384. package/components/localize/src/number/formatNumberToParts.js +52 -18
  385. package/components/localize/src/number/getCurrencyName.js +5 -5
  386. package/components/localize/src/number/getFractionDigits.js +4 -4
  387. package/components/localize/src/number/getSeparatorsFromNumber.js +1 -3
  388. package/components/localize/src/number/parseNumber.js +0 -3
  389. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceAddGroupSeparators.js +0 -1
  390. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceSpaceBetweenCurrencyCodeAndNumber.js +4 -1
  391. package/components/localize/test/LocalizeManager.test.js +385 -278
  392. package/components/localize/test/LocalizeMixin.test.js +28 -112
  393. package/components/localize/test/date/formatDate.test.js +18 -48
  394. package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +0 -3
  395. package/components/localize/test/date/getMonthNames.test.js +27 -12
  396. package/components/localize/test/date/getWeekdayNames.test.js +93 -49
  397. package/components/localize/test/date/normalizeDateTime.test.js +0 -2
  398. package/components/localize/test/date/parseDate.test.js +12 -16
  399. package/components/localize/test/getLocalizeManager.test.js +0 -3
  400. package/components/localize/test/isLocalizeESModule.test.js +32 -13
  401. package/components/localize/test/localize.test.js +0 -4
  402. package/components/localize/test/number/formatNumber.test.js +215 -106
  403. package/components/localize/test/number/formatNumberToParts.test.js +31 -38
  404. package/components/localize/test/number/getCurrencyName.test.js +20 -6
  405. package/components/localize/test/number/getDecimalSeparator.test.js +5 -4
  406. package/components/localize/test/number/getFractionDigits.test.js +0 -2
  407. package/components/localize/test/number/getGroupSeparator.test.js +0 -2
  408. package/components/localize/test/number/getSeparatorsFromNumber.test.js +5 -3
  409. package/components/localize/test/number/parseNumber.test.js +123 -56
  410. package/components/localize/test/side-effect-free-entrypoint.test.js +0 -6
  411. package/components/localize/test-helpers/fake-imports.js +11 -6
  412. package/components/localize/test-helpers/localizeTearDown.js +0 -1
  413. package/components/menu/README.md +360 -0
  414. package/components/menu/src/InteractiveListMixin.js +866 -0
  415. package/components/menu/src/LionMenu.js +423 -0
  416. package/components/menu/src/MoreButtonMenuMixin.js +272 -0
  417. package/components/menu/src/MultiLevelListMixin.js +306 -0
  418. package/components/menu/src/utils/isInView.js +25 -0
  419. package/components/menu/src/utils/listItemInteractions.js +124 -0
  420. package/components/menu/test/InteractiveListMixin.test.js +2 -0
  421. package/components/menu/test/MoreButtonMenuMixin.test.js +5 -0
  422. package/components/menu/test/MultiLevelListMixin.test.js +2 -0
  423. package/components/menu/test/lion-menu-interactions.test.js +2 -0
  424. package/components/menu/test/lion-menu.test.js +18 -0
  425. package/components/menu/test-helpers/mimicKeyPress.js +19 -0
  426. package/components/menu/test-suites/InteractiveListMixin.suite.js +498 -0
  427. package/components/menu/test-suites/LionMenu.suite.js +107 -0
  428. package/components/menu/test-suites/LionMenuInteractions.suite.js +561 -0
  429. package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +365 -0
  430. package/components/menu/test-suites/MultiLevelListMixin.suite.js +291 -0
  431. package/components/menu/types/InteractiveListMixinTypes.ts +126 -0
  432. package/components/menu/types/MoreButtonMenuMixinTypes.ts +51 -0
  433. package/components/menu/types/MultiLevelListMixinTypes.ts +28 -0
  434. package/components/menu/types/OverlayWithListInvokerMixinTypes.ts +61 -0
  435. package/components/overlays/NEXT.md +49 -0
  436. package/components/overlays/src/ArrowMixin.js +111 -127
  437. package/components/overlays/src/OverlayController.js +440 -246
  438. package/components/overlays/src/OverlayMixin.js +130 -68
  439. package/components/overlays/src/OverlaysManager.js +30 -32
  440. package/components/overlays/src/configurations/visibility-trigger-partials/withClickInteraction.js +0 -1
  441. package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +11 -11
  442. package/components/overlays/src/configurations/withBottomSheetConfig.js +12 -13
  443. package/components/overlays/src/configurations/withDropdownConfig.js +4 -2
  444. package/components/overlays/src/configurations/withModalDialogConfig.js +12 -13
  445. package/components/overlays/src/configurations/withPopoverConfig.js +27 -25
  446. package/components/overlays/src/configurations/withTooltipConfig.js +15 -13
  447. package/components/overlays/src/overlayDocumentStyle.js +1 -1
  448. package/components/overlays/src/overlayShadowDomStyle.js +0 -1
  449. package/components/overlays/src/singleton.js +0 -2
  450. package/components/overlays/src/utils/adopt-styles.js +19 -19
  451. package/components/overlays/src/utils/deep-contains.js +7 -6
  452. package/components/overlays/src/utils/get-focusable-elements.js +7 -10
  453. package/components/overlays/src/utils/inert-siblings.js +2 -4
  454. package/components/overlays/src/utils/is-equal-config.js +14 -6
  455. package/components/overlays/src/utils/is-visible.js +0 -1
  456. package/components/overlays/src/utils/simulate-tab.js +1 -4
  457. package/components/overlays/src/utils/sort-by-tabindex.js +2 -4
  458. package/components/overlays/test/ArrowMixin.test.js +18 -30
  459. package/components/overlays/test/OverlayController.test.js +551 -533
  460. package/components/overlays/test/OverlayMixin.test.js +0 -2
  461. package/components/overlays/test/OverlaysManager.test.js +30 -35
  462. package/components/overlays/test/global-positioning.test.js +6 -10
  463. package/components/overlays/test/local-positioning.test.js +101 -103
  464. package/components/overlays/test/utils-tests/active-element.test.js +12 -27
  465. package/components/overlays/test/utils-tests/adopt-styles.test.js +25 -56
  466. package/components/overlays/test/utils-tests/deep-contains.test.js +73 -74
  467. package/components/overlays/test/utils-tests/get-focusable-elements.test.js +6 -23
  468. package/components/overlays/test/utils-tests/is-equal-config.test.js +32 -13
  469. package/components/overlays/test/utils-tests/visibility.test.js +44 -79
  470. package/components/overlays/test-helpers/createShadowHost.js +5 -3
  471. package/components/overlays/test-helpers/normalizeTransformStyle.js +2 -4
  472. package/components/overlays/test-suites/OverlayMixin.suite.js +159 -188
  473. package/components/overlays/test-suites/WithHoverInteraction.suite.js +96 -79
  474. package/components/overlays/translations/bg-BG.js +0 -1
  475. package/components/overlays/translations/cs-CZ.js +0 -1
  476. package/components/overlays/translations/de-DE.js +0 -1
  477. package/components/overlays/translations/en-AU.js +0 -1
  478. package/components/overlays/translations/en-GB.js +0 -1
  479. package/components/overlays/translations/en-US.js +0 -1
  480. package/components/overlays/translations/es-ES.js +0 -1
  481. package/components/overlays/translations/fr-BE.js +0 -1
  482. package/components/overlays/translations/fr-FR.js +0 -1
  483. package/components/overlays/translations/hu-HU.js +0 -1
  484. package/components/overlays/translations/it-IT.js +0 -1
  485. package/components/overlays/translations/nl-BE.js +0 -1
  486. package/components/overlays/translations/nl-NL.js +0 -1
  487. package/components/overlays/translations/pl-PL.js +0 -1
  488. package/components/overlays/translations/ro-RO.js +0 -1
  489. package/components/overlays/translations/ru-RU.js +0 -1
  490. package/components/overlays/translations/sk-SK.js +0 -1
  491. package/components/overlays/translations/tr-TR.js +0 -1
  492. package/components/overlays/translations/uk-UA.js +0 -1
  493. package/components/overlays/types/ArrowMixinTypes.ts +1 -3
  494. package/components/overlays/types/OverlayConfig.ts +20 -5
  495. package/components/overlays/types/OverlayMixinTypes.ts +2 -0
  496. package/components/pagination/src/LionPagination.js +9 -12
  497. package/components/pagination/test/lion-pagination.test.js +18 -50
  498. package/components/progress-indicator/src/LionProgressIndicator.js +10 -12
  499. package/components/progress-indicator/test/lion-progress-indicator.test.js +1 -22
  500. package/components/radio-group/src/LionRadioGroup.js +1 -2
  501. package/components/radio-group/test/lion-radio-group-integrations.test.js +0 -1
  502. package/components/radio-group/test/lion-radio-group.test.js +27 -27
  503. package/components/radio-group/test/lion-radio-integrations.test.js +3 -2
  504. package/components/radio-group/test/lion-radio.test.js +30 -16
  505. package/components/select/src/LionSelect.js +12 -13
  506. package/components/select/test/lion-select.test.js +7 -12
  507. package/components/select-rich/src/LionSelectInvoker.js +18 -11
  508. package/components/select-rich/src/LionSelectRich.js +32 -43
  509. package/components/select-rich/test/demos.screenshots-test.js +40 -9
  510. package/components/select-rich/test/lion-select-invoker.test.js +26 -43
  511. package/components/select-rich/test/lion-select-listbox-suite-integration.test.js +3 -3
  512. package/components/select-rich/test/lion-select-rich-dialog-integration.test.js +4 -9
  513. package/components/select-rich/test/lion-select-rich-interaction.test.js +154 -101
  514. package/components/select-rich/test/lion-select-rich-upgrade.test.js +26 -0
  515. package/components/select-rich/test/lion-select-rich.test.js +153 -195
  516. package/components/select-rich/test-helpers/getSelectRichMembers.js +4 -1
  517. package/components/steps/src/LionStep.js +21 -12
  518. package/components/steps/src/LionSteps.js +25 -25
  519. package/components/steps/test/lion-step.test.js +18 -25
  520. package/components/steps/test/lion-steps.test.js +45 -78
  521. package/components/switch/src/LionSwitch.js +2 -7
  522. package/components/switch/src/LionSwitchButton.js +5 -6
  523. package/components/switch/test/lion-switch-button.test.js +16 -28
  524. package/components/switch/test/lion-switch.test.js +17 -31
  525. package/components/tabs/src/LionTabs.js +25 -28
  526. package/components/tabs/test/lion-tabs.test.js +156 -154
  527. package/components/textarea/src/LionTextarea.js +4 -23
  528. package/components/textarea/test/lion-textarea-integrations.test.js +0 -5
  529. package/components/textarea/test/lion-textarea.test.js +2 -28
  530. package/components/tooltip/src/LionTooltip.js +6 -6
  531. package/components/tooltip/test/lion-tooltip.test.js +75 -102
  532. package/components/validate-messages/src/getLocalizedMessage.js +8 -7
  533. package/components/validate-messages/src/loadDefaultFeedbackMessages.js +3 -1
  534. package/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js +9 -5
  535. package/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js +5 -2
  536. package/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js +99 -35
  537. package/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js +4 -3
  538. package/components/validate-messages/test/loadDefaultFeedbackMessages.test.js +5 -3
  539. package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.test.js +80 -45
  540. package/components/validate-messages/translations/bg-BG.js +0 -1
  541. package/components/validate-messages/translations/cs-CZ.js +0 -1
  542. package/components/validate-messages/translations/de-DE.js +0 -1
  543. package/components/validate-messages/translations/en-AU.js +0 -1
  544. package/components/validate-messages/translations/en-GB.js +0 -1
  545. package/components/validate-messages/translations/en-PH.js +0 -1
  546. package/components/validate-messages/translations/en-US.js +0 -1
  547. package/components/validate-messages/translations/es-ES.js +0 -1
  548. package/components/validate-messages/translations/fr-BE.js +0 -1
  549. package/components/validate-messages/translations/fr-FR.js +0 -1
  550. package/components/validate-messages/translations/hu-HU.js +0 -1
  551. package/components/validate-messages/translations/it-IT.js +0 -1
  552. package/components/validate-messages/translations/nl-BE.js +0 -1
  553. package/components/validate-messages/translations/nl-NL.js +0 -1
  554. package/components/validate-messages/translations/pl-PL.js +0 -1
  555. package/components/validate-messages/translations/ro-RO.js +0 -1
  556. package/components/validate-messages/translations/ru-RU.js +0 -1
  557. package/components/validate-messages/translations/sk-SK.js +0 -1
  558. package/components/validate-messages/translations/tr-TR.js +0 -1
  559. package/components/validate-messages/translations/uk-UA.js +0 -1
  560. package/custom-elements.json +3312 -206
  561. package/dist-types/components/combobox/src/LionCombobox.d.ts +1 -1
  562. package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
  563. package/dist-types/components/core/src/SlotMixin.d.ts +6 -1
  564. package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
  565. package/dist-types/components/core/types/SlotMixinTypes.d.ts +5 -1
  566. package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
  567. package/dist-types/components/dialog/src/LionDialog.d.ts +6 -2
  568. package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
  569. package/dist-types/components/form-core/src/LionField.d.ts +3 -1
  570. package/dist-types/components/form-core/src/LionField.d.ts.map +1 -1
  571. package/dist-types/components/form-core/src/choice-group/ChoiceGroupMixin.d.ts.map +1 -1
  572. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts +5 -0
  573. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts.map +1 -1
  574. package/dist-types/components/input-amount/src/LionInputAmount.d.ts +3 -1
  575. package/dist-types/components/input-amount/src/LionInputAmount.d.ts.map +1 -1
  576. package/dist-types/components/input-amount/src/formatters.d.ts +6 -4
  577. package/dist-types/components/input-amount/src/formatters.d.ts.map +1 -1
  578. package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
  579. package/dist-types/components/input-tel/src/LionInputTel.d.ts +6 -6
  580. package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
  581. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts +2 -2
  582. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts.map +1 -1
  583. package/dist-types/components/input-tel/src/formatters.d.ts +2 -2
  584. package/dist-types/components/input-tel/src/formatters.d.ts.map +1 -1
  585. package/dist-types/components/input-tel/src/preprocessors.d.ts +2 -2
  586. package/dist-types/components/input-tel/src/preprocessors.d.ts.map +1 -1
  587. package/dist-types/components/input-tel/test/validators.test.d.ts +1 -1
  588. package/dist-types/components/input-tel/test/validators.test.d.ts.map +1 -1
  589. package/dist-types/components/listbox/src/LionOption.d.ts +5 -2
  590. package/dist-types/components/listbox/src/LionOption.d.ts.map +1 -1
  591. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  592. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +7 -1
  593. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
  594. package/dist-types/components/menu/src/InteractiveListMixin.d.ts +35 -0
  595. package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
  596. package/dist-types/components/menu/src/LionMenu.d.ts +129 -0
  597. package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
  598. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +8 -0
  599. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +1 -0
  600. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +7 -0
  601. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
  602. package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
  603. package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
  604. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +48 -0
  605. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
  606. package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts +2 -0
  607. package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts.map +1 -0
  608. package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts +2 -0
  609. package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts.map +1 -0
  610. package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts +2 -0
  611. package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts.map +1 -0
  612. package/dist-types/components/menu/test/lion-menu-interactions.test.d.ts +2 -0
  613. package/dist-types/components/menu/test/lion-menu-interactions.test.d.ts.map +1 -0
  614. package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
  615. package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
  616. package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts +7 -0
  617. package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts.map +1 -0
  618. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +11 -0
  619. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
  620. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +9 -0
  621. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -0
  622. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts +5 -0
  623. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts.map +1 -0
  624. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +11 -0
  625. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -0
  626. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +11 -0
  627. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -0
  628. package/dist-types/components/menu/types/InteractiveListMixinTypes.d.ts +72 -0
  629. package/dist-types/components/menu/types/InteractiveListMixinTypes.d.ts.map +1 -0
  630. package/dist-types/components/menu/types/MoreButtonMenuMixinTypes.d.ts +30 -0
  631. package/dist-types/components/menu/types/MoreButtonMenuMixinTypes.d.ts.map +1 -0
  632. package/dist-types/components/menu/types/MultiLevelListMixinTypes.d.ts +16 -0
  633. package/dist-types/components/menu/types/MultiLevelListMixinTypes.d.ts.map +1 -0
  634. package/dist-types/components/menu/types/OverlayWithListInvokerMixinTypes.d.ts +35 -0
  635. package/dist-types/components/menu/types/OverlayWithListInvokerMixinTypes.d.ts.map +1 -0
  636. package/dist-types/components/overlays/src/OverlayController.d.ts +22 -5
  637. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  638. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  639. package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
  640. package/dist-types/components/overlays/src/overlayDocumentStyle.d.ts.map +1 -1
  641. package/dist-types/components/overlays/src/utils/is-equal-config.d.ts.map +1 -1
  642. package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
  643. package/dist-types/components/overlays/types/OverlayConfig.d.ts +12 -2
  644. package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
  645. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -0
  646. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
  647. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts +3 -1
  648. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts.map +1 -1
  649. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +13 -2
  650. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  651. package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts.map +1 -1
  652. package/dist-types/components/select-rich/test/lion-select-rich-upgrade.test.d.ts +2 -0
  653. package/dist-types/components/select-rich/test/lion-select-rich-upgrade.test.d.ts.map +1 -0
  654. package/dist-types/components/tooltip/src/LionTooltip.d.ts +1 -1
  655. package/dist-types/exports/define/lion-item.d.ts +2 -0
  656. package/dist-types/exports/define/lion-item.d.ts.map +1 -0
  657. package/dist-types/exports/define/lion-menu.d.ts +2 -0
  658. package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
  659. package/dist-types/exports/define/lion-menuitem.d.ts +2 -0
  660. package/dist-types/exports/define/lion-menuitem.d.ts.map +1 -0
  661. package/dist-types/exports/menu-test-suites.d.ts +4 -0
  662. package/dist-types/exports/menu-test-suites.d.ts.map +1 -0
  663. package/dist-types/exports/menu.d.ts +3 -0
  664. package/dist-types/exports/menu.d.ts.map +1 -0
  665. package/dist-types/exports/overlays.d.ts +6 -0
  666. package/dist-types/exports/overlays.d.ts.map +1 -1
  667. package/dist-types/tsconfig.tsbuildinfo +1 -1
  668. package/docs/components/accordion/overview.md +2 -2
  669. package/docs/components/accordion/reference.md +2 -2
  670. package/docs/components/accordion/use-cases.md +2 -2
  671. package/docs/components/button/examples.md +2 -2
  672. package/docs/components/button/extensions.md +2 -2
  673. package/docs/components/button/overview.md +2 -2
  674. package/docs/components/button/use-cases.md +2 -2
  675. package/docs/components/calendar/overview.md +2 -2
  676. package/docs/components/calendar/use-cases.md +2 -2
  677. package/docs/components/checkbox-group/overview.md +4 -4
  678. package/docs/components/checkbox-group/use-cases.md +2 -2
  679. package/docs/components/collapsible/examples.md +2 -2
  680. package/docs/components/collapsible/overview.md +3 -3
  681. package/docs/components/collapsible/use-cases.md +2 -2
  682. package/docs/components/combobox/api-table.md +53 -39
  683. package/docs/components/combobox/extensions.md +2 -2
  684. package/docs/components/combobox/overview.md +3 -3
  685. package/docs/components/combobox/use-cases.md +3 -3
  686. package/docs/components/dialog/api-table.md +32 -6
  687. package/docs/components/dialog/overview.md +3 -3
  688. package/docs/components/dialog/use-cases.md +2 -2
  689. package/docs/components/drawer/overview.md +2 -2
  690. package/docs/components/drawer/use-cases.md +2 -2
  691. package/docs/components/fieldset/overview.md +7 -7
  692. package/docs/components/fieldset/use-cases.md +2 -2
  693. package/docs/components/form/overview.md +5 -5
  694. package/docs/components/form/use-cases.md +4 -4
  695. package/docs/components/icon/overview.md +2 -2
  696. package/docs/components/icon/use-cases.md +3 -3
  697. package/docs/components/input/overview.md +3 -3
  698. package/docs/components/input/use-cases.md +2 -2
  699. package/docs/components/input-amount/api-table.md +9 -7
  700. package/docs/components/input-amount/overview.md +5 -5
  701. package/docs/components/input-amount/use-cases.md +17 -6
  702. package/docs/components/input-amount-dropdown/api-table.md +2 -0
  703. package/docs/components/input-amount-dropdown/use-cases.md +2 -2
  704. package/docs/components/input-date/overview.md +5 -5
  705. package/docs/components/input-date/use-cases.md +2 -2
  706. package/docs/components/input-datepicker/api-table.md +63 -45
  707. package/docs/components/input-datepicker/overview.md +7 -7
  708. package/docs/components/input-datepicker/use-cases.md +2 -2
  709. package/docs/components/input-email/overview.md +4 -4
  710. package/docs/components/input-email/use-cases.md +2 -2
  711. package/docs/components/input-file/overview.md +3 -3
  712. package/docs/components/input-file/use-cases.md +2 -2
  713. package/docs/components/input-iban/overview.md +4 -4
  714. package/docs/components/input-iban/use-cases.md +2 -2
  715. package/docs/components/input-range/overview.md +4 -4
  716. package/docs/components/input-range/use-cases.md +2 -2
  717. package/docs/components/input-stepper/overview.md +3 -3
  718. package/docs/components/input-stepper/use-cases.md +2 -2
  719. package/docs/components/input-tel/overview.md +3 -3
  720. package/docs/components/input-tel/use-cases.md +8 -8
  721. package/docs/components/input-tel-dropdown/extensions.md +2 -2
  722. package/docs/components/input-tel-dropdown/overview.md +3 -3
  723. package/docs/components/input-tel-dropdown/use-cases.md +2 -2
  724. package/docs/components/listbox/overview.md +2 -2
  725. package/docs/components/listbox/use-cases.md +3 -3
  726. package/docs/components/menu/api-table.md +44 -0
  727. package/docs/components/menu/applyMenuDemoStyles.js +173 -0
  728. package/docs/components/menu/extensions.md +262 -0
  729. package/docs/components/menu/index.md +13 -0
  730. package/docs/components/menu/migration.md +129 -0
  731. package/docs/components/menu/overview.md +448 -0
  732. package/docs/components/menu/src/DemoNavigationBar.js +441 -0
  733. package/docs/components/menu/src/DemoSpinButton.js +215 -0
  734. package/docs/components/menu/src/DemoToolbar.js +101 -0
  735. package/docs/components/menu/src/DemoTree.js +55 -0
  736. package/docs/components/menu/src/navigation-bar-types.js +41 -0
  737. package/docs/components/menu/use-cases.md +74 -0
  738. package/docs/components/pagination/overview.md +2 -2
  739. package/docs/components/pagination/use-cases.md +2 -2
  740. package/docs/components/progress-indicator/examples.md +2 -2
  741. package/docs/components/progress-indicator/overview.md +2 -2
  742. package/docs/components/radio-group/overview.md +5 -5
  743. package/docs/components/radio-group/use-cases.md +2 -2
  744. package/docs/components/select/overview.md +2 -2
  745. package/docs/components/select/use-cases.md +3 -3
  746. package/docs/components/select-rich/api-table.md +51 -33
  747. package/docs/components/select-rich/examples.md +2 -2
  748. package/docs/components/select-rich/overview.md +2 -2
  749. package/docs/components/select-rich/use-cases.md +4 -4
  750. package/docs/components/steps/overview.md +2 -2
  751. package/docs/components/steps/use-cases.md +2 -2
  752. package/docs/components/switch/overview.md +2 -2
  753. package/docs/components/switch/reference.md +2 -2
  754. package/docs/components/switch/use-cases.md +2 -2
  755. package/docs/components/tabs/examples.md +3 -3
  756. package/docs/components/tabs/overview.md +2 -2
  757. package/docs/components/tabs/use-cases.md +2 -2
  758. package/docs/components/textarea/overview.md +2 -2
  759. package/docs/components/textarea/use-cases.md +2 -2
  760. package/docs/components/tooltip/api-table.md +33 -7
  761. package/docs/components/tooltip/examples.md +2 -2
  762. package/docs/components/tooltip/overview.md +2 -2
  763. package/docs/components/tooltip/use-cases.md +2 -2
  764. package/docs/fundamentals/index.md +4 -4
  765. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +2 -2
  766. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +2 -2
  767. package/docs/fundamentals/node-tools/providence-analytics/index.md +2 -2
  768. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  769. package/docs/fundamentals/node-tools/publish-docs/index.md +2 -2
  770. package/docs/fundamentals/node-tools/publish-docs/overview.md +5 -5
  771. package/docs/fundamentals/node-tools/remark-extend/index.md +2 -2
  772. package/docs/fundamentals/node-tools/remark-extend/overview.md +2 -2
  773. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +2 -2
  774. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +4 -4
  775. package/docs/fundamentals/rationales/TypeScript.md +62 -2
  776. package/docs/fundamentals/rationales/accessibility.md +5 -5
  777. package/docs/fundamentals/rationales/side-effects.md +2 -2
  778. package/docs/fundamentals/rationales/versioning.md +2 -2
  779. package/docs/fundamentals/systems/core/SlotMixin.md +3 -3
  780. package/docs/fundamentals/systems/core/index.md +2 -2
  781. package/docs/fundamentals/systems/core/overview.md +3 -3
  782. package/docs/fundamentals/systems/form/formatting-and-parsing.md +6 -6
  783. package/docs/fundamentals/systems/form/index.md +2 -2
  784. package/docs/fundamentals/systems/form/interaction-states.md +2 -2
  785. package/docs/fundamentals/systems/form/model-value.md +3 -3
  786. package/docs/fundamentals/systems/form/overview.md +30 -30
  787. package/docs/fundamentals/systems/form/styling.md +2 -2
  788. package/docs/fundamentals/systems/form/use-cases.md +2 -2
  789. package/docs/fundamentals/systems/form/validate.md +4 -4
  790. package/docs/fundamentals/systems/icon/index.md +2 -2
  791. package/docs/fundamentals/systems/icon/overview.md +2 -2
  792. package/docs/fundamentals/systems/localize/dates.md +2 -2
  793. package/docs/fundamentals/systems/localize/index.md +2 -2
  794. package/docs/fundamentals/systems/localize/numbers.md +2 -2
  795. package/docs/fundamentals/systems/localize/overview.md +6 -6
  796. package/docs/fundamentals/systems/localize/rationale.md +2 -2
  797. package/docs/fundamentals/systems/localize/text.md +2 -2
  798. package/docs/fundamentals/systems/localize/use-cases.md +2 -2
  799. package/docs/fundamentals/systems/overlays/_edge-cases.md +2 -2
  800. package/docs/fundamentals/systems/overlays/api-table.md +46 -43
  801. package/docs/fundamentals/systems/overlays/configuration.md +4 -4
  802. package/docs/fundamentals/systems/overlays/index.md +2 -2
  803. package/docs/fundamentals/systems/overlays/overview.md +7 -7
  804. package/docs/fundamentals/systems/overlays/rationale.md +2 -2
  805. package/docs/fundamentals/systems/overlays/use-cases.md +4 -4
  806. package/docs/fundamentals/tools/ajax/index.md +2 -2
  807. package/docs/fundamentals/tools/ajax/overview.md +2 -2
  808. package/docs/fundamentals/tools/ajax/use-cases.md +2 -2
  809. package/docs/fundamentals/tools/helpers/action-logger.md +2 -2
  810. package/docs/fundamentals/tools/helpers/index.md +2 -2
  811. package/docs/fundamentals/tools/helpers/overview.md +3 -3
  812. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +2 -2
  813. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +2 -2
  814. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +2 -2
  815. package/docs/fundamentals/tools/singleton-manager/index.md +2 -2
  816. package/docs/fundamentals/tools/singleton-manager/overview.md +6 -6
  817. package/docs/guides/how-to/create-a-custom-field.md +7 -7
  818. package/docs/guides/how-to/create-a-form.md +6 -6
  819. package/docs/guides/how-to/extend-a-native-input.md +4 -4
  820. package/docs/guides/how-to/get-started.md +2 -2
  821. package/docs/guides/how-to/index.md +1 -1
  822. package/docs/guides/index.md +8 -8
  823. package/docs/guides/principles/definitions-and-terms.md +2 -2
  824. package/docs/guides/principles/index.md +5 -5
  825. package/docs/guides/principles/scoped-elements.md +2 -2
  826. package/docs/guides/principles/styling.md +3 -3
  827. package/docs/guides/principles/subclasser-apis.md +2 -2
  828. package/exports/define/lion-accordion.js +0 -1
  829. package/exports/define/lion-button-reset.js +0 -1
  830. package/exports/define/lion-button-submit.js +0 -1
  831. package/exports/define/lion-button.js +0 -1
  832. package/exports/define/lion-calendar.js +0 -1
  833. package/exports/define/lion-checkbox-group.js +0 -1
  834. package/exports/define/lion-checkbox-indeterminate.js +0 -1
  835. package/exports/define/lion-checkbox.js +0 -1
  836. package/exports/define/lion-collapsible.js +0 -1
  837. package/exports/define/lion-combobox.js +0 -1
  838. package/exports/define/lion-dialog.js +0 -1
  839. package/exports/define/lion-drawer.js +0 -1
  840. package/exports/define/lion-field.js +0 -1
  841. package/exports/define/lion-fieldset.js +0 -1
  842. package/exports/define/lion-form.js +0 -1
  843. package/exports/define/lion-icon.js +0 -1
  844. package/exports/define/lion-input-amount-dropdown.js +0 -1
  845. package/exports/define/lion-input-amount.js +0 -1
  846. package/exports/define/lion-input-date.js +0 -1
  847. package/exports/define/lion-input-datepicker.js +0 -1
  848. package/exports/define/lion-input-email.js +0 -1
  849. package/exports/define/lion-input-file.js +0 -1
  850. package/exports/define/lion-input-iban.js +0 -1
  851. package/exports/define/lion-input-range.js +0 -1
  852. package/exports/define/lion-input-stepper.js +0 -1
  853. package/exports/define/lion-input-tel-dropdown.js +0 -1
  854. package/exports/define/lion-input-tel.js +0 -1
  855. package/exports/define/lion-input.js +0 -1
  856. package/exports/define/lion-item.js +2 -0
  857. package/exports/define/lion-listbox.js +0 -1
  858. package/exports/define/lion-menu.js +2 -0
  859. package/exports/define/lion-menuitem.js +2 -0
  860. package/exports/define/lion-option.js +0 -1
  861. package/exports/define/lion-options.js +0 -1
  862. package/exports/define/lion-pagination.js +0 -1
  863. package/exports/define/lion-progress-indicator.js +0 -1
  864. package/exports/define/lion-radio-group.js +0 -1
  865. package/exports/define/lion-radio.js +0 -1
  866. package/exports/define/lion-select-invoker.js +0 -1
  867. package/exports/define/lion-select-rich.js +0 -1
  868. package/exports/define/lion-select.js +0 -1
  869. package/exports/define/lion-selected-file-list.js +0 -1
  870. package/exports/define/lion-step.js +0 -1
  871. package/exports/define/lion-steps.js +0 -1
  872. package/exports/define/lion-switch-button.js +0 -1
  873. package/exports/define/lion-switch.js +0 -1
  874. package/exports/define/lion-tabs.js +0 -1
  875. package/exports/define/lion-textarea.js +0 -1
  876. package/exports/define/lion-tooltip.js +0 -1
  877. package/exports/define/lion-validation-feedback.js +0 -1
  878. package/exports/define-helpers/sb-action-logger.js +0 -1
  879. package/exports/define-helpers/sb-locale-switcher.js +0 -1
  880. package/exports/form-core.js +0 -8
  881. package/exports/localize-no-side-effects.js +0 -1
  882. package/exports/localize.js +0 -2
  883. package/exports/menu-test-suites.js +4 -0
  884. package/exports/menu.js +3 -0
  885. package/exports/overlays.js +6 -4
  886. package/generated/awesome-phonenumber/LICENSE +22 -0
  887. package/generated/awesome-phonenumber/LICENSE.closure-library +176 -0
  888. package/generated/awesome-phonenumber/LICENSE.libphonenumber +176 -0
  889. package/generated/awesome-phonenumber/checksums.json +6 -0
  890. package/generated/awesome-phonenumber/index-esm.mjs +817 -0
  891. package/generated/awesome-phonenumber/index.d.ts +227 -0
  892. package/generated/awesome-phonenumber/index.js +45 -0
  893. package/generated/awesome-phonenumber/lib/index.js +710 -0
  894. package/generated/awesome-phonenumber/package.json +9 -0
  895. package/generated/awesome-phonenumber/provenance.json +13 -0
  896. package/menu-test-suites.js +4 -0
  897. package/menu.js +3 -0
  898. package/overlays.js +6 -0
  899. package/package.json +35 -6
  900. package/vscode.html-custom-data.json +76 -8
  901. package/web-types.json +202 -17
@@ -19,12 +19,10 @@ import {
19
19
 
20
20
  export function runValidateMixinFeedbackPart() {
21
21
  const localizeManager = getLocalizeManager();
22
-
23
22
  describe('Validity Feedback', () => {
24
23
  beforeEach(() => {
25
24
  localizeTearDown();
26
25
  });
27
-
28
26
  class ValidateElement extends ValidateMixin(LitElement) {
29
27
  connectedCallback() {
30
28
  super.connectedCallback();
@@ -33,10 +31,8 @@ export function runValidateMixinFeedbackPart() {
33
31
  this.appendChild(inputNode);
34
32
  }
35
33
  }
36
-
37
34
  const tagString = defineCE(ValidateElement);
38
35
  const tag = unsafeStatic(tagString);
39
-
40
36
  class ContainsLowercaseA extends Validator {
41
37
  static get validatorName() {
42
38
  return 'ContainsLowercaseA';
@@ -50,7 +46,6 @@ export function runValidateMixinFeedbackPart() {
50
46
  return hasError;
51
47
  }
52
48
  }
53
-
54
49
  class ContainsCat extends Validator {
55
50
  static get validatorName() {
56
51
  return 'ContainsCat';
@@ -64,35 +59,28 @@ export function runValidateMixinFeedbackPart() {
64
59
  return hasError;
65
60
  }
66
61
  }
67
-
68
62
  AlwaysInvalid.getMessage = async () => 'Message for AlwaysInvalid';
69
63
  MinLength.getMessage = async () =>
70
64
  localizeManager.locale === 'de-DE' ? 'Nachricht für MinLength' : 'Message for MinLength';
71
65
  ContainsLowercaseA.getMessage = async () => 'Message for ContainsLowercaseA';
72
66
  ContainsCat.getMessage = async () => 'Message for ContainsCat';
73
-
74
67
  const lightDom = '';
75
-
76
68
  afterEach(() => {
77
69
  sinon.restore();
78
70
  });
79
-
80
71
  it('has .showsFeedbackFor indicating for which type it actually shows messages', async () => {
81
- const el = /** @type {ValidateElement} */ (
72
+ const el =
73
+ /** @type {ValidateElement} */
82
74
  await fixture(html`
83
75
  <${tag} submitted .validators=${[new MinLength(3)]}>${lightDom}</${tag}>
84
- `)
85
- );
86
-
76
+ `);
87
77
  el.modelValue = 'a';
88
78
  await el.feedbackComplete;
89
79
  expect(el.showsFeedbackFor).to.deep.equal(['error']);
90
-
91
80
  el.modelValue = 'abc';
92
81
  await el.feedbackComplete;
93
82
  expect(el.showsFeedbackFor).to.deep.equal([]);
94
83
  });
95
-
96
84
  it('reflects .showsFeedbackFor as attribute joined with "," to be used as a style hook', async () => {
97
85
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
98
86
  static get validationTypes() {
@@ -102,66 +90,63 @@ export function runValidateMixinFeedbackPart() {
102
90
  }
103
91
  const elTagString = defineCE(ValidateElementCustomTypes);
104
92
  const elTag = unsafeStatic(elTagString);
105
- const el = /** @type {ValidateElementCustomTypes} */ (
93
+ const el =
94
+ /** @type {ValidateElementCustomTypes} */
106
95
  await fixture(html`
107
96
  <${elTag}
108
97
  .submitted=${true}
109
98
  .validators=${[
110
- new MinLength(2, { type: 'x' }),
111
- new MinLength(3, { type: 'error' }),
99
+ new MinLength(2, {
100
+ type: 'x',
101
+ }),
102
+ new MinLength(3, {
103
+ type: 'error',
104
+ }),
112
105
  ]}>${lightDom}</${elTag}>
113
- `)
114
- );
115
-
106
+ `);
116
107
  el.modelValue = '1';
117
108
  await el.updateComplete;
118
109
  await el.feedbackComplete;
119
110
  expect(el.showsFeedbackFor).to.deep.equal(['error', 'x']);
120
111
  expect(el.getAttribute('shows-feedback-for')).to.equal('error,x');
121
-
122
112
  el.modelValue = '12';
123
113
  await el.updateComplete;
124
114
  await el.feedbackComplete;
125
115
  expect(el.showsFeedbackFor).to.deep.equal(['error']);
126
116
  expect(el.getAttribute('shows-feedback-for')).to.equal('error');
127
-
128
117
  el.modelValue = '123';
129
118
  await el.updateComplete;
130
119
  await el.feedbackComplete;
131
120
  expect(el.showsFeedbackFor).to.deep.equal([]);
132
121
  expect(el.getAttribute('shows-feedback-for')).to.equal('');
133
122
  });
134
-
135
123
  it('passes a message to the "._feedbackNode"', async () => {
136
- const el = /** @type {ValidateElement} */ (
124
+ const el =
125
+ /** @type {ValidateElement} */
137
126
  await fixture(html`
138
127
  <${tag}
139
128
  .submitted=${true}
140
129
  .modelValue=${'cat'}
141
130
  >${lightDom}</${tag}>
142
- `)
143
- );
131
+ `);
144
132
  const { _feedbackNode } = getFormControlMembers(el);
145
-
146
133
  expect(_feedbackNode.feedbackData).to.deep.equal([]);
147
134
  el.validators = [new AlwaysInvalid()];
148
135
  await el.updateComplete;
149
136
  await el.feedbackComplete;
150
137
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for AlwaysInvalid');
151
138
  });
152
-
153
139
  it('has configurable feedback visibility hook', async () => {
154
- const el = /** @type {ValidateElement} */ (
140
+ const el =
141
+ /** @type {ValidateElement} */
155
142
  await fixture(html`
156
143
  <${tag}
157
144
  .submitted=${true}
158
145
  .modelValue=${'cat'}
159
146
  .validators=${[new AlwaysInvalid()]}
160
147
  >${lightDom}</${tag}>
161
- `)
162
- );
148
+ `);
163
149
  const { _feedbackNode } = getFormControlMembers(el);
164
-
165
150
  await el.updateComplete;
166
151
  await el.feedbackComplete;
167
152
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for AlwaysInvalid');
@@ -172,47 +157,41 @@ export function runValidateMixinFeedbackPart() {
172
157
  await el.feedbackComplete;
173
158
  expect(_feedbackNode.feedbackData).to.deep.equal([]);
174
159
  });
175
-
176
160
  it('writes prioritized result to "._feedbackNode" based on Validator order', async () => {
177
- const el = /** @type {ValidateElement} */ (
161
+ const el =
162
+ /** @type {ValidateElement} */
178
163
  await fixture(html`
179
164
  <${tag}
180
165
  .submitted=${true}
181
166
  .modelValue=${'cat'}
182
167
  .validators=${[new AlwaysInvalid(), new MinLength(4)]}
183
168
  >${lightDom}</${tag}>
184
- `)
185
- );
169
+ `);
186
170
  const { _feedbackNode } = getFormControlMembers(el);
187
-
188
171
  await el.updateComplete;
189
172
  await el.feedbackComplete;
190
173
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for AlwaysInvalid');
191
174
  });
192
-
193
175
  it('renders validation result to "._feedbackNode" when async messages are resolved', async () => {
194
176
  /** @type {function} FIXME: find better way to type this kind of pattern */
195
177
  let unlockMessage = () => {};
196
- const messagePromise = new Promise(resolve => {
178
+ const messagePromise = new Promise((resolve) => {
197
179
  unlockMessage = resolve;
198
180
  });
199
-
200
181
  AlwaysInvalid.getMessage = async () => {
201
182
  await messagePromise;
202
183
  return 'this ends up in "._feedbackNode"';
203
184
  };
204
-
205
- const el = /** @type {ValidateElement} */ (
185
+ const el =
186
+ /** @type {ValidateElement} */
206
187
  await fixture(html`
207
188
  <${tag}
208
189
  .submitted=${true}
209
190
  .modelValue=${'cat'}
210
191
  .validators=${[new AlwaysInvalid()]}
211
192
  >${lightDom}</${tag}>
212
- `)
213
- );
193
+ `);
214
194
  const { _feedbackNode } = getFormControlMembers(el);
215
-
216
195
  expect(_feedbackNode.feedbackData).to.be.undefined;
217
196
  unlockMessage();
218
197
  await el.updateComplete;
@@ -224,41 +203,38 @@ export function runValidateMixinFeedbackPart() {
224
203
  it('renders empty result when Validator.getMessage() returns "null"', async () => {
225
204
  /** @type {function} FIXME: find better way to type this kind of pattern */
226
205
  let unlockMessage = () => {};
227
- const messagePromise = new Promise(resolve => {
206
+ const messagePromise = new Promise((resolve) => {
228
207
  unlockMessage = resolve;
229
208
  });
230
-
231
209
  AlwaysInvalid.getMessage = async () => {
232
210
  await messagePromise;
233
211
  return 'this ends up in "._feedbackNode"';
234
212
  };
235
-
236
- const el = /** @type {ValidateElement} */ (
213
+ const el =
214
+ /** @type {ValidateElement} */
237
215
  await fixture(html`
238
216
  <${tag}
239
217
  .submitted=${true}
240
218
  .modelValue=${'cat'}
241
219
  .validators=${[new AlwaysInvalid()]}
242
220
  >${lightDom}</${tag}>
243
- `)
244
- );
221
+ `);
245
222
  const { _feedbackNode } = getFormControlMembers(el);
246
-
247
223
  expect(_feedbackNode.feedbackData).to.be.undefined;
248
224
  unlockMessage();
249
225
  await el.updateComplete;
250
226
  await el.feedbackComplete;
251
227
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('this ends up in "._feedbackNode"');
252
228
  });
253
-
254
229
  it('supports custom element to render feedback', async () => {
255
230
  class ValidateElementCustomRender extends LitElement {
256
231
  static get properties() {
257
232
  return {
258
- feedbackData: { attribute: false },
233
+ feedbackData: {
234
+ attribute: false,
235
+ },
259
236
  };
260
237
  }
261
-
262
238
  constructor() {
263
239
  super();
264
240
  /**
@@ -271,13 +247,12 @@ export function runValidateMixinFeedbackPart() {
271
247
  /** @type {messageMap[]} */
272
248
  this.feedbackData = [];
273
249
  }
274
-
275
250
  render() {
276
251
  let name = '';
277
252
  if (this.feedbackData && this.feedbackData.length > 0) {
278
- const ctor = /** @type {typeof Validator} */ (
279
- this.feedbackData[0]?.validator?.constructor
280
- );
253
+ const ctor =
254
+ /** @type {typeof Validator} */
255
+ this.feedbackData[0]?.validator?.constructor;
281
256
  name = ctor.validatorName;
282
257
  }
283
258
  return html`Custom for ${name}`;
@@ -285,71 +260,66 @@ export function runValidateMixinFeedbackPart() {
285
260
  }
286
261
  const customFeedbackTagString = defineCE(ValidateElementCustomRender);
287
262
  const customFeedbackTag = unsafeStatic(customFeedbackTagString);
288
- const el = /** @type {ValidateElement} */ (
263
+ const el =
264
+ /** @type {ValidateElement} */
289
265
  await fixture(html`
290
266
  <${tag}
291
267
  .submitted=${true}
292
268
  .validators=${[new ContainsLowercaseA(), new AlwaysInvalid()]}>
293
269
  <${customFeedbackTag} slot="feedback"><${customFeedbackTag}>
294
270
  </${tag}>
295
- `)
296
- );
271
+ `);
297
272
  const { _feedbackNode } = getFormControlMembers(el);
298
-
299
273
  expect(_feedbackNode.localName).to.equal(customFeedbackTagString);
300
-
301
274
  el.modelValue = 'dog';
302
275
  await el.updateComplete;
303
276
  await el.feedbackComplete;
304
277
  await _feedbackNode.updateComplete;
305
278
  expect(_feedbackNode).shadowDom.to.equal('Custom for ContainsLowercaseA');
306
-
307
279
  el.modelValue = 'cat';
308
280
  await el.updateComplete;
309
281
  await el.feedbackComplete;
310
282
  await _feedbackNode.updateComplete;
311
283
  expect(_feedbackNode).shadowDom.to.equal('Custom for AlwaysInvalid');
312
284
  });
313
-
314
285
  it('supports custom messages in Validator instance configuration object', async () => {
315
- const el = /** @type {ValidateElement} */ (
286
+ const el =
287
+ /** @type {ValidateElement} */
316
288
  await fixture(html`
317
289
  <${tag}
318
290
  .submitted=${true}
319
- .validators=${[new MinLength(3, { getMessage: async () => 'custom via config' })]}
291
+ .validators=${[
292
+ new MinLength(3, {
293
+ getMessage: async () => 'custom via config',
294
+ }),
295
+ ]}
320
296
  >${lightDom}</${tag}>
321
- `)
322
- );
297
+ `);
323
298
  const { _feedbackNode } = getFormControlMembers(el);
324
-
325
299
  el.modelValue = 'a';
326
300
  await el.updateComplete;
327
301
  await el.feedbackComplete;
328
302
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('custom via config');
329
303
  });
330
-
331
304
  it('updates the feedback component when locale changes', async () => {
332
- const el = /** @type {ValidateElement} */ (
305
+ const el =
306
+ /** @type {ValidateElement} */
333
307
  await fixture(html`
334
308
  <${tag}
335
309
  .submitted=${true}
336
310
  .validators=${[new MinLength(3)]}
337
311
  .modelValue=${'1'}
338
312
  >${lightDom}</${tag}>
339
- `)
340
- );
313
+ `);
341
314
  const { _feedbackNode } = getFormControlMembers(el);
342
-
343
315
  await el.feedbackComplete;
344
316
  expect(_feedbackNode.feedbackData?.length).to.equal(1);
345
317
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
346
-
347
318
  localizeManager.locale = 'de-DE';
348
319
  await localizeManager.loadingComplete;
349
320
  await el.feedbackComplete;
350
321
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Nachricht für MinLength');
351
322
  });
352
-
353
323
  it('shows success message and clears after 3s', async () => {
354
324
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
355
325
  static get validationTypes() {
@@ -359,24 +329,24 @@ export function runValidateMixinFeedbackPart() {
359
329
  const clock = sinon.useFakeTimers();
360
330
  const elTagString = defineCE(ValidateElementCustomTypes);
361
331
  const elTag = unsafeStatic(elTagString);
362
- const el = /** @type {ValidateElementCustomTypes} */ (
332
+ const el =
333
+ /** @type {ValidateElementCustomTypes} */
363
334
  await fixture(html`
364
335
  <${elTag}
365
336
  .submitted=${true}
366
337
  .validators=${[
367
338
  new MinLength(3),
368
- new DefaultSuccess(null, { getMessage: () => 'This is a success message' }),
339
+ new DefaultSuccess(null, {
340
+ getMessage: () => 'This is a success message',
341
+ }),
369
342
  ]}
370
343
  >${lightDom}</${elTag}>
371
- `)
372
- );
344
+ `);
373
345
  const { _feedbackNode } = getFormControlMembers(el);
374
-
375
346
  el.modelValue = 'a';
376
347
  await el.updateComplete;
377
348
  await el.feedbackComplete;
378
349
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
379
-
380
350
  el.modelValue = 'abcd';
381
351
  await el.updateComplete;
382
352
  await el.feedbackComplete;
@@ -386,7 +356,6 @@ export function runValidateMixinFeedbackPart() {
386
356
  clock.tick(200);
387
357
  expect(_feedbackNode.feedbackData).to.be.empty;
388
358
  });
389
-
390
359
  it('shows success message and clears after configured time', async () => {
391
360
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
392
361
  static get validationTypes() {
@@ -396,7 +365,8 @@ export function runValidateMixinFeedbackPart() {
396
365
  const clock = sinon.useFakeTimers();
397
366
  const elTagString = defineCE(ValidateElementCustomTypes);
398
367
  const elTag = unsafeStatic(elTagString);
399
- const el = /** @type {ValidateElementCustomTypes} */ (
368
+ const el =
369
+ /** @type {ValidateElementCustomTypes} */
400
370
  await fixture(html`
401
371
  <${elTag}
402
372
  .submitted=${true}
@@ -408,15 +378,12 @@ export function runValidateMixinFeedbackPart() {
408
378
  }),
409
379
  ]}
410
380
  >${lightDom}</${elTag}>
411
- `)
412
- );
381
+ `);
413
382
  const { _feedbackNode } = getFormControlMembers(el);
414
-
415
383
  el.modelValue = 'a';
416
384
  await el.updateComplete;
417
385
  await el.feedbackComplete;
418
386
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
419
-
420
387
  el.modelValue = 'abcd';
421
388
  await el.updateComplete;
422
389
  await el.feedbackComplete;
@@ -426,7 +393,6 @@ export function runValidateMixinFeedbackPart() {
426
393
  clock.tick(200);
427
394
  expect(_feedbackNode.feedbackData).to.be.empty;
428
395
  });
429
-
430
396
  it('shows success message and stays persistent', async () => {
431
397
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
432
398
  static get validationTypes() {
@@ -436,7 +402,8 @@ export function runValidateMixinFeedbackPart() {
436
402
  const clock = sinon.useFakeTimers();
437
403
  const elTagString = defineCE(ValidateElementCustomTypes);
438
404
  const elTag = unsafeStatic(elTagString);
439
- const el = /** @type {ValidateElementCustomTypes} */ (
405
+ const el =
406
+ /** @type {ValidateElementCustomTypes} */
440
407
  await fixture(html`
441
408
  <${elTag}
442
409
  .submitted=${true}
@@ -448,15 +415,12 @@ export function runValidateMixinFeedbackPart() {
448
415
  }),
449
416
  ]}
450
417
  >${lightDom}</${elTag}>
451
- `)
452
- );
418
+ `);
453
419
  const { _feedbackNode } = getFormControlMembers(el);
454
-
455
420
  el.modelValue = 'a';
456
421
  await el.updateComplete;
457
422
  await el.feedbackComplete;
458
423
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
459
-
460
424
  el.modelValue = 'abcd';
461
425
  await el.updateComplete;
462
426
  await el.feedbackComplete;
@@ -468,7 +432,6 @@ export function runValidateMixinFeedbackPart() {
468
432
  clock.tick(20000);
469
433
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('This is a success message');
470
434
  });
471
-
472
435
  it('shows success message after fixing an error', async () => {
473
436
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
474
437
  static get validationTypes() {
@@ -477,30 +440,29 @@ export function runValidateMixinFeedbackPart() {
477
440
  }
478
441
  const elTagString = defineCE(ValidateElementCustomTypes);
479
442
  const elTag = unsafeStatic(elTagString);
480
- const el = /** @type {ValidateElementCustomTypes} */ (
443
+ const el =
444
+ /** @type {ValidateElementCustomTypes} */
481
445
  await fixture(html`
482
446
  <${elTag}
483
447
  .submitted=${true}
484
448
  .validators=${[
485
449
  new MinLength(3),
486
- new DefaultSuccess(null, { getMessage: () => 'This is a success message' }),
450
+ new DefaultSuccess(null, {
451
+ getMessage: () => 'This is a success message',
452
+ }),
487
453
  ]}
488
454
  >${lightDom}</${elTag}>
489
- `)
490
- );
455
+ `);
491
456
  const { _feedbackNode } = getFormControlMembers(el);
492
-
493
457
  el.modelValue = 'a';
494
458
  await el.updateComplete;
495
459
  await el.feedbackComplete;
496
460
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Message for MinLength');
497
-
498
461
  el.modelValue = 'abcd';
499
462
  await el.updateComplete;
500
463
  await el.feedbackComplete;
501
464
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('This is a success message');
502
465
  });
503
-
504
466
  it('does not show success message after fixing error an & field is empty', async () => {
505
467
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
506
468
  static get validationTypes() {
@@ -509,58 +471,55 @@ export function runValidateMixinFeedbackPart() {
509
471
  }
510
472
  const elTagString = defineCE(ValidateElementCustomTypes);
511
473
  const elTag = unsafeStatic(elTagString);
512
- const el = /** @type {ValidateElementCustomTypes} */ (
474
+ const el =
475
+ /** @type {ValidateElementCustomTypes} */
513
476
  await fixture(html`
514
477
  <${elTag}
515
478
  .submitted=${true}
516
479
  .validators=${[
517
- new MaxLength(3, { getMessage: async () => 'Max length is 3!' }),
518
- new DefaultSuccess(null, { getMessage: () => 'This is a success message' }),
480
+ new MaxLength(3, {
481
+ getMessage: async () => 'Max length is 3!',
482
+ }),
483
+ new DefaultSuccess(null, {
484
+ getMessage: () => 'This is a success message',
485
+ }),
519
486
  ]}
520
487
  >${lightDom}</${elTag}>
521
- `)
522
- );
488
+ `);
523
489
  const { _feedbackNode } = getFormControlMembers(el);
524
-
525
490
  el.modelValue = 'abcd';
526
491
  await el.updateComplete;
527
492
  await el.feedbackComplete;
528
493
  expect(_feedbackNode.feedbackData?.[0].message).to.equal('Max length is 3!');
529
-
530
494
  el.modelValue = '';
531
495
  await el.updateComplete;
532
496
  await el.feedbackComplete;
533
497
  expect(_feedbackNode.feedbackData).to.deep.equal([]);
534
498
  });
535
-
536
499
  describe('Accessibility', () => {
537
500
  it('sets [aria-invalid="true"] to "._inputNode" when there is an error', async () => {
538
- const el = /** @type {ValidateElement} */ (
501
+ const el =
502
+ /** @type {ValidateElement} */
539
503
  await fixture(html`
540
504
  <${tag}
541
505
  submitted
542
506
  .validators=${[new Required()]}
543
507
  .modelValue=${'a'}
544
508
  >${lightDom}</${tag}>
545
- `)
546
- );
509
+ `);
547
510
  const { _inputNode } = getFormControlMembers(el);
548
-
549
511
  const inputNode = _inputNode;
550
512
  expect(inputNode.getAttribute('aria-invalid')).to.equal('false');
551
-
552
513
  el.modelValue = '';
553
514
  await el.updateComplete;
554
515
  await el.feedbackComplete;
555
516
  expect(inputNode.getAttribute('aria-invalid')).to.equal('true');
556
-
557
517
  el.modelValue = 'a';
558
518
  await el.updateComplete;
559
519
  await el.feedbackComplete;
560
520
  expect(inputNode.getAttribute('aria-invalid')).to.equal('false');
561
521
  });
562
522
  });
563
-
564
523
  describe('FeedbackMessageData', () => {
565
524
  it('".getMessage()" gets a reference to formControl, params, modelValue and type', async () => {
566
525
  class ValidateElementCustomTypes extends ValidateMixin(LitElement) {
@@ -568,27 +527,29 @@ export function runValidateMixinFeedbackPart() {
568
527
  return ['error', 'x'];
569
528
  }
570
529
  }
571
-
572
530
  const elTagString = defineCE(ValidateElementCustomTypes);
573
531
  const elTag = unsafeStatic(elTagString);
574
532
  let el;
575
- const constructorValidator = new MinLength(4, { type: 'x' }); // type to prevent duplicates
576
- const ctorValidator = /** @type {typeof MinLength} */ (constructorValidator.constructor);
533
+ const constructorValidator = new MinLength(4, {
534
+ type: 'x',
535
+ }); // type to prevent duplicates
536
+ const ctorValidator = /** @type {typeof MinLength} */ constructorValidator.constructor;
577
537
  const constructorMessageSpy = sinon.spy(ctorValidator, 'getMessage');
578
-
579
- el = /** @type {ValidateElementCustomTypes} */ (
538
+ el =
539
+ /** @type {ValidateElementCustomTypes} */
580
540
  await fixture(html`
581
541
  <${elTag}
582
542
  .submitted=${true}
583
543
  .validators=${[constructorValidator]}
584
544
  .modelValue=${'cat'}
585
545
  >${lightDom}</${elTag}>
586
- `)
587
- );
546
+ `);
588
547
  await el.updateComplete;
589
548
  await el.feedbackComplete;
590
549
  expect(constructorMessageSpy.args[0][0]).to.eql({
591
- config: { type: 'x' },
550
+ config: {
551
+ type: 'x',
552
+ },
592
553
  params: 4,
593
554
  modelValue: 'cat',
594
555
  formControl: el,
@@ -597,19 +558,19 @@ export function runValidateMixinFeedbackPart() {
597
558
  name: 'MinLength',
598
559
  outcome: true,
599
560
  });
600
-
601
561
  const instanceMessageSpy = sinon.spy();
602
- const instanceValidator = new MinLength(4, { getMessage: instanceMessageSpy });
603
-
604
- el = /** @type {ValidateElementCustomTypes} */ (
562
+ const instanceValidator = new MinLength(4, {
563
+ getMessage: instanceMessageSpy,
564
+ });
565
+ el =
566
+ /** @type {ValidateElementCustomTypes} */
605
567
  await fixture(html`
606
568
  <${elTag}
607
569
  .submitted=${true}
608
570
  .validators=${[instanceValidator]}
609
571
  .modelValue=${'cat'}
610
572
  >${lightDom}</${elTag}>
611
- `)
612
- );
573
+ `);
613
574
  await el.updateComplete;
614
575
  await el.feedbackComplete;
615
576
  expect(instanceMessageSpy.args[0][0]).to.eql({
@@ -625,13 +586,12 @@ export function runValidateMixinFeedbackPart() {
625
586
  outcome: true,
626
587
  });
627
588
  });
628
-
629
589
  it('".getMessage()" gets .fieldName defined on instance', async () => {
630
590
  const constructorValidator = new MinLength(4);
631
- const ctorValidator = /** @type {typeof MinLength} */ (constructorValidator.constructor);
591
+ const ctorValidator = /** @type {typeof MinLength} */ constructorValidator.constructor;
632
592
  const spy = sinon.spy(ctorValidator, 'getMessage');
633
-
634
- const el = /** @type {ValidateElement} */ (
593
+ const el =
594
+ /** @type {ValidateElement} */
635
595
  await fixture(html`
636
596
  <${tag}
637
597
  .submitted=${true}
@@ -643,8 +603,7 @@ export function runValidateMixinFeedbackPart() {
643
603
  ) => resolve('myField'),
644
604
  )}
645
605
  >${lightDom}</${tag}>
646
- `)
647
- );
606
+ `);
648
607
  await el.updateComplete;
649
608
  await el.feedbackComplete;
650
609
  expect(spy.args[0][0]).to.eql({
@@ -658,16 +617,15 @@ export function runValidateMixinFeedbackPart() {
658
617
  outcome: true,
659
618
  });
660
619
  });
661
-
662
620
  it('".getMessage()" gets .fieldName defined on Validator config', async () => {
663
621
  const constructorValidator = new MinLength(4, {
664
622
  // eslint-disable-next-line no-promise-executor-return
665
- fieldName: new Promise(resolve => resolve('myFieldViaCfg')),
623
+ fieldName: new Promise((resolve) => resolve('myFieldViaCfg')),
666
624
  });
667
- const ctorValidator = /** @type {typeof MinLength} */ (constructorValidator.constructor);
625
+ const ctorValidator = /** @type {typeof MinLength} */ constructorValidator.constructor;
668
626
  const spy = sinon.spy(ctorValidator, 'getMessage');
669
-
670
- const el = /** @type {ValidateElement} */ (
627
+ const el =
628
+ /** @type {ValidateElement} */
671
629
  await fixture(html`
672
630
  <${tag}
673
631
  .submitted=${true}
@@ -679,8 +637,7 @@ export function runValidateMixinFeedbackPart() {
679
637
  ) => resolve('myField'),
680
638
  )}
681
639
  >${lightDom}</${tag}>
682
- `)
683
- );
640
+ `);
684
641
  await el.updateComplete;
685
642
  await el.feedbackComplete;
686
643
 
@@ -698,11 +655,9 @@ export function runValidateMixinFeedbackPart() {
698
655
  outcome: true,
699
656
  });
700
657
  });
701
-
702
658
  it('".getMessage()" gets .outcome, which can be "true" or an enum', async () => {
703
659
  class EnumOutComeValidator extends Validator {
704
660
  static validatorName = 'EnumOutCome';
705
-
706
661
  execute() {
707
662
  return 'a-string-instead-of-bool';
708
663
  }
@@ -716,33 +671,29 @@ export function runValidateMixinFeedbackPart() {
716
671
  'a-string-instead-of-bool': 'Msg based on enum output',
717
672
  };
718
673
  // @ts-ignore [dynamic-key-access-in-test]
719
- return results[/** @type {string} */ (outcome)];
674
+ return results[/** @type {string} */ outcome];
720
675
  }
721
676
  }
722
-
723
677
  const enumOutComeValidator = new EnumOutComeValidator();
724
678
  const spy = sinon.spy(
725
- /** @type {typeof EnumOutComeValidator} */ (enumOutComeValidator.constructor),
679
+ /** @type {typeof EnumOutComeValidator} */ enumOutComeValidator.constructor,
726
680
  'getMessage',
727
681
  );
728
-
729
- const el = /** @type {ValidateElement} */ (
682
+ const el =
683
+ /** @type {ValidateElement} */
730
684
  await fixture(html`
731
685
  <${tag}
732
686
  .submitted=${true}
733
687
  .validators=${[enumOutComeValidator]}
734
688
  .modelValue=${'cat'}
735
689
  >${lightDom}</${tag}>
736
- `)
737
- );
690
+ `);
738
691
  await el.updateComplete;
739
692
  await el.feedbackComplete;
740
-
741
693
  const getMessageArs = spy.args[0][0];
742
694
  expect(getMessageArs.outcome).to.equal('a-string-instead-of-bool');
743
695
  });
744
696
  });
745
-
746
697
  it('handles _updateFeedbackComponent with sync and async combinations', async () => {
747
698
  /**
748
699
  * Problem before, without the Queue system:
@@ -754,21 +705,19 @@ export function runValidateMixinFeedbackPart() {
754
705
  * The Queue system solves this by queueing the updateFeedbackComponent tasks and
755
706
  * await them one by one.
756
707
  */
757
- const el = /** @type {ValidateElement} */ (
708
+ const el =
709
+ /** @type {ValidateElement} */
758
710
  await fixture(html`
759
711
  <${tag}
760
712
  .submitted=${true}
761
713
  .validators=${[new MinLength(3)]}
762
714
  .modelValue=${'1'}
763
715
  >${lightDom}</${tag}>
764
- `)
765
- );
716
+ `);
766
717
  const { _feedbackNode } = getFormControlMembers(el);
767
-
768
718
  el.modelValue = '12345';
769
719
  await el.updateComplete;
770
720
  await el.feedbackComplete;
771
-
772
721
  expect(_feedbackNode.feedbackData).to.deep.equal([]);
773
722
  });
774
723
  });