@lion/ui 0.24.0 → 0.26.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 (789) hide show
  1. package/README.md +25 -7
  2. package/accordion-test-suites.js +2 -0
  3. package/collapsible-test-suites.js +1 -0
  4. package/combobox-test-suites.js +2 -0
  5. package/components/accordion/test/lion-accordion.test.js +2 -565
  6. package/components/accordion/test-suites/lion-accordion.suite.js +596 -0
  7. package/components/button/test-suites/LionButton.suite.js +13 -11
  8. package/components/button/test-suites/LionButtonReset.suite.js +11 -3
  9. package/components/button/test-suites/LionButtonSubmit.suite.js +11 -3
  10. package/components/calendar/test/lion-calendar.test.js +1 -1570
  11. package/components/calendar/test-suites/LionCalendar.suite.js +1617 -5
  12. package/components/checkbox-group/test/lion-checkbox-group-integrations.test.js +5 -2
  13. package/components/checkbox-group/test/lion-checkbox-indeterminate-integrations.test.js +13 -4
  14. package/components/checkbox-group/test/lion-checkbox-integrations.test.js +4 -1
  15. package/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.js +54 -54
  16. package/components/collapsible/test/lion-collapsible.test.js +2 -126
  17. package/components/collapsible/test-suites/LionCollapsible.suite.js +147 -0
  18. package/components/combobox/test/lion-combobox-integrations.test.js +11 -4
  19. package/components/combobox/test/lion-combobox.test.js +2 -3622
  20. package/components/combobox/test-suites/lion-combobox.suite.js +3665 -0
  21. package/components/core/src/ScopedElementsMixin.js +16 -1
  22. package/components/core/test-helpers/isElementVisible.js +21 -0
  23. package/components/core/test-helpers/resolveSuiteTag.js +97 -0
  24. package/components/core/types/TestSuiteTypes.ts +43 -0
  25. package/components/dialog/test/lion-dialog.integration.test.js +9 -10
  26. package/components/dialog/test/lion-dialog.test.js +2 -399
  27. package/components/dialog/test-suites/lion-dialog.suite.js +412 -0
  28. package/components/drawer/test/lion-drawer.test.js +2 -84
  29. package/components/drawer/test-suites/LionDrawer.suite.js +108 -0
  30. package/components/fieldset/test/lion-fieldset.test.js +7 -2
  31. package/components/form/test/lion-form.test.js +2 -348
  32. package/components/form/test-suites/lion-form.suite.js +398 -0
  33. package/components/form-core/test/FormatMixin.test.js +4 -1
  34. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.js +13 -0
  35. package/components/form-core/test-suites/FormRegistrationMixins.suite.js +21 -26
  36. package/components/form-core/test-suites/FormatMixin.suite.js +45 -43
  37. package/components/form-core/test-suites/InteractionStateMixin.suite.js +19 -15
  38. package/components/form-core/test-suites/NativeTextFieldMixin.suite.js +8 -9
  39. package/components/form-core/test-suites/ValidateMixin.suite.js +14 -10
  40. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +15 -2
  41. package/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.js +55 -33
  42. package/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.js +7 -6
  43. package/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.js +19 -22
  44. package/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.js +14 -5
  45. package/components/form-core/test-suites/form-group/FormGroupMixin.suite.js +13 -4
  46. package/components/icon/test/lion-icon.test.js +2 -188
  47. package/components/icon/test-suites/lion-icon.suite.js +206 -0
  48. package/components/input/test/input-integrations.test.js +18 -15
  49. package/components/input/test/lion-input-integrations.test.js +7 -3
  50. package/components/input/test/lion-input.test.js +2 -198
  51. package/components/input/test-suites/lion-input.suite.js +214 -0
  52. package/components/input-amount/src/parsers.js +5 -1
  53. package/components/input-amount/test/lion-input-amount-integrations.test.js +7 -3
  54. package/components/input-amount/test/lion-input-amount.test.js +2 -421
  55. package/components/input-amount/test/parsers.test.js +12 -0
  56. package/components/input-amount/test-suites/lion-input-amount.suite.js +418 -0
  57. package/components/input-amount-dropdown/test/LionInputAmountDropdown.test.js +3 -2
  58. package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +4 -2
  59. package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +6 -4
  60. package/components/input-date/test/lion-input-date-integrations.test.js +7 -3
  61. package/components/input-date/test/lion-input-date.test.js +2 -177
  62. package/components/input-date/test-suites/lion-input-date.suite.js +195 -0
  63. package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +7 -3
  64. package/components/input-datepicker/test/lion-input-datepicker.test.js +1 -844
  65. package/components/input-datepicker/test-helpers/DatepickerInputObject.js +26 -0
  66. package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +899 -14
  67. package/components/input-email/test/lion-input-email-integrations.test.js +4 -2
  68. package/components/input-email/test/lion-input-email.test.js +2 -46
  69. package/components/input-email/test-suites/lion-input-email.suite.js +63 -0
  70. package/components/input-file/test/lion-input-file.test.js +2 -1274
  71. package/components/input-file/test-suites/lion-input-file.suite.js +1505 -0
  72. package/components/input-iban/test/lion-input-iban-integrations.test.js +4 -2
  73. package/components/input-iban/test/lion-input-iban.test.js +2 -73
  74. package/components/input-iban/test-suites/lion-input-iban.suite.js +88 -0
  75. package/components/input-range/test/lion-input-range.test.js +2 -176
  76. package/components/input-range/test-suites/lion-input-range.suite.js +195 -0
  77. package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +14 -3
  78. package/components/input-stepper/test-suites/lion-input-stepper.suite.js +14 -10
  79. package/components/input-tel/test/LionInputTel.test.js +3 -1
  80. package/components/input-tel/test/parsers.test.js +87 -0
  81. package/components/input-tel/test-helpers/mockPhoneUtilManager.js +14 -3
  82. package/components/input-tel/test-suites/LionInputTel.suite.js +9 -4
  83. package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +6 -4
  84. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +10 -13
  85. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +6 -5
  86. package/components/listbox/src/LionListbox.js +1 -1
  87. package/components/listbox/test-suites/ListboxMixin.suite.js +19 -19
  88. package/components/menu/test-suites/InteractiveListMixin.suite.js +6 -9
  89. package/components/menu/test-suites/LionMenu.suite.js +6 -10
  90. package/components/menu/test-suites/LionMenuInteractions.suite.js +13 -4
  91. package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +6 -9
  92. package/components/menu/test-suites/MultiLevelListMixin.suite.js +15 -11
  93. package/components/overlays/src/OverlayController.js +7 -2
  94. package/components/overlays/src/OverlayMixin.js +3 -6
  95. package/components/overlays/test/OverlayController.test.js +37 -1
  96. package/components/overlays/test/invoker-compatibility.test.js +37 -0
  97. package/components/overlays/test-suites/OverlayMixin.suite.js +3 -5
  98. package/components/pagination/test/lion-pagination.test.js +2 -176
  99. package/components/pagination/test-suites/LionPagination.suite.js +201 -0
  100. package/components/progress-indicator/test/lion-progress-indicator.test.js +2 -203
  101. package/components/progress-indicator/test-suites/lion-progress-indicator.suite.js +214 -0
  102. package/components/radio-group/test/lion-radio-group.test.js +2 -162
  103. package/components/radio-group/test/lion-radio.test.js +2 -54
  104. package/components/radio-group/test-suites/lion-radio-group.suite.js +173 -0
  105. package/components/radio-group/test-suites/lion-radio.suite.js +70 -0
  106. package/components/select/test/lion-select.test.js +2 -79
  107. package/components/select/test-suites/LionSelect.suite.js +94 -0
  108. package/components/select-rich/src/LionSelectRich.js +2 -1
  109. package/components/select-rich/test/lion-select-invoker.test.js +2 -86
  110. package/components/select-rich/test/lion-select-rich-interaction.test.js +2 -430
  111. package/components/select-rich/test/lion-select-rich.test.js +2 -1193
  112. package/components/select-rich/test-suites/lion-select-invoker.suite.js +98 -0
  113. package/components/select-rich/test-suites/lion-select-rich-interaction.suite.js +452 -0
  114. package/components/select-rich/test-suites/lion-select-rich.suite.js +1236 -0
  115. package/components/steps/test/lion-step.test.js +2 -97
  116. package/components/steps/test/lion-steps.test.js +2 -433
  117. package/components/steps/test-suites/lion-step.suite.js +113 -0
  118. package/components/steps/test-suites/lion-steps.suite.js +445 -0
  119. package/components/switch/test/lion-switch.test.js +2 -232
  120. package/components/switch/test-suites/lion-switch.suite.js +450 -0
  121. package/components/tabs/test/lion-tabs.test.js +2 -596
  122. package/components/tabs/test-suites/lion-tabs.suite.js +617 -0
  123. package/components/textarea/src/LionTextarea.js +5 -2
  124. package/components/textarea/test/lion-textarea.test.js +2 -159
  125. package/components/textarea/test-suites/lion-textarea.suite.js +192 -0
  126. package/components/tooltip/test/lion-tooltip.test.js +2 -393
  127. package/components/tooltip/test-suites/lion-tooltip.suite.js +409 -0
  128. package/custom-elements.json +14890 -10187
  129. package/dialog-test-suites.js +2 -0
  130. package/dist-types/components/accordion/test/lion-accordion.test.d.ts +1 -2
  131. package/dist-types/components/accordion/test/lion-accordion.test.d.ts.map +1 -1
  132. package/dist-types/components/accordion/test-suites/lion-accordion.suite.d.ts +18 -0
  133. package/dist-types/components/accordion/test-suites/lion-accordion.suite.d.ts.map +1 -0
  134. package/dist-types/components/button/test-suites/LionButton.suite.d.ts +10 -4
  135. package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
  136. package/dist-types/components/button/test-suites/LionButtonReset.suite.d.ts +10 -4
  137. package/dist-types/components/button/test-suites/LionButtonReset.suite.d.ts.map +1 -1
  138. package/dist-types/components/button/test-suites/LionButtonSubmit.suite.d.ts +10 -4
  139. package/dist-types/components/button/test-suites/LionButtonSubmit.suite.d.ts.map +1 -1
  140. package/dist-types/components/calendar/test/lion-calendar.test.d.ts +1 -3
  141. package/dist-types/components/calendar/test/lion-calendar.test.d.ts.map +1 -1
  142. package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts +13 -4
  143. package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts.map +1 -1
  144. package/dist-types/components/checkbox-group/test/lion-checkbox-group-integrations.test.d.ts.map +1 -1
  145. package/dist-types/components/checkbox-group/test/lion-checkbox-integrations.test.d.ts.map +1 -1
  146. package/dist-types/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.d.ts +12 -9
  147. package/dist-types/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.d.ts.map +1 -1
  148. package/dist-types/components/collapsible/test/lion-collapsible.test.d.ts +1 -3
  149. package/dist-types/components/collapsible/test/lion-collapsible.test.d.ts.map +1 -1
  150. package/dist-types/components/collapsible/test-suites/LionCollapsible.suite.d.ts +18 -0
  151. package/dist-types/components/collapsible/test-suites/LionCollapsible.suite.d.ts.map +1 -0
  152. package/dist-types/components/combobox/test/lion-combobox.test.d.ts +1 -5
  153. package/dist-types/components/combobox/test/lion-combobox.test.d.ts.map +1 -1
  154. package/dist-types/components/combobox/test-suites/lion-combobox.suite.d.ts +17 -0
  155. package/dist-types/components/combobox/test-suites/lion-combobox.suite.d.ts.map +1 -0
  156. package/dist-types/components/core/src/ScopedElementsMixin.d.ts.map +1 -1
  157. package/dist-types/components/core/test-helpers/isElementVisible.d.ts +12 -0
  158. package/dist-types/components/core/test-helpers/isElementVisible.d.ts.map +1 -0
  159. package/dist-types/components/core/test-helpers/resolveSuiteTag.d.ts +29 -0
  160. package/dist-types/components/core/test-helpers/resolveSuiteTag.d.ts.map +1 -0
  161. package/dist-types/components/core/types/TestSuiteTypes.d.ts +40 -0
  162. package/dist-types/components/core/types/TestSuiteTypes.d.ts.map +1 -0
  163. package/dist-types/components/dialog/test/lion-dialog.integration.test.d.ts.map +1 -1
  164. package/dist-types/components/dialog/test/lion-dialog.test.d.ts +1 -5
  165. package/dist-types/components/dialog/test/lion-dialog.test.d.ts.map +1 -1
  166. package/dist-types/components/dialog/test-suites/lion-dialog.suite.d.ts +19 -0
  167. package/dist-types/components/dialog/test-suites/lion-dialog.suite.d.ts.map +1 -0
  168. package/dist-types/components/drawer/test/lion-drawer.test.d.ts +1 -3
  169. package/dist-types/components/drawer/test/lion-drawer.test.d.ts.map +1 -1
  170. package/dist-types/components/drawer/test-suites/LionDrawer.suite.d.ts +20 -0
  171. package/dist-types/components/drawer/test-suites/LionDrawer.suite.d.ts.map +1 -0
  172. package/dist-types/components/fieldset/test/lion-fieldset.test.d.ts.map +1 -1
  173. package/dist-types/components/form/test/lion-form.test.d.ts +1 -12
  174. package/dist-types/components/form/test/lion-form.test.d.ts.map +1 -1
  175. package/dist-types/components/form/test-suites/lion-form.suite.d.ts +39 -0
  176. package/dist-types/components/form/test-suites/lion-form.suite.d.ts.map +1 -0
  177. package/dist-types/components/form-core/test-suites/FormRegistrationMixins.suite.d.ts +14 -17
  178. package/dist-types/components/form-core/test-suites/FormRegistrationMixins.suite.d.ts.map +1 -1
  179. package/dist-types/components/form-core/test-suites/FormatMixin.suite.d.ts +22 -38
  180. package/dist-types/components/form-core/test-suites/FormatMixin.suite.d.ts.map +1 -1
  181. package/dist-types/components/form-core/test-suites/InteractionStateMixin.suite.d.ts +11 -5
  182. package/dist-types/components/form-core/test-suites/InteractionStateMixin.suite.d.ts.map +1 -1
  183. package/dist-types/components/form-core/test-suites/NativeTextFieldMixin.suite.d.ts +9 -4
  184. package/dist-types/components/form-core/test-suites/NativeTextFieldMixin.suite.d.ts.map +1 -1
  185. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts +9 -4
  186. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
  187. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts +10 -1
  188. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  189. package/dist-types/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.d.ts +17 -6
  190. package/dist-types/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.d.ts.map +1 -1
  191. package/dist-types/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.d.ts +5 -2
  192. package/dist-types/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.d.ts.map +1 -1
  193. package/dist-types/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.d.ts +10 -5
  194. package/dist-types/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.d.ts.map +1 -1
  195. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.d.ts +10 -5
  196. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.d.ts.map +1 -1
  197. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin.suite.d.ts +10 -5
  198. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin.suite.d.ts.map +1 -1
  199. package/dist-types/components/icon/test/lion-icon.test.d.ts +1 -4
  200. package/dist-types/components/icon/test/lion-icon.test.d.ts.map +1 -1
  201. package/dist-types/components/icon/test-suites/lion-icon.suite.d.ts +16 -0
  202. package/dist-types/components/icon/test-suites/lion-icon.suite.d.ts.map +1 -0
  203. package/dist-types/components/input/test/lion-input-integrations.test.d.ts.map +1 -1
  204. package/dist-types/components/input/test/lion-input.test.d.ts +1 -2
  205. package/dist-types/components/input/test/lion-input.test.d.ts.map +1 -1
  206. package/dist-types/components/input/test-suites/lion-input.suite.d.ts +17 -0
  207. package/dist-types/components/input/test-suites/lion-input.suite.d.ts.map +1 -0
  208. package/dist-types/components/input-amount/src/parsers.d.ts.map +1 -1
  209. package/dist-types/components/input-amount/test/lion-input-amount-integrations.test.d.ts.map +1 -1
  210. package/dist-types/components/input-amount/test/lion-input-amount.test.d.ts +1 -2
  211. package/dist-types/components/input-amount/test/lion-input-amount.test.d.ts.map +1 -1
  212. package/dist-types/components/input-amount/test-suites/lion-input-amount.suite.d.ts +19 -0
  213. package/dist-types/components/input-amount/test-suites/lion-input-amount.suite.d.ts.map +1 -0
  214. package/dist-types/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.d.ts.map +1 -1
  215. package/dist-types/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.d.ts +7 -3
  216. package/dist-types/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.d.ts.map +1 -1
  217. package/dist-types/components/input-date/test/lion-input-date-integrations.test.d.ts.map +1 -1
  218. package/dist-types/components/input-date/test/lion-input-date.test.d.ts +1 -3
  219. package/dist-types/components/input-date/test/lion-input-date.test.d.ts.map +1 -1
  220. package/dist-types/components/input-date/test-suites/lion-input-date.suite.d.ts +15 -0
  221. package/dist-types/components/input-date/test-suites/lion-input-date.suite.d.ts.map +1 -0
  222. package/dist-types/components/input-datepicker/test/lion-input-datepicker-integrations.test.d.ts.map +1 -1
  223. package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts +1 -2
  224. package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts.map +1 -1
  225. package/dist-types/components/input-datepicker/test-helpers/DatepickerInputObject.d.ts +8 -0
  226. package/dist-types/components/input-datepicker/test-helpers/DatepickerInputObject.d.ts.map +1 -1
  227. package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts +15 -5
  228. package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts.map +1 -1
  229. package/dist-types/components/input-email/test/lion-input-email-integrations.test.d.ts.map +1 -1
  230. package/dist-types/components/input-email/test/lion-input-email.test.d.ts +1 -3
  231. package/dist-types/components/input-email/test/lion-input-email.test.d.ts.map +1 -1
  232. package/dist-types/components/input-email/test-suites/lion-input-email.suite.d.ts +15 -0
  233. package/dist-types/components/input-email/test-suites/lion-input-email.suite.d.ts.map +1 -0
  234. package/dist-types/components/input-file/test/lion-input-file.test.d.ts +1 -5
  235. package/dist-types/components/input-file/test/lion-input-file.test.d.ts.map +1 -1
  236. package/dist-types/components/input-file/test-suites/lion-input-file.suite.d.ts +19 -0
  237. package/dist-types/components/input-file/test-suites/lion-input-file.suite.d.ts.map +1 -0
  238. package/dist-types/components/input-iban/test/lion-input-iban-integrations.test.d.ts.map +1 -1
  239. package/dist-types/components/input-iban/test/lion-input-iban.test.d.ts +1 -3
  240. package/dist-types/components/input-iban/test/lion-input-iban.test.d.ts.map +1 -1
  241. package/dist-types/components/input-iban/test-suites/lion-input-iban.suite.d.ts +15 -0
  242. package/dist-types/components/input-iban/test-suites/lion-input-iban.suite.d.ts.map +1 -0
  243. package/dist-types/components/input-range/test/lion-input-range.test.d.ts +1 -3
  244. package/dist-types/components/input-range/test/lion-input-range.test.d.ts.map +1 -1
  245. package/dist-types/components/input-range/test-suites/lion-input-range.suite.d.ts +15 -0
  246. package/dist-types/components/input-range/test-suites/lion-input-range.suite.d.ts.map +1 -0
  247. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.integration.suite.d.ts +10 -2
  248. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.integration.suite.d.ts.map +1 -1
  249. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts +10 -2
  250. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts.map +1 -1
  251. package/dist-types/components/input-tel/test-helpers/mockPhoneUtilManager.d.ts +5 -0
  252. package/dist-types/components/input-tel/test-helpers/mockPhoneUtilManager.d.ts.map +1 -1
  253. package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts +6 -4
  254. package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
  255. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.d.ts +7 -3
  256. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.d.ts.map +1 -1
  257. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.d.ts +7 -3
  258. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.d.ts.map +1 -1
  259. package/dist-types/components/listbox/src/LionListbox.d.ts +2 -2
  260. package/dist-types/components/listbox/src/LionListbox.d.ts.map +1 -1
  261. package/dist-types/components/listbox/test-suites/ListboxMixin.suite.d.ts +3 -4
  262. package/dist-types/components/listbox/test-suites/ListboxMixin.suite.d.ts.map +1 -1
  263. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +6 -5
  264. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -1
  265. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +6 -5
  266. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -1
  267. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts +10 -4
  268. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts.map +1 -1
  269. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +6 -5
  270. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -1
  271. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +7 -6
  272. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -1
  273. package/dist-types/components/overlays/src/OverlayController.d.ts +3 -1
  274. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  275. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  276. package/dist-types/components/overlays/test/invoker-compatibility.test.d.ts +3 -0
  277. package/dist-types/components/overlays/test/invoker-compatibility.test.d.ts.map +1 -0
  278. package/dist-types/components/overlays/test-suites/OverlayMixin.suite.d.ts.map +1 -1
  279. package/dist-types/components/pagination/test/lion-pagination.test.d.ts +1 -3
  280. package/dist-types/components/pagination/test/lion-pagination.test.d.ts.map +1 -1
  281. package/dist-types/components/pagination/test-suites/LionPagination.suite.d.ts +18 -0
  282. package/dist-types/components/pagination/test-suites/LionPagination.suite.d.ts.map +1 -0
  283. package/dist-types/components/progress-indicator/test/lion-progress-indicator.test.d.ts +1 -3
  284. package/dist-types/components/progress-indicator/test/lion-progress-indicator.test.d.ts.map +1 -1
  285. package/dist-types/components/progress-indicator/test-suites/lion-progress-indicator.suite.d.ts +15 -0
  286. package/dist-types/components/progress-indicator/test-suites/lion-progress-indicator.suite.d.ts.map +1 -0
  287. package/dist-types/components/radio-group/test/lion-radio-group.test.d.ts +1 -5
  288. package/dist-types/components/radio-group/test/lion-radio-group.test.d.ts.map +1 -1
  289. package/dist-types/components/radio-group/test/lion-radio.test.d.ts +1 -2
  290. package/dist-types/components/radio-group/test/lion-radio.test.d.ts.map +1 -1
  291. package/dist-types/components/radio-group/test-suites/lion-radio-group.suite.d.ts +19 -0
  292. package/dist-types/components/radio-group/test-suites/lion-radio-group.suite.d.ts.map +1 -0
  293. package/dist-types/components/radio-group/test-suites/lion-radio.suite.d.ts +17 -0
  294. package/dist-types/components/radio-group/test-suites/lion-radio.suite.d.ts.map +1 -0
  295. package/dist-types/components/select/test/lion-select.test.d.ts +1 -2
  296. package/dist-types/components/select/test/lion-select.test.d.ts.map +1 -1
  297. package/dist-types/components/select/test-suites/LionSelect.suite.d.ts +16 -0
  298. package/dist-types/components/select/test-suites/LionSelect.suite.d.ts.map +1 -0
  299. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +5 -4
  300. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  301. package/dist-types/components/select-rich/test/lion-select-invoker.test.d.ts +1 -2
  302. package/dist-types/components/select-rich/test/lion-select-invoker.test.d.ts.map +1 -1
  303. package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts +1 -5
  304. package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts.map +1 -1
  305. package/dist-types/components/select-rich/test/lion-select-rich.test.d.ts +1 -8
  306. package/dist-types/components/select-rich/test/lion-select-rich.test.d.ts.map +1 -1
  307. package/dist-types/components/select-rich/test-suites/lion-select-invoker.suite.d.ts +19 -0
  308. package/dist-types/components/select-rich/test-suites/lion-select-invoker.suite.d.ts.map +1 -0
  309. package/dist-types/components/select-rich/test-suites/lion-select-rich-interaction.suite.d.ts +19 -0
  310. package/dist-types/components/select-rich/test-suites/lion-select-rich-interaction.suite.d.ts.map +1 -0
  311. package/dist-types/components/select-rich/test-suites/lion-select-rich.suite.d.ts +21 -0
  312. package/dist-types/components/select-rich/test-suites/lion-select-rich.suite.d.ts.map +1 -0
  313. package/dist-types/components/steps/test/lion-step.test.d.ts +1 -2
  314. package/dist-types/components/steps/test/lion-step.test.d.ts.map +1 -1
  315. package/dist-types/components/steps/test/lion-steps.test.d.ts +1 -8
  316. package/dist-types/components/steps/test/lion-steps.test.d.ts.map +1 -1
  317. package/dist-types/components/steps/test-suites/lion-step.suite.d.ts +17 -0
  318. package/dist-types/components/steps/test-suites/lion-step.suite.d.ts.map +1 -0
  319. package/dist-types/components/steps/test-suites/lion-steps.suite.d.ts +22 -0
  320. package/dist-types/components/steps/test-suites/lion-steps.suite.d.ts.map +1 -0
  321. package/dist-types/components/switch/test/lion-switch.test.d.ts +1 -4
  322. package/dist-types/components/switch/test/lion-switch.test.d.ts.map +1 -1
  323. package/dist-types/components/switch/test-suites/lion-switch.suite.d.ts +17 -0
  324. package/dist-types/components/switch/test-suites/lion-switch.suite.d.ts.map +1 -0
  325. package/dist-types/components/tabs/test/lion-tabs.test.d.ts +1 -5
  326. package/dist-types/components/tabs/test/lion-tabs.test.d.ts.map +1 -1
  327. package/dist-types/components/tabs/test-suites/lion-tabs.suite.d.ts +17 -0
  328. package/dist-types/components/tabs/test-suites/lion-tabs.suite.d.ts.map +1 -0
  329. package/dist-types/components/textarea/src/LionTextarea.d.ts.map +1 -1
  330. package/dist-types/components/textarea/test/lion-textarea.test.d.ts +1 -3
  331. package/dist-types/components/textarea/test/lion-textarea.test.d.ts.map +1 -1
  332. package/dist-types/components/textarea/test-suites/lion-textarea.suite.d.ts +15 -0
  333. package/dist-types/components/textarea/test-suites/lion-textarea.suite.d.ts.map +1 -0
  334. package/dist-types/components/tooltip/test/lion-tooltip.test.d.ts +1 -3
  335. package/dist-types/components/tooltip/test/lion-tooltip.test.d.ts.map +1 -1
  336. package/dist-types/components/tooltip/test-suites/lion-tooltip.suite.d.ts +19 -0
  337. package/dist-types/components/tooltip/test-suites/lion-tooltip.suite.d.ts.map +1 -0
  338. package/dist-types/exports/accordion-test-suites.d.ts +2 -0
  339. package/dist-types/exports/accordion-test-suites.d.ts.map +1 -0
  340. package/dist-types/exports/collapsible-test-suites.d.ts +2 -0
  341. package/dist-types/exports/collapsible-test-suites.d.ts.map +1 -0
  342. package/dist-types/exports/combobox-test-suites.d.ts +2 -0
  343. package/dist-types/exports/combobox-test-suites.d.ts.map +1 -0
  344. package/dist-types/exports/dialog-test-suites.d.ts +2 -0
  345. package/dist-types/exports/dialog-test-suites.d.ts.map +1 -0
  346. package/dist-types/exports/drawer-test-suites.d.ts +2 -0
  347. package/dist-types/exports/drawer-test-suites.d.ts.map +1 -0
  348. package/dist-types/exports/form-test-suites.d.ts +2 -0
  349. package/dist-types/exports/form-test-suites.d.ts.map +1 -0
  350. package/dist-types/exports/icon-test-suites.d.ts +2 -0
  351. package/dist-types/exports/icon-test-suites.d.ts.map +1 -0
  352. package/dist-types/exports/input-amount-test-suites.d.ts +2 -0
  353. package/dist-types/exports/input-amount-test-suites.d.ts.map +1 -0
  354. package/dist-types/exports/input-date-test-suites.d.ts +2 -0
  355. package/dist-types/exports/input-date-test-suites.d.ts.map +1 -0
  356. package/dist-types/exports/input-email-test-suites.d.ts +2 -0
  357. package/dist-types/exports/input-email-test-suites.d.ts.map +1 -0
  358. package/dist-types/exports/input-file-test-suites.d.ts +2 -0
  359. package/dist-types/exports/input-file-test-suites.d.ts.map +1 -0
  360. package/dist-types/exports/input-iban-test-suites.d.ts +2 -0
  361. package/dist-types/exports/input-iban-test-suites.d.ts.map +1 -0
  362. package/dist-types/exports/input-range-test-suites.d.ts +2 -0
  363. package/dist-types/exports/input-range-test-suites.d.ts.map +1 -0
  364. package/dist-types/exports/input-stepper-suites.d.ts +7 -2
  365. package/dist-types/exports/input-stepper-suites.d.ts.map +1 -1
  366. package/dist-types/exports/input-test-suites.d.ts +2 -0
  367. package/dist-types/exports/input-test-suites.d.ts.map +1 -0
  368. package/dist-types/exports/menu-test-suites.d.ts.map +1 -1
  369. package/dist-types/exports/pagination-test-suites.d.ts +2 -0
  370. package/dist-types/exports/pagination-test-suites.d.ts.map +1 -0
  371. package/dist-types/exports/progress-indicator-test-suites.d.ts +2 -0
  372. package/dist-types/exports/progress-indicator-test-suites.d.ts.map +1 -0
  373. package/dist-types/exports/radio-group-test-suites.d.ts +3 -0
  374. package/dist-types/exports/radio-group-test-suites.d.ts.map +1 -0
  375. package/dist-types/exports/select-rich-test-suites.d.ts +4 -0
  376. package/dist-types/exports/select-rich-test-suites.d.ts.map +1 -0
  377. package/dist-types/exports/select-test-suites.d.ts +2 -0
  378. package/dist-types/exports/select-test-suites.d.ts.map +1 -0
  379. package/dist-types/exports/steps-test-suites.d.ts +3 -0
  380. package/dist-types/exports/steps-test-suites.d.ts.map +1 -0
  381. package/dist-types/exports/switch-test-suites.d.ts +2 -0
  382. package/dist-types/exports/switch-test-suites.d.ts.map +1 -0
  383. package/dist-types/exports/tabs-test-suites.d.ts +2 -0
  384. package/dist-types/exports/tabs-test-suites.d.ts.map +1 -0
  385. package/dist-types/exports/textarea-test-suites.d.ts +2 -0
  386. package/dist-types/exports/textarea-test-suites.d.ts.map +1 -0
  387. package/dist-types/exports/tooltip-test-suites.d.ts +2 -0
  388. package/dist-types/exports/tooltip-test-suites.d.ts.map +1 -0
  389. package/dist-types/exports/types/test-suites.d.ts +4 -0
  390. package/dist-types/exports/types/test-suites.d.ts.map +1 -0
  391. package/dist-types/tsconfig.tsbuildinfo +1 -1
  392. package/drawer-test-suites.js +1 -0
  393. package/exports/accordion-test-suites.js +2 -0
  394. package/exports/collapsible-test-suites.js +1 -0
  395. package/exports/combobox-test-suites.js +2 -0
  396. package/exports/dialog-test-suites.js +2 -0
  397. package/exports/drawer-test-suites.js +1 -0
  398. package/exports/form-test-suites.js +2 -0
  399. package/exports/icon-test-suites.js +2 -0
  400. package/exports/input-amount-test-suites.js +2 -0
  401. package/exports/input-date-test-suites.js +2 -0
  402. package/exports/input-email-test-suites.js +2 -0
  403. package/exports/input-file-test-suites.js +2 -0
  404. package/exports/input-iban-test-suites.js +2 -0
  405. package/exports/input-range-test-suites.js +2 -0
  406. package/exports/input-stepper-suites.js +18 -4
  407. package/exports/input-test-suites.js +2 -0
  408. package/exports/menu-test-suites.js +3 -0
  409. package/exports/pagination-test-suites.js +1 -0
  410. package/exports/progress-indicator-test-suites.js +2 -0
  411. package/exports/radio-group-test-suites.js +3 -0
  412. package/exports/select-rich-test-suites.js +4 -0
  413. package/exports/select-test-suites.js +1 -0
  414. package/exports/steps-test-suites.js +3 -0
  415. package/exports/switch-test-suites.js +2 -0
  416. package/exports/tabs-test-suites.js +2 -0
  417. package/exports/textarea-test-suites.js +2 -0
  418. package/exports/tooltip-test-suites.js +2 -0
  419. package/exports/types/test-suites.ts +3 -0
  420. package/form-test-suites.js +2 -0
  421. package/generated/awesome-phonenumber/provenance.json +1 -1
  422. package/icon-test-suites.js +2 -0
  423. package/input-amount-test-suites.js +2 -0
  424. package/input-date-test-suites.js +2 -0
  425. package/input-email-test-suites.js +2 -0
  426. package/input-file-test-suites.js +2 -0
  427. package/input-iban-test-suites.js +2 -0
  428. package/input-range-test-suites.js +2 -0
  429. package/input-stepper-suites.js +18 -4
  430. package/input-test-suites.js +2 -0
  431. package/menu-test-suites.js +3 -0
  432. package/package.json +11 -7
  433. package/pagination-test-suites.js +1 -0
  434. package/progress-indicator-test-suites.js +2 -0
  435. package/radio-group-test-suites.js +3 -0
  436. package/select-rich-test-suites.js +4 -0
  437. package/select-test-suites.js +1 -0
  438. package/steps-test-suites.js +3 -0
  439. package/switch-test-suites.js +2 -0
  440. package/tabs-test-suites.js +2 -0
  441. package/textarea-test-suites.js +2 -0
  442. package/tooltip-test-suites.js +2 -0
  443. package/vscode.html-custom-data.json +60 -5
  444. package/web-types.json +219 -1
  445. package/components/button/test/demos.screenshots-test.js +0 -100
  446. package/components/calendar/test/demos.screenshots-test.js +0 -118
  447. package/components/input-file/test/lion-selected-file-list.test.js +0 -199
  448. package/components/select-rich/test/demos.screenshots-test.js +0 -168
  449. package/components/switch/test/lion-switch-button.test.js +0 -204
  450. package/dist-types/components/button/test/demos.screenshots-test.d.ts +0 -2
  451. package/dist-types/components/button/test/demos.screenshots-test.d.ts.map +0 -1
  452. package/dist-types/components/calendar/test/demos.screenshots-test.d.ts +0 -2
  453. package/dist-types/components/calendar/test/demos.screenshots-test.d.ts.map +0 -1
  454. package/dist-types/components/input-file/test/lion-selected-file-list.test.d.ts +0 -5
  455. package/dist-types/components/input-file/test/lion-selected-file-list.test.d.ts.map +0 -1
  456. package/dist-types/components/select-rich/test/demos.screenshots-test.d.ts +0 -2
  457. package/dist-types/components/select-rich/test/demos.screenshots-test.d.ts.map +0 -1
  458. package/dist-types/components/switch/test/lion-switch-button.test.d.ts +0 -4
  459. package/dist-types/components/switch/test/lion-switch-button.test.d.ts.map +0 -1
  460. package/docs/components/accordion/api-table.md +0 -53
  461. package/docs/components/accordion/index.md +0 -13
  462. package/docs/components/accordion/overview.md +0 -141
  463. package/docs/components/accordion/reference.md +0 -59
  464. package/docs/components/accordion/use-cases.md +0 -303
  465. package/docs/components/button/api-table.md +0 -84
  466. package/docs/components/button/assets/bootstrap-button.js +0 -245
  467. package/docs/components/button/examples.md +0 -42
  468. package/docs/components/button/extensions.md +0 -42
  469. package/docs/components/button/index.md +0 -13
  470. package/docs/components/button/overview.md +0 -42
  471. package/docs/components/button/src/icon.svg.js +0 -5
  472. package/docs/components/button/use-cases.md +0 -121
  473. package/docs/components/calendar/api-table.md +0 -56
  474. package/docs/components/calendar/index.md +0 -13
  475. package/docs/components/calendar/overview.md +0 -61
  476. package/docs/components/calendar/use-cases.md +0 -243
  477. package/docs/components/checkbox-group/api-table.md +0 -117
  478. package/docs/components/checkbox-group/index.md +0 -13
  479. package/docs/components/checkbox-group/overview.md +0 -51
  480. package/docs/components/checkbox-group/use-cases.md +0 -192
  481. package/docs/components/collapsible/api-table.md +0 -55
  482. package/docs/components/collapsible/assets/CustomCollapsible.js +0 -117
  483. package/docs/components/collapsible/assets/applyDemoCollapsibleStyles.js +0 -41
  484. package/docs/components/collapsible/examples.md +0 -95
  485. package/docs/components/collapsible/index.md +0 -13
  486. package/docs/components/collapsible/overview.md +0 -51
  487. package/docs/components/collapsible/use-cases.md +0 -91
  488. package/docs/components/combobox/api-table.md +0 -122
  489. package/docs/components/combobox/extensions.md +0 -174
  490. package/docs/components/combobox/index.md +0 -13
  491. package/docs/components/combobox/overview.md +0 -74
  492. package/docs/components/combobox/src/LinkMixin.js +0 -60
  493. package/docs/components/combobox/src/demo-selection-display.js +0 -164
  494. package/docs/components/combobox/src/gh-combobox/gh-button.js +0 -71
  495. package/docs/components/combobox/src/gh-combobox/gh-combobox.js +0 -515
  496. package/docs/components/combobox/src/google-combobox/assets/google-clear-icon.js +0 -9
  497. package/docs/components/combobox/src/google-combobox/assets/google-search-icon.js +0 -9
  498. package/docs/components/combobox/src/google-combobox/assets/google-voice-search-icon.js +0 -19
  499. package/docs/components/combobox/src/google-combobox/google-combobox.js +0 -461
  500. package/docs/components/combobox/src/lazyRender.js +0 -29
  501. package/docs/components/combobox/src/levenshtein.js +0 -95
  502. package/docs/components/combobox/src/md-combobox/MdFieldMixin.js +0 -345
  503. package/docs/components/combobox/src/md-combobox/md-combobox.js +0 -91
  504. package/docs/components/combobox/src/md-combobox/md-input.js +0 -5
  505. package/docs/components/combobox/src/md-combobox/style/load-roboto.js +0 -6
  506. package/docs/components/combobox/src/md-combobox/style/md-ripple.js +0 -82
  507. package/docs/components/combobox/src/wa-combobox/wa-combobox.js +0 -375
  508. package/docs/components/combobox/use-cases.md +0 -561
  509. package/docs/components/dialog/api-table.md +0 -61
  510. package/docs/components/dialog/index.md +0 -13
  511. package/docs/components/dialog/overview.md +0 -71
  512. package/docs/components/dialog/src/demoStyle.js +0 -57
  513. package/docs/components/dialog/src/external-dialog.js +0 -32
  514. package/docs/components/dialog/src/slots-dialog-content.js +0 -32
  515. package/docs/components/dialog/src/styled-dialog-content.js +0 -38
  516. package/docs/components/dialog/use-cases.md +0 -199
  517. package/docs/components/drawer/api-table.md +0 -64
  518. package/docs/components/drawer/index.md +0 -13
  519. package/docs/components/drawer/overview.md +0 -80
  520. package/docs/components/drawer/src/demoStyle.js +0 -71
  521. package/docs/components/drawer/use-cases.md +0 -206
  522. package/docs/components/fieldset/api-table.md +0 -24
  523. package/docs/components/fieldset/index.md +0 -13
  524. package/docs/components/fieldset/overview.md +0 -61
  525. package/docs/components/fieldset/use-cases.md +0 -203
  526. package/docs/components/form/api-table.md +0 -12
  527. package/docs/components/form/index.md +0 -13
  528. package/docs/components/form/overview.md +0 -66
  529. package/docs/components/form/use-cases.md +0 -230
  530. package/docs/components/icon/api-table.md +0 -41
  531. package/docs/components/icon/assets/bugs/bug01.svg.js +0 -2
  532. package/docs/components/icon/assets/bugs/bug02.svg.js +0 -2
  533. package/docs/components/icon/assets/bugs/bug05.svg.js +0 -2
  534. package/docs/components/icon/assets/bugs/bug06.svg.js +0 -2
  535. package/docs/components/icon/assets/bugs/bug08.svg.js +0 -2
  536. package/docs/components/icon/assets/bugs/bug12.svg.js +0 -2
  537. package/docs/components/icon/assets/bugs/bug19.svg.js +0 -2
  538. package/docs/components/icon/assets/bugs/bug23.svg.js +0 -2
  539. package/docs/components/icon/assets/bugs/bug24.svg.js +0 -2
  540. package/docs/components/icon/assets/iconset-bugs.js +0 -11
  541. package/docs/components/icon/assets/iconset-misc.js +0 -3
  542. package/docs/components/icon/assets/iconset-space.js +0 -31
  543. package/docs/components/icon/assets/misc/arrowLeft.svg.js +0 -6
  544. package/docs/components/icon/assets/space/aliens-spaceship.svg.js +0 -2
  545. package/docs/components/icon/assets/space/meteor.svg.js +0 -2
  546. package/docs/components/icon/assets/space/moon-flag.svg.js +0 -2
  547. package/docs/components/icon/assets/space/moon.svg.js +0 -2
  548. package/docs/components/icon/assets/space/night.svg.js +0 -2
  549. package/docs/components/icon/assets/space/orbit.svg.js +0 -2
  550. package/docs/components/icon/assets/space/planet.svg.js +0 -2
  551. package/docs/components/icon/assets/space/robot.svg.js +0 -2
  552. package/docs/components/icon/assets/space/rocket.svg.js +0 -2
  553. package/docs/components/icon/assets/space/satellite.svg.js +0 -2
  554. package/docs/components/icon/assets/space/signal.svg.js +0 -2
  555. package/docs/components/icon/assets/space/space-helmet.svg.js +0 -2
  556. package/docs/components/icon/assets/space/sun.svg.js +0 -2
  557. package/docs/components/icon/assets/space/telescope.svg.js +0 -2
  558. package/docs/components/icon/index.md +0 -13
  559. package/docs/components/icon/overview.md +0 -52
  560. package/docs/components/icon/use-cases.md +0 -92
  561. package/docs/components/index.md +0 -17
  562. package/docs/components/input/api-table.md +0 -52
  563. package/docs/components/input/index.md +0 -13
  564. package/docs/components/input/overview.md +0 -48
  565. package/docs/components/input/use-cases.md +0 -90
  566. package/docs/components/input-amount/api-table.md +0 -66
  567. package/docs/components/input-amount/index.md +0 -13
  568. package/docs/components/input-amount/overview.md +0 -61
  569. package/docs/components/input-amount/use-cases.md +0 -147
  570. package/docs/components/input-amount-dropdown/api-table.md +0 -87
  571. package/docs/components/input-amount-dropdown/index.md +0 -13
  572. package/docs/components/input-amount-dropdown/use-cases.md +0 -103
  573. package/docs/components/input-date/api-table.md +0 -58
  574. package/docs/components/input-date/index.md +0 -13
  575. package/docs/components/input-date/overview.md +0 -51
  576. package/docs/components/input-date/use-cases.md +0 -96
  577. package/docs/components/input-datepicker/api-table.md +0 -99
  578. package/docs/components/input-datepicker/index.md +0 -13
  579. package/docs/components/input-datepicker/overview.md +0 -54
  580. package/docs/components/input-datepicker/use-cases.md +0 -117
  581. package/docs/components/input-email/api-table.md +0 -53
  582. package/docs/components/input-email/index.md +0 -13
  583. package/docs/components/input-email/overview.md +0 -44
  584. package/docs/components/input-email/use-cases.md +0 -60
  585. package/docs/components/input-file/api-table.md +0 -157
  586. package/docs/components/input-file/index.md +0 -13
  587. package/docs/components/input-file/overview.md +0 -44
  588. package/docs/components/input-file/use-cases.md +0 -454
  589. package/docs/components/input-iban/api-table.md +0 -54
  590. package/docs/components/input-iban/index.md +0 -13
  591. package/docs/components/input-iban/overview.md +0 -49
  592. package/docs/components/input-iban/use-cases.md +0 -114
  593. package/docs/components/input-range/api-table.md +0 -71
  594. package/docs/components/input-range/index.md +0 -13
  595. package/docs/components/input-range/overview.md +0 -44
  596. package/docs/components/input-range/use-cases.md +0 -126
  597. package/docs/components/input-stepper/api-table.md +0 -74
  598. package/docs/components/input-stepper/index.md +0 -13
  599. package/docs/components/input-stepper/overview.md +0 -48
  600. package/docs/components/input-stepper/use-cases.md +0 -155
  601. package/docs/components/input-tel/api-table.md +0 -77
  602. package/docs/components/input-tel/index.md +0 -13
  603. package/docs/components/input-tel/overview.md +0 -74
  604. package/docs/components/input-tel/src/h-region-code-table.js +0 -109
  605. package/docs/components/input-tel/use-cases.md +0 -319
  606. package/docs/components/input-tel-dropdown/api-table.md +0 -85
  607. package/docs/components/input-tel-dropdown/extensions.md +0 -44
  608. package/docs/components/input-tel-dropdown/index.md +0 -13
  609. package/docs/components/input-tel-dropdown/overview.md +0 -50
  610. package/docs/components/input-tel-dropdown/src/intl-input-tel-dropdown.js +0 -138
  611. package/docs/components/input-tel-dropdown/use-cases.md +0 -171
  612. package/docs/components/listbox/api-table.md +0 -65
  613. package/docs/components/listbox/index.md +0 -13
  614. package/docs/components/listbox/overview.md +0 -54
  615. package/docs/components/listbox/src/listboxData.js +0 -131
  616. package/docs/components/listbox/use-cases.md +0 -154
  617. package/docs/components/menu/api-table.md +0 -44
  618. package/docs/components/menu/applyMenuDemoStyles.js +0 -173
  619. package/docs/components/menu/extensions.md +0 -262
  620. package/docs/components/menu/index.md +0 -13
  621. package/docs/components/menu/migration.md +0 -129
  622. package/docs/components/menu/overview.md +0 -448
  623. package/docs/components/menu/src/DemoNavigationBar.js +0 -441
  624. package/docs/components/menu/src/DemoSpinButton.js +0 -215
  625. package/docs/components/menu/src/DemoToolbar.js +0 -101
  626. package/docs/components/menu/src/DemoTree.js +0 -55
  627. package/docs/components/menu/src/navigation-bar-types.js +0 -41
  628. package/docs/components/menu/use-cases.md +0 -74
  629. package/docs/components/pagination/api-table.md +0 -45
  630. package/docs/components/pagination/index.md +0 -13
  631. package/docs/components/pagination/overview.md +0 -41
  632. package/docs/components/pagination/use-cases.md +0 -113
  633. package/docs/components/progress-indicator/api-table.md +0 -48
  634. package/docs/components/progress-indicator/assets/my-determinate-progress-bar.js +0 -30
  635. package/docs/components/progress-indicator/assets/my-indeterminate-progress-spinner.js +0 -55
  636. package/docs/components/progress-indicator/examples.md +0 -137
  637. package/docs/components/progress-indicator/index.md +0 -13
  638. package/docs/components/progress-indicator/overview.md +0 -48
  639. package/docs/components/radio-group/api-table.md +0 -63
  640. package/docs/components/radio-group/index.md +0 -13
  641. package/docs/components/radio-group/overview.md +0 -58
  642. package/docs/components/radio-group/use-cases.md +0 -146
  643. package/docs/components/select/api-table.md +0 -51
  644. package/docs/components/select/index.md +0 -13
  645. package/docs/components/select/overview.md +0 -56
  646. package/docs/components/select/use-cases.md +0 -128
  647. package/docs/components/select-rich/api-table.md +0 -123
  648. package/docs/components/select-rich/examples.md +0 -43
  649. package/docs/components/select-rich/index.md +0 -13
  650. package/docs/components/select-rich/overview.md +0 -55
  651. package/docs/components/select-rich/src/flagStyles.js +0 -1250
  652. package/docs/components/select-rich/src/intl-select-rich.js +0 -194
  653. package/docs/components/select-rich/src/regionMetaList.js +0 -1717
  654. package/docs/components/select-rich/use-cases.md +0 -387
  655. package/docs/components/steps/api-table.md +0 -92
  656. package/docs/components/steps/index.md +0 -13
  657. package/docs/components/steps/overview.md +0 -77
  658. package/docs/components/steps/use-cases.md +0 -181
  659. package/docs/components/switch/api-table.md +0 -82
  660. package/docs/components/switch/index.md +0 -13
  661. package/docs/components/switch/overview.md +0 -87
  662. package/docs/components/switch/reference.md +0 -51
  663. package/docs/components/switch/use-cases.md +0 -88
  664. package/docs/components/tabs/api-table.md +0 -51
  665. package/docs/components/tabs/examples.md +0 -35
  666. package/docs/components/tabs/index.md +0 -13
  667. package/docs/components/tabs/overview.md +0 -60
  668. package/docs/components/tabs/src/lea-tab-panel.js +0 -26
  669. package/docs/components/tabs/src/lea-tab.js +0 -50
  670. package/docs/components/tabs/src/lea-tabs.js +0 -28
  671. package/docs/components/tabs/use-cases.md +0 -231
  672. package/docs/components/textarea/api-table.md +0 -57
  673. package/docs/components/textarea/index.md +0 -13
  674. package/docs/components/textarea/overview.md +0 -47
  675. package/docs/components/textarea/use-cases.md +0 -107
  676. package/docs/components/tooltip/api-table.md +0 -62
  677. package/docs/components/tooltip/examples.md +0 -51
  678. package/docs/components/tooltip/index.md +0 -13
  679. package/docs/components/tooltip/overview.md +0 -56
  680. package/docs/components/tooltip/use-cases.md +0 -275
  681. package/docs/fundamentals/index.md +0 -19
  682. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +0 -13
  683. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +0 -246
  684. package/docs/fundamentals/node-tools/index.md +0 -11
  685. package/docs/fundamentals/node-tools/providence-analytics/index.md +0 -13
  686. package/docs/fundamentals/node-tools/providence-analytics/overview.md +0 -108
  687. package/docs/fundamentals/node-tools/publish-docs/index.md +0 -13
  688. package/docs/fundamentals/node-tools/publish-docs/overview.md +0 -149
  689. package/docs/fundamentals/node-tools/remark-extend/index.md +0 -13
  690. package/docs/fundamentals/node-tools/remark-extend/overview.md +0 -287
  691. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +0 -13
  692. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +0 -298
  693. package/docs/fundamentals/rationales/TypeScript.md +0 -123
  694. package/docs/fundamentals/rationales/accessibility.md +0 -40
  695. package/docs/fundamentals/rationales/index.md +0 -11
  696. package/docs/fundamentals/rationales/side-effects.md +0 -215
  697. package/docs/fundamentals/rationales/versioning.md +0 -47
  698. package/docs/fundamentals/systems/core/SlotMixin.md +0 -168
  699. package/docs/fundamentals/systems/core/api-table.md +0 -43
  700. package/docs/fundamentals/systems/core/index.md +0 -15
  701. package/docs/fundamentals/systems/core/overview.md +0 -98
  702. package/docs/fundamentals/systems/form/api-table.md +0 -40
  703. package/docs/fundamentals/systems/form/assets/h-output.js +0 -156
  704. package/docs/fundamentals/systems/form/formatting-and-parsing.md +0 -258
  705. package/docs/fundamentals/systems/form/index.md +0 -15
  706. package/docs/fundamentals/systems/form/interaction-states.md +0 -195
  707. package/docs/fundamentals/systems/form/model-value.md +0 -57
  708. package/docs/fundamentals/systems/form/overview.md +0 -95
  709. package/docs/fundamentals/systems/form/styling.md +0 -92
  710. package/docs/fundamentals/systems/form/use-cases.md +0 -187
  711. package/docs/fundamentals/systems/form/validate.md +0 -985
  712. package/docs/fundamentals/systems/icon/index.md +0 -15
  713. package/docs/fundamentals/systems/icon/overview.md +0 -137
  714. package/docs/fundamentals/systems/index.md +0 -11
  715. package/docs/fundamentals/systems/localize/api-table.md +0 -72
  716. package/docs/fundamentals/systems/localize/assets/all-locales.js +0 -437
  717. package/docs/fundamentals/systems/localize/assets/en-AU.js +0 -6
  718. package/docs/fundamentals/systems/localize/assets/en-GB.js +0 -6
  719. package/docs/fundamentals/systems/localize/assets/en-US.js +0 -6
  720. package/docs/fundamentals/systems/localize/assets/en.js +0 -4
  721. package/docs/fundamentals/systems/localize/assets/nl-BE.js +0 -6
  722. package/docs/fundamentals/systems/localize/assets/nl-NL.js +0 -6
  723. package/docs/fundamentals/systems/localize/assets/nl.js +0 -4
  724. package/docs/fundamentals/systems/localize/dates.md +0 -208
  725. package/docs/fundamentals/systems/localize/index.md +0 -15
  726. package/docs/fundamentals/systems/localize/numbers.md +0 -230
  727. package/docs/fundamentals/systems/localize/overview.md +0 -61
  728. package/docs/fundamentals/systems/localize/rationale.md +0 -75
  729. package/docs/fundamentals/systems/localize/text.md +0 -139
  730. package/docs/fundamentals/systems/localize/use-cases.md +0 -334
  731. package/docs/fundamentals/systems/overlays/_configuration-positioning.md +0 -118
  732. package/docs/fundamentals/systems/overlays/_edge-cases.md +0 -149
  733. package/docs/fundamentals/systems/overlays/api-table.md +0 -174
  734. package/docs/fundamentals/systems/overlays/assets/applyDemoOverlayStyles.js +0 -23
  735. package/docs/fundamentals/systems/overlays/assets/demo-el-using-overlaymixin.js +0 -104
  736. package/docs/fundamentals/systems/overlays/assets/demo-overlay-backdrop.js +0 -47
  737. package/docs/fundamentals/systems/overlays/assets/demo-overlay-positioning.mjs +0 -537
  738. package/docs/fundamentals/systems/overlays/assets/umbrella-form.js +0 -140
  739. package/docs/fundamentals/systems/overlays/configuration.md +0 -516
  740. package/docs/fundamentals/systems/overlays/index.md +0 -15
  741. package/docs/fundamentals/systems/overlays/overview.md +0 -126
  742. package/docs/fundamentals/systems/overlays/rationale.md +0 -242
  743. package/docs/fundamentals/systems/overlays/use-cases.md +0 -717
  744. package/docs/fundamentals/tools/ajax/index.md +0 -15
  745. package/docs/fundamentals/tools/ajax/overview.md +0 -269
  746. package/docs/fundamentals/tools/ajax/use-cases.md +0 -469
  747. package/docs/fundamentals/tools/helpers/action-logger.md +0 -175
  748. package/docs/fundamentals/tools/helpers/index.md +0 -15
  749. package/docs/fundamentals/tools/helpers/overview.md +0 -43
  750. package/docs/fundamentals/tools/index.md +0 -11
  751. package/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js +0 -95
  752. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +0 -34
  753. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/index.js +0 -30
  754. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/instance.js +0 -4
  755. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-a/page-a.js +0 -35
  756. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/index.js +0 -30
  757. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/instance.js +0 -4
  758. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/page-b.js +0 -49
  759. package/docs/fundamentals/tools/singleton-manager/example-complex/overlayCompatibility.js +0 -69
  760. package/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js +0 -93
  761. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +0 -32
  762. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/index.js +0 -30
  763. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/instance.js +0 -3
  764. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-c/page-c.js +0 -34
  765. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-d/node_modules/overlays/index.js +0 -30
  766. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-d/node_modules/overlays/instance.js +0 -3
  767. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-d/page-d.js +0 -34
  768. package/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js +0 -95
  769. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +0 -31
  770. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/index.js +0 -30
  771. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/instance.js +0 -4
  772. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-e/page-e.js +0 -33
  773. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-f/node_modules/overlays/index.js +0 -30
  774. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-f/node_modules/overlays/instance.js +0 -4
  775. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-f/page-f.js +0 -34
  776. package/docs/fundamentals/tools/singleton-manager/example-success/overlayCompatibility.js +0 -23
  777. package/docs/fundamentals/tools/singleton-manager/index.md +0 -15
  778. package/docs/fundamentals/tools/singleton-manager/overview.md +0 -317
  779. package/docs/guides/how-to/create-a-custom-field.md +0 -212
  780. package/docs/guides/how-to/create-a-form.md +0 -101
  781. package/docs/guides/how-to/extend-a-native-input.md +0 -78
  782. package/docs/guides/how-to/get-started.md +0 -116
  783. package/docs/guides/how-to/index.md +0 -25
  784. package/docs/guides/index.md +0 -44
  785. package/docs/guides/principles/definitions-and-terms.md +0 -53
  786. package/docs/guides/principles/index.md +0 -36
  787. package/docs/guides/principles/scoped-elements.md +0 -119
  788. package/docs/guides/principles/styling.md +0 -43
  789. package/docs/guides/principles/subclasser-apis.md +0 -40
