@lion/ui 0.2.2 → 0.3.1

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 (304) hide show
  1. package/README.md +23 -72
  2. package/components/button/src/LionButton.js +1 -1
  3. package/components/checkbox-group/src/LionCheckboxIndeterminate.js +2 -2
  4. package/components/checkbox-group/test/lion-checkbox-indeterminate-integrations.test.js +6 -0
  5. package/components/checkbox-group/{test/lion-checkbox-indeterminate.test.js → test-suites/CheckboxIndeterminate.suite.js} +209 -187
  6. package/components/combobox/src/LionCombobox.js +3 -1
  7. package/components/combobox/test/lion-combobox.test.js +52 -0
  8. package/components/core/src/SlotMixin.js +3 -2
  9. package/components/core/test/SlotMixin.test.js +1 -1
  10. package/components/core/types/SlotMixinTypes.ts +4 -1
  11. package/components/dialog/test/lion-dialog.test.js +56 -0
  12. package/components/form-core/src/FocusMixin.js +33 -2
  13. package/components/form-core/src/LionField.js +3 -1
  14. package/components/form-core/src/validate/LionValidationFeedback.js +2 -5
  15. package/components/form-core/src/validate/ResultValidator.js +1 -1
  16. package/components/form-core/test/FocusMixin.test.js +33 -0
  17. package/components/form-core/types/validate/ValidateMixinTypes.ts +2 -2
  18. package/components/form-integrations/test/dialog-integrations.test.js +19 -0
  19. package/components/form-integrations/test/form-group-methods.test.js +11 -37
  20. package/components/form-integrations/test/form-integrations.test.js +4 -0
  21. package/components/form-integrations/test/helpers/umbrella-form.js +21 -18
  22. package/components/input-amount/src/LionInputAmount.js +13 -4
  23. package/components/input-amount/test/lion-input-amount.test.js +19 -20
  24. package/components/input-date/src/LionInputDate.js +2 -11
  25. package/components/input-datepicker/src/LionInputDatepicker.js +5 -2
  26. package/components/input-datepicker/test/lion-input-datepicker.test.js +20 -0
  27. package/components/input-file/src/FileHandle.js +98 -0
  28. package/components/input-file/src/LionInputFile.js +892 -0
  29. package/components/input-file/src/LionSelectedFileList.js +232 -0
  30. package/components/input-file/src/localizeNamespaceLoader.js +75 -0
  31. package/components/input-file/src/validators.js +114 -0
  32. package/components/input-file/test/FileValidators.test.js +170 -0
  33. package/components/input-file/test/lion-input-file.test.js +1168 -0
  34. package/components/input-file/test/lion-selected-file-list.test.js +207 -0
  35. package/components/input-file/translations/bg-BG.js +5 -0
  36. package/components/input-file/translations/bg.js +12 -0
  37. package/components/input-file/translations/cs-CZ.js +5 -0
  38. package/components/input-file/translations/cs.js +13 -0
  39. package/components/input-file/translations/de-DE.js +5 -0
  40. package/components/input-file/translations/de.js +12 -0
  41. package/components/input-file/translations/en-AU.js +5 -0
  42. package/components/input-file/translations/en-GB.js +5 -0
  43. package/components/input-file/translations/en-PH.js +5 -0
  44. package/components/input-file/translations/en-US.js +5 -0
  45. package/components/input-file/translations/en.js +12 -0
  46. package/components/input-file/translations/es-ES.js +5 -0
  47. package/components/input-file/translations/es.js +12 -0
  48. package/components/input-file/translations/fr-BE.js +5 -0
  49. package/components/input-file/translations/fr-FR.js +5 -0
  50. package/components/input-file/translations/fr.js +13 -0
  51. package/components/input-file/translations/hu-HU.js +5 -0
  52. package/components/input-file/translations/hu.js +12 -0
  53. package/components/input-file/translations/it-IT.js +5 -0
  54. package/components/input-file/translations/it.js +12 -0
  55. package/components/input-file/translations/nl-BE.js +5 -0
  56. package/components/input-file/translations/nl-NL.js +5 -0
  57. package/components/input-file/translations/nl.js +12 -0
  58. package/components/input-file/translations/pl-PL.js +5 -0
  59. package/components/input-file/translations/pl.js +12 -0
  60. package/components/input-file/translations/ro-RO.js +5 -0
  61. package/components/input-file/translations/ro.js +12 -0
  62. package/components/input-file/translations/ru-RU.js +5 -0
  63. package/components/input-file/translations/ru.js +12 -0
  64. package/components/input-file/translations/sk-SK.js +5 -0
  65. package/components/input-file/translations/sk.js +12 -0
  66. package/components/input-file/translations/uk-UA.js +5 -0
  67. package/components/input-file/translations/uk.js +12 -0
  68. package/components/input-file/translations/zh-CN.js +5 -0
  69. package/components/input-file/translations/zh.js +12 -0
  70. package/components/input-file/types/input-file.d.ts +32 -0
  71. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +1 -4
  72. package/components/listbox/src/ListboxMixin.js +3 -2
  73. package/components/listbox/test-suites/ListboxMixin.suite.js +31 -1
  74. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceNoSpaceBetweenCurrencySymbolAndNumber.js +22 -0
  75. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceSymbols.js +64 -0
  76. package/components/localize/src/number/utils/normalize-format-number-to-parts/normalizeIntl.js +13 -7
  77. package/components/localize/test/number/formatNumber.test.js +6 -28
  78. package/custom-elements.json +13822 -9246
  79. package/dist-types/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.d.ts +12 -0
  80. package/dist-types/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.d.ts.map +1 -0
  81. package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
  82. package/dist-types/components/combobox/test/lion-combobox.test.d.ts.map +1 -1
  83. package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
  84. package/dist-types/components/core/types/SlotMixinTypes.d.ts +4 -0
  85. package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
  86. package/dist-types/components/dialog/test/lion-dialog.test.d.ts.map +1 -1
  87. package/dist-types/components/form-core/src/FocusMixin.d.ts.map +1 -1
  88. package/dist-types/components/form-core/src/LionField.d.ts +2 -1
  89. package/dist-types/components/form-core/src/LionField.d.ts.map +1 -1
  90. package/dist-types/components/form-core/src/validate/LionValidationFeedback.d.ts +4 -11
  91. package/dist-types/components/form-core/src/validate/LionValidationFeedback.d.ts.map +1 -1
  92. package/dist-types/components/form-core/src/validate/ResultValidator.d.ts +1 -1
  93. package/dist-types/components/form-core/types/validate/ValidateMixinTypes.d.ts +5 -0
  94. package/dist-types/components/form-core/types/validate/ValidateMixinTypes.d.ts.map +1 -1
  95. package/dist-types/components/form-integrations/test/dialog-integrations.test.d.ts.map +1 -1
  96. package/dist-types/components/form-integrations/test/form-group-methods.test.d.ts +1 -0
  97. package/dist-types/components/form-integrations/test/form-group-methods.test.d.ts.map +1 -1
  98. package/dist-types/components/form-integrations/test/helpers/umbrella-form.d.ts.map +1 -1
  99. package/dist-types/components/input-amount/src/LionInputAmount.d.ts +2 -4
  100. package/dist-types/components/input-amount/src/LionInputAmount.d.ts.map +1 -1
  101. package/dist-types/components/input-amount/test/lion-input-amount.test.d.ts +0 -1
  102. package/dist-types/components/input-amount/test/lion-input-amount.test.d.ts.map +1 -1
  103. package/dist-types/components/input-date/src/LionInputDate.d.ts.map +1 -1
  104. package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
  105. package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts.map +1 -1
  106. package/dist-types/components/input-file/src/FileHandle.d.ts +55 -0
  107. package/dist-types/components/input-file/src/FileHandle.d.ts.map +1 -0
  108. package/dist-types/components/input-file/src/LionInputFile.d.ts +230 -0
  109. package/dist-types/components/input-file/src/LionInputFile.d.ts.map +1 -0
  110. package/dist-types/components/input-file/src/LionSelectedFileList.d.ts +69 -0
  111. package/dist-types/components/input-file/src/LionSelectedFileList.d.ts.map +1 -0
  112. package/dist-types/components/input-file/src/localizeNamespaceLoader.d.ts +2 -0
  113. package/dist-types/components/input-file/src/localizeNamespaceLoader.d.ts.map +1 -0
  114. package/dist-types/components/input-file/src/validators.d.ts +58 -0
  115. package/dist-types/components/input-file/src/validators.d.ts.map +1 -0
  116. package/dist-types/components/input-file/test/FileValidators.test.d.ts +2 -0
  117. package/dist-types/components/input-file/test/FileValidators.test.d.ts.map +1 -0
  118. package/dist-types/components/input-file/test/lion-input-file.test.d.ts +5 -0
  119. package/dist-types/components/input-file/test/lion-input-file.test.d.ts.map +1 -0
  120. package/dist-types/components/input-file/test/lion-selected-file-list.test.d.ts +4 -0
  121. package/dist-types/components/input-file/test/lion-selected-file-list.test.d.ts.map +1 -0
  122. package/dist-types/components/input-file/translations/bg-BG.d.ts +13 -0
  123. package/dist-types/components/input-file/translations/bg-BG.d.ts.map +1 -0
  124. package/dist-types/components/input-file/translations/bg.d.ts +13 -0
  125. package/dist-types/components/input-file/translations/bg.d.ts.map +1 -0
  126. package/dist-types/components/input-file/translations/cs-CZ.d.ts +13 -0
  127. package/dist-types/components/input-file/translations/cs-CZ.d.ts.map +1 -0
  128. package/dist-types/components/input-file/translations/cs.d.ts +13 -0
  129. package/dist-types/components/input-file/translations/cs.d.ts.map +1 -0
  130. package/dist-types/components/input-file/translations/de-DE.d.ts +13 -0
  131. package/dist-types/components/input-file/translations/de-DE.d.ts.map +1 -0
  132. package/dist-types/components/input-file/translations/de.d.ts +13 -0
  133. package/dist-types/components/input-file/translations/de.d.ts.map +1 -0
  134. package/dist-types/components/input-file/translations/en-AU.d.ts +13 -0
  135. package/dist-types/components/input-file/translations/en-AU.d.ts.map +1 -0
  136. package/dist-types/components/input-file/translations/en-GB.d.ts +13 -0
  137. package/dist-types/components/input-file/translations/en-GB.d.ts.map +1 -0
  138. package/dist-types/components/input-file/translations/en-PH.d.ts +13 -0
  139. package/dist-types/components/input-file/translations/en-PH.d.ts.map +1 -0
  140. package/dist-types/components/input-file/translations/en-US.d.ts +13 -0
  141. package/dist-types/components/input-file/translations/en-US.d.ts.map +1 -0
  142. package/dist-types/components/input-file/translations/en.d.ts +13 -0
  143. package/dist-types/components/input-file/translations/en.d.ts.map +1 -0
  144. package/dist-types/components/input-file/translations/es-ES.d.ts +13 -0
  145. package/dist-types/components/input-file/translations/es-ES.d.ts.map +1 -0
  146. package/dist-types/components/input-file/translations/es.d.ts +13 -0
  147. package/dist-types/components/input-file/translations/es.d.ts.map +1 -0
  148. package/dist-types/components/input-file/translations/fr-BE.d.ts +13 -0
  149. package/dist-types/components/input-file/translations/fr-BE.d.ts.map +1 -0
  150. package/dist-types/components/input-file/translations/fr-FR.d.ts +13 -0
  151. package/dist-types/components/input-file/translations/fr-FR.d.ts.map +1 -0
  152. package/dist-types/components/input-file/translations/fr.d.ts +13 -0
  153. package/dist-types/components/input-file/translations/fr.d.ts.map +1 -0
  154. package/dist-types/components/input-file/translations/hu-HU.d.ts +13 -0
  155. package/dist-types/components/input-file/translations/hu-HU.d.ts.map +1 -0
  156. package/dist-types/components/input-file/translations/hu.d.ts +13 -0
  157. package/dist-types/components/input-file/translations/hu.d.ts.map +1 -0
  158. package/dist-types/components/input-file/translations/it-IT.d.ts +13 -0
  159. package/dist-types/components/input-file/translations/it-IT.d.ts.map +1 -0
  160. package/dist-types/components/input-file/translations/it.d.ts +13 -0
  161. package/dist-types/components/input-file/translations/it.d.ts.map +1 -0
  162. package/dist-types/components/input-file/translations/nl-BE.d.ts +13 -0
  163. package/dist-types/components/input-file/translations/nl-BE.d.ts.map +1 -0
  164. package/dist-types/components/input-file/translations/nl-NL.d.ts +13 -0
  165. package/dist-types/components/input-file/translations/nl-NL.d.ts.map +1 -0
  166. package/dist-types/components/input-file/translations/nl.d.ts +13 -0
  167. package/dist-types/components/input-file/translations/nl.d.ts.map +1 -0
  168. package/dist-types/components/input-file/translations/pl-PL.d.ts +13 -0
  169. package/dist-types/components/input-file/translations/pl-PL.d.ts.map +1 -0
  170. package/dist-types/components/input-file/translations/pl.d.ts +13 -0
  171. package/dist-types/components/input-file/translations/pl.d.ts.map +1 -0
  172. package/dist-types/components/input-file/translations/ro-RO.d.ts +13 -0
  173. package/dist-types/components/input-file/translations/ro-RO.d.ts.map +1 -0
  174. package/dist-types/components/input-file/translations/ro.d.ts +13 -0
  175. package/dist-types/components/input-file/translations/ro.d.ts.map +1 -0
  176. package/dist-types/components/input-file/translations/ru-RU.d.ts +13 -0
  177. package/dist-types/components/input-file/translations/ru-RU.d.ts.map +1 -0
  178. package/dist-types/components/input-file/translations/ru.d.ts +13 -0
  179. package/dist-types/components/input-file/translations/ru.d.ts.map +1 -0
  180. package/dist-types/components/input-file/translations/sk-SK.d.ts +13 -0
  181. package/dist-types/components/input-file/translations/sk-SK.d.ts.map +1 -0
  182. package/dist-types/components/input-file/translations/sk.d.ts +13 -0
  183. package/dist-types/components/input-file/translations/sk.d.ts.map +1 -0
  184. package/dist-types/components/input-file/translations/uk-UA.d.ts +13 -0
  185. package/dist-types/components/input-file/translations/uk-UA.d.ts.map +1 -0
  186. package/dist-types/components/input-file/translations/uk.d.ts +13 -0
  187. package/dist-types/components/input-file/translations/uk.d.ts.map +1 -0
  188. package/dist-types/components/input-file/translations/zh-CN.d.ts +13 -0
  189. package/dist-types/components/input-file/translations/zh-CN.d.ts.map +1 -0
  190. package/dist-types/components/input-file/translations/zh.d.ts +13 -0
  191. package/dist-types/components/input-file/translations/zh.d.ts.map +1 -0
  192. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts +6 -0
  193. package/dist-types/components/input-stepper/src/LionInputStepper.d.ts.map +1 -1
  194. package/dist-types/components/input-tel-dropdown/src/LionInputTelDropdown.d.ts +0 -1
  195. package/dist-types/components/input-tel-dropdown/src/LionInputTelDropdown.d.ts.map +1 -1
  196. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  197. package/dist-types/components/listbox/test-suites/ListboxMixin.suite.d.ts.map +1 -1
  198. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceNoSpaceBetweenCurrencySymbolAndNumber.d.ts +14 -0
  199. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceNoSpaceBetweenCurrencySymbolAndNumber.d.ts.map +1 -0
  200. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceSymbols.d.ts +20 -0
  201. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceSymbols.d.ts.map +1 -0
  202. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/normalizeIntl.d.ts.map +1 -1
  203. package/dist-types/exports/checkbox-group-test-suites.d.ts +2 -0
  204. package/dist-types/exports/checkbox-group-test-suites.d.ts.map +1 -0
  205. package/dist-types/exports/define/lion-input-file.d.ts +2 -0
  206. package/dist-types/exports/define/lion-input-file.d.ts.map +1 -0
  207. package/dist-types/exports/define/lion-selected-file-list.d.ts +2 -0
  208. package/dist-types/exports/define/lion-selected-file-list.d.ts.map +1 -0
  209. package/dist-types/exports/input-file.d.ts +4 -0
  210. package/dist-types/exports/input-file.d.ts.map +1 -0
  211. package/dist-types/tsconfig.tsbuildinfo +1 -1
  212. package/docs/components/button/extensions/bootstrap-button.mjs +240 -0
  213. package/docs/components/button/extensions.md +30 -0
  214. package/docs/components/checkbox-group/overview.md +9 -10
  215. package/docs/components/checkbox-group/use-cases.md +110 -142
  216. package/docs/components/collapsible/overview.md +1 -1
  217. package/docs/components/combobox/{examples.md → extensions.md} +51 -43
  218. package/docs/components/combobox/overview.md +1 -1
  219. package/docs/components/combobox/src/google-combobox/google-combobox.js +4 -1
  220. package/docs/components/combobox/src/md-combobox/md-combobox.js +40 -38
  221. package/docs/components/combobox/src/wa-combobox/wa-combobox.js +204 -209
  222. package/docs/components/combobox/use-cases.md +1 -1
  223. package/docs/components/dialog/overview.md +1 -1
  224. package/docs/components/fieldset/overview.md +5 -5
  225. package/docs/components/form/overview.md +3 -3
  226. package/docs/components/icon/use-cases.md +1 -1
  227. package/docs/components/input/overview.md +1 -1
  228. package/docs/components/input-amount/overview.md +3 -3
  229. package/docs/components/input-amount/use-cases.md +4 -2
  230. package/docs/components/input-date/overview.md +3 -3
  231. package/docs/components/input-datepicker/overview.md +5 -5
  232. package/docs/components/input-datepicker/use-cases.md +11 -0
  233. package/docs/components/input-email/overview.md +2 -2
  234. package/docs/components/input-file/index.md +3 -0
  235. package/docs/components/input-file/overview.md +32 -0
  236. package/docs/components/input-file/use-cases.md +424 -0
  237. package/docs/components/input-iban/overview.md +2 -2
  238. package/docs/components/input-range/overview.md +2 -2
  239. package/docs/components/input-stepper/overview.md +1 -1
  240. package/docs/components/input-tel/overview.md +1 -1
  241. package/docs/components/input-tel/use-cases.md +6 -6
  242. package/docs/components/input-tel-dropdown/{examples.md → extensions.md} +1 -1
  243. package/docs/components/input-tel-dropdown/overview.md +1 -1
  244. package/docs/components/radio-group/overview.md +3 -3
  245. package/docs/components/select-rich/use-cases.md +1 -1
  246. package/docs/components/tabs/examples.md +1 -1
  247. package/docs/fundamentals/index.md +4 -4
  248. package/docs/fundamentals/node-tools/providence-analytics/LocalConfiguration.md +1 -1
  249. package/docs/fundamentals/node-tools/providence-analytics/QueryResult.md +1 -1
  250. package/docs/fundamentals/node-tools/providence-analytics/analyzer.md +1 -1
  251. package/docs/fundamentals/node-tools/providence-analytics/dashboard.md +1 -1
  252. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  253. package/docs/fundamentals/node-tools/publish-docs/overview.md +3 -3
  254. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +2 -2
  255. package/docs/fundamentals/rationales/accessibility.md +28 -0
  256. package/docs/fundamentals/systems/core/SlotMixin.md +148 -0
  257. package/docs/fundamentals/systems/core/overview.md +1 -1
  258. package/docs/fundamentals/systems/form/formatting-and-parsing.md +4 -4
  259. package/docs/fundamentals/systems/form/model-value.md +1 -1
  260. package/docs/fundamentals/systems/form/overview.md +28 -28
  261. package/docs/fundamentals/systems/form/use-cases.md +2 -0
  262. package/docs/fundamentals/systems/form/validate.md +1 -1
  263. package/docs/fundamentals/systems/localize/overview.md +4 -4
  264. package/docs/fundamentals/systems/overlays/_configuration-positioning.md +116 -0
  265. package/docs/fundamentals/systems/overlays/_edge-cases.md +145 -0
  266. package/docs/fundamentals/systems/overlays/configuration.md +2 -2
  267. package/docs/fundamentals/systems/overlays/overview.md +5 -5
  268. package/docs/fundamentals/systems/overlays/use-cases.md +2 -2
  269. package/docs/fundamentals/tools/helpers/overview.md +1 -1
  270. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +21 -0
  271. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +19 -0
  272. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +18 -0
  273. package/docs/fundamentals/tools/singleton-manager/overview.md +4 -4
  274. package/docs/guides/how-to/create-a-custom-field.md +5 -5
  275. package/docs/guides/how-to/create-a-form.md +88 -0
  276. package/docs/guides/how-to/extend-a-native-input.md +2 -2
  277. package/docs/guides/how-to/get-started.md +28 -1
  278. package/docs/guides/index.md +8 -8
  279. package/docs/guides/principles/index.md +5 -5
  280. package/docs/guides/principles/styling.md +1 -1
  281. package/exports/checkbox-group-test-suites.js +1 -0
  282. package/exports/define/lion-input-file.js +3 -0
  283. package/exports/define/lion-selected-file-list.js +3 -0
  284. package/exports/input-file.js +3 -0
  285. package/package.json +3 -2
  286. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceENAUSymbols.js +0 -25
  287. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceYenSymbol.js +0 -15
  288. package/dist-types/components/checkbox-group/test/lion-checkbox-indeterminate.test.d.ts +0 -4
  289. package/dist-types/components/checkbox-group/test/lion-checkbox-indeterminate.test.d.ts.map +0 -1
  290. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceENAUSymbols.d.ts +0 -14
  291. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceENAUSymbols.d.ts.map +0 -1
  292. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceYenSymbol.d.ts +0 -9
  293. package/dist-types/components/localize/src/number/utils/normalize-format-number-to-parts/forceYenSymbol.d.ts.map +0 -1
  294. package/docs/components/combobox/src/google-combobox/assets/googlelogo_color_272x92dp.png +0 -0
  295. package/docs/components/dialog/src/demo-dialog-style.js +0 -3
  296. package/docs/components/select-rich/src/flags.png +0 -0
  297. package/docs/components/select-rich/src/flags@2x.png +0 -0
  298. package/docs/fundamentals/systems/form/assets/FormatMixinDiagram-1.svg +0 -1
  299. package/docs/fundamentals/systems/form/assets/FormatMixinDiagram-2.svg +0 -1
  300. package/docs/fundamentals/systems/form/assets/FormatMixinDiagram-3.svg +0 -84
  301. package/docs/fundamentals/tools/ajax/assets/naga.json +0 -9
  302. package/docs/fundamentals/tools/ajax/assets/pabu.json +0 -9
  303. package/docs/fundamentals/tools/singleton-manager/.gitignore +0 -1
  304. package/docs/override.js +0 -15
