@lion/ui 0.25.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 (771) 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-suites/LionInputTel.suite.js +9 -4
  81. package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +6 -4
  82. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +10 -13
  83. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +6 -5
  84. package/components/listbox/test-suites/ListboxMixin.suite.js +19 -19
  85. package/components/menu/test-suites/InteractiveListMixin.suite.js +6 -9
  86. package/components/menu/test-suites/LionMenu.suite.js +6 -10
  87. package/components/menu/test-suites/LionMenuInteractions.suite.js +13 -4
  88. package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +6 -9
  89. package/components/menu/test-suites/MultiLevelListMixin.suite.js +15 -11
  90. package/components/overlays/test/OverlayController.test.js +6 -1
  91. package/components/overlays/test-suites/OverlayMixin.suite.js +3 -5
  92. package/components/pagination/test/lion-pagination.test.js +2 -176
  93. package/components/pagination/test-suites/LionPagination.suite.js +201 -0
  94. package/components/progress-indicator/test/lion-progress-indicator.test.js +2 -203
  95. package/components/progress-indicator/test-suites/lion-progress-indicator.suite.js +214 -0
  96. package/components/radio-group/test/lion-radio-group.test.js +2 -162
  97. package/components/radio-group/test/lion-radio.test.js +2 -54
  98. package/components/radio-group/test-suites/lion-radio-group.suite.js +173 -0
  99. package/components/radio-group/test-suites/lion-radio.suite.js +70 -0
  100. package/components/select/test/lion-select.test.js +2 -79
  101. package/components/select/test-suites/LionSelect.suite.js +94 -0
  102. package/components/select-rich/test/lion-select-invoker.test.js +2 -86
  103. package/components/select-rich/test/lion-select-rich-interaction.test.js +2 -430
  104. package/components/select-rich/test/lion-select-rich.test.js +2 -1193
  105. package/components/select-rich/test-suites/lion-select-invoker.suite.js +98 -0
  106. package/components/select-rich/test-suites/lion-select-rich-interaction.suite.js +452 -0
  107. package/components/select-rich/test-suites/lion-select-rich.suite.js +1236 -0
  108. package/components/steps/test/lion-step.test.js +2 -97
  109. package/components/steps/test/lion-steps.test.js +2 -433
  110. package/components/steps/test-suites/lion-step.suite.js +113 -0
  111. package/components/steps/test-suites/lion-steps.suite.js +445 -0
  112. package/components/switch/test/lion-switch.test.js +2 -232
  113. package/components/switch/test-suites/lion-switch.suite.js +450 -0
  114. package/components/tabs/test/lion-tabs.test.js +2 -596
  115. package/components/tabs/test-suites/lion-tabs.suite.js +617 -0
  116. package/components/textarea/src/LionTextarea.js +5 -2
  117. package/components/textarea/test/lion-textarea.test.js +2 -159
  118. package/components/textarea/test-suites/lion-textarea.suite.js +192 -0
  119. package/components/tooltip/test/lion-tooltip.test.js +2 -393
  120. package/components/tooltip/test-suites/lion-tooltip.suite.js +409 -0
  121. package/custom-elements.json +14855 -10161
  122. package/dialog-test-suites.js +2 -0
  123. package/dist-types/components/accordion/test/lion-accordion.test.d.ts +1 -2
  124. package/dist-types/components/accordion/test/lion-accordion.test.d.ts.map +1 -1
  125. package/dist-types/components/accordion/test-suites/lion-accordion.suite.d.ts +18 -0
  126. package/dist-types/components/accordion/test-suites/lion-accordion.suite.d.ts.map +1 -0
  127. package/dist-types/components/button/test-suites/LionButton.suite.d.ts +10 -4
  128. package/dist-types/components/button/test-suites/LionButton.suite.d.ts.map +1 -1
  129. package/dist-types/components/button/test-suites/LionButtonReset.suite.d.ts +10 -4
  130. package/dist-types/components/button/test-suites/LionButtonReset.suite.d.ts.map +1 -1
  131. package/dist-types/components/button/test-suites/LionButtonSubmit.suite.d.ts +10 -4
  132. package/dist-types/components/button/test-suites/LionButtonSubmit.suite.d.ts.map +1 -1
  133. package/dist-types/components/calendar/test/lion-calendar.test.d.ts +1 -3
  134. package/dist-types/components/calendar/test/lion-calendar.test.d.ts.map +1 -1
  135. package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts +13 -4
  136. package/dist-types/components/calendar/test-suites/LionCalendar.suite.d.ts.map +1 -1
  137. package/dist-types/components/checkbox-group/test/lion-checkbox-group-integrations.test.d.ts.map +1 -1
  138. package/dist-types/components/checkbox-group/test/lion-checkbox-integrations.test.d.ts.map +1 -1
  139. package/dist-types/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.d.ts +12 -9
  140. package/dist-types/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.d.ts.map +1 -1
  141. package/dist-types/components/collapsible/test/lion-collapsible.test.d.ts +1 -3
  142. package/dist-types/components/collapsible/test/lion-collapsible.test.d.ts.map +1 -1
  143. package/dist-types/components/collapsible/test-suites/LionCollapsible.suite.d.ts +18 -0
  144. package/dist-types/components/collapsible/test-suites/LionCollapsible.suite.d.ts.map +1 -0
  145. package/dist-types/components/combobox/test/lion-combobox.test.d.ts +1 -5
  146. package/dist-types/components/combobox/test/lion-combobox.test.d.ts.map +1 -1
  147. package/dist-types/components/combobox/test-suites/lion-combobox.suite.d.ts +17 -0
  148. package/dist-types/components/combobox/test-suites/lion-combobox.suite.d.ts.map +1 -0
  149. package/dist-types/components/core/src/ScopedElementsMixin.d.ts.map +1 -1
  150. package/dist-types/components/core/test-helpers/isElementVisible.d.ts +12 -0
  151. package/dist-types/components/core/test-helpers/isElementVisible.d.ts.map +1 -0
  152. package/dist-types/components/core/test-helpers/resolveSuiteTag.d.ts +29 -0
  153. package/dist-types/components/core/test-helpers/resolveSuiteTag.d.ts.map +1 -0
  154. package/dist-types/components/core/types/TestSuiteTypes.d.ts +40 -0
  155. package/dist-types/components/core/types/TestSuiteTypes.d.ts.map +1 -0
  156. package/dist-types/components/dialog/test/lion-dialog.integration.test.d.ts.map +1 -1
  157. package/dist-types/components/dialog/test/lion-dialog.test.d.ts +1 -5
  158. package/dist-types/components/dialog/test/lion-dialog.test.d.ts.map +1 -1
  159. package/dist-types/components/dialog/test-suites/lion-dialog.suite.d.ts +19 -0
  160. package/dist-types/components/dialog/test-suites/lion-dialog.suite.d.ts.map +1 -0
  161. package/dist-types/components/drawer/test/lion-drawer.test.d.ts +1 -3
  162. package/dist-types/components/drawer/test/lion-drawer.test.d.ts.map +1 -1
  163. package/dist-types/components/drawer/test-suites/LionDrawer.suite.d.ts +20 -0
  164. package/dist-types/components/drawer/test-suites/LionDrawer.suite.d.ts.map +1 -0
  165. package/dist-types/components/fieldset/test/lion-fieldset.test.d.ts.map +1 -1
  166. package/dist-types/components/form/test/lion-form.test.d.ts +1 -12
  167. package/dist-types/components/form/test/lion-form.test.d.ts.map +1 -1
  168. package/dist-types/components/form/test-suites/lion-form.suite.d.ts +39 -0
  169. package/dist-types/components/form/test-suites/lion-form.suite.d.ts.map +1 -0
  170. package/dist-types/components/form-core/test-suites/FormRegistrationMixins.suite.d.ts +14 -17
  171. package/dist-types/components/form-core/test-suites/FormRegistrationMixins.suite.d.ts.map +1 -1
  172. package/dist-types/components/form-core/test-suites/FormatMixin.suite.d.ts +22 -38
  173. package/dist-types/components/form-core/test-suites/FormatMixin.suite.d.ts.map +1 -1
  174. package/dist-types/components/form-core/test-suites/InteractionStateMixin.suite.d.ts +11 -5
  175. package/dist-types/components/form-core/test-suites/InteractionStateMixin.suite.d.ts.map +1 -1
  176. package/dist-types/components/form-core/test-suites/NativeTextFieldMixin.suite.d.ts +9 -4
  177. package/dist-types/components/form-core/test-suites/NativeTextFieldMixin.suite.d.ts.map +1 -1
  178. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts +9 -4
  179. package/dist-types/components/form-core/test-suites/ValidateMixin.suite.d.ts.map +1 -1
  180. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts +10 -1
  181. package/dist-types/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.d.ts.map +1 -1
  182. package/dist-types/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.d.ts +17 -6
  183. package/dist-types/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.d.ts.map +1 -1
  184. package/dist-types/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.d.ts +5 -2
  185. package/dist-types/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.d.ts.map +1 -1
  186. package/dist-types/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.d.ts +10 -5
  187. package/dist-types/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.d.ts.map +1 -1
  188. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.d.ts +10 -5
  189. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.d.ts.map +1 -1
  190. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin.suite.d.ts +10 -5
  191. package/dist-types/components/form-core/test-suites/form-group/FormGroupMixin.suite.d.ts.map +1 -1
  192. package/dist-types/components/icon/test/lion-icon.test.d.ts +1 -4
  193. package/dist-types/components/icon/test/lion-icon.test.d.ts.map +1 -1
  194. package/dist-types/components/icon/test-suites/lion-icon.suite.d.ts +16 -0
  195. package/dist-types/components/icon/test-suites/lion-icon.suite.d.ts.map +1 -0
  196. package/dist-types/components/input/test/lion-input-integrations.test.d.ts.map +1 -1
  197. package/dist-types/components/input/test/lion-input.test.d.ts +1 -2
  198. package/dist-types/components/input/test/lion-input.test.d.ts.map +1 -1
  199. package/dist-types/components/input/test-suites/lion-input.suite.d.ts +17 -0
  200. package/dist-types/components/input/test-suites/lion-input.suite.d.ts.map +1 -0
  201. package/dist-types/components/input-amount/src/parsers.d.ts.map +1 -1
  202. package/dist-types/components/input-amount/test/lion-input-amount-integrations.test.d.ts.map +1 -1
  203. package/dist-types/components/input-amount/test/lion-input-amount.test.d.ts +1 -2
  204. package/dist-types/components/input-amount/test/lion-input-amount.test.d.ts.map +1 -1
  205. package/dist-types/components/input-amount/test-suites/lion-input-amount.suite.d.ts +19 -0
  206. package/dist-types/components/input-amount/test-suites/lion-input-amount.suite.d.ts.map +1 -0
  207. package/dist-types/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.d.ts.map +1 -1
  208. package/dist-types/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.d.ts +7 -3
  209. package/dist-types/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.d.ts.map +1 -1
  210. package/dist-types/components/input-date/test/lion-input-date-integrations.test.d.ts.map +1 -1
  211. package/dist-types/components/input-date/test/lion-input-date.test.d.ts +1 -3
  212. package/dist-types/components/input-date/test/lion-input-date.test.d.ts.map +1 -1
  213. package/dist-types/components/input-date/test-suites/lion-input-date.suite.d.ts +15 -0
  214. package/dist-types/components/input-date/test-suites/lion-input-date.suite.d.ts.map +1 -0
  215. package/dist-types/components/input-datepicker/test/lion-input-datepicker-integrations.test.d.ts.map +1 -1
  216. package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts +1 -2
  217. package/dist-types/components/input-datepicker/test/lion-input-datepicker.test.d.ts.map +1 -1
  218. package/dist-types/components/input-datepicker/test-helpers/DatepickerInputObject.d.ts +8 -0
  219. package/dist-types/components/input-datepicker/test-helpers/DatepickerInputObject.d.ts.map +1 -1
  220. package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts +15 -5
  221. package/dist-types/components/input-datepicker/test-suites/LionInputDatepicker.suite.d.ts.map +1 -1
  222. package/dist-types/components/input-email/test/lion-input-email-integrations.test.d.ts.map +1 -1
  223. package/dist-types/components/input-email/test/lion-input-email.test.d.ts +1 -3
  224. package/dist-types/components/input-email/test/lion-input-email.test.d.ts.map +1 -1
  225. package/dist-types/components/input-email/test-suites/lion-input-email.suite.d.ts +15 -0
  226. package/dist-types/components/input-email/test-suites/lion-input-email.suite.d.ts.map +1 -0
  227. package/dist-types/components/input-file/test/lion-input-file.test.d.ts +1 -5
  228. package/dist-types/components/input-file/test/lion-input-file.test.d.ts.map +1 -1
  229. package/dist-types/components/input-file/test-suites/lion-input-file.suite.d.ts +19 -0
  230. package/dist-types/components/input-file/test-suites/lion-input-file.suite.d.ts.map +1 -0
  231. package/dist-types/components/input-iban/test/lion-input-iban-integrations.test.d.ts.map +1 -1
  232. package/dist-types/components/input-iban/test/lion-input-iban.test.d.ts +1 -3
  233. package/dist-types/components/input-iban/test/lion-input-iban.test.d.ts.map +1 -1
  234. package/dist-types/components/input-iban/test-suites/lion-input-iban.suite.d.ts +15 -0
  235. package/dist-types/components/input-iban/test-suites/lion-input-iban.suite.d.ts.map +1 -0
  236. package/dist-types/components/input-range/test/lion-input-range.test.d.ts +1 -3
  237. package/dist-types/components/input-range/test/lion-input-range.test.d.ts.map +1 -1
  238. package/dist-types/components/input-range/test-suites/lion-input-range.suite.d.ts +15 -0
  239. package/dist-types/components/input-range/test-suites/lion-input-range.suite.d.ts.map +1 -0
  240. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.integration.suite.d.ts +10 -2
  241. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.integration.suite.d.ts.map +1 -1
  242. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts +10 -2
  243. package/dist-types/components/input-stepper/test-suites/lion-input-stepper.suite.d.ts.map +1 -1
  244. package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts +6 -4
  245. package/dist-types/components/input-tel/test-suites/LionInputTel.suite.d.ts.map +1 -1
  246. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.d.ts +7 -3
  247. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.d.ts.map +1 -1
  248. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.d.ts +7 -3
  249. package/dist-types/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.d.ts.map +1 -1
  250. package/dist-types/components/listbox/test-suites/ListboxMixin.suite.d.ts +3 -4
  251. package/dist-types/components/listbox/test-suites/ListboxMixin.suite.d.ts.map +1 -1
  252. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +6 -5
  253. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -1
  254. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +6 -5
  255. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -1
  256. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts +10 -4
  257. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts.map +1 -1
  258. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +6 -5
  259. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -1
  260. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +7 -6
  261. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -1
  262. package/dist-types/components/overlays/test-suites/OverlayMixin.suite.d.ts.map +1 -1
  263. package/dist-types/components/pagination/test/lion-pagination.test.d.ts +1 -3
  264. package/dist-types/components/pagination/test/lion-pagination.test.d.ts.map +1 -1
  265. package/dist-types/components/pagination/test-suites/LionPagination.suite.d.ts +18 -0
  266. package/dist-types/components/pagination/test-suites/LionPagination.suite.d.ts.map +1 -0
  267. package/dist-types/components/progress-indicator/test/lion-progress-indicator.test.d.ts +1 -3
  268. package/dist-types/components/progress-indicator/test/lion-progress-indicator.test.d.ts.map +1 -1
  269. package/dist-types/components/progress-indicator/test-suites/lion-progress-indicator.suite.d.ts +15 -0
  270. package/dist-types/components/progress-indicator/test-suites/lion-progress-indicator.suite.d.ts.map +1 -0
  271. package/dist-types/components/radio-group/test/lion-radio-group.test.d.ts +1 -5
  272. package/dist-types/components/radio-group/test/lion-radio-group.test.d.ts.map +1 -1
  273. package/dist-types/components/radio-group/test/lion-radio.test.d.ts +1 -2
  274. package/dist-types/components/radio-group/test/lion-radio.test.d.ts.map +1 -1
  275. package/dist-types/components/radio-group/test-suites/lion-radio-group.suite.d.ts +19 -0
  276. package/dist-types/components/radio-group/test-suites/lion-radio-group.suite.d.ts.map +1 -0
  277. package/dist-types/components/radio-group/test-suites/lion-radio.suite.d.ts +17 -0
  278. package/dist-types/components/radio-group/test-suites/lion-radio.suite.d.ts.map +1 -0
  279. package/dist-types/components/select/test/lion-select.test.d.ts +1 -2
  280. package/dist-types/components/select/test/lion-select.test.d.ts.map +1 -1
  281. package/dist-types/components/select/test-suites/LionSelect.suite.d.ts +16 -0
  282. package/dist-types/components/select/test-suites/LionSelect.suite.d.ts.map +1 -0
  283. package/dist-types/components/select-rich/test/lion-select-invoker.test.d.ts +1 -2
  284. package/dist-types/components/select-rich/test/lion-select-invoker.test.d.ts.map +1 -1
  285. package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts +1 -5
  286. package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts.map +1 -1
  287. package/dist-types/components/select-rich/test/lion-select-rich.test.d.ts +1 -8
  288. package/dist-types/components/select-rich/test/lion-select-rich.test.d.ts.map +1 -1
  289. package/dist-types/components/select-rich/test-suites/lion-select-invoker.suite.d.ts +19 -0
  290. package/dist-types/components/select-rich/test-suites/lion-select-invoker.suite.d.ts.map +1 -0
  291. package/dist-types/components/select-rich/test-suites/lion-select-rich-interaction.suite.d.ts +19 -0
  292. package/dist-types/components/select-rich/test-suites/lion-select-rich-interaction.suite.d.ts.map +1 -0
  293. package/dist-types/components/select-rich/test-suites/lion-select-rich.suite.d.ts +21 -0
  294. package/dist-types/components/select-rich/test-suites/lion-select-rich.suite.d.ts.map +1 -0
  295. package/dist-types/components/steps/test/lion-step.test.d.ts +1 -2
  296. package/dist-types/components/steps/test/lion-step.test.d.ts.map +1 -1
  297. package/dist-types/components/steps/test/lion-steps.test.d.ts +1 -8
  298. package/dist-types/components/steps/test/lion-steps.test.d.ts.map +1 -1
  299. package/dist-types/components/steps/test-suites/lion-step.suite.d.ts +17 -0
  300. package/dist-types/components/steps/test-suites/lion-step.suite.d.ts.map +1 -0
  301. package/dist-types/components/steps/test-suites/lion-steps.suite.d.ts +22 -0
  302. package/dist-types/components/steps/test-suites/lion-steps.suite.d.ts.map +1 -0
  303. package/dist-types/components/switch/test/lion-switch.test.d.ts +1 -4
  304. package/dist-types/components/switch/test/lion-switch.test.d.ts.map +1 -1
  305. package/dist-types/components/switch/test-suites/lion-switch.suite.d.ts +17 -0
  306. package/dist-types/components/switch/test-suites/lion-switch.suite.d.ts.map +1 -0
  307. package/dist-types/components/tabs/test/lion-tabs.test.d.ts +1 -5
  308. package/dist-types/components/tabs/test/lion-tabs.test.d.ts.map +1 -1
  309. package/dist-types/components/tabs/test-suites/lion-tabs.suite.d.ts +17 -0
  310. package/dist-types/components/tabs/test-suites/lion-tabs.suite.d.ts.map +1 -0
  311. package/dist-types/components/textarea/src/LionTextarea.d.ts.map +1 -1
  312. package/dist-types/components/textarea/test/lion-textarea.test.d.ts +1 -3
  313. package/dist-types/components/textarea/test/lion-textarea.test.d.ts.map +1 -1
  314. package/dist-types/components/textarea/test-suites/lion-textarea.suite.d.ts +15 -0
  315. package/dist-types/components/textarea/test-suites/lion-textarea.suite.d.ts.map +1 -0
  316. package/dist-types/components/tooltip/test/lion-tooltip.test.d.ts +1 -3
  317. package/dist-types/components/tooltip/test/lion-tooltip.test.d.ts.map +1 -1
  318. package/dist-types/components/tooltip/test-suites/lion-tooltip.suite.d.ts +19 -0
  319. package/dist-types/components/tooltip/test-suites/lion-tooltip.suite.d.ts.map +1 -0
  320. package/dist-types/exports/accordion-test-suites.d.ts +2 -0
  321. package/dist-types/exports/accordion-test-suites.d.ts.map +1 -0
  322. package/dist-types/exports/collapsible-test-suites.d.ts +2 -0
  323. package/dist-types/exports/collapsible-test-suites.d.ts.map +1 -0
  324. package/dist-types/exports/combobox-test-suites.d.ts +2 -0
  325. package/dist-types/exports/combobox-test-suites.d.ts.map +1 -0
  326. package/dist-types/exports/dialog-test-suites.d.ts +2 -0
  327. package/dist-types/exports/dialog-test-suites.d.ts.map +1 -0
  328. package/dist-types/exports/drawer-test-suites.d.ts +2 -0
  329. package/dist-types/exports/drawer-test-suites.d.ts.map +1 -0
  330. package/dist-types/exports/form-test-suites.d.ts +2 -0
  331. package/dist-types/exports/form-test-suites.d.ts.map +1 -0
  332. package/dist-types/exports/icon-test-suites.d.ts +2 -0
  333. package/dist-types/exports/icon-test-suites.d.ts.map +1 -0
  334. package/dist-types/exports/input-amount-test-suites.d.ts +2 -0
  335. package/dist-types/exports/input-amount-test-suites.d.ts.map +1 -0
  336. package/dist-types/exports/input-date-test-suites.d.ts +2 -0
  337. package/dist-types/exports/input-date-test-suites.d.ts.map +1 -0
  338. package/dist-types/exports/input-email-test-suites.d.ts +2 -0
  339. package/dist-types/exports/input-email-test-suites.d.ts.map +1 -0
  340. package/dist-types/exports/input-file-test-suites.d.ts +2 -0
  341. package/dist-types/exports/input-file-test-suites.d.ts.map +1 -0
  342. package/dist-types/exports/input-iban-test-suites.d.ts +2 -0
  343. package/dist-types/exports/input-iban-test-suites.d.ts.map +1 -0
  344. package/dist-types/exports/input-range-test-suites.d.ts +2 -0
  345. package/dist-types/exports/input-range-test-suites.d.ts.map +1 -0
  346. package/dist-types/exports/input-stepper-suites.d.ts +7 -2
  347. package/dist-types/exports/input-stepper-suites.d.ts.map +1 -1
  348. package/dist-types/exports/input-test-suites.d.ts +2 -0
  349. package/dist-types/exports/input-test-suites.d.ts.map +1 -0
  350. package/dist-types/exports/menu-test-suites.d.ts.map +1 -1
  351. package/dist-types/exports/pagination-test-suites.d.ts +2 -0
  352. package/dist-types/exports/pagination-test-suites.d.ts.map +1 -0
  353. package/dist-types/exports/progress-indicator-test-suites.d.ts +2 -0
  354. package/dist-types/exports/progress-indicator-test-suites.d.ts.map +1 -0
  355. package/dist-types/exports/radio-group-test-suites.d.ts +3 -0
  356. package/dist-types/exports/radio-group-test-suites.d.ts.map +1 -0
  357. package/dist-types/exports/select-rich-test-suites.d.ts +4 -0
  358. package/dist-types/exports/select-rich-test-suites.d.ts.map +1 -0
  359. package/dist-types/exports/select-test-suites.d.ts +2 -0
  360. package/dist-types/exports/select-test-suites.d.ts.map +1 -0
  361. package/dist-types/exports/steps-test-suites.d.ts +3 -0
  362. package/dist-types/exports/steps-test-suites.d.ts.map +1 -0
  363. package/dist-types/exports/switch-test-suites.d.ts +2 -0
  364. package/dist-types/exports/switch-test-suites.d.ts.map +1 -0
  365. package/dist-types/exports/tabs-test-suites.d.ts +2 -0
  366. package/dist-types/exports/tabs-test-suites.d.ts.map +1 -0
  367. package/dist-types/exports/textarea-test-suites.d.ts +2 -0
  368. package/dist-types/exports/textarea-test-suites.d.ts.map +1 -0
  369. package/dist-types/exports/tooltip-test-suites.d.ts +2 -0
  370. package/dist-types/exports/tooltip-test-suites.d.ts.map +1 -0
  371. package/dist-types/exports/types/test-suites.d.ts +4 -0
  372. package/dist-types/exports/types/test-suites.d.ts.map +1 -0
  373. package/dist-types/tsconfig.tsbuildinfo +1 -1
  374. package/drawer-test-suites.js +1 -0
  375. package/exports/accordion-test-suites.js +2 -0
  376. package/exports/collapsible-test-suites.js +1 -0
  377. package/exports/combobox-test-suites.js +2 -0
  378. package/exports/dialog-test-suites.js +2 -0
  379. package/exports/drawer-test-suites.js +1 -0
  380. package/exports/form-test-suites.js +2 -0
  381. package/exports/icon-test-suites.js +2 -0
  382. package/exports/input-amount-test-suites.js +2 -0
  383. package/exports/input-date-test-suites.js +2 -0
  384. package/exports/input-email-test-suites.js +2 -0
  385. package/exports/input-file-test-suites.js +2 -0
  386. package/exports/input-iban-test-suites.js +2 -0
  387. package/exports/input-range-test-suites.js +2 -0
  388. package/exports/input-stepper-suites.js +18 -4
  389. package/exports/input-test-suites.js +2 -0
  390. package/exports/menu-test-suites.js +3 -0
  391. package/exports/pagination-test-suites.js +1 -0
  392. package/exports/progress-indicator-test-suites.js +2 -0
  393. package/exports/radio-group-test-suites.js +3 -0
  394. package/exports/select-rich-test-suites.js +4 -0
  395. package/exports/select-test-suites.js +1 -0
  396. package/exports/steps-test-suites.js +3 -0
  397. package/exports/switch-test-suites.js +2 -0
  398. package/exports/tabs-test-suites.js +2 -0
  399. package/exports/textarea-test-suites.js +2 -0
  400. package/exports/tooltip-test-suites.js +2 -0
  401. package/exports/types/test-suites.ts +3 -0
  402. package/form-test-suites.js +2 -0
  403. package/generated/awesome-phonenumber/provenance.json +1 -1
  404. package/icon-test-suites.js +2 -0
  405. package/input-amount-test-suites.js +2 -0
  406. package/input-date-test-suites.js +2 -0
  407. package/input-email-test-suites.js +2 -0
  408. package/input-file-test-suites.js +2 -0
  409. package/input-iban-test-suites.js +2 -0
  410. package/input-range-test-suites.js +2 -0
  411. package/input-stepper-suites.js +18 -4
  412. package/input-test-suites.js +2 -0
  413. package/menu-test-suites.js +3 -0
  414. package/package.json +4 -1
  415. package/pagination-test-suites.js +1 -0
  416. package/progress-indicator-test-suites.js +2 -0
  417. package/radio-group-test-suites.js +3 -0
  418. package/select-rich-test-suites.js +4 -0
  419. package/select-test-suites.js +1 -0
  420. package/steps-test-suites.js +3 -0
  421. package/switch-test-suites.js +2 -0
  422. package/tabs-test-suites.js +2 -0
  423. package/textarea-test-suites.js +2 -0
  424. package/tooltip-test-suites.js +2 -0
  425. package/vscode.html-custom-data.json +55 -0
  426. package/web-types.json +219 -1
  427. package/components/button/test/demos.screenshots-test.js +0 -100
  428. package/components/calendar/test/demos.screenshots-test.js +0 -118
  429. package/components/input-file/test/lion-selected-file-list.test.js +0 -199
  430. package/components/select-rich/test/demos.screenshots-test.js +0 -168
  431. package/components/switch/test/lion-switch-button.test.js +0 -204
  432. package/dist-types/components/button/test/demos.screenshots-test.d.ts +0 -2
  433. package/dist-types/components/button/test/demos.screenshots-test.d.ts.map +0 -1
  434. package/dist-types/components/calendar/test/demos.screenshots-test.d.ts +0 -2
  435. package/dist-types/components/calendar/test/demos.screenshots-test.d.ts.map +0 -1
  436. package/dist-types/components/input-file/test/lion-selected-file-list.test.d.ts +0 -5
  437. package/dist-types/components/input-file/test/lion-selected-file-list.test.d.ts.map +0 -1
  438. package/dist-types/components/select-rich/test/demos.screenshots-test.d.ts +0 -2
  439. package/dist-types/components/select-rich/test/demos.screenshots-test.d.ts.map +0 -1
  440. package/dist-types/components/switch/test/lion-switch-button.test.d.ts +0 -4
  441. package/dist-types/components/switch/test/lion-switch-button.test.d.ts.map +0 -1
  442. package/docs/components/accordion/api-table.md +0 -53
  443. package/docs/components/accordion/index.md +0 -13
  444. package/docs/components/accordion/overview.md +0 -141
  445. package/docs/components/accordion/reference.md +0 -59
  446. package/docs/components/accordion/use-cases.md +0 -303
  447. package/docs/components/button/api-table.md +0 -84
  448. package/docs/components/button/assets/bootstrap-button.js +0 -245
  449. package/docs/components/button/examples.md +0 -42
  450. package/docs/components/button/extensions.md +0 -42
  451. package/docs/components/button/index.md +0 -13
  452. package/docs/components/button/overview.md +0 -42
  453. package/docs/components/button/src/icon.svg.js +0 -5
  454. package/docs/components/button/use-cases.md +0 -121
  455. package/docs/components/calendar/api-table.md +0 -56
  456. package/docs/components/calendar/index.md +0 -13
  457. package/docs/components/calendar/overview.md +0 -61
  458. package/docs/components/calendar/use-cases.md +0 -243
  459. package/docs/components/checkbox-group/api-table.md +0 -117
  460. package/docs/components/checkbox-group/index.md +0 -13
  461. package/docs/components/checkbox-group/overview.md +0 -51
  462. package/docs/components/checkbox-group/use-cases.md +0 -192
  463. package/docs/components/collapsible/api-table.md +0 -55
  464. package/docs/components/collapsible/assets/CustomCollapsible.js +0 -117
  465. package/docs/components/collapsible/assets/applyDemoCollapsibleStyles.js +0 -41
  466. package/docs/components/collapsible/examples.md +0 -95
  467. package/docs/components/collapsible/index.md +0 -13
  468. package/docs/components/collapsible/overview.md +0 -51
  469. package/docs/components/collapsible/use-cases.md +0 -91
  470. package/docs/components/combobox/api-table.md +0 -122
  471. package/docs/components/combobox/extensions.md +0 -174
  472. package/docs/components/combobox/index.md +0 -13
  473. package/docs/components/combobox/overview.md +0 -74
  474. package/docs/components/combobox/src/LinkMixin.js +0 -60
  475. package/docs/components/combobox/src/demo-selection-display.js +0 -164
  476. package/docs/components/combobox/src/gh-combobox/gh-button.js +0 -71
  477. package/docs/components/combobox/src/gh-combobox/gh-combobox.js +0 -515
  478. package/docs/components/combobox/src/google-combobox/assets/google-clear-icon.js +0 -9
  479. package/docs/components/combobox/src/google-combobox/assets/google-search-icon.js +0 -9
  480. package/docs/components/combobox/src/google-combobox/assets/google-voice-search-icon.js +0 -19
  481. package/docs/components/combobox/src/google-combobox/google-combobox.js +0 -461
  482. package/docs/components/combobox/src/lazyRender.js +0 -29
  483. package/docs/components/combobox/src/levenshtein.js +0 -95
  484. package/docs/components/combobox/src/md-combobox/MdFieldMixin.js +0 -345
  485. package/docs/components/combobox/src/md-combobox/md-combobox.js +0 -91
  486. package/docs/components/combobox/src/md-combobox/md-input.js +0 -5
  487. package/docs/components/combobox/src/md-combobox/style/load-roboto.js +0 -6
  488. package/docs/components/combobox/src/md-combobox/style/md-ripple.js +0 -82
  489. package/docs/components/combobox/src/wa-combobox/wa-combobox.js +0 -375
  490. package/docs/components/combobox/use-cases.md +0 -561
  491. package/docs/components/dialog/api-table.md +0 -61
  492. package/docs/components/dialog/index.md +0 -13
  493. package/docs/components/dialog/overview.md +0 -71
  494. package/docs/components/dialog/src/demoStyle.js +0 -57
  495. package/docs/components/dialog/src/external-dialog.js +0 -32
  496. package/docs/components/dialog/src/slots-dialog-content.js +0 -32
  497. package/docs/components/dialog/src/styled-dialog-content.js +0 -38
  498. package/docs/components/dialog/use-cases.md +0 -199
  499. package/docs/components/drawer/api-table.md +0 -64
  500. package/docs/components/drawer/index.md +0 -13
  501. package/docs/components/drawer/overview.md +0 -80
  502. package/docs/components/drawer/src/demoStyle.js +0 -71
  503. package/docs/components/drawer/use-cases.md +0 -206
  504. package/docs/components/fieldset/api-table.md +0 -24
  505. package/docs/components/fieldset/index.md +0 -13
  506. package/docs/components/fieldset/overview.md +0 -61
  507. package/docs/components/fieldset/use-cases.md +0 -203
  508. package/docs/components/form/api-table.md +0 -12
  509. package/docs/components/form/index.md +0 -13
  510. package/docs/components/form/overview.md +0 -66
  511. package/docs/components/form/use-cases.md +0 -230
  512. package/docs/components/icon/api-table.md +0 -41
  513. package/docs/components/icon/assets/bugs/bug01.svg.js +0 -2
  514. package/docs/components/icon/assets/bugs/bug02.svg.js +0 -2
  515. package/docs/components/icon/assets/bugs/bug05.svg.js +0 -2
  516. package/docs/components/icon/assets/bugs/bug06.svg.js +0 -2
  517. package/docs/components/icon/assets/bugs/bug08.svg.js +0 -2
  518. package/docs/components/icon/assets/bugs/bug12.svg.js +0 -2
  519. package/docs/components/icon/assets/bugs/bug19.svg.js +0 -2
  520. package/docs/components/icon/assets/bugs/bug23.svg.js +0 -2
  521. package/docs/components/icon/assets/bugs/bug24.svg.js +0 -2
  522. package/docs/components/icon/assets/iconset-bugs.js +0 -11
  523. package/docs/components/icon/assets/iconset-misc.js +0 -3
  524. package/docs/components/icon/assets/iconset-space.js +0 -31
  525. package/docs/components/icon/assets/misc/arrowLeft.svg.js +0 -6
  526. package/docs/components/icon/assets/space/aliens-spaceship.svg.js +0 -2
  527. package/docs/components/icon/assets/space/meteor.svg.js +0 -2
  528. package/docs/components/icon/assets/space/moon-flag.svg.js +0 -2
  529. package/docs/components/icon/assets/space/moon.svg.js +0 -2
  530. package/docs/components/icon/assets/space/night.svg.js +0 -2
  531. package/docs/components/icon/assets/space/orbit.svg.js +0 -2
  532. package/docs/components/icon/assets/space/planet.svg.js +0 -2
  533. package/docs/components/icon/assets/space/robot.svg.js +0 -2
  534. package/docs/components/icon/assets/space/rocket.svg.js +0 -2
  535. package/docs/components/icon/assets/space/satellite.svg.js +0 -2
  536. package/docs/components/icon/assets/space/signal.svg.js +0 -2
  537. package/docs/components/icon/assets/space/space-helmet.svg.js +0 -2
  538. package/docs/components/icon/assets/space/sun.svg.js +0 -2
  539. package/docs/components/icon/assets/space/telescope.svg.js +0 -2
  540. package/docs/components/icon/index.md +0 -13
  541. package/docs/components/icon/overview.md +0 -52
  542. package/docs/components/icon/use-cases.md +0 -92
  543. package/docs/components/index.md +0 -17
  544. package/docs/components/input/api-table.md +0 -52
  545. package/docs/components/input/index.md +0 -13
  546. package/docs/components/input/overview.md +0 -48
  547. package/docs/components/input/use-cases.md +0 -90
  548. package/docs/components/input-amount/api-table.md +0 -66
  549. package/docs/components/input-amount/index.md +0 -13
  550. package/docs/components/input-amount/overview.md +0 -61
  551. package/docs/components/input-amount/use-cases.md +0 -147
  552. package/docs/components/input-amount-dropdown/api-table.md +0 -87
  553. package/docs/components/input-amount-dropdown/index.md +0 -13
  554. package/docs/components/input-amount-dropdown/use-cases.md +0 -103
  555. package/docs/components/input-date/api-table.md +0 -58
  556. package/docs/components/input-date/index.md +0 -13
  557. package/docs/components/input-date/overview.md +0 -51
  558. package/docs/components/input-date/use-cases.md +0 -96
  559. package/docs/components/input-datepicker/api-table.md +0 -99
  560. package/docs/components/input-datepicker/index.md +0 -13
  561. package/docs/components/input-datepicker/overview.md +0 -54
  562. package/docs/components/input-datepicker/use-cases.md +0 -117
  563. package/docs/components/input-email/api-table.md +0 -53
  564. package/docs/components/input-email/index.md +0 -13
  565. package/docs/components/input-email/overview.md +0 -44
  566. package/docs/components/input-email/use-cases.md +0 -60
  567. package/docs/components/input-file/api-table.md +0 -157
  568. package/docs/components/input-file/index.md +0 -13
  569. package/docs/components/input-file/overview.md +0 -44
  570. package/docs/components/input-file/use-cases.md +0 -454
  571. package/docs/components/input-iban/api-table.md +0 -54
  572. package/docs/components/input-iban/index.md +0 -13
  573. package/docs/components/input-iban/overview.md +0 -49
  574. package/docs/components/input-iban/use-cases.md +0 -114
  575. package/docs/components/input-range/api-table.md +0 -71
  576. package/docs/components/input-range/index.md +0 -13
  577. package/docs/components/input-range/overview.md +0 -44
  578. package/docs/components/input-range/use-cases.md +0 -126
  579. package/docs/components/input-stepper/api-table.md +0 -74
  580. package/docs/components/input-stepper/index.md +0 -13
  581. package/docs/components/input-stepper/overview.md +0 -48
  582. package/docs/components/input-stepper/use-cases.md +0 -155
  583. package/docs/components/input-tel/api-table.md +0 -77
  584. package/docs/components/input-tel/index.md +0 -13
  585. package/docs/components/input-tel/overview.md +0 -74
  586. package/docs/components/input-tel/src/h-region-code-table.js +0 -109
  587. package/docs/components/input-tel/use-cases.md +0 -319
  588. package/docs/components/input-tel-dropdown/api-table.md +0 -85
  589. package/docs/components/input-tel-dropdown/extensions.md +0 -44
  590. package/docs/components/input-tel-dropdown/index.md +0 -13
  591. package/docs/components/input-tel-dropdown/overview.md +0 -50
  592. package/docs/components/input-tel-dropdown/src/intl-input-tel-dropdown.js +0 -138
  593. package/docs/components/input-tel-dropdown/use-cases.md +0 -171
  594. package/docs/components/listbox/api-table.md +0 -65
  595. package/docs/components/listbox/index.md +0 -13
  596. package/docs/components/listbox/overview.md +0 -54
  597. package/docs/components/listbox/src/listboxData.js +0 -131
  598. package/docs/components/listbox/use-cases.md +0 -154
  599. package/docs/components/menu/api-table.md +0 -44
  600. package/docs/components/menu/applyMenuDemoStyles.js +0 -173
  601. package/docs/components/menu/extensions.md +0 -262
  602. package/docs/components/menu/index.md +0 -13
  603. package/docs/components/menu/migration.md +0 -129
  604. package/docs/components/menu/overview.md +0 -448
  605. package/docs/components/menu/src/DemoNavigationBar.js +0 -441
  606. package/docs/components/menu/src/DemoSpinButton.js +0 -215
  607. package/docs/components/menu/src/DemoToolbar.js +0 -101
  608. package/docs/components/menu/src/DemoTree.js +0 -55
  609. package/docs/components/menu/src/navigation-bar-types.js +0 -41
  610. package/docs/components/menu/use-cases.md +0 -74
  611. package/docs/components/pagination/api-table.md +0 -45
  612. package/docs/components/pagination/index.md +0 -13
  613. package/docs/components/pagination/overview.md +0 -41
  614. package/docs/components/pagination/use-cases.md +0 -113
  615. package/docs/components/progress-indicator/api-table.md +0 -48
  616. package/docs/components/progress-indicator/assets/my-determinate-progress-bar.js +0 -30
  617. package/docs/components/progress-indicator/assets/my-indeterminate-progress-spinner.js +0 -55
  618. package/docs/components/progress-indicator/examples.md +0 -137
  619. package/docs/components/progress-indicator/index.md +0 -13
  620. package/docs/components/progress-indicator/overview.md +0 -48
  621. package/docs/components/radio-group/api-table.md +0 -63
  622. package/docs/components/radio-group/index.md +0 -13
  623. package/docs/components/radio-group/overview.md +0 -58
  624. package/docs/components/radio-group/use-cases.md +0 -146
  625. package/docs/components/select/api-table.md +0 -51
  626. package/docs/components/select/index.md +0 -13
  627. package/docs/components/select/overview.md +0 -56
  628. package/docs/components/select/use-cases.md +0 -128
  629. package/docs/components/select-rich/api-table.md +0 -123
  630. package/docs/components/select-rich/examples.md +0 -43
  631. package/docs/components/select-rich/index.md +0 -13
  632. package/docs/components/select-rich/overview.md +0 -55
  633. package/docs/components/select-rich/src/flagStyles.js +0 -1250
  634. package/docs/components/select-rich/src/intl-select-rich.js +0 -194
  635. package/docs/components/select-rich/src/regionMetaList.js +0 -1717
  636. package/docs/components/select-rich/use-cases.md +0 -387
  637. package/docs/components/steps/api-table.md +0 -92
  638. package/docs/components/steps/index.md +0 -13
  639. package/docs/components/steps/overview.md +0 -77
  640. package/docs/components/steps/use-cases.md +0 -181
  641. package/docs/components/switch/api-table.md +0 -82
  642. package/docs/components/switch/index.md +0 -13
  643. package/docs/components/switch/overview.md +0 -87
  644. package/docs/components/switch/reference.md +0 -51
  645. package/docs/components/switch/use-cases.md +0 -88
  646. package/docs/components/tabs/api-table.md +0 -51
  647. package/docs/components/tabs/examples.md +0 -35
  648. package/docs/components/tabs/index.md +0 -13
  649. package/docs/components/tabs/overview.md +0 -60
  650. package/docs/components/tabs/src/lea-tab-panel.js +0 -26
  651. package/docs/components/tabs/src/lea-tab.js +0 -50
  652. package/docs/components/tabs/src/lea-tabs.js +0 -28
  653. package/docs/components/tabs/use-cases.md +0 -231
  654. package/docs/components/textarea/api-table.md +0 -57
  655. package/docs/components/textarea/index.md +0 -13
  656. package/docs/components/textarea/overview.md +0 -47
  657. package/docs/components/textarea/use-cases.md +0 -107
  658. package/docs/components/tooltip/api-table.md +0 -62
  659. package/docs/components/tooltip/examples.md +0 -51
  660. package/docs/components/tooltip/index.md +0 -13
  661. package/docs/components/tooltip/overview.md +0 -56
  662. package/docs/components/tooltip/use-cases.md +0 -275
  663. package/docs/fundamentals/index.md +0 -19
  664. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +0 -13
  665. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +0 -246
  666. package/docs/fundamentals/node-tools/index.md +0 -11
  667. package/docs/fundamentals/node-tools/providence-analytics/index.md +0 -13
  668. package/docs/fundamentals/node-tools/providence-analytics/overview.md +0 -108
  669. package/docs/fundamentals/node-tools/publish-docs/index.md +0 -13
  670. package/docs/fundamentals/node-tools/publish-docs/overview.md +0 -149
  671. package/docs/fundamentals/node-tools/remark-extend/index.md +0 -13
  672. package/docs/fundamentals/node-tools/remark-extend/overview.md +0 -287
  673. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +0 -13
  674. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +0 -298
  675. package/docs/fundamentals/rationales/TypeScript.md +0 -123
  676. package/docs/fundamentals/rationales/accessibility.md +0 -40
  677. package/docs/fundamentals/rationales/index.md +0 -11
  678. package/docs/fundamentals/rationales/side-effects.md +0 -215
  679. package/docs/fundamentals/rationales/versioning.md +0 -47
  680. package/docs/fundamentals/systems/core/SlotMixin.md +0 -168
  681. package/docs/fundamentals/systems/core/api-table.md +0 -43
  682. package/docs/fundamentals/systems/core/index.md +0 -15
  683. package/docs/fundamentals/systems/core/overview.md +0 -98
  684. package/docs/fundamentals/systems/form/api-table.md +0 -40
  685. package/docs/fundamentals/systems/form/assets/h-output.js +0 -156
  686. package/docs/fundamentals/systems/form/formatting-and-parsing.md +0 -258
  687. package/docs/fundamentals/systems/form/index.md +0 -15
  688. package/docs/fundamentals/systems/form/interaction-states.md +0 -195
  689. package/docs/fundamentals/systems/form/model-value.md +0 -57
  690. package/docs/fundamentals/systems/form/overview.md +0 -95
  691. package/docs/fundamentals/systems/form/styling.md +0 -92
  692. package/docs/fundamentals/systems/form/use-cases.md +0 -187
  693. package/docs/fundamentals/systems/form/validate.md +0 -985
  694. package/docs/fundamentals/systems/icon/index.md +0 -15
  695. package/docs/fundamentals/systems/icon/overview.md +0 -137
  696. package/docs/fundamentals/systems/index.md +0 -11
  697. package/docs/fundamentals/systems/localize/api-table.md +0 -72
  698. package/docs/fundamentals/systems/localize/assets/all-locales.js +0 -437
  699. package/docs/fundamentals/systems/localize/assets/en-AU.js +0 -6
  700. package/docs/fundamentals/systems/localize/assets/en-GB.js +0 -6
  701. package/docs/fundamentals/systems/localize/assets/en-US.js +0 -6
  702. package/docs/fundamentals/systems/localize/assets/en.js +0 -4
  703. package/docs/fundamentals/systems/localize/assets/nl-BE.js +0 -6
  704. package/docs/fundamentals/systems/localize/assets/nl-NL.js +0 -6
  705. package/docs/fundamentals/systems/localize/assets/nl.js +0 -4
  706. package/docs/fundamentals/systems/localize/dates.md +0 -208
  707. package/docs/fundamentals/systems/localize/index.md +0 -15
  708. package/docs/fundamentals/systems/localize/numbers.md +0 -230
  709. package/docs/fundamentals/systems/localize/overview.md +0 -61
  710. package/docs/fundamentals/systems/localize/rationale.md +0 -75
  711. package/docs/fundamentals/systems/localize/text.md +0 -139
  712. package/docs/fundamentals/systems/localize/use-cases.md +0 -334
  713. package/docs/fundamentals/systems/overlays/_configuration-positioning.md +0 -118
  714. package/docs/fundamentals/systems/overlays/_edge-cases.md +0 -149
  715. package/docs/fundamentals/systems/overlays/api-table.md +0 -174
  716. package/docs/fundamentals/systems/overlays/assets/applyDemoOverlayStyles.js +0 -23
  717. package/docs/fundamentals/systems/overlays/assets/demo-el-using-overlaymixin.js +0 -104
  718. package/docs/fundamentals/systems/overlays/assets/demo-overlay-backdrop.js +0 -47
  719. package/docs/fundamentals/systems/overlays/assets/demo-overlay-positioning.mjs +0 -537
  720. package/docs/fundamentals/systems/overlays/assets/umbrella-form.js +0 -140
  721. package/docs/fundamentals/systems/overlays/configuration.md +0 -516
  722. package/docs/fundamentals/systems/overlays/index.md +0 -15
  723. package/docs/fundamentals/systems/overlays/overview.md +0 -126
  724. package/docs/fundamentals/systems/overlays/rationale.md +0 -242
  725. package/docs/fundamentals/systems/overlays/use-cases.md +0 -717
  726. package/docs/fundamentals/tools/ajax/index.md +0 -15
  727. package/docs/fundamentals/tools/ajax/overview.md +0 -269
  728. package/docs/fundamentals/tools/ajax/use-cases.md +0 -469
  729. package/docs/fundamentals/tools/helpers/action-logger.md +0 -175
  730. package/docs/fundamentals/tools/helpers/index.md +0 -15
  731. package/docs/fundamentals/tools/helpers/overview.md +0 -43
  732. package/docs/fundamentals/tools/index.md +0 -11
  733. package/docs/fundamentals/tools/singleton-manager/example-complex/demo-app.js +0 -95
  734. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +0 -34
  735. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/index.js +0 -30
  736. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/overlays/instance.js +0 -4
  737. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-a/page-a.js +0 -35
  738. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/index.js +0 -30
  739. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/node_modules/overlays/instance.js +0 -4
  740. package/docs/fundamentals/tools/singleton-manager/example-complex/node_modules/page-b/page-b.js +0 -49
  741. package/docs/fundamentals/tools/singleton-manager/example-complex/overlayCompatibility.js +0 -69
  742. package/docs/fundamentals/tools/singleton-manager/example-fail/demo-app.js +0 -93
  743. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +0 -32
  744. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/index.js +0 -30
  745. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/overlays/instance.js +0 -3
  746. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-c/page-c.js +0 -34
  747. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-d/node_modules/overlays/index.js +0 -30
  748. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-d/node_modules/overlays/instance.js +0 -3
  749. package/docs/fundamentals/tools/singleton-manager/example-fail/node_modules/page-d/page-d.js +0 -34
  750. package/docs/fundamentals/tools/singleton-manager/example-success/demo-app.js +0 -95
  751. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +0 -31
  752. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/index.js +0 -30
  753. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/overlays/instance.js +0 -4
  754. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-e/page-e.js +0 -33
  755. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-f/node_modules/overlays/index.js +0 -30
  756. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-f/node_modules/overlays/instance.js +0 -4
  757. package/docs/fundamentals/tools/singleton-manager/example-success/node_modules/page-f/page-f.js +0 -34
  758. package/docs/fundamentals/tools/singleton-manager/example-success/overlayCompatibility.js +0 -23
  759. package/docs/fundamentals/tools/singleton-manager/index.md +0 -15
  760. package/docs/fundamentals/tools/singleton-manager/overview.md +0 -317
  761. package/docs/guides/how-to/create-a-custom-field.md +0 -212
  762. package/docs/guides/how-to/create-a-form.md +0 -101
  763. package/docs/guides/how-to/extend-a-native-input.md +0 -78
  764. package/docs/guides/how-to/get-started.md +0 -116
  765. package/docs/guides/how-to/index.md +0 -25
  766. package/docs/guides/index.md +0 -44
  767. package/docs/guides/principles/definitions-and-terms.md +0 -53
  768. package/docs/guides/principles/index.md +0 -36
  769. package/docs/guides/principles/scoped-elements.md +0 -119
  770. package/docs/guides/principles/styling.md +0 -43
  771. 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 {