@@ -0,0 +1,398 @@
1
+ import { html } from 'lit/static-html.js';
2
+ import { LionField, Required } from '@lion/ui/form-core.js';
3
+ import '@lion/ui/define/lion-validation-feedback.js';
4
+ import { LionFieldset } from '@lion/ui/fieldset.js';
5
+ import { LionCheckbox, LionCheckboxGroup } from '@lion/ui/checkbox-group.js';
6
+ import '@lion/ui/define/lion-checkbox-group.js';
7
+ import { LionRadio, LionRadioGroup } from '@lion/ui/radio-group.js';
8
+ import '@lion/ui/define/lion-radio-group.js';
9
+ import '@lion/ui/define/lion-fieldset.js';
10
+ import '@lion/ui/define/lion-checkbox.js';
11
+ import { LionListbox, LionOption } from '@lion/ui/listbox.js';
12
+ import '@lion/ui/define/lion-listbox.js';
13
+ import '@lion/ui/define/lion-option.js';
14
+ import '@lion/ui/define/lion-field.js';
15
+ import '@lion/ui/define/lion-radio.js';
16
+ import { LionForm } from '@lion/ui/form.js';
17
+ import '@lion/ui/define/lion-form.js';
18
+ import { spy } from 'sinon';
19
+ import {
20
+ fixture as _fixture,
21
+ unsafeStatic,
22
+ aTimeout,
23
+ defineCE,
24
+ oneEvent,
25
+ expect,
26
+ } from '@open-wc/testing';
27
+ import { resolveSuiteTag } from '../../core/test-helpers/resolveSuiteTag.js';
28
+ import { isActiveElement } from '../../core/test-helpers/isActiveElement.js';
29
+
30
+ /**
31
+ * @typedef {import('@lion/ui/types/test-suites.js').SuiteElement} SuiteElement
32
+ * Runs the `lion-form` behavioural suite, moved out of `test/lion-form.test.js` so a Subclasser can run
33
+ * the same guarantees against its own element. Pass `tagString` to point it at your registered
34
+ * tag; see docs/guides/principles/test-suites.md.
35
+ * `tagString`, `klass` and the older role tag keys are deprecated: pass `classes` instead (Lion
36
+ * itself uses `classes` everywhere).
37
+ * @param {import('@lion/ui/types/test-suites.js').SuiteConfig<{'checkbox-group': SuiteElement; 'radio-group': SuiteElement; checkbox: SuiteElement; fieldset: SuiteElement; host: SuiteElement; listbox: SuiteElement; option: SuiteElement; radio: SuiteElement}, {checkboxGroupTagString?: any; checkboxTagString?: any; fieldsetTagString?: any; listboxTagString?: any; optionTagString?: any; radioGroupTagString?: any; radioTagString?: any}>} [customConfig]
38
+ */
39
+ export function runFormSuite({
40
+ classes: {
41
+ host: hostEl = LionForm,
42
+ 'checkbox-group': roleCheckboxGroup = LionCheckboxGroup,
43
+ 'radio-group': roleRadioGroup = LionRadioGroup,
44
+ fieldset: roleFieldset = LionFieldset,
45
+ checkbox: roleCheckbox = LionCheckbox,
46
+ listbox: roleListbox = LionListbox,
47
+ option: roleOption = LionOption,
48
+ radio: roleRadio = LionRadio,
49
+ } = {},
50
+ tagString: legacyTagString,
51
+ checkboxGroupTagString: legacyCheckboxGroupTagString,
52
+ radioGroupTagString: legacyRadioGroupTagString,
53
+ fieldsetTagString: legacyFieldsetTagString,
54
+ checkboxTagString: legacyCheckboxTagString,
55
+ listboxTagString: legacyListboxTagString,
56
+ optionTagString: legacyOptionTagString,
57
+ radioTagString: legacyRadioTagString,
58
+ } = {}) {
59
+ const tag = unsafeStatic(resolveSuiteTag(hostEl, legacyTagString));
60
+ const tagNameCheckboxGroup = resolveSuiteTag(roleCheckboxGroup, legacyCheckboxGroupTagString);
61
+ const tagCheckboxGroup = unsafeStatic(tagNameCheckboxGroup);
62
+ const tagNameRadioGroup = resolveSuiteTag(roleRadioGroup, legacyRadioGroupTagString);
63
+ const tagRadioGroup = unsafeStatic(tagNameRadioGroup);
64
+ const tagNameFieldset = resolveSuiteTag(roleFieldset, legacyFieldsetTagString);
65
+ const tagFieldset = unsafeStatic(tagNameFieldset);
66
+ const tagNameCheckbox = resolveSuiteTag(roleCheckbox, legacyCheckboxTagString);
67
+ const tagCheckbox = unsafeStatic(tagNameCheckbox);
68
+ const tagNameListbox = resolveSuiteTag(roleListbox, legacyListboxTagString);
69
+ const tagListbox = unsafeStatic(tagNameListbox);
70
+ const tagNameOption = resolveSuiteTag(roleOption, legacyOptionTagString);
71
+ const tagOption = unsafeStatic(tagNameOption);
72
+ const tagNameRadio = resolveSuiteTag(roleRadio, legacyRadioTagString);
73
+ const tagRadio = unsafeStatic(tagNameRadio);
74
+
75
+ /**
76
+ * @typedef {import('lit').TemplateResult} TemplateResult
77
+ */
78
+ const fixture = /** @type {(arg: TemplateResult) => Promise<LionForm>} */ _fixture;
79
+ const childTagString = defineCE(
80
+ class extends LionField {
81
+ get slots() {
82
+ return {
83
+ input: () => document.createElement('input'),
84
+ };
85
+ }
86
+ },
87
+ );
88
+ const childTag = unsafeStatic(childTagString);
89
+ describe('<lion-form>', () => {
90
+ it('is an instance of LionFieldSet', async () => {
91
+ const el = await fixture(html`
92
+ <${tag}>
93
+ <form></form>
94
+ </${tag}>
95
+ `);
96
+ expect(el).to.be.instanceOf(LionFieldset);
97
+ });
98
+ it('relies on the native form for its accessible role', async () => {
99
+ const el = await fixture(html`
100
+ <${tag}>
101
+ <form></form>
102
+ </${tag}>
103
+ `);
104
+ expect(el.getAttribute('role')).to.be.null;
105
+ });
106
+ it('has a custom reset that gets triggered by native reset', async () => {
107
+ const withDefaults = await fixture(html`
108
+ <${tag}>
109
+ <form>
110
+ <${childTag} name="firstName" .modelValue="${'Foo'}"></${childTag}>
111
+ <input type="reset" value="reset-button" />
112
+ </form>
113
+ </${tag}>
114
+ `);
115
+ const resetButton =
116
+ /** @type {HTMLInputElement} */
117
+ withDefaults.querySelector('input[type=reset]');
118
+ withDefaults.formElements.firstName.modelValue = 'updatedFoo';
119
+ expect(withDefaults.modelValue).to.deep.equal({
120
+ firstName: 'updatedFoo',
121
+ });
122
+ withDefaults.reset();
123
+ expect(withDefaults.modelValue).to.deep.equal({
124
+ firstName: 'Foo',
125
+ });
126
+
127
+ // use button
128
+ withDefaults.formElements.firstName.modelValue = 'updatedFoo';
129
+ expect(withDefaults.modelValue).to.deep.equal({
130
+ firstName: 'updatedFoo',
131
+ });
132
+ resetButton.click();
133
+ expect(withDefaults.modelValue).to.deep.equal({
134
+ firstName: 'Foo',
135
+ });
136
+ });
137
+ it('dispatches reset events', async () => {
138
+ const el = await fixture(html`
139
+ <${tag}>
140
+ <form>
141
+ <${childTag} name="firstName" .modelValue="${'Foo'}"></${childTag}>
142
+ </form>
143
+ </${tag}>
144
+ `);
145
+ setTimeout(() => el.reset());
146
+ const resetEv = await oneEvent(el, 'reset');
147
+ expect(resetEv).to.be.instanceOf(Event);
148
+ expect(resetEv.type).to.equal('reset');
149
+ expect(resetEv.target).to.equal(el);
150
+ expect(resetEv.bubbles).to.be.true;
151
+ expect(resetEv.composed).to.be.false;
152
+ });
153
+ it('works with the native submit event (triggered via a button)', async () => {
154
+ const submitSpy = spy();
155
+ const el = await fixture(html`
156
+ <${tag} @submit=${submitSpy}>
157
+ <form>
158
+ <button type="submit">submit</button>
159
+ </form>
160
+ </${tag}>
161
+ `);
162
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
163
+ button.click();
164
+ expect(submitSpy.callCount).to.equal(1);
165
+ });
166
+ it('dispatches submit events', async () => {
167
+ const el = await fixture(html`
168
+ <${tag}>
169
+ <form>
170
+ <button type="submit">submit</button>
171
+ </form>
172
+ </${tag}>
173
+ `);
174
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
175
+ setTimeout(() => button.click());
176
+ const submitEv = await oneEvent(el, 'submit');
177
+ expect(submitEv).to.be.instanceOf(Event);
178
+ expect(submitEv.type).to.equal('submit');
179
+ expect(submitEv.target).to.equal(el);
180
+ expect(submitEv.bubbles).to.be.true;
181
+ expect(submitEv.composed).to.be.false;
182
+ });
183
+ it('redispatches a submit event on the native form node when calling submit() imperatively', async () => {
184
+ const nativeFormSubmitEventSpy = spy();
185
+ const el = await fixture(html`
186
+ <${tag}>
187
+ <form @submit=${nativeFormSubmitEventSpy}>
188
+ <button type="submit">submit</button>
189
+ </form>
190
+ </${tag}>
191
+ `);
192
+ const submitSpy = spy(el, 'submit');
193
+ const submitGroupSpy = spy(el, 'submitGroup');
194
+ el.submit();
195
+ expect(submitSpy.calledOnce).to.be.true;
196
+ expect(nativeFormSubmitEventSpy.calledOnce).to.be.true;
197
+ expect(submitGroupSpy.calledOnce).to.be.true;
198
+ });
199
+ it('handles internal submit handler before dispatch', async () => {
200
+ const el = await fixture(html`
201
+ <${tag}>
202
+ <form>
203
+ <button type="submit">submit</button>
204
+ </form>
205
+ </${tag}>
206
+ `);
207
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
208
+ const internalHandlerSpy = spy(el, 'submitGroup');
209
+ const dispatchSpy = spy(el, 'dispatchEvent');
210
+ await aTimeout(0);
211
+ button.click();
212
+ expect(internalHandlerSpy).to.be.calledBefore(dispatchSpy);
213
+ });
214
+ it('handles internal submit handler before dispatch', async () => {
215
+ const el = await fixture(html`
216
+ <${tag}>
217
+ <form>
218
+ <button type="submit">submit</button>
219
+ </form>
220
+ </${tag}>
221
+ `);
222
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
223
+ const internalHandlerSpy = spy(el, 'submitGroup');
224
+ const dispatchSpy = spy(el, 'dispatchEvent');
225
+ button.click();
226
+ expect(dispatchSpy.args[0][0].type).to.equal('submit');
227
+ expect(internalHandlerSpy).to.be.calledBefore(dispatchSpy);
228
+ });
229
+ it('handles internal reset handler before dispatch', async () => {
230
+ const el = await fixture(html`
231
+ <${tag}>
232
+ <form>
233
+ <button type="reset">reset</button>
234
+ </form>
235
+ </${tag}>
236
+ `);
237
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
238
+ const internalHandlerSpy = spy(el, 'resetGroup');
239
+ const dispatchSpy = spy(el, 'dispatchEvent');
240
+ button.click();
241
+ expect(dispatchSpy.args[0][0].type).to.equal('reset');
242
+ expect(internalHandlerSpy).to.be.calledBefore(dispatchSpy);
243
+ });
244
+ it('sets focus on submit to the first erroneous form element', async () => {
245
+ const el = await fixture(html`
246
+ <${tag}>
247
+ <form>
248
+ <${childTag} name="firstName" .modelValue=${'Foo'} .validators=${[new Required()]}></${childTag}>
249
+ <${childTag} name="lastName" .validators=${[new Required()]}></${childTag}>
250
+ <button type="submit">submit</button>
251
+ </form>
252
+ </${tag}>
253
+ `);
254
+ expect(el.getAttribute('aria-invalid')).to.equal('false');
255
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
256
+ const dispatchSpy = spy(el, 'dispatchEvent');
257
+ button.click();
258
+ expect(dispatchSpy.args.map((args) => args[0].type)).to.contain('submit');
259
+ // @ts-ignore [allow-protected] in test
260
+ expect(isActiveElement(el.formElements[1]._inputNode)).to.be.true;
261
+ });
262
+ it('sets focus on submit to the first erroneous form element within a fieldset', async () => {
263
+ const el = await fixture(html`
264
+ <${tag}>
265
+ <form>
266
+ <${tagFieldset} name="name">
267
+ <${childTag} name="firstName" .modelValue=${'Foo'} .validators=${[new Required()]}></${childTag}>
268
+ <${childTag} name="lastName" .validators=${[new Required()]}></${childTag}>
269
+ </${tagFieldset}>
270
+ <button type="submit">submit</button>
271
+ </form>
272
+ </${tag}>
273
+ `);
274
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
275
+ const dispatchSpy = spy(el, 'dispatchEvent');
276
+ button.click();
277
+ expect(dispatchSpy.args.map((args) => args[0].type)).to.contain('submit');
278
+ const fieldset = el.formElements[0];
279
+ // @ts-ignore [allow-protected] in test
280
+ expect(isActiveElement(fieldset.formElements[1]._inputNode)).to.be.true;
281
+ });
282
+ it('sets focus on submit to the first form element within a erroneous fieldset', async () => {
283
+ const el = await fixture(html`
284
+ <${tag}>
285
+ <form>
286
+ <${tagFieldset} name="name" .validators=${[new Required()]}>
287
+ <${childTag} name="firstName"></${childTag}>
288
+ <${childTag} name="lastName"></${childTag}>
289
+ </${tagFieldset}>
290
+ <button type="submit">submit</button>
291
+ </form>
292
+ </${tag}>
293
+ `);
294
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
295
+ const dispatchSpy = spy(el, 'dispatchEvent');
296
+ button.click();
297
+ expect(dispatchSpy.args.map((args) => args[0].type)).to.contain('submit');
298
+ const fieldset = el.formElements[0];
299
+ expect(isActiveElement(fieldset.formElements[0]._inputNode)).to.be.true;
300
+ });
301
+ it('sets focus on submit to the first form element within a erroneous fieldset within another fieldset', async () => {
302
+ const el = await fixture(html`
303
+ <${tag}>
304
+ <form>
305
+ <${tagFieldset} name="parentFieldset">
306
+ <${tagFieldset} name="childFieldset" .validators="${[new Required()]}">
307
+ <${childTag} name="firstName"></${childTag}>
308
+ </${tagFieldset}>
309
+ </${tagFieldset}>
310
+
311
+ <button type="submit">submit</button>
312
+ </form>
313
+ </${tag}>
314
+ `);
315
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
316
+ const parentFieldSetEl = el.formElements[0];
317
+ const childFieldsetEl = parentFieldSetEl.formElements[0];
318
+ const inputEl = childFieldsetEl.formElements[0];
319
+ button.click();
320
+ expect(isActiveElement(inputEl._focusableNode)).to.be.true;
321
+ });
322
+ it('sets focus on submit to the first form element within a erroneous listbox', async () => {
323
+ const el = await fixture(html`
324
+ <${tag}>
325
+ <form>
326
+ <${tagListbox} name="name" .validators="${[new Required()]}">
327
+ <${tagOption} value="a">a</${tagOption}>
328
+ <${tagOption} value="b">b</${tagOption}>
329
+ </${tagListbox}>
330
+ <button type="submit">submit</button>
331
+ </form>
332
+ </${tag}>
333
+ `);
334
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
335
+ button.click();
336
+ const listboxEl = el.formElements[0];
337
+ expect(isActiveElement(listboxEl._inputNode)).to.be.true;
338
+ });
339
+ it('sets focus on submit to the first form element within a erroneous listbox within a fieldset', async () => {
340
+ const el = await fixture(html`
341
+ <${tag}>
342
+ <form>
343
+ <${tagFieldset} name="fieldset">
344
+ <${tagListbox} name="name" .validators="${[new Required()]}">
345
+ <${tagOption} value="a">a</${tagOption}>
346
+ <${tagOption} value="b">b</${tagOption}>
347
+ </${tagListbox}>
348
+ </${tagFieldset}>
349
+ <button type="submit">submit</button>
350
+ </form>
351
+ </${tag}>
352
+ `);
353
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
354
+ button.click();
355
+ const fieldsetEl = el.formElements[0];
356
+ const listboxEl = fieldsetEl.formElements[0];
357
+ expect(isActiveElement(listboxEl._inputNode)).to.be.true;
358
+ });
359
+ it('sets focus on submit to the first form element within a erroneous checkbox-group', async () => {
360
+ const el = await fixture(html`
361
+ <${tag}>
362
+ <form>
363
+ <${tagCheckboxGroup} name="name" .validators="${[new Required()]}">
364
+ <${tagCheckbox} .choiceValue=${'a'} label="a"></${tagCheckbox}>
365
+ <${tagCheckbox} .choiceValue=${'b'} label="b"></${tagCheckbox}>
366
+ </${tagCheckboxGroup}>
367
+ <button type="submit">submit</button>
368
+ </form>
369
+ </${tag}>
370
+ `);
371
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
372
+ const checkboxGroupEl = el.formElements[0];
373
+ const checkboxEl = checkboxGroupEl.formElements[0];
374
+ button.click();
375
+ expect(isActiveElement(checkboxEl._focusableNode)).to.be.true;
376
+ });
377
+ it('sets focus on submit to the first form element within a erroneous radio-group', async () => {
378
+ const el = await fixture(html`
379
+ <${tag}>
380
+ <form>
381
+ <${tagRadioGroup} name="name" .validators="${[new Required()]}">
382
+ <${tagRadio} .choiceValue=${'a'} label="a"></${tagRadio}>
383
+ <${tagRadio} .choiceValue=${'b'} label="b"></${tagRadio}>
384
+ </${tagRadioGroup}>
385
+ </${tagFieldset}>
386
+
387
+ <button type="submit">submit</button>
388
+ </form>
389
+ </${tag}>
390
+ `);
391
+ const button = /** @type {HTMLButtonElement} */ el.querySelector('button');
392
+ const radioGroupEl = el.formElements[0];
393
+ const radioEl = radioGroupEl.formElements[0];
394
+ button.click();
395
+ expect(isActiveElement(radioEl._focusableNode)).to.be.true;
396
+ });
397
+ });
398
+ }
@@ -1,5 +1,8 @@
1
+ import { LionInput } from '@lion/ui/input.js';
1
2
  import { runFormatMixinSuite } from '../test-suites/FormatMixin.suite.js';