@@ -1,9 +1,5 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit/static-html.js';
1
+ import { expect, fixture, html, unsafeStatic } from '@open-wc/testing';
3
2
  import { getFormControlMembers } from '@lion/ui/form-core-test-helpers.js';
4
- import '@lion/ui/define/lion-checkbox.js';
5
- import '@lion/ui/define/lion-checkbox-group.js';
6
- import '@lion/ui/define/lion-checkbox-indeterminate.js';
7
3
 
8
4
  /**
9
5
  * @typedef {import('../src/LionCheckbox.js').LionCheckbox} LionCheckbox
@@ -25,54 +21,81 @@ function getCheckboxIndeterminateMembers(el) {
25
21
  };
26
22
  }
27
23
 
28
- describe('<lion-checkbox-indeterminate>', () => {
29
- it('should have type = checkbox', async () => {
30
- // Arrange
31
- const el = await fixture(html`
32
- <lion-checkbox-indeterminate
33
- name="checkbox"
34
- .choiceValue="${'male'}"
35
- ></lion-checkbox-indeterminate>
36
- `);
24
+ /**
25
+ * @param {{tagString?: string, groupTagString?: string, childTagString?: string}} [customConfig]
26
+ */
27
+ export function runCheckboxIndeterminateSuite(customConfig) {
28
+ const cfg = {
29
+ tagString: null,
30
+ groupTagString: null,
31
+ childTagString: null,
32
+ ...customConfig,
33
+ };
37
34
 
38
- // Assert
39
- expect(el.getAttribute('type')).to.equal('checkbox');
35
+ /** @type {{_$litStatic$: any}} */
36
+ let tag;
37
+ /** @type {{_$litStatic$: any}} */
38
+ let groupTag;
39
+ /** @type {{_$litStatic$: any}} */
40
+ let childTag;
41
+
42
+ before(async () => {
43
+ tag = unsafeStatic(cfg.tagString);
44
+ groupTag = unsafeStatic(cfg.groupTagString);
45
+ childTag = unsafeStatic(cfg.childTagString);
40
46
  });
41
47
 
42
- it('should not be indeterminate by default if all children are unchecked', async () => {
43
- // Arrange
44
- const el = await fixture(html`
45
- <lion-checkbox-group name="scientists[]">
46
- <lion-checkbox-indeterminate label="Favorite scientists">
47
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
48
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
49
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
50
- </lion-checkbox-indeterminate>
51
- </lion-checkbox-group>
52
- `);
53
- const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
54
- el.querySelector('lion-checkbox-indeterminate')
55
- );
48
+ describe('CheckboxIndeterminate', async () => {
49
+ /** @type {{_$litStatic$: any}} */
56
50
 
57
- // Assert
58
- expect(elIndeterminate?.hasAttribute('indeterminate')).to.be.false;
51
+ it('should have type = checkbox', async () => {
52
+ // Arrange
53
+ const el = await fixture(html`
54
+ <${tag}
55
+ name="checkbox"
56
+ .choiceValue="${'male'}"
57
+ ></${tag}>
58
+ `);
59
+
60
+ // Assert
61
+ expect(el.getAttribute('type')).to.equal('checkbox');
62
+ });
63
+
64
+ it('should not be indeterminate by default if all children are unchecked', async () => {
65
+ // Arrange
66
+ const el = await fixture(html`
67
+ <${groupTag} name="scientists[]">
68
+ <${tag} label="Favorite scientists">
69
+ <${childTag} label="Archimedes"></${childTag}>
70
+ <${childTag} label="Francis Bacon"></${childTag}>
71
+ <${childTag} label="Marie Curie"></${childTag}>
72
+ </${tag}>
73
+ </${groupTag}>
74
+ `);
75
+ const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
76
+ el.querySelector(`${cfg.tagString}`)
77
+ );
78
+
79
+ // Assert
80
+ expect(elIndeterminate?.hasAttribute('indeterminate')).to.be.false;
81
+ });
59
82
  });
60
83
 
61
84
  it('should be indeterminate if one child is checked', async () => {
62
85
  // Arrange
63
86
  const el = /** @type {LionCheckboxGroup} */ await fixture(html`
64
- <lion-checkbox-group name="scientists[]">
65
- <lion-checkbox-indeterminate label="Favorite scientists">
66
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
67
- <lion-checkbox slot="checkbox" label="Francis Bacon" checked></lion-checkbox>
68
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
69
- </lion-checkbox-indeterminate>
70
- </lion-checkbox-group>
87
+ <${groupTag} name="scientists[]">
88
+ <${tag} label="Favorite scientists">
89
+ <${childTag} label="Archimedes"></${childTag}>
90
+ <${childTag} label="Francis Bacon" checked></${childTag}>
91
+ <${childTag} label="Marie Curie"></${childTag}>
92
+ </${tag}>
93
+ </${groupTag}>
71
94
  `);
95
+
72
96
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
73
- el.querySelector('lion-checkbox-indeterminate')
97
+ el.querySelector(`${cfg.tagString}`)
74
98
  );
75
-
76
99
  // Assert
77
100
  expect(elIndeterminate?.hasAttribute('indeterminate')).to.be.true;
78
101
  });