2
3
  runFormatMixinSuite({
3
- tagString: null,
4
+ classes: {
5
+ host: LionInput,
6
+ },
4
7
  modelValueType: String,
5
8
  });
@@ -38,16 +38,29 @@ customElements.define(
38
38
  MultipleCustomChoiceGroupAllowCustom,
39
39
  );
40
40
  runChoiceGroupMixinSuite({
41
+ classes: {
42
+ host: CustomChoiceGroup,
43
+ },
44
+ // synthetic tag: not derivable from the class name, so the deprecated key names the element
41
45
  parentTagString: 'custom-choice-input-group',
42
46
  });
43
47
  runChoiceGroupMixinSuite({
48
+ classes: {
49
+ host: MultipleCustomChoiceGroup,
50
+ },
44
51
  parentTagString: 'multiple-custom-choice-input-group',
45
52
  choiceType: 'multiple',
46
53
  });
47
54
  runChoiceGroupMixinSuite({
55
+ classes: {
56
+ host: CustomChoiceGroupAllowCustom,
57
+ },
48
58
  parentTagString: 'allow-custom-choice-input-group',
49
59
  });
50
60
  runChoiceGroupMixinSuite({
61
+ classes: {
62
+ host: MultipleCustomChoiceGroupAllowCustom,
63
+ },
51
64
  parentTagString: 'multiple-allow-custom-choice-input-group',
52
65
  choiceType: 'multiple',
53
66
  });
@@ -7,35 +7,30 @@ import {
7
7
  import { defineCE, expect, fixture, html, unsafeStatic } from '@open-wc/testing';
8
8
  import { LitElement } from 'lit';
9
9
  import sinon from 'sinon';
10
+ import { resolveSuiteTag } from '../../core/test-helpers/resolveSuiteTag.js';
10
11
 
11
12
  /**
12
- * @typedef {Object} customConfig
13
- * @property {typeof LitElement|undefined} [baseElement]
14
- * @property {string} [customConfig.suffix]
15
- * @property {string} [customConfig.parentTagString]
16
- * @property {string} [customConfig.childTagString]
17
- * @property {string} [customConfig.portalTagString]
13
+ * Runs the form-registration suite. The caller hands the three elements it should run against -
14
+ * `host` is the registrar (the form), `child` what registers itself and `portal` the element that
15
+ * forwards registrations; anything left out keeps the class this suite builds from the mixins.
16
+ * @typedef {import('@lion/ui/types/test-suites.js').SuiteElement} SuiteElement
17
+ * @param {import('@lion/ui/types/test-suites.js').SuiteConfig<{host: SuiteElement; child: SuiteElement; portal: SuiteElement}, {suffix?: string, baseElement?: typeof LitElement}>} customConfig
18
18
  */
19
-
20
- /**
21
- * @param {customConfig} customConfig
22
- */
23
- export const runRegistrationSuite = (customConfig) => {
24
- const cfg = {
25
- baseElement: LitElement,
26
- ...customConfig,
27
- };
28
- describe(`FormRegistrationMixins ${cfg.suffix}`, () => {
29
- class RegistrarClass extends FormRegistrarMixin(cfg.baseElement) {}
30
- cfg.parentTagString = defineCE(RegistrarClass);
31
- class RegisteringClass extends FormRegisteringMixin(cfg.baseElement) {}
32
- cfg.childTagString = defineCE(RegisteringClass);
33
- class PortalClass extends FormRegistrarPortalMixin(cfg.baseElement) {}
34
- cfg.portalTagString = defineCE(PortalClass);
35
- const parentTag = unsafeStatic(cfg.parentTagString);
36
- const childTag = unsafeStatic(cfg.childTagString);
37
- const portalTag = unsafeStatic(cfg.portalTagString);
38
- const { parentTagString, childTagString } = cfg;
19
+ export const runRegistrationSuite = ({
20
+ classes = {},
21
+ suffix = '',
22
+ baseElement = LitElement,
23
+ } = {}) => {
24
+ describe(`FormRegistrationMixins ${suffix}`, () => {
25
+ class RegistrarClass extends FormRegistrarMixin(baseElement) {}
26
+ const parentTagString = resolveSuiteTag(classes?.host, undefined, RegistrarClass);
27
+ class RegisteringClass extends FormRegisteringMixin(baseElement) {}
28
+ const childTagString = resolveSuiteTag(classes?.child, undefined, RegisteringClass);
29
+ class PortalClass extends FormRegistrarPortalMixin(baseElement) {}
30
+ const portalTagString = resolveSuiteTag(classes?.portal, undefined, PortalClass);
31
+ const parentTag = unsafeStatic(parentTagString);
32
+ const childTag = unsafeStatic(childTagString);
33
+ const portalTag = unsafeStatic(portalTagString);
39
34
  it('can register a formElement', async () => {
40
35
  const el =
41
36
  /** @type {RegistrarClass} */
@@ -4,6 +4,7 @@ import { parseDate } from '@lion/ui/localize-no-side-effects.js';
4
4
  import { aTimeout, defineCE, expect, fixture, html, unsafeStatic } from '@open-wc/testing';
5
5
  import { LitElement } from 'lit';
6
6
  import sinon from 'sinon';
7
+ import { resolveSuiteTag } from '../../core/test-helpers/resolveSuiteTag.js';
7
8
  const isLionInputStepper = (/** @type {FormatClass} */ el) => 'valueTextMapping' in el;
8
9
 
9
10
  /**
@@ -31,20 +32,6 @@ class FormatClass extends FormatMixin(LitElement) {
31
32
  }
32
33
  }
33
34
 
34
- /**
35
- * @typedef {object} FormatMixinSuiteConfig
36
- * @property {string | null} [tagString] - Optional. Element tag name; if omitted, one will be auto-generated via defineCE()
37
- * @property {string | null} [childTagString] - Optional. Not currently used
38
- * @property {ArrayConstructor | ObjectConstructor | NumberConstructor | BooleanConstructor | StringConstructor | DateConstructor | 'iban' | 'email'} modelValueType - REQUIRED. The model value type for this component
39
- * @property {(opts: { toggleValue: boolean, viewValue: boolean }) => any} [valueToggler] - Optional. Provide different test values for toggleValue=false vs toggleValue=true. If not provided, defaults will be generated based on modelValueType.
40
- * @property {(el: FormatClass) => any} [getExpectedInitialModelValue] - Optional. Expected initial modelValue state when element is created without a value. If not provided, defaults will be generated based on modelValueType.
41
- * @property {(el: FormatClass) => any} [getExpectedInitialFormattedValue] - Optional. Expected initial formattedValue state when element is created without a value. If not provided, defaults will be generated based on modelValueType.
42
- * @property {(el: FormatClass) => any} [getExpectedInitialSerializedValue] - Optional. Expected initial serializedValue state when element is created without a value. If not provided, defaults will be generated based on modelValueType.
43
- * @property {(el: FormatClass) => any} [getExpectedModelValueForEmptyInputNode] - Optional. Expected modelValue after user clears the input node value. Defaults to empty string.
44
- * @property {(value: string, opts?: any) => any} [parser] - Optional. Parser override used by tests. When provided, it is applied before connectedCallback so fallback init sync uses it.
45
- * @property {number} [valueChangeCounterOffset] - Optional. Offset for model-value-changed event counter. Use 0 for most types, 1 for Date types where parseDate() creates new objects. If not provided, defaults will be generated based on modelValueType.
46
- */
47
-
48
35
  /**
49
36
  * Creates default valueToggler based on modelValueType for backwards compatibility
50
37
  * @param {ArrayConstructor | ObjectConstructor | NumberConstructor | BooleanConstructor | StringConstructor | DateConstructor | 'iban' | 'email'} modelValueType
@@ -157,41 +144,59 @@ function createDefaultValueChangeCounterOffset(modelValueType) {
157
144
  return 0;
158
145
  }
159
146
 
147
+ /** @typedef {import('@lion/ui/types/test-suites.js').SuiteElement} SuiteElement */
148
+
160
149
  /**
161
- * @param {FormatMixinSuiteConfig} [customConfig]
150
+ * Runs the `FormatMixin` behavioural suite. The caller hands the element to run against (leaving
151
+ * `host` out keeps the element this suite builds from the mixin) and says what the model value type
152
+ * is; the expectations that follow from that type are generated, and every one of them can be
153
+ * overridden.
154
+ * @param {import('@lion/ui/types/test-suites.js').SuiteConfig<{host: SuiteElement}, {
155
+ * modelValueType: ArrayConstructor | ObjectConstructor | NumberConstructor | BooleanConstructor | StringConstructor | DateConstructor | 'iban' | 'email',
156
+ * valueToggler?: (opts: { toggleValue: boolean, viewValue: boolean }) => any,
157
+ * getExpectedInitialModelValue?: (el: FormatClass) => any,
158
+ * getExpectedInitialFormattedValue?: (el: FormatClass) => any,
159
+ * getExpectedInitialSerializedValue?: (el: FormatClass) => any,
160
+ * getExpectedModelValueForEmptyInputNode?: (el: FormatClass) => any,
161
+ * parser?: (value: string, opts?: any) => any,
162
+ * valueChangeCounterOffset?: number,
163
+ * }>} [customConfig]
162
164
  */
163
- export function runFormatMixinSuite(customConfig) {
164
- const cfg = {
165
- ...customConfig,
166
- };
167
-
168
- // Validate that modelValueType is provided (required for generating defaults)
169
- if (!cfg.modelValueType) {
165
+ export function runFormatMixinSuite({
166
+ classes = {},
167
+ tagString: legacyTagString,
168
+ modelValueType,
169
+ valueToggler: customValueToggler,
170
+ getExpectedInitialModelValue: customGetExpectedInitialModelValue,
171
+ getExpectedInitialFormattedValue: customGetExpectedInitialFormattedValue,
172
+ getExpectedInitialSerializedValue: customGetExpectedInitialSerializedValue,
173
+ getExpectedModelValueForEmptyInputNode: customGetExpectedModelValueForEmptyInputNode,
174
+ parser: customParser,
175
+ valueChangeCounterOffset: customValueChangeCounterOffset,
176
+ } = {}) {
177
+ if (!modelValueType) {
170
178
  throw new Error(
171
179
  'FormatMixinSuite: modelValueType is REQUIRED in config. ' +
172
180
  'Provide the model value type for this component (e.g., String, Number, Date, Object, Boolean, Array, "iban", "email").',
173
181
  );
174
182
  }
175
-
176
- // Use provided values or generate defaults based on modelValueType
177
- const valueToggler = cfg.valueToggler || createDefaultValueToggler(cfg.modelValueType);
183
+ const valueToggler = customValueToggler || createDefaultValueToggler(modelValueType);
178
184
  const getExpectedInitialModelValue =
179
- cfg.getExpectedInitialModelValue ||
180
- createDefaultGetExpectedInitialModelValue(cfg.modelValueType);
185
+ customGetExpectedInitialModelValue || createDefaultGetExpectedInitialModelValue(modelValueType);
181
186
  const getExpectedInitialFormattedValue =
182
- cfg.getExpectedInitialFormattedValue ||
183
- createDefaultGetExpectedInitialFormattedValue(cfg.modelValueType);
187
+ customGetExpectedInitialFormattedValue ||
188
+ createDefaultGetExpectedInitialFormattedValue(modelValueType);
184
189
  const getExpectedInitialSerializedValue =
185
- cfg.getExpectedInitialSerializedValue ||
186
- createDefaultGetExpectedInitialSerializedValue(cfg.modelValueType);
190
+ customGetExpectedInitialSerializedValue ||
191
+ createDefaultGetExpectedInitialSerializedValue(modelValueType);
187
192
  const getExpectedModelValueForEmptyInputNode =
188
- cfg.getExpectedModelValueForEmptyInputNode || (() => '');
193
+ customGetExpectedModelValueForEmptyInputNode || (() => '');
189
194
  const defaultParser = (/** @type {string} */ value) => value.replace('foo: ', '');
190
- const parser = cfg.parser || defaultParser;
195
+ const parser = customParser || defaultParser;
191
196
  const valueChangeCounterOffset =
192
- cfg.valueChangeCounterOffset !== undefined
193
- ? cfg.valueChangeCounterOffset
194
- : createDefaultValueChangeCounterOffset(cfg.modelValueType);
197
+ customValueChangeCounterOffset !== undefined
198
+ ? customValueChangeCounterOffset
199
+ : createDefaultValueChangeCounterOffset(modelValueType);
195
200
 
196
201
  /**
197
202
  * Generates test values by delegating to the component's valueToggler function.
@@ -258,10 +263,7 @@ export function runFormatMixinSuite(customConfig) {
258
263
  /** @type {FormatClass} */
259
264
  let fooFormat;
260
265
  before(async () => {
261
- if (!cfg.tagString) {
262
- cfg.tagString = defineCE(FormatClass);
263
- }
264
- tag = unsafeStatic(cfg.tagString);
266
+ tag = unsafeStatic(resolveSuiteTag(classes?.host, legacyTagString, FormatClass));
265
267
  fooFormat = await fixture(html`
266
268
  <${tag}
267
269
  .formatter="${/** @param {string} value */ (value) => `foo: ${value}`}"
@@ -570,7 +572,7 @@ export function runFormatMixinSuite(customConfig) {
570
572
  });
571
573
  describe('Formatter', () => {
572
574
  it('only calls the formatter for valid values on `user-input-changed` ', async () => {
573
- if (cfg.modelValueType === Object) {
575
+ if (modelValueType === Object) {
574
576
  return;
575
577
  }
576
578
  const formatterSpy = sinon.spy((value) => `foo: ${value}`);
@@ -817,7 +819,7 @@ export function runFormatMixinSuite(customConfig) {
817
819
  expect(_inputNode.value).to.equal(val);
818
820
  });
819
821
  it('does only calculate derived values as consequence of user input when preprocessed value is different from previous view value', async () => {
820
- if (cfg.modelValueType === Object) return;
822
+ if (modelValueType === Object) return;
821
823
  const val =
822
824
  generateValueBasedOnType({
823
825
  viewValue: true,
@@ -904,7 +906,7 @@ export function runFormatMixinSuite(customConfig) {
904
906
  it('updates return viewValue and caretIndex', async () => {
905
907
  /**
906
908
  * @param {string} viewValue
907
- * @param {{ prevViewValue: string; currentCaretIndex: number; }} meta
909
+ * @param {{ classes?: Record<string, CustomElementConstructor>, prevViewValue: string; currentCaretIndex: number; }} meta
908
910
  */
909
911
  function myPreprocessor(viewValue, { currentCaretIndex }) {
910
912
  return {