@@ -81,17 +104,17 @@ describe('<lion-checkbox-indeterminate>', () => {
81
104
  // Arrange
82
105
  const el = /** @type {LionCheckboxGroup} */ (
83
106
  await fixture(html`
84
- <lion-checkbox-group name="scientists[]">
85
- <lion-checkbox-indeterminate label="Favorite scientists">
86
- <lion-checkbox slot="checkbox" label="Archimedes" checked></lion-checkbox>
87
- <lion-checkbox slot="checkbox" label="Francis Bacon" checked></lion-checkbox>
88
- <lion-checkbox slot="checkbox" label="Marie Curie" checked></lion-checkbox>
89
- </lion-checkbox-indeterminate>
90
- </lion-checkbox-group>
107
+ <${groupTag} name="scientists[]">
108
+ <${tag} label="Favorite scientists">
109
+ <${childTag} label="Archimedes" checked></${childTag}>
110
+ <${childTag} label="Francis Bacon" checked></${childTag}>
111
+ <${childTag} label="Marie Curie" checked></${childTag}>
112
+ </${tag}>
113
+ </${groupTag}>
91
114
  `)
92
115
  );
93
116
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
94
- el.querySelector('lion-checkbox-indeterminate')
117
+ el.querySelector(`${cfg.tagString}`)
95
118
  );
96
119
 
97
120
  // Assert
@@ -103,17 +126,17 @@ describe('<lion-checkbox-indeterminate>', () => {
103
126
  // Arrange
104
127
  const el = /** @type {LionCheckboxGroup} */ (
105
128
  await fixture(html`
106
- <lion-checkbox-group name="scientists[]">
107
- <lion-checkbox-indeterminate label="Favorite scientists">
108
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
109
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
110
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
111
- </lion-checkbox-indeterminate>
112
- </lion-checkbox-group>
129
+ <${groupTag} name="scientists[]">
130
+ <${tag} label="Favorite scientists">
131
+ <${childTag} label="Archimedes"></${childTag}>
132
+ <${childTag} label="Francis Bacon"></${childTag}>
133
+ <${childTag} label="Marie Curie"></${childTag}>
134
+ </${tag}>
135
+ </${groupTag}>
113
136
  `)
114
137
  );
115
138
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
116
- el.querySelector('lion-checkbox-indeterminate')
139
+ el.querySelector(`${cfg.tagString}`)
117
140
  );
118
141
 
119
142
  const { _subCheckboxes } = getCheckboxIndeterminateMembers(elIndeterminate);
@@ -130,17 +153,17 @@ describe('<lion-checkbox-indeterminate>', () => {
130
153
  // Arrange
131
154
  const el = /** @type {LionCheckboxGroup} */ (
132
155
  await fixture(html`
133
- <lion-checkbox-group name="scientists[]">
134
- <lion-checkbox-indeterminate label="Favorite scientists">
135
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
136
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
137
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
138
- </lion-checkbox-indeterminate>
139
- </lion-checkbox-group>
156
+ <${groupTag} name="scientists[]">
157
+ <${tag} label="Favorite scientists">
158
+ <${childTag} label="Archimedes"></${childTag}>
159
+ <${childTag} label="Francis Bacon"></${childTag}>
160
+ <${childTag} label="Marie Curie"></${childTag}>
161
+ </${tag}>
162
+ </${groupTag}>
140
163
  `)
141
164
  );
142
165
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
143
- el.querySelector('lion-checkbox-indeterminate')
166
+ el.querySelector(`${cfg.tagString}`)
144
167
  );
145
168
  const { _subCheckboxes } = getCheckboxIndeterminateMembers(elIndeterminate);
146
169
 
@@ -159,17 +182,17 @@ describe('<lion-checkbox-indeterminate>', () => {
159
182
  // Arrange
160
183
  const el = /** @type {LionCheckboxGroup} */ (
161
184
  await fixture(html`
162
- <lion-checkbox-group name="scientists[]">
163
- <lion-checkbox-indeterminate label="Favorite scientists">
164
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
165
- <lion-checkbox slot="checkbox" label="Francis Bacon" disabled></lion-checkbox>
166
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
167
- </lion-checkbox-indeterminate>
168
- </lion-checkbox-group>
185
+ <${groupTag} name="scientists[]">
186
+ <${tag} label="Favorite scientists">
187
+ <${childTag} label="Archimedes"></${childTag}>
188
+ <${childTag} label="Francis Bacon" disabled></${childTag}>
189
+ <${childTag} label="Marie Curie"></${childTag}>
190
+ </${tag}>
191
+ </${groupTag}>
169
192
  `)
170
193
  );
171
194
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
172
- el.querySelector('lion-checkbox-indeterminate')
195
+ el.querySelector(`${cfg.tagString}`)
173
196
  );
174
197
  const { _subCheckboxes } = getCheckboxIndeterminateMembers(elIndeterminate);
175
198
 
@@ -187,17 +210,17 @@ describe('<lion-checkbox-indeterminate>', () => {
187
210
  // Arrange
188
211
  const el = /** @type {LionCheckboxGroup} */ (
189
212
  await fixture(html`
190
- <lion-checkbox-group name="scientists[]">
191
- <lion-checkbox-indeterminate label="Favorite scientists">
192
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
193
- <lion-checkbox slot="checkbox" label="Francis Bacon" checked></lion-checkbox>
194
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
195
- </lion-checkbox-indeterminate>
196
- </lion-checkbox-group>
213
+ <${groupTag} name="scientists[]">
214
+ <${tag} label="Favorite scientists">
215
+ <${childTag} label="Archimedes"></${childTag}>
216
+ <${childTag} label="Francis Bacon" checked></${childTag}>
217
+ <${childTag} label="Marie Curie"></${childTag}>
218
+ </${tag}>
219
+ </${groupTag}>
197
220
  `)
198
221
  );
199
222
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
200
- el.querySelector('lion-checkbox-indeterminate')
223
+ el.querySelector(`${cfg.tagString}`)
201
224
  );
202
225
  const { _subCheckboxes, _inputNode } = getCheckboxIndeterminateMembers(elIndeterminate);
203
226
 
@@ -216,17 +239,17 @@ describe('<lion-checkbox-indeterminate>', () => {
216
239
  // Arrange
217
240
  const el = /** @type {LionCheckboxGroup} */ (
218
241
  await fixture(html`
219
- <lion-checkbox-group name="scientists[]">
220
- <lion-checkbox-indeterminate label="Favorite scientists">
221
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
222
- <lion-checkbox slot="checkbox" label="Francis Bacon" disabled></lion-checkbox>
223
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
224
- </lion-checkbox-indeterminate>
225
- </lion-checkbox-group>
242
+ <${groupTag} name="scientists[]">
243
+ <${tag} label="Favorite scientists">
244
+ <${childTag} label="Archimedes"></${childTag}>
245
+ <${childTag} label="Francis Bacon" disabled></${childTag}>
246
+ <${childTag} label="Marie Curie"></${childTag}>
247
+ </${tag}>
248
+ </${groupTag}>
226
249
  `)
227
250
  );
228
251
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
229
- el.querySelector('lion-checkbox-indeterminate')
252
+ el.querySelector(`${cfg.tagString}`)
230
253
  );
231
254
  const { _subCheckboxes, _inputNode } = getCheckboxIndeterminateMembers(elIndeterminate);
232
255
 
@@ -245,17 +268,17 @@ describe('<lion-checkbox-indeterminate>', () => {
245
268
  // Arrange
246
269
  const el = /** @type {LionCheckboxGroup} */ (
247
270
  await fixture(html`
248
- <lion-checkbox-group name="scientists[]">
249
- <lion-checkbox-indeterminate label="Favorite scientists">
250
- <lion-checkbox slot="checkbox" label="Archimedes" disabled></lion-checkbox>
251
- <lion-checkbox slot="checkbox" label="Francis Bacon" disabled></lion-checkbox>
252
- <lion-checkbox slot="checkbox" label="Marie Curie" disabled></lion-checkbox>
253
- </lion-checkbox-indeterminate>
254
- </lion-checkbox-group>
271
+ <${groupTag} name="scientists[]">
272
+ <${tag} label="Favorite scientists">
273
+ <${childTag} label="Archimedes" disabled></${childTag}>
274
+ <${childTag} label="Francis Bacon" disabled></${childTag}>
275
+ <${childTag} label="Marie Curie" disabled></${childTag}>
276
+ </${tag}>
277
+ </${groupTag}>
255
278
  `)
256
279
  );
257
280
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
258
- el.querySelector('lion-checkbox-indeterminate')
281
+ el.querySelector(`${cfg.tagString}`)
259
282
  );
260
283
  const { _subCheckboxes, _inputNode } = getCheckboxIndeterminateMembers(elIndeterminate);
261
284
 
@@ -275,17 +298,17 @@ describe('<lion-checkbox-indeterminate>', () => {
275
298
  // Arrange
276
299
  const el = /** @type {LionCheckboxGroup} */ (
277
300
  await fixture(html`
278
- <lion-checkbox-group name="scientists[]">
279
- <lion-checkbox-indeterminate label="Favorite scientists">
280
- <lion-checkbox slot="checkbox" label="Archimedes" disabled checked></lion-checkbox>
281
- <lion-checkbox slot="checkbox" label="Francis Bacon" disabled checked></lion-checkbox>
282
- <lion-checkbox slot="checkbox" label="Marie Curie" disabled checked></lion-checkbox>
283
- </lion-checkbox-indeterminate>
284
- </lion-checkbox-group>
301
+ <${groupTag} name="scientists[]">
302
+ <${tag} label="Favorite scientists">
303
+ <${childTag} label="Archimedes" disabled checked></${childTag}>
304
+ <${childTag} label="Francis Bacon" disabled checked></${childTag}>
305
+ <${childTag} label="Marie Curie" disabled checked></${childTag}>
306
+ </${tag}>
307
+ </${groupTag}>
285
308
  `)
286
309
  );
287
310
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
288
- el.querySelector('lion-checkbox-indeterminate')
311
+ el.querySelector(`${cfg.tagString}`)
289
312
  );
290
313
  const { _subCheckboxes, _inputNode } = getCheckboxIndeterminateMembers(elIndeterminate);
291
314
 
@@ -305,17 +328,17 @@ describe('<lion-checkbox-indeterminate>', () => {
305
328
  // Arrange
306
329
  const el = /** @type {LionCheckboxGroup} */ (
307
330
  await fixture(html`
308
- <lion-checkbox-group name="scientists[]">
309
- <lion-checkbox-indeterminate label="Favorite scientists">
310
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
311
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
312
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
313
- </lion-checkbox-indeterminate>
314
- </lion-checkbox-group>
331
+ <${groupTag} name="scientists[]">
332
+ <${tag} label="Favorite scientists">
333
+ <${childTag} label="Archimedes"></${childTag}>
334
+ <${childTag} label="Francis Bacon"></${childTag}>
335
+ <${childTag} label="Marie Curie"></${childTag}>
336
+ </${tag}>
337
+ </${groupTag}>
315
338
  `)
316
339
  );
317
340
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
318
- el.querySelector('lion-checkbox-indeterminate')
341
+ el.querySelector(`${cfg.tagString}`)
319
342
  );
320
343
  const { _subCheckboxes, _inputNode } = getCheckboxIndeterminateMembers(elIndeterminate);
321
344
 
@@ -334,17 +357,17 @@ describe('<lion-checkbox-indeterminate>', () => {
334
357
  // Arrange
335
358
  const el = /** @type {LionCheckboxGroup} */ (
336
359
  await fixture(html`
337
- <lion-checkbox-group name="scientists[]">
338
- <lion-checkbox-indeterminate label="Favorite scientists">
339
- <lion-checkbox slot="checkbox" label="Archimedes" checked></lion-checkbox>
340
- <lion-checkbox slot="checkbox" label="Francis Bacon" checked></lion-checkbox>
341
- <lion-checkbox slot="checkbox" label="Marie Curie" checked></lion-checkbox>
342
- </lion-checkbox-indeterminate>
343
- </lion-checkbox-group>
360
+ <${groupTag} name="scientists[]">
361
+ <${tag} label="Favorite scientists">
362
+ <${childTag} label="Archimedes" checked></${childTag}>
363
+ <${childTag} label="Francis Bacon" checked></${childTag}>
364
+ <${childTag} label="Marie Curie" checked></${childTag}>
365
+ </${tag}>
366
+ </${groupTag}>
344
367
  `)
345
368
  );
346
369
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
347
- el.querySelector('lion-checkbox-indeterminate')
370
+ el.querySelector(`${cfg.tagString}`)
348
371
  );
349
372
  const { _subCheckboxes, _inputNode } = getCheckboxIndeterminateMembers(elIndeterminate);
350
373
 
@@ -363,39 +386,39 @@ describe('<lion-checkbox-indeterminate>', () => {
363
386
  // Arrange
364
387
  const el = /** @type {LionCheckboxGroup} */ (
365
388
  await fixture(html`
366
- <lion-checkbox-group name="scientists[]" label="Favorite scientists">
367
- <lion-checkbox-indeterminate
389
+ <${groupTag} name="scientists[]" label="Favorite scientists">
390
+ <${tag}
368
391
  label="Old Greek scientists"
369
392
  id="first-checkbox-indeterminate"
370
393
  >
371
- <lion-checkbox
394
+ <${childTag}
372
395
  slot="checkbox"
373
396
  label="Archimedes"
374
397
  .choiceValue=${'Archimedes'}
375
- ></lion-checkbox>
376
- <lion-checkbox slot="checkbox" label="Plato" .choiceValue=${'Plato'}></lion-checkbox>
377
- <lion-checkbox
398
+ ></${childTag}>
399
+ <${childTag} label="Plato" .choiceValue=${'Plato'}></${childTag}>
400
+ <${childTag}
378
401
  slot="checkbox"
379
402
  label="Pythagoras"
380
403
  .choiceValue=${'Pythagoras'}
381
- ></lion-checkbox>
382
- </lion-checkbox-indeterminate>
383
- <lion-checkbox-indeterminate
404
+ ></${childTag}>
405
+ </${tag}>
406
+ <${tag}
384
407
  label="17th Century scientists"
385
408
  id="second-checkbox-indeterminate"
386
409
  >
387
- <lion-checkbox
410
+ <${childTag}
388
411
  slot="checkbox"
389
412
  label="Isaac Newton"
390
413
  .choiceValue=${'Isaac Newton'}
391
- ></lion-checkbox>
392
- <lion-checkbox
414
+ ></${childTag}>
415
+ <${childTag}
393
416
  slot="checkbox"
394
417
  label="Galileo Galilei"
395
418
  .choiceValue=${'Galileo Galilei'}
396
- ></lion-checkbox>
397
- </lion-checkbox-indeterminate>
398
- </lion-checkbox-group>
419
+ ></${childTag}>
420
+ </${tag}>
421
+ </${groupTag}>
399
422
  `)
400
423
  );
401
424
  const elFirstIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
@@ -429,37 +452,37 @@ describe('<lion-checkbox-indeterminate>', () => {
429
452
  // Arrange
430
453
  const el = /** @type {LionCheckboxGroup} */ (
431
454
  await fixture(html`
432
- <lion-checkbox-group name="scientists[]" label="Favorite scientists">
433
- <lion-checkbox-indeterminate label="Scientists" id="parent-checkbox-indeterminate">
434
- <lion-checkbox
455
+ <${groupTag} name="scientists[]" label="Favorite scientists">
456
+ <${tag} label="Scientists" id="parent-checkbox-indeterminate">
457
+ <${childTag}
435
458
  slot="checkbox"
436
459
  label="Isaac Newton"
437
460
  .choiceValue=${'Isaac Newton'}
438
- ></lion-checkbox>
439
- <lion-checkbox
461
+ ></${childTag}>
462
+ <${childTag}
440
463
  slot="checkbox"
441
464
  label="Galileo Galilei"
442
465
  .choiceValue=${'Galileo Galilei'}
443
- ></lion-checkbox>
444
- <lion-checkbox-indeterminate
466
+ ></${childTag}>
467
+ <${tag}
445
468
  slot="checkbox"
446
469
  label="Old Greek scientists"
447
470
  id="nested-checkbox-indeterminate"
448
471
  >
449
- <lion-checkbox
472
+ <${childTag}
450
473
  slot="checkbox"
451
474
  label="Archimedes"
452
475
  .choiceValue=${'Archimedes'}
453
- ></lion-checkbox>
454
- <lion-checkbox slot="checkbox" label="Plato" .choiceValue=${'Plato'}></lion-checkbox>
455
- <lion-checkbox
476
+ ></${childTag}>
477
+ <${childTag} label="Plato" .choiceValue=${'Plato'}></${childTag}>
478
+ <${childTag}
456
479
  slot="checkbox"
457
480
  label="Pythagoras"
458
481
  .choiceValue=${'Pythagoras'}
459
- ></lion-checkbox>
460
- </lion-checkbox-indeterminate>
461
- </lion-checkbox-indeterminate>
462
- </lion-checkbox-group>
482
+ ></${childTag}>
483
+ </${tag}>
484
+ </${tag}>
485
+ </${groupTag}>
463
486
  `)
464
487
  );
465
488
  const elNestedIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
@@ -517,24 +540,24 @@ describe('<lion-checkbox-indeterminate>', () => {
517
540
  // Arrange
518
541
  const el = /** @type {LionCheckboxGroup} */ (
519
542
  await fixture(html`
520
- <lion-checkbox-group name="scientists[]">
543
+ <${groupTag} name="scientists[]">
521
544
  <div>
522
545
  Let's have some fun
523
546
  <div>Hello I'm a div</div>
524
- <lion-checkbox-indeterminate label="Favorite scientists">
547
+ <${tag} label="Favorite scientists">
525
548
  <div>useless div</div>
526
- <lion-checkbox slot="checkbox" label="Archimedes"></lion-checkbox>
527
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
549
+ <${childTag} label="Archimedes"></${childTag}>
550
+ <${childTag} label="Francis Bacon"></${childTag}>
528
551
  <div>absolutely useless</div>
529
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
530
- </lion-checkbox-indeterminate>
552
+ <${childTag} label="Marie Curie"></${childTag}>
553
+ </${tag}>
531
554
  </div>
532
555
  <div>Too much fun, stop it !</div>
533
- </lion-checkbox-group>
556
+ </${groupTag}>
534
557
  `)
535
558
  );
536
559
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
537
- el.querySelector('lion-checkbox-indeterminate')
560
+ el.querySelector(`${cfg.tagString}`)
538
561
  );
539
562
  const { _subCheckboxes } = getCheckboxIndeterminateMembers(elIndeterminate);
540
563
 
@@ -553,16 +576,16 @@ describe('<lion-checkbox-indeterminate>', () => {
553
576
  describe('mixed-state', () => {
554
577
  it('can have a mixed-state (using mixed-state attribute), none -> indeterminate -> all, cycling through', async () => {
555
578
  const el = await fixture(html`
556
- <lion-checkbox-group name="scientists[]">
557
- <lion-checkbox-indeterminate mixed-state label="Favorite scientists">
558
- <lion-checkbox slot="checkbox" label="Archimedes" checked></lion-checkbox>
559
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
560
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
561
- </lion-checkbox-indeterminate>
562
- </lion-checkbox-group>
579
+ <${groupTag} name="scientists[]">
580
+ <${tag} mixed-state label="Favorite scientists">
581
+ <${childTag} label="Archimedes" checked></${childTag}>
582
+ <${childTag} label="Francis Bacon"></${childTag}>
583
+ <${childTag} label="Marie Curie"></${childTag}>
584
+ </${tag}>
585
+ </${groupTag}>
563
586
  `);
564
587
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
565
- el.querySelector('lion-checkbox-indeterminate')
588
+ el.querySelector(`${cfg.tagString}`)
566
589
  );
567
590
 
568
591
  expect(elIndeterminate.mixedState).to.be.true;
@@ -590,19 +613,19 @@ describe('<lion-checkbox-indeterminate>', () => {
590
613
 
591
614
  it('should reset to old child checkbox states when reaching indeterminate state', async () => {
592
615
  const el = await fixture(html`
593
- <lion-checkbox-group name="scientists[]">
594
- <lion-checkbox-indeterminate mixed-state label="Favorite scientists">
595
- <lion-checkbox slot="checkbox" label="Archimedes" checked></lion-checkbox>
596
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
597
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
598
- </lion-checkbox-indeterminate>
599
- </lion-checkbox-group>
616
+ <${groupTag} name="scientists[]">
617
+ <${tag} mixed-state label="Favorite scientists">
618
+ <${childTag} label="Archimedes" checked></${childTag}>
619
+ <${childTag} label="Francis Bacon"></${childTag}>
620
+ <${childTag} label="Marie Curie"></${childTag}>
621
+ </${tag}>
622
+ </${groupTag}>
600
623
  `);
601
624
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
602
- el.querySelector('lion-checkbox-indeterminate')
625
+ el.querySelector(`${cfg.tagString}`)
603
626
  );
604
627
  const checkboxEls = /** @type {LionCheckbox[]} */ (
605
- Array.from(el.querySelectorAll('lion-checkbox'))
628
+ Array.from(el.querySelectorAll(`${cfg.childTagString}`))
606
629
  );
607
630
 
608
631
  expect(checkboxEls.map(checkboxEl => checkboxEl.checked)).to.eql([true, false, false]);
@@ -625,19 +648,19 @@ describe('<lion-checkbox-indeterminate>', () => {
625
648
 
626
649
  it('should no longer reach indeterminate state if the child boxes are all checked or all unchecked during indeterminate state', async () => {
627
650
  const el = await fixture(html`
628
- <lion-checkbox-group name="scientists[]">
629
- <lion-checkbox-indeterminate mixed-state label="Favorite scientists">
630
- <lion-checkbox slot="checkbox" label="Archimedes" checked></lion-checkbox>
631
- <lion-checkbox slot="checkbox" label="Francis Bacon"></lion-checkbox>
632
- <lion-checkbox slot="checkbox" label="Marie Curie"></lion-checkbox>
633
- </lion-checkbox-indeterminate>
634
- </lion-checkbox-group>
651
+ <${groupTag} name="scientists[]">
652
+ <${tag} mixed-state label="Favorite scientists">
653
+ <${childTag} label="Archimedes" checked></${childTag}>
654
+ <${childTag} label="Francis Bacon"></${childTag}>
655
+ <${childTag} label="Marie Curie"></${childTag}>
656
+ </${tag}>
657
+ </${groupTag}>
635
658
  `);
636
659
  const elIndeterminate = /** @type {LionCheckboxIndeterminate} */ (
637
- el.querySelector('lion-checkbox-indeterminate')
660
+ el.querySelector(`${cfg.tagString}`)
638
661
  );
639
662
  const checkboxEls = /** @type {LionCheckbox[]} */ (
640
- Array.from(el.querySelectorAll('lion-checkbox'))
663
+ Array.from(el.querySelectorAll(`${cfg.childTagString}`))
641
664
  );
642
665
 
643
666
  // Check when all child boxes in indeterminate state are unchecked
@@ -671,7 +694,6 @@ describe('<lion-checkbox-indeterminate>', () => {
671
694
  // @ts-ignore for testing purposes, we access this protected getter
672
695
  elIndeterminate._inputNode.click(); // unchecked
673
696
  await elIndeterminate.updateComplete;
674
-
675
697
  for (const checkEl of checkboxEls) {
676
698
  // @ts-ignore for testing purposes, we access this protected getter
677
699
  checkEl._inputNode.click();
@@ -697,4 +719,4 @@ describe('<lion-checkbox-indeterminate>', () => {
697
719
  expect(elIndeterminate.indeterminate).to.be.false;
698
720
  });
699
721
  });
700
- });
722
+ }
@@ -406,7 +406,6 @@ export class LionCombobox extends LocalizeMixin(OverlayMixin(LionListbox)) {
406
406
  * @protected
407
407
  */
408
408
  this._ariaVersion = browserDetection.isChromium ? '1.1' : '1.0';
409
-
410
409
  /**
411
410
  * @configure ListboxMixin
412
411
  * @protected
@@ -1072,6 +1071,9 @@ export class LionCombobox extends LocalizeMixin(OverlayMixin(LionListbox)) {
1072
1071
  this._setTextboxValue('');
1073
1072
  break;
1074
1073
  case 'Enter':
1074
+ if (this.multipleChoice && this.opened) {
1075
+ ev.preventDefault();
1076
+ }
1075
1077
  if (!this.formElements[this.activeIndex]) {
1076
1078
  return;
1077
1079
  }