@lion/ui 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (901) hide show
  1. package/README.md +65 -0
  2. package/components/accordion/src/LionAccordion.js +31 -42
  3. package/components/accordion/test/lion-accordion.test.js +108 -134
  4. package/components/button/src/LionButton.js +9 -12
  5. package/components/button/src/LionButtonReset.js +0 -5
  6. package/components/button/src/LionButtonSubmit.js +7 -12
  7. package/components/button/test/demos.screenshots-test.js +50 -11
  8. package/components/button/test/lion-button.test.js +0 -1
  9. package/components/button/test-suites/LionButton.suite.js +135 -145
  10. package/components/button/test-suites/LionButtonReset.suite.js +54 -72
  11. package/components/button/test-suites/LionButtonSubmit.suite.js +49 -68
  12. package/components/calendar/src/LionCalendar.js +151 -104
  13. package/components/calendar/src/calendarStyle.js +0 -1
  14. package/components/calendar/src/utils/createMonth.js +3 -4
  15. package/components/calendar/src/utils/createMultipleMonth.js +15 -7
  16. package/components/calendar/src/utils/createWeek.js +0 -2
  17. package/components/calendar/src/utils/dataTemplate.js +8 -4
  18. package/components/calendar/src/utils/dayTemplate.js +0 -6
  19. package/components/calendar/src/utils/getDayMonthYear.js +6 -2
  20. package/components/calendar/test/demos.screenshots-test.js +40 -9
  21. package/components/calendar/test/lion-calendar.test.js +171 -282
  22. package/components/calendar/test/utils/createMonth.test.js +61 -22
  23. package/components/calendar/test/utils/createMultipleMonth.test.js +14 -7
  24. package/components/calendar/test/utils/createWeek.test.js +51 -17
  25. package/components/calendar/test/utils/dataTemplate.test.js +3 -4
  26. package/components/calendar/test/utils/dayTemplate.test.js +106 -34
  27. package/components/calendar/test/utils/getFirstDayNextMonth.test.js +0 -1
  28. package/components/calendar/test/utils/getLastDayPreviousMonth.test.js +0 -1
  29. package/components/calendar/test/utils/isSameDate.test.js +0 -1
  30. package/components/calendar/test/utils/snapshots/monthTemplate_en-GB_Sunday_2018-12.js +1 -2
  31. package/components/calendar/test-helpers/CalendarObject.js +31 -62
  32. package/components/calendar/test-helpers/DayObject.js +7 -15
  33. package/components/calendar/test-suites/LionCalendar.suite.js +7 -9
  34. package/components/checkbox-group/src/LionCheckboxIndeterminate.js +17 -30
  35. package/components/checkbox-group/test/lion-checkbox-group-integrations.test.js +0 -1
  36. package/components/checkbox-group/test/lion-checkbox-group.test.js +21 -16
  37. package/components/checkbox-group/test/lion-checkbox-indeterminate-integrations.test.js +3 -3
  38. package/components/checkbox-group/test/lion-checkbox-integrations.test.js +3 -2
  39. package/components/checkbox-group/test/lion-checkbox.test.js +30 -16
  40. package/components/checkbox-group/test-suites/CheckboxIndeterminate.suite.js +147 -191
  41. package/components/collapsible/src/LionCollapsible.js +10 -15
  42. package/components/collapsible/test/lion-collapsible.test.js +4 -18
  43. package/components/combobox/src/LionCombobox.js +45 -55
  44. package/components/combobox/src/utils/makeMatchingTextBold.js +2 -5
  45. package/components/combobox/src/validators.js +0 -1
  46. package/components/combobox/test/lion-combobox-integrations.test.js +6 -6
  47. package/components/combobox/test/lion-combobox.test.js +598 -860
  48. package/components/combobox/test/validators.test.js +6 -13
  49. package/components/combobox/test-helpers/combobox-helpers.js +24 -11
  50. package/components/core/src/DisabledMixin.js +61 -66
  51. package/components/core/src/DisabledWithTabIndexMixin.js +76 -83
  52. package/components/core/src/EventTargetShim.js +1 -4
  53. package/components/core/src/ScopedElementsMixin.js +4 -15
  54. package/components/core/src/ScopedStylesController.js +1 -5
  55. package/components/core/src/SlotMixin.js +236 -239
  56. package/components/core/src/browserDetection.js +5 -12
  57. package/components/core/test/DisabledMixin.test.js +24 -39
  58. package/components/core/test/DisabledWithTabIndexMixin.test.js +21 -34
  59. package/components/core/test/EventTargetShim.test.js +0 -8
  60. package/components/core/test/ScopedElementsMixin.test.js +22 -38
  61. package/components/core/test/ScopedStylesController.test.js +11 -20
  62. package/components/core/test/SlotMixin.test.js +102 -154
  63. package/components/core/test-helpers/getCachedFixture.js +5 -11
  64. package/components/core/types/SlotMixinTypes.ts +8 -3
  65. package/components/dialog/src/LionDialog.js +4 -3
  66. package/components/dialog/test/lion-dialog.integration.test.js +10 -20
  67. package/components/dialog/test/lion-dialog.test.js +48 -62
  68. package/components/dialog/test-helpers/test-router.js +4 -6
  69. package/components/drawer/src/LionDrawer.js +18 -34
  70. package/components/drawer/src/drawerStyle.js +0 -1
  71. package/components/drawer/test/lion-drawer.test.js +1 -17
  72. package/components/fieldset/test/lion-fieldset.test.js +6 -4
  73. package/components/form/src/LionForm.js +18 -13
  74. package/components/form/test/lion-form.test.js +22 -52
  75. package/components/form-core/src/FocusMixin.js +172 -174
  76. package/components/form-core/src/FormControlMixin.js +811 -813
  77. package/components/form-core/src/FormatMixin.js +537 -537
  78. package/components/form-core/src/InteractionStateMixin.js +196 -183
  79. package/components/form-core/src/LionField.js +9 -5
  80. package/components/form-core/src/NativeTextFieldMixin.js +114 -116
  81. package/components/form-core/src/choice-group/ChoiceGroupMixin.js +322 -357
  82. package/components/form-core/src/choice-group/ChoiceInputMixin.js +306 -296
  83. package/components/form-core/src/choice-group/CustomChoiceGroupMixin.js +114 -139
  84. package/components/form-core/src/form-group/FormElementsHaveNoError.js +0 -2
  85. package/components/form-core/src/form-group/FormGroupMixin.js +551 -557
  86. package/components/form-core/src/registration/FormRegisteringMixin.js +72 -71
  87. package/components/form-core/src/registration/FormRegistrarMixin.js +201 -217
  88. package/components/form-core/src/registration/FormRegistrarPortalMixin.js +31 -37
  89. package/components/form-core/src/utils/SyncUpdatableMixin.js +106 -117
  90. package/components/form-core/src/utils/getAriaElementsInRightDomOrder.js +1 -2
  91. package/components/form-core/src/validate/LionValidationFeedback.js +12 -8
  92. package/components/form-core/src/validate/Unparseable.js +4 -2
  93. package/components/form-core/src/validate/ValidateMixin.js +829 -883
  94. package/components/form-core/src/validate/Validator.js +3 -6
  95. package/components/form-core/src/validate/resultValidators/DefaultSuccess.js +1 -2
  96. package/components/form-core/src/validate/validators/DateValidators.js +0 -5
  97. package/components/form-core/src/validate/validators/NumberValidators.js +1 -5
  98. package/components/form-core/src/validate/validators/Required.js +1 -1
  99. package/components/form-core/src/validate/validators/StringValidators.js +1 -8
  100. package/components/form-core/test/FocusMixin.test.js +96 -82
  101. package/components/form-core/test/FormControlMixin.test.js +120 -176
  102. package/components/form-core/test/FormRegistrationMixins.test.js +0 -2
  103. package/components/form-core/test/FormatMixin.test.js +0 -1
  104. package/components/form-core/test/InteractionStateMixin.test.js +0 -1
  105. package/components/form-core/test/NativeTextFieldMixin.test.js +0 -1
  106. package/components/form-core/test/choice-group/ChoiceGroupMixin.test.js +0 -1
  107. package/components/form-core/test/choice-group/ChoiceInputMixin.test.js +0 -1
  108. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.integrations.test.js +6 -8
  109. package/components/form-core/test/choice-group/CustomChoiceGroupMixin.test.js +0 -3
  110. package/components/form-core/test/form-group/FormGroupMixin.test.js +0 -1
  111. package/components/form-core/test/lion-field.test.js +88 -98
  112. package/components/form-core/test/utils/SyncUpdatableMixin.test.js +51 -65
  113. package/components/form-core/test/utils/getAriaElementsInRightDomOrder.test.js +3 -3
  114. package/components/form-core/test/validate/DateValidators.test.js +5 -27
  115. package/components/form-core/test/validate/NumberValidators.test.js +4 -16
  116. package/components/form-core/test/validate/Required.test.js +8 -21
  117. package/components/form-core/test/validate/ResultValidator.test.js +1 -2
  118. package/components/form-core/test/validate/StringValidators.test.js +4 -35
  119. package/components/form-core/test/validate/ValidateMixin.test.js +0 -1
  120. package/components/form-core/test/validate/ValidateMixinFeedbackPart.test.js +0 -1
  121. package/components/form-core/test/validate/Validator.test.js +39 -34
  122. package/components/form-core/test/validate/lion-validation-feedback.test.js +81 -43
  123. package/components/form-core/test-helpers/ExampleValidators.js +0 -5
  124. package/components/form-core/test-helpers/getFormControlMembers.js +2 -2
  125. package/components/form-core/test-helpers/mimicUserInput.js +5 -1
  126. package/components/form-core/test-suites/FormRegistrationMixins.suite.js +65 -122
  127. package/components/form-core/test-suites/FormatMixin.suite.js +202 -227
  128. package/components/form-core/test-suites/InteractionStateMixin.suite.js +47 -60
  129. package/components/form-core/test-suites/NativeTextFieldMixin.suite.js +8 -11
  130. package/components/form-core/test-suites/ValidateMixin.suite.js +280 -359
  131. package/components/form-core/test-suites/ValidateMixinFeedbackPart.suite.js +112 -163
  132. package/components/form-core/test-suites/choice-group/ChoiceGroupMixin.suite.js +185 -218
  133. package/components/form-core/test-suites/choice-group/ChoiceInputMixin.suite.js +116 -109
  134. package/components/form-core/test-suites/choice-group/CustomChoiceGroupMixin.suite.js +36 -70
  135. package/components/form-core/test-suites/form-group/FormGroupMixin-input.suite.js +57 -65
  136. package/components/form-core/test-suites/form-group/FormGroupMixin.suite.js +664 -523
  137. package/components/form-core/translations/bg-BG.js +0 -1
  138. package/components/form-core/translations/cs-CZ.js +0 -1
  139. package/components/form-core/translations/de-DE.js +0 -1
  140. package/components/form-core/translations/en-AU.js +0 -1
  141. package/components/form-core/translations/en-GB.js +0 -1
  142. package/components/form-core/translations/en-US.js +0 -1
  143. package/components/form-core/translations/es-ES.js +0 -1
  144. package/components/form-core/translations/fr-BE.js +0 -1
  145. package/components/form-core/translations/fr-FR.js +0 -1
  146. package/components/form-core/translations/hu-HU.js +0 -1
  147. package/components/form-core/translations/it-IT.js +0 -1
  148. package/components/form-core/translations/nl-BE.js +0 -1
  149. package/components/form-core/translations/nl-NL.js +0 -1
  150. package/components/form-core/translations/pl-PL.js +0 -1
  151. package/components/form-core/translations/ro-RO.js +0 -1
  152. package/components/form-core/translations/ru-RU.js +0 -1
  153. package/components/form-core/translations/sk-SK.js +0 -1
  154. package/components/form-core/translations/tr-TR.js +0 -1
  155. package/components/form-core/translations/uk-UA.js +0 -1
  156. package/components/form-core/types/choice-group/ChoiceGroupMixinTypes.ts +5 -0
  157. package/components/form-integrations/test/dialog-integrations.test.js +1 -4
  158. package/components/form-integrations/test/form-group-methods.test.js +28 -31
  159. package/components/form-integrations/test/form-integrations.test.js +27 -28
  160. package/components/form-integrations/test/form-validation-integrations.test.js +21 -29
  161. package/components/form-integrations/test/helpers/umbrella-form.js +3 -5
  162. package/components/form-integrations/test/model-value-consistency.test.js +75 -77
  163. package/components/form-integrations/test/model-value-event.test.js +10 -20
  164. package/components/helpers/src/SbActionLogger.js +13 -17
  165. package/components/helpers/src/SbLocaleSwitcher.js +5 -5
  166. package/components/helpers/src/sortEachDepth.js +0 -2
  167. package/components/helpers/test/renderLitAsNode.test.js +0 -4
  168. package/components/helpers/test/sb-action-logger.test.js +24 -55
  169. package/components/icon/src/IconManager.js +0 -2
  170. package/components/icon/src/LionIcon.js +2 -7
  171. package/components/icon/src/icons.js +0 -2
  172. package/components/icon/test/IconManager.test.js +0 -15
  173. package/components/icon/test/hammer.svg.js +3 -4
  174. package/components/icon/test/heart.svg.js +3 -4
  175. package/components/icon/test/lion-icon.test.js +14 -43
  176. package/components/input/src/LionInput.js +2 -8
  177. package/components/input/test/input-integrations.test.js +0 -5
  178. package/components/input/test/lion-input-integrations.test.js +0 -4
  179. package/components/input/test/lion-input.test.js +28 -58
  180. package/components/input/test-helpers/getInputMembers.js +2 -2
  181. package/components/input-amount/src/LionInputAmount.js +37 -26
  182. package/components/input-amount/src/formatters.js +4 -5
  183. package/components/input-amount/src/parsers.js +0 -3
  184. package/components/input-amount/test/formatters.test.js +102 -80
  185. package/components/input-amount/test/lion-input-amount-integrations.test.js +0 -4
  186. package/components/input-amount/test/lion-input-amount.test.js +155 -164
  187. package/components/input-amount/test/parsers.test.js +33 -17
  188. package/components/input-amount/test/preprocessors.test.js +0 -3
  189. package/components/input-amount-dropdown/src/LionInputAmountDropdown.js +49 -59
  190. package/components/input-amount-dropdown/src/currencyUtil.js +8 -7
  191. package/components/input-amount-dropdown/src/parsers.js +0 -1
  192. package/components/input-amount-dropdown/src/validators.js +0 -1
  193. package/components/input-amount-dropdown/test/LionInputAmountDropdown.test.js +34 -36
  194. package/components/input-amount-dropdown/test/lion-input-amount-dropdown-integrations.test.js +18 -13
  195. package/components/input-amount-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
  196. package/components/input-amount-dropdown/test-suites/LionInputAmountDropdown.suite.js +132 -107
  197. package/components/input-date/src/LionInputDate.js +4 -3
  198. package/components/input-date/test/lion-input-date-integrations.test.js +0 -3
  199. package/components/input-date/test/lion-input-date.test.js +19 -32
  200. package/components/input-datepicker/src/LionInputDatepicker.js +17 -29
  201. package/components/input-datepicker/src/localizeNamespaceLoader.js +1 -2
  202. package/components/input-datepicker/test/lion-input-datepicker-integrations.test.js +0 -3
  203. package/components/input-datepicker/test/lion-input-datepicker.test.js +88 -153
  204. package/components/input-datepicker/test-helpers/DatepickerInputObject.js +9 -12
  205. package/components/input-datepicker/test-suites/LionInputDatepicker.suite.js +6 -4
  206. package/components/input-datepicker/translations/bg-BG.js +0 -1
  207. package/components/input-datepicker/translations/cs-CZ.js +0 -1
  208. package/components/input-datepicker/translations/de-DE.js +0 -1
  209. package/components/input-datepicker/translations/en-AU.js +0 -1
  210. package/components/input-datepicker/translations/en-GB.js +0 -1
  211. package/components/input-datepicker/translations/en-US.js +0 -1
  212. package/components/input-datepicker/translations/es-ES.js +0 -1
  213. package/components/input-datepicker/translations/fr-BE.js +0 -1
  214. package/components/input-datepicker/translations/fr-FR.js +0 -1
  215. package/components/input-datepicker/translations/hu-HU.js +0 -1
  216. package/components/input-datepicker/translations/it-IT.js +0 -1
  217. package/components/input-datepicker/translations/nl-BE.js +0 -1
  218. package/components/input-datepicker/translations/nl-NL.js +0 -1
  219. package/components/input-datepicker/translations/pl-PL.js +0 -1
  220. package/components/input-datepicker/translations/ro-RO.js +0 -1
  221. package/components/input-datepicker/translations/ru-RU.js +0 -1
  222. package/components/input-datepicker/translations/sk-SK.js +0 -1
  223. package/components/input-datepicker/translations/tr-TR.js +0 -1
  224. package/components/input-datepicker/translations/uk-UA.js +0 -1
  225. package/components/input-email/test/lion-input-email-integrations.test.js +0 -2
  226. package/components/input-email/test/lion-input-email.test.js +1 -7
  227. package/components/input-file/src/FileHandle.js +0 -3
  228. package/components/input-file/src/LionInputFile.js +85 -83
  229. package/components/input-file/src/LionSelectedFileList.js +12 -12
  230. package/components/input-file/src/validators.js +10 -9
  231. package/components/input-file/test/FileValidators.test.js +170 -80
  232. package/components/input-file/test/lion-input-file.test.js +160 -244
  233. package/components/input-file/test/lion-selected-file-list.test.js +13 -22
  234. package/components/input-file/translations/bg-BG.js +0 -1
  235. package/components/input-file/translations/cs-CZ.js +0 -1
  236. package/components/input-file/translations/de-DE.js +0 -1
  237. package/components/input-file/translations/en-AU.js +0 -1
  238. package/components/input-file/translations/en-GB.js +0 -1
  239. package/components/input-file/translations/en-PH.js +0 -1
  240. package/components/input-file/translations/en-US.js +0 -1
  241. package/components/input-file/translations/en.js +2 -1
  242. package/components/input-file/translations/es-ES.js +0 -1
  243. package/components/input-file/translations/fr-BE.js +0 -1
  244. package/components/input-file/translations/fr-FR.js +0 -1
  245. package/components/input-file/translations/hu-HU.js +0 -1
  246. package/components/input-file/translations/id-ID.js +0 -1
  247. package/components/input-file/translations/id.js +2 -1
  248. package/components/input-file/translations/it-IT.js +0 -1
  249. package/components/input-file/translations/nl-BE.js +0 -1
  250. package/components/input-file/translations/nl-NL.js +0 -1
  251. package/components/input-file/translations/pl-PL.js +0 -1
  252. package/components/input-file/translations/ro-RO.js +0 -1
  253. package/components/input-file/translations/ru-RU.js +0 -1
  254. package/components/input-file/translations/sk-SK.js +0 -1
  255. package/components/input-file/translations/uk-UA.js +0 -1
  256. package/components/input-file/translations/zh-CN.js +0 -1
  257. package/components/input-iban/src/validators.js +6 -11
  258. package/components/input-iban/test/formatters.test.js +0 -3
  259. package/components/input-iban/test/lion-input-iban-integrations.test.js +0 -2
  260. package/components/input-iban/test/lion-input-iban.test.js +1 -9
  261. package/components/input-iban/test/parsers.test.js +0 -2
  262. package/components/input-iban/test/validators.test.js +0 -12
  263. package/components/input-iban/translations/bg-BG.js +0 -1
  264. package/components/input-iban/translations/cs-CZ.js +0 -1
  265. package/components/input-iban/translations/de-DE.js +0 -1
  266. package/components/input-iban/translations/en-AU.js +0 -1
  267. package/components/input-iban/translations/en-GB.js +0 -1
  268. package/components/input-iban/translations/en-US.js +0 -1
  269. package/components/input-iban/translations/es-ES.js +0 -1
  270. package/components/input-iban/translations/fr-BE.js +0 -1
  271. package/components/input-iban/translations/fr-FR.js +0 -1
  272. package/components/input-iban/translations/hu-HU.js +0 -1
  273. package/components/input-iban/translations/it-IT.js +0 -1
  274. package/components/input-iban/translations/nl-BE.js +0 -1
  275. package/components/input-iban/translations/nl-NL.js +0 -1
  276. package/components/input-iban/translations/pl-PL.js +0 -1
  277. package/components/input-iban/translations/ro-RO.js +0 -1
  278. package/components/input-iban/translations/ru-RU.js +0 -1
  279. package/components/input-iban/translations/sk-SK.js +0 -1
  280. package/components/input-iban/translations/uk-UA.js +0 -1
  281. package/components/input-range/src/LionInputRange.js +18 -19
  282. package/components/input-range/test/lion-input-range.test.js +23 -48
  283. package/components/input-range/translations/bg-BG.js +0 -1
  284. package/components/input-range/translations/cs-CZ.js +0 -1
  285. package/components/input-range/translations/de-DE.js +0 -1
  286. package/components/input-range/translations/en-AU.js +0 -1
  287. package/components/input-range/translations/en-GB.js +0 -1
  288. package/components/input-range/translations/en-PH.js +0 -1
  289. package/components/input-range/translations/en-US.js +0 -1
  290. package/components/input-range/translations/es-ES.js +0 -1
  291. package/components/input-range/translations/fr-BE.js +0 -1
  292. package/components/input-range/translations/fr-FR.js +0 -1
  293. package/components/input-range/translations/hu-HU.js +0 -1
  294. package/components/input-range/translations/it-IT.js +0 -1
  295. package/components/input-range/translations/nl-BE.js +0 -1
  296. package/components/input-range/translations/nl-NL.js +0 -1
  297. package/components/input-range/translations/pl-PL.js +0 -1
  298. package/components/input-range/translations/ro-RO.js +0 -1
  299. package/components/input-range/translations/ru-RU.js +0 -1
  300. package/components/input-range/translations/sk-SK.js +0 -1
  301. package/components/input-range/translations/uk-UA.js +0 -1
  302. package/components/input-range/translations/zh-CN.js +0 -1
  303. package/components/input-stepper/src/LionInputStepper.js +19 -38
  304. package/components/input-stepper/test/lion-input-stepper-integrations.test.js +0 -1
  305. package/components/input-stepper/test/lion-input-stepper.test.js +0 -1
  306. package/components/input-stepper/test-suites/lion-input-stepper.integration.suite.js +0 -2
  307. package/components/input-stepper/test-suites/lion-input-stepper.suite.js +56 -105
  308. package/components/input-stepper/translations/bg-BG.js +0 -1
  309. package/components/input-stepper/translations/cs-CZ.js +0 -1
  310. package/components/input-stepper/translations/de-DE.js +0 -1
  311. package/components/input-stepper/translations/en-AU.js +0 -1
  312. package/components/input-stepper/translations/en-GB.js +0 -1
  313. package/components/input-stepper/translations/en-US.js +0 -1
  314. package/components/input-stepper/translations/es-ES.js +0 -1
  315. package/components/input-stepper/translations/fr-BE.js +0 -1
  316. package/components/input-stepper/translations/fr-FR.js +0 -1
  317. package/components/input-stepper/translations/hu-HU.js +0 -1
  318. package/components/input-stepper/translations/it-IT.js +0 -1
  319. package/components/input-stepper/translations/nl-BE.js +0 -1
  320. package/components/input-stepper/translations/nl-NL.js +0 -1
  321. package/components/input-stepper/translations/pl-PL.js +0 -1
  322. package/components/input-stepper/translations/ro-RO.js +0 -1
  323. package/components/input-stepper/translations/ru-RU.js +0 -1
  324. package/components/input-stepper/translations/sk-SK.js +0 -1
  325. package/components/input-stepper/translations/uk-UA.js +0 -1
  326. package/components/input-tel/src/LionInputTel.js +53 -37
  327. package/components/input-tel/src/PhoneUtilManager.js +6 -4
  328. package/components/input-tel/src/formatters.js +12 -10
  329. package/components/input-tel/src/parsers.js +3 -3
  330. package/components/input-tel/src/preprocessors.js +15 -7
  331. package/components/input-tel/src/validators.js +4 -6
  332. package/components/input-tel/test/LionInputTel.test.js +4 -2
  333. package/components/input-tel/test/formatters.test.js +22 -10
  334. package/components/input-tel/test/parsers.test.js +40 -11
  335. package/components/input-tel/test/preprocessors.test.js +24 -13
  336. package/components/input-tel/test/validators.test.js +15 -13
  337. package/components/input-tel/test-helpers/mockPhoneUtilManager.js +7 -6
  338. package/components/input-tel/test-suites/LionInputTel.suite.js +33 -73
  339. package/components/input-tel/translations/bg-BG.js +0 -1
  340. package/components/input-tel/translations/cs-CZ.js +0 -1
  341. package/components/input-tel/translations/de-DE.js +0 -1
  342. package/components/input-tel/translations/en-AU.js +0 -1
  343. package/components/input-tel/translations/en-GB.js +0 -1
  344. package/components/input-tel/translations/en-US.js +0 -1
  345. package/components/input-tel/translations/es-ES.js +0 -1
  346. package/components/input-tel/translations/fr-BE.js +0 -1
  347. package/components/input-tel/translations/fr-FR.js +0 -1
  348. package/components/input-tel/translations/hu-HU.js +0 -1
  349. package/components/input-tel/translations/it-IT.js +0 -1
  350. package/components/input-tel/translations/nl-BE.js +0 -1
  351. package/components/input-tel/translations/nl-NL.js +0 -1
  352. package/components/input-tel/translations/pl-PL.js +0 -1
  353. package/components/input-tel/translations/ro-RO.js +0 -1
  354. package/components/input-tel/translations/ru-RU.js +0 -1
  355. package/components/input-tel/translations/sk-SK.js +0 -1
  356. package/components/input-tel/translations/uk-UA.js +0 -1
  357. package/components/input-tel-dropdown/src/LionInputTelDropdown.js +10 -28
  358. package/components/input-tel-dropdown/src/regionCodeToLocale.js +3 -1
  359. package/components/input-tel-dropdown/test/LionInputTelDropdown.test.js +31 -38
  360. package/components/input-tel-dropdown/test/regionCodeToLocale.test.js +0 -1
  361. package/components/input-tel-dropdown/test-helpers/mimicUserChangingDropdown.js +5 -1
  362. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown--parentheses.suite.js +16 -11
  363. package/components/input-tel-dropdown/test-suites/LionInputTelDropdown.suite.js +54 -79
  364. package/components/listbox/src/LionListbox.js +4 -1
  365. package/components/listbox/src/LionOption.js +8 -7
  366. package/components/listbox/src/LionOptions.js +0 -3
  367. package/components/listbox/src/ListboxMixin.js +801 -819
  368. package/components/listbox/test/lion-listbox.test.js +0 -1
  369. package/components/listbox/test/lion-option.test.js +53 -64
  370. package/components/listbox/test/lion-options.test.js +3 -4
  371. package/components/listbox/test-helpers/getListboxMembers.js +6 -3
  372. package/components/listbox/test-suites/ListboxMixin.suite.js +101 -261
  373. package/components/listbox/types/ListboxMixinTypes.ts +7 -1
  374. package/components/localize/src/LocalizeManager.js +40 -40
  375. package/components/localize/src/LocalizeMixin.js +130 -157
  376. package/components/localize/src/date/formatDate.js +1 -5
  377. package/components/localize/src/date/getDateFormatBasedOnLocale.js +5 -3
  378. package/components/localize/src/date/getMonthNames.js +3 -5
  379. package/components/localize/src/date/getWeekdayNames.js +1 -5
  380. package/components/localize/src/date/parseDate.js +5 -20
  381. package/components/localize/src/date/utils/normalizeIntlDate.js +0 -7
  382. package/components/localize/src/getLocalizeManager.js +0 -3
  383. package/components/localize/src/number/formatNumber.js +3 -7
  384. package/components/localize/src/number/formatNumberToParts.js +52 -18
  385. package/components/localize/src/number/getCurrencyName.js +5 -5
  386. package/components/localize/src/number/getFractionDigits.js +4 -4
  387. package/components/localize/src/number/getSeparatorsFromNumber.js +1 -3
  388. package/components/localize/src/number/parseNumber.js +0 -3
  389. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceAddGroupSeparators.js +0 -1
  390. package/components/localize/src/number/utils/normalize-format-number-to-parts/forceSpaceBetweenCurrencyCodeAndNumber.js +4 -1
  391. package/components/localize/test/LocalizeManager.test.js +385 -278
  392. package/components/localize/test/LocalizeMixin.test.js +28 -112
  393. package/components/localize/test/date/formatDate.test.js +18 -48
  394. package/components/localize/test/date/getDateFormatBasedOnLocale.test.js +0 -3
  395. package/components/localize/test/date/getMonthNames.test.js +27 -12
  396. package/components/localize/test/date/getWeekdayNames.test.js +93 -49
  397. package/components/localize/test/date/normalizeDateTime.test.js +0 -2
  398. package/components/localize/test/date/parseDate.test.js +12 -16
  399. package/components/localize/test/getLocalizeManager.test.js +0 -3
  400. package/components/localize/test/isLocalizeESModule.test.js +32 -13
  401. package/components/localize/test/localize.test.js +0 -4
  402. package/components/localize/test/number/formatNumber.test.js +215 -106
  403. package/components/localize/test/number/formatNumberToParts.test.js +31 -38
  404. package/components/localize/test/number/getCurrencyName.test.js +20 -6
  405. package/components/localize/test/number/getDecimalSeparator.test.js +5 -4
  406. package/components/localize/test/number/getFractionDigits.test.js +0 -2
  407. package/components/localize/test/number/getGroupSeparator.test.js +0 -2
  408. package/components/localize/test/number/getSeparatorsFromNumber.test.js +5 -3
  409. package/components/localize/test/number/parseNumber.test.js +123 -56
  410. package/components/localize/test/side-effect-free-entrypoint.test.js +0 -6
  411. package/components/localize/test-helpers/fake-imports.js +11 -6
  412. package/components/localize/test-helpers/localizeTearDown.js +0 -1
  413. package/components/menu/README.md +360 -0
  414. package/components/menu/src/InteractiveListMixin.js +866 -0
  415. package/components/menu/src/LionMenu.js +423 -0
  416. package/components/menu/src/MoreButtonMenuMixin.js +272 -0
  417. package/components/menu/src/MultiLevelListMixin.js +306 -0
  418. package/components/menu/src/utils/isInView.js +25 -0
  419. package/components/menu/src/utils/listItemInteractions.js +124 -0
  420. package/components/menu/test/InteractiveListMixin.test.js +2 -0
  421. package/components/menu/test/MoreButtonMenuMixin.test.js +5 -0
  422. package/components/menu/test/MultiLevelListMixin.test.js +2 -0
  423. package/components/menu/test/lion-menu-interactions.test.js +2 -0
  424. package/components/menu/test/lion-menu.test.js +18 -0
  425. package/components/menu/test-helpers/mimicKeyPress.js +19 -0
  426. package/components/menu/test-suites/InteractiveListMixin.suite.js +498 -0
  427. package/components/menu/test-suites/LionMenu.suite.js +107 -0
  428. package/components/menu/test-suites/LionMenuInteractions.suite.js +561 -0
  429. package/components/menu/test-suites/MoreButtonMenuMixin.suite.js +365 -0
  430. package/components/menu/test-suites/MultiLevelListMixin.suite.js +291 -0
  431. package/components/menu/types/InteractiveListMixinTypes.ts +126 -0
  432. package/components/menu/types/MoreButtonMenuMixinTypes.ts +51 -0
  433. package/components/menu/types/MultiLevelListMixinTypes.ts +28 -0
  434. package/components/menu/types/OverlayWithListInvokerMixinTypes.ts +61 -0
  435. package/components/overlays/NEXT.md +49 -0
  436. package/components/overlays/src/ArrowMixin.js +111 -127
  437. package/components/overlays/src/OverlayController.js +440 -246
  438. package/components/overlays/src/OverlayMixin.js +130 -68
  439. package/components/overlays/src/OverlaysManager.js +30 -32
  440. package/components/overlays/src/configurations/visibility-trigger-partials/withClickInteraction.js +0 -1
  441. package/components/overlays/src/configurations/visibility-trigger-partials/withHoverInteraction.js +11 -11
  442. package/components/overlays/src/configurations/withBottomSheetConfig.js +12 -13
  443. package/components/overlays/src/configurations/withDropdownConfig.js +4 -2
  444. package/components/overlays/src/configurations/withModalDialogConfig.js +12 -13
  445. package/components/overlays/src/configurations/withPopoverConfig.js +27 -25
  446. package/components/overlays/src/configurations/withTooltipConfig.js +15 -13
  447. package/components/overlays/src/overlayDocumentStyle.js +1 -1
  448. package/components/overlays/src/overlayShadowDomStyle.js +0 -1
  449. package/components/overlays/src/singleton.js +0 -2
  450. package/components/overlays/src/utils/adopt-styles.js +19 -19
  451. package/components/overlays/src/utils/deep-contains.js +7 -6
  452. package/components/overlays/src/utils/get-focusable-elements.js +7 -10
  453. package/components/overlays/src/utils/inert-siblings.js +2 -4
  454. package/components/overlays/src/utils/is-equal-config.js +14 -6
  455. package/components/overlays/src/utils/is-visible.js +0 -1
  456. package/components/overlays/src/utils/simulate-tab.js +1 -4
  457. package/components/overlays/src/utils/sort-by-tabindex.js +2 -4
  458. package/components/overlays/test/ArrowMixin.test.js +18 -30
  459. package/components/overlays/test/OverlayController.test.js +551 -533
  460. package/components/overlays/test/OverlayMixin.test.js +0 -2
  461. package/components/overlays/test/OverlaysManager.test.js +30 -35
  462. package/components/overlays/test/global-positioning.test.js +6 -10
  463. package/components/overlays/test/local-positioning.test.js +101 -103
  464. package/components/overlays/test/utils-tests/active-element.test.js +12 -27
  465. package/components/overlays/test/utils-tests/adopt-styles.test.js +25 -56
  466. package/components/overlays/test/utils-tests/deep-contains.test.js +73 -74
  467. package/components/overlays/test/utils-tests/get-focusable-elements.test.js +6 -23
  468. package/components/overlays/test/utils-tests/is-equal-config.test.js +32 -13
  469. package/components/overlays/test/utils-tests/visibility.test.js +44 -79
  470. package/components/overlays/test-helpers/createShadowHost.js +5 -3
  471. package/components/overlays/test-helpers/normalizeTransformStyle.js +2 -4
  472. package/components/overlays/test-suites/OverlayMixin.suite.js +159 -188
  473. package/components/overlays/test-suites/WithHoverInteraction.suite.js +96 -79
  474. package/components/overlays/translations/bg-BG.js +0 -1
  475. package/components/overlays/translations/cs-CZ.js +0 -1
  476. package/components/overlays/translations/de-DE.js +0 -1
  477. package/components/overlays/translations/en-AU.js +0 -1
  478. package/components/overlays/translations/en-GB.js +0 -1
  479. package/components/overlays/translations/en-US.js +0 -1
  480. package/components/overlays/translations/es-ES.js +0 -1
  481. package/components/overlays/translations/fr-BE.js +0 -1
  482. package/components/overlays/translations/fr-FR.js +0 -1
  483. package/components/overlays/translations/hu-HU.js +0 -1
  484. package/components/overlays/translations/it-IT.js +0 -1
  485. package/components/overlays/translations/nl-BE.js +0 -1
  486. package/components/overlays/translations/nl-NL.js +0 -1
  487. package/components/overlays/translations/pl-PL.js +0 -1
  488. package/components/overlays/translations/ro-RO.js +0 -1
  489. package/components/overlays/translations/ru-RU.js +0 -1
  490. package/components/overlays/translations/sk-SK.js +0 -1
  491. package/components/overlays/translations/tr-TR.js +0 -1
  492. package/components/overlays/translations/uk-UA.js +0 -1
  493. package/components/overlays/types/ArrowMixinTypes.ts +1 -3
  494. package/components/overlays/types/OverlayConfig.ts +20 -5
  495. package/components/overlays/types/OverlayMixinTypes.ts +2 -0
  496. package/components/pagination/src/LionPagination.js +9 -12
  497. package/components/pagination/test/lion-pagination.test.js +18 -50
  498. package/components/progress-indicator/src/LionProgressIndicator.js +10 -12
  499. package/components/progress-indicator/test/lion-progress-indicator.test.js +1 -22
  500. package/components/radio-group/src/LionRadioGroup.js +1 -2
  501. package/components/radio-group/test/lion-radio-group-integrations.test.js +0 -1
  502. package/components/radio-group/test/lion-radio-group.test.js +27 -27
  503. package/components/radio-group/test/lion-radio-integrations.test.js +3 -2
  504. package/components/radio-group/test/lion-radio.test.js +30 -16
  505. package/components/select/src/LionSelect.js +12 -13
  506. package/components/select/test/lion-select.test.js +7 -12
  507. package/components/select-rich/src/LionSelectInvoker.js +18 -11
  508. package/components/select-rich/src/LionSelectRich.js +32 -43
  509. package/components/select-rich/test/demos.screenshots-test.js +40 -9
  510. package/components/select-rich/test/lion-select-invoker.test.js +26 -43
  511. package/components/select-rich/test/lion-select-listbox-suite-integration.test.js +3 -3
  512. package/components/select-rich/test/lion-select-rich-dialog-integration.test.js +4 -9
  513. package/components/select-rich/test/lion-select-rich-interaction.test.js +154 -101
  514. package/components/select-rich/test/lion-select-rich-upgrade.test.js +26 -0
  515. package/components/select-rich/test/lion-select-rich.test.js +153 -195
  516. package/components/select-rich/test-helpers/getSelectRichMembers.js +4 -1
  517. package/components/steps/src/LionStep.js +21 -12
  518. package/components/steps/src/LionSteps.js +25 -25
  519. package/components/steps/test/lion-step.test.js +18 -25
  520. package/components/steps/test/lion-steps.test.js +45 -78
  521. package/components/switch/src/LionSwitch.js +2 -7
  522. package/components/switch/src/LionSwitchButton.js +5 -6
  523. package/components/switch/test/lion-switch-button.test.js +16 -28
  524. package/components/switch/test/lion-switch.test.js +17 -31
  525. package/components/tabs/src/LionTabs.js +25 -28
  526. package/components/tabs/test/lion-tabs.test.js +156 -154
  527. package/components/textarea/src/LionTextarea.js +4 -23
  528. package/components/textarea/test/lion-textarea-integrations.test.js +0 -5
  529. package/components/textarea/test/lion-textarea.test.js +2 -28
  530. package/components/tooltip/src/LionTooltip.js +6 -6
  531. package/components/tooltip/test/lion-tooltip.test.js +75 -102
  532. package/components/validate-messages/src/getLocalizedMessage.js +8 -7
  533. package/components/validate-messages/src/loadDefaultFeedbackMessages.js +3 -1
  534. package/components/validate-messages/src/loadDefaultFeedbackMessagesNoSideEffects.js +9 -5
  535. package/components/validate-messages/src/per-entrypoint/loadComboboxMessagesNoSideEffects.js +5 -2
  536. package/components/validate-messages/src/per-entrypoint/loadFormCoreMessagesNoSideEffects.js +99 -35
  537. package/components/validate-messages/src/per-entrypoint/loadInputTelMessagesNoSideEffects.js +4 -3
  538. package/components/validate-messages/test/loadDefaultFeedbackMessages.test.js +5 -3
  539. package/components/validate-messages/test/loadDefaultFeedbackMessagesNoSideEffects.test.js +80 -45
  540. package/components/validate-messages/translations/bg-BG.js +0 -1
  541. package/components/validate-messages/translations/cs-CZ.js +0 -1
  542. package/components/validate-messages/translations/de-DE.js +0 -1
  543. package/components/validate-messages/translations/en-AU.js +0 -1
  544. package/components/validate-messages/translations/en-GB.js +0 -1
  545. package/components/validate-messages/translations/en-PH.js +0 -1
  546. package/components/validate-messages/translations/en-US.js +0 -1
  547. package/components/validate-messages/translations/es-ES.js +0 -1
  548. package/components/validate-messages/translations/fr-BE.js +0 -1
  549. package/components/validate-messages/translations/fr-FR.js +0 -1
  550. package/components/validate-messages/translations/hu-HU.js +0 -1
  551. package/components/validate-messages/translations/it-IT.js +0 -1
  552. package/components/validate-messages/translations/nl-BE.js +0 -1
  553. package/components/validate-messages/translations/nl-NL.js +0 -1
  554. package/components/validate-messages/translations/pl-PL.js +0 -1
  555. package/components/validate-messages/translations/ro-RO.js +0 -1
  556. package/components/validate-messages/translations/ru-RU.js +0 -1
  557. package/components/validate-messages/translations/sk-SK.js +0 -1
  558. package/components/validate-messages/translations/tr-TR.js +0 -1
  559. package/components/validate-messages/translations/uk-UA.js +0 -1
  560. package/custom-elements.json +3312 -206
  561. package/dist-types/components/combobox/src/LionCombobox.d.ts +1 -1
  562. package/dist-types/components/combobox/src/LionCombobox.d.ts.map +1 -1
  563. package/dist-types/components/core/src/SlotMixin.d.ts +6 -1
  564. package/dist-types/components/core/src/SlotMixin.d.ts.map +1 -1
  565. package/dist-types/components/core/types/SlotMixinTypes.d.ts +5 -1
  566. package/dist-types/components/core/types/SlotMixinTypes.d.ts.map +1 -1
  567. package/dist-types/components/dialog/src/LionDialog.d.ts +6 -2
  568. package/dist-types/components/dialog/src/LionDialog.d.ts.map +1 -1
  569. package/dist-types/components/form-core/src/LionField.d.ts +3 -1
  570. package/dist-types/components/form-core/src/LionField.d.ts.map +1 -1
  571. package/dist-types/components/form-core/src/choice-group/ChoiceGroupMixin.d.ts.map +1 -1
  572. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts +5 -0
  573. package/dist-types/components/form-core/types/choice-group/ChoiceGroupMixinTypes.d.ts.map +1 -1
  574. package/dist-types/components/input-amount/src/LionInputAmount.d.ts +3 -1
  575. package/dist-types/components/input-amount/src/LionInputAmount.d.ts.map +1 -1
  576. package/dist-types/components/input-amount/src/formatters.d.ts +6 -4
  577. package/dist-types/components/input-amount/src/formatters.d.ts.map +1 -1
  578. package/dist-types/components/input-datepicker/src/LionInputDatepicker.d.ts +1 -1
  579. package/dist-types/components/input-tel/src/LionInputTel.d.ts +6 -6
  580. package/dist-types/components/input-tel/src/LionInputTel.d.ts.map +1 -1
  581. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts +2 -2
  582. package/dist-types/components/input-tel/src/PhoneUtilManager.d.ts.map +1 -1
  583. package/dist-types/components/input-tel/src/formatters.d.ts +2 -2
  584. package/dist-types/components/input-tel/src/formatters.d.ts.map +1 -1
  585. package/dist-types/components/input-tel/src/preprocessors.d.ts +2 -2
  586. package/dist-types/components/input-tel/src/preprocessors.d.ts.map +1 -1
  587. package/dist-types/components/input-tel/test/validators.test.d.ts +1 -1
  588. package/dist-types/components/input-tel/test/validators.test.d.ts.map +1 -1
  589. package/dist-types/components/listbox/src/LionOption.d.ts +5 -2
  590. package/dist-types/components/listbox/src/LionOption.d.ts.map +1 -1
  591. package/dist-types/components/listbox/src/ListboxMixin.d.ts.map +1 -1
  592. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts +7 -1
  593. package/dist-types/components/listbox/types/ListboxMixinTypes.d.ts.map +1 -1
  594. package/dist-types/components/menu/src/InteractiveListMixin.d.ts +35 -0
  595. package/dist-types/components/menu/src/InteractiveListMixin.d.ts.map +1 -0
  596. package/dist-types/components/menu/src/LionMenu.d.ts +129 -0
  597. package/dist-types/components/menu/src/LionMenu.d.ts.map +1 -0
  598. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts +8 -0
  599. package/dist-types/components/menu/src/MoreButtonMenuMixin.d.ts.map +1 -0
  600. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts +7 -0
  601. package/dist-types/components/menu/src/MultiLevelListMixin.d.ts.map +1 -0
  602. package/dist-types/components/menu/src/utils/isInView.d.ts +9 -0
  603. package/dist-types/components/menu/src/utils/isInView.d.ts.map +1 -0
  604. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts +48 -0
  605. package/dist-types/components/menu/src/utils/listItemInteractions.d.ts.map +1 -0
  606. package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts +2 -0
  607. package/dist-types/components/menu/test/InteractiveListMixin.test.d.ts.map +1 -0
  608. package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts +2 -0
  609. package/dist-types/components/menu/test/MoreButtonMenuMixin.test.d.ts.map +1 -0
  610. package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts +2 -0
  611. package/dist-types/components/menu/test/MultiLevelListMixin.test.d.ts.map +1 -0
  612. package/dist-types/components/menu/test/lion-menu-interactions.test.d.ts +2 -0
  613. package/dist-types/components/menu/test/lion-menu-interactions.test.d.ts.map +1 -0
  614. package/dist-types/components/menu/test/lion-menu.test.d.ts +2 -0
  615. package/dist-types/components/menu/test/lion-menu.test.d.ts.map +1 -0
  616. package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts +7 -0
  617. package/dist-types/components/menu/test-helpers/mimicKeyPress.d.ts.map +1 -0
  618. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts +11 -0
  619. package/dist-types/components/menu/test-suites/InteractiveListMixin.suite.d.ts.map +1 -0
  620. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts +9 -0
  621. package/dist-types/components/menu/test-suites/LionMenu.suite.d.ts.map +1 -0
  622. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts +5 -0
  623. package/dist-types/components/menu/test-suites/LionMenuInteractions.suite.d.ts.map +1 -0
  624. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts +11 -0
  625. package/dist-types/components/menu/test-suites/MoreButtonMenuMixin.suite.d.ts.map +1 -0
  626. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts +11 -0
  627. package/dist-types/components/menu/test-suites/MultiLevelListMixin.suite.d.ts.map +1 -0
  628. package/dist-types/components/menu/types/InteractiveListMixinTypes.d.ts +72 -0
  629. package/dist-types/components/menu/types/InteractiveListMixinTypes.d.ts.map +1 -0
  630. package/dist-types/components/menu/types/MoreButtonMenuMixinTypes.d.ts +30 -0
  631. package/dist-types/components/menu/types/MoreButtonMenuMixinTypes.d.ts.map +1 -0
  632. package/dist-types/components/menu/types/MultiLevelListMixinTypes.d.ts +16 -0
  633. package/dist-types/components/menu/types/MultiLevelListMixinTypes.d.ts.map +1 -0
  634. package/dist-types/components/menu/types/OverlayWithListInvokerMixinTypes.d.ts +35 -0
  635. package/dist-types/components/menu/types/OverlayWithListInvokerMixinTypes.d.ts.map +1 -0
  636. package/dist-types/components/overlays/src/OverlayController.d.ts +22 -5
  637. package/dist-types/components/overlays/src/OverlayController.d.ts.map +1 -1
  638. package/dist-types/components/overlays/src/OverlayMixin.d.ts.map +1 -1
  639. package/dist-types/components/overlays/src/OverlaysManager.d.ts.map +1 -1
  640. package/dist-types/components/overlays/src/overlayDocumentStyle.d.ts.map +1 -1
  641. package/dist-types/components/overlays/src/utils/is-equal-config.d.ts.map +1 -1
  642. package/dist-types/components/overlays/types/ArrowMixinTypes.d.ts.map +1 -1
  643. package/dist-types/components/overlays/types/OverlayConfig.d.ts +12 -2
  644. package/dist-types/components/overlays/types/OverlayConfig.d.ts.map +1 -1
  645. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts +1 -0
  646. package/dist-types/components/overlays/types/OverlayMixinTypes.d.ts.map +1 -1
  647. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts +3 -1
  648. package/dist-types/components/select-rich/src/LionSelectInvoker.d.ts.map +1 -1
  649. package/dist-types/components/select-rich/src/LionSelectRich.d.ts +13 -2
  650. package/dist-types/components/select-rich/src/LionSelectRich.d.ts.map +1 -1
  651. package/dist-types/components/select-rich/test/lion-select-rich-interaction.test.d.ts.map +1 -1
  652. package/dist-types/components/select-rich/test/lion-select-rich-upgrade.test.d.ts +2 -0
  653. package/dist-types/components/select-rich/test/lion-select-rich-upgrade.test.d.ts.map +1 -0
  654. package/dist-types/components/tooltip/src/LionTooltip.d.ts +1 -1
  655. package/dist-types/exports/define/lion-item.d.ts +2 -0
  656. package/dist-types/exports/define/lion-item.d.ts.map +1 -0
  657. package/dist-types/exports/define/lion-menu.d.ts +2 -0
  658. package/dist-types/exports/define/lion-menu.d.ts.map +1 -0
  659. package/dist-types/exports/define/lion-menuitem.d.ts +2 -0
  660. package/dist-types/exports/define/lion-menuitem.d.ts.map +1 -0
  661. package/dist-types/exports/menu-test-suites.d.ts +4 -0
  662. package/dist-types/exports/menu-test-suites.d.ts.map +1 -0
  663. package/dist-types/exports/menu.d.ts +3 -0
  664. package/dist-types/exports/menu.d.ts.map +1 -0
  665. package/dist-types/exports/overlays.d.ts +6 -0
  666. package/dist-types/exports/overlays.d.ts.map +1 -1
  667. package/dist-types/tsconfig.tsbuildinfo +1 -1
  668. package/docs/components/accordion/overview.md +2 -2
  669. package/docs/components/accordion/reference.md +2 -2
  670. package/docs/components/accordion/use-cases.md +2 -2
  671. package/docs/components/button/examples.md +2 -2
  672. package/docs/components/button/extensions.md +2 -2
  673. package/docs/components/button/overview.md +2 -2
  674. package/docs/components/button/use-cases.md +2 -2
  675. package/docs/components/calendar/overview.md +2 -2
  676. package/docs/components/calendar/use-cases.md +2 -2
  677. package/docs/components/checkbox-group/overview.md +4 -4
  678. package/docs/components/checkbox-group/use-cases.md +2 -2
  679. package/docs/components/collapsible/examples.md +2 -2
  680. package/docs/components/collapsible/overview.md +3 -3
  681. package/docs/components/collapsible/use-cases.md +2 -2
  682. package/docs/components/combobox/api-table.md +53 -39
  683. package/docs/components/combobox/extensions.md +2 -2
  684. package/docs/components/combobox/overview.md +3 -3
  685. package/docs/components/combobox/use-cases.md +3 -3
  686. package/docs/components/dialog/api-table.md +32 -6
  687. package/docs/components/dialog/overview.md +3 -3
  688. package/docs/components/dialog/use-cases.md +2 -2
  689. package/docs/components/drawer/overview.md +2 -2
  690. package/docs/components/drawer/use-cases.md +2 -2
  691. package/docs/components/fieldset/overview.md +7 -7
  692. package/docs/components/fieldset/use-cases.md +2 -2
  693. package/docs/components/form/overview.md +5 -5
  694. package/docs/components/form/use-cases.md +4 -4
  695. package/docs/components/icon/overview.md +2 -2
  696. package/docs/components/icon/use-cases.md +3 -3
  697. package/docs/components/input/overview.md +3 -3
  698. package/docs/components/input/use-cases.md +2 -2
  699. package/docs/components/input-amount/api-table.md +9 -7
  700. package/docs/components/input-amount/overview.md +5 -5
  701. package/docs/components/input-amount/use-cases.md +17 -6
  702. package/docs/components/input-amount-dropdown/api-table.md +2 -0
  703. package/docs/components/input-amount-dropdown/use-cases.md +2 -2
  704. package/docs/components/input-date/overview.md +5 -5
  705. package/docs/components/input-date/use-cases.md +2 -2
  706. package/docs/components/input-datepicker/api-table.md +63 -45
  707. package/docs/components/input-datepicker/overview.md +7 -7
  708. package/docs/components/input-datepicker/use-cases.md +2 -2
  709. package/docs/components/input-email/overview.md +4 -4
  710. package/docs/components/input-email/use-cases.md +2 -2
  711. package/docs/components/input-file/overview.md +3 -3
  712. package/docs/components/input-file/use-cases.md +2 -2
  713. package/docs/components/input-iban/overview.md +4 -4
  714. package/docs/components/input-iban/use-cases.md +2 -2
  715. package/docs/components/input-range/overview.md +4 -4
  716. package/docs/components/input-range/use-cases.md +2 -2
  717. package/docs/components/input-stepper/overview.md +3 -3
  718. package/docs/components/input-stepper/use-cases.md +2 -2
  719. package/docs/components/input-tel/overview.md +3 -3
  720. package/docs/components/input-tel/use-cases.md +8 -8
  721. package/docs/components/input-tel-dropdown/extensions.md +2 -2
  722. package/docs/components/input-tel-dropdown/overview.md +3 -3
  723. package/docs/components/input-tel-dropdown/use-cases.md +2 -2
  724. package/docs/components/listbox/overview.md +2 -2
  725. package/docs/components/listbox/use-cases.md +3 -3
  726. package/docs/components/menu/api-table.md +44 -0
  727. package/docs/components/menu/applyMenuDemoStyles.js +173 -0
  728. package/docs/components/menu/extensions.md +262 -0
  729. package/docs/components/menu/index.md +13 -0
  730. package/docs/components/menu/migration.md +129 -0
  731. package/docs/components/menu/overview.md +448 -0
  732. package/docs/components/menu/src/DemoNavigationBar.js +441 -0
  733. package/docs/components/menu/src/DemoSpinButton.js +215 -0
  734. package/docs/components/menu/src/DemoToolbar.js +101 -0
  735. package/docs/components/menu/src/DemoTree.js +55 -0
  736. package/docs/components/menu/src/navigation-bar-types.js +41 -0
  737. package/docs/components/menu/use-cases.md +74 -0
  738. package/docs/components/pagination/overview.md +2 -2
  739. package/docs/components/pagination/use-cases.md +2 -2
  740. package/docs/components/progress-indicator/examples.md +2 -2
  741. package/docs/components/progress-indicator/overview.md +2 -2
  742. package/docs/components/radio-group/overview.md +5 -5
  743. package/docs/components/radio-group/use-cases.md +2 -2
  744. package/docs/components/select/overview.md +2 -2
  745. package/docs/components/select/use-cases.md +3 -3
  746. package/docs/components/select-rich/api-table.md +51 -33
  747. package/docs/components/select-rich/examples.md +2 -2
  748. package/docs/components/select-rich/overview.md +2 -2
  749. package/docs/components/select-rich/use-cases.md +4 -4
  750. package/docs/components/steps/overview.md +2 -2
  751. package/docs/components/steps/use-cases.md +2 -2
  752. package/docs/components/switch/overview.md +2 -2
  753. package/docs/components/switch/reference.md +2 -2
  754. package/docs/components/switch/use-cases.md +2 -2
  755. package/docs/components/tabs/examples.md +3 -3
  756. package/docs/components/tabs/overview.md +2 -2
  757. package/docs/components/tabs/use-cases.md +2 -2
  758. package/docs/components/textarea/overview.md +2 -2
  759. package/docs/components/textarea/use-cases.md +2 -2
  760. package/docs/components/tooltip/api-table.md +33 -7
  761. package/docs/components/tooltip/examples.md +2 -2
  762. package/docs/components/tooltip/overview.md +2 -2
  763. package/docs/components/tooltip/use-cases.md +2 -2
  764. package/docs/fundamentals/index.md +4 -4
  765. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/index.md +2 -2
  766. package/docs/fundamentals/node-tools/babel-plugin-extend-docs/overview.md +2 -2
  767. package/docs/fundamentals/node-tools/providence-analytics/index.md +2 -2
  768. package/docs/fundamentals/node-tools/providence-analytics/overview.md +3 -3
  769. package/docs/fundamentals/node-tools/publish-docs/index.md +2 -2
  770. package/docs/fundamentals/node-tools/publish-docs/overview.md +5 -5
  771. package/docs/fundamentals/node-tools/remark-extend/index.md +2 -2
  772. package/docs/fundamentals/node-tools/remark-extend/overview.md +2 -2
  773. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/index.md +2 -2
  774. package/docs/fundamentals/node-tools/rocket-preset-extend-lion-docs/overview.md +4 -4
  775. package/docs/fundamentals/rationales/TypeScript.md +62 -2
  776. package/docs/fundamentals/rationales/accessibility.md +5 -5
  777. package/docs/fundamentals/rationales/side-effects.md +2 -2
  778. package/docs/fundamentals/rationales/versioning.md +2 -2
  779. package/docs/fundamentals/systems/core/SlotMixin.md +3 -3
  780. package/docs/fundamentals/systems/core/index.md +2 -2
  781. package/docs/fundamentals/systems/core/overview.md +3 -3
  782. package/docs/fundamentals/systems/form/formatting-and-parsing.md +6 -6
  783. package/docs/fundamentals/systems/form/index.md +2 -2
  784. package/docs/fundamentals/systems/form/interaction-states.md +2 -2
  785. package/docs/fundamentals/systems/form/model-value.md +3 -3
  786. package/docs/fundamentals/systems/form/overview.md +30 -30
  787. package/docs/fundamentals/systems/form/styling.md +2 -2
  788. package/docs/fundamentals/systems/form/use-cases.md +2 -2
  789. package/docs/fundamentals/systems/form/validate.md +4 -4
  790. package/docs/fundamentals/systems/icon/index.md +2 -2
  791. package/docs/fundamentals/systems/icon/overview.md +2 -2
  792. package/docs/fundamentals/systems/localize/dates.md +2 -2
  793. package/docs/fundamentals/systems/localize/index.md +2 -2
  794. package/docs/fundamentals/systems/localize/numbers.md +2 -2
  795. package/docs/fundamentals/systems/localize/overview.md +6 -6
  796. package/docs/fundamentals/systems/localize/rationale.md +2 -2
  797. package/docs/fundamentals/systems/localize/text.md +2 -2
  798. package/docs/fundamentals/systems/localize/use-cases.md +2 -2
  799. package/docs/fundamentals/systems/overlays/_edge-cases.md +2 -2
  800. package/docs/fundamentals/systems/overlays/api-table.md +46 -43
  801. package/docs/fundamentals/systems/overlays/configuration.md +4 -4
  802. package/docs/fundamentals/systems/overlays/index.md +2 -2
  803. package/docs/fundamentals/systems/overlays/overview.md +7 -7
  804. package/docs/fundamentals/systems/overlays/rationale.md +2 -2
  805. package/docs/fundamentals/systems/overlays/use-cases.md +4 -4
  806. package/docs/fundamentals/tools/ajax/index.md +2 -2
  807. package/docs/fundamentals/tools/ajax/overview.md +2 -2
  808. package/docs/fundamentals/tools/ajax/use-cases.md +2 -2
  809. package/docs/fundamentals/tools/helpers/action-logger.md +2 -2
  810. package/docs/fundamentals/tools/helpers/index.md +2 -2
  811. package/docs/fundamentals/tools/helpers/overview.md +3 -3
  812. package/docs/fundamentals/tools/singleton-manager/example-complex/index.md +2 -2
  813. package/docs/fundamentals/tools/singleton-manager/example-fail/index.md +2 -2
  814. package/docs/fundamentals/tools/singleton-manager/example-success/index.md +2 -2
  815. package/docs/fundamentals/tools/singleton-manager/index.md +2 -2
  816. package/docs/fundamentals/tools/singleton-manager/overview.md +6 -6
  817. package/docs/guides/how-to/create-a-custom-field.md +7 -7
  818. package/docs/guides/how-to/create-a-form.md +6 -6
  819. package/docs/guides/how-to/extend-a-native-input.md +4 -4
  820. package/docs/guides/how-to/get-started.md +2 -2
  821. package/docs/guides/how-to/index.md +1 -1
  822. package/docs/guides/index.md +8 -8
  823. package/docs/guides/principles/definitions-and-terms.md +2 -2
  824. package/docs/guides/principles/index.md +5 -5
  825. package/docs/guides/principles/scoped-elements.md +2 -2
  826. package/docs/guides/principles/styling.md +3 -3
  827. package/docs/guides/principles/subclasser-apis.md +2 -2
  828. package/exports/define/lion-accordion.js +0 -1
  829. package/exports/define/lion-button-reset.js +0 -1
  830. package/exports/define/lion-button-submit.js +0 -1
  831. package/exports/define/lion-button.js +0 -1
  832. package/exports/define/lion-calendar.js +0 -1
  833. package/exports/define/lion-checkbox-group.js +0 -1
  834. package/exports/define/lion-checkbox-indeterminate.js +0 -1
  835. package/exports/define/lion-checkbox.js +0 -1
  836. package/exports/define/lion-collapsible.js +0 -1
  837. package/exports/define/lion-combobox.js +0 -1
  838. package/exports/define/lion-dialog.js +0 -1
  839. package/exports/define/lion-drawer.js +0 -1
  840. package/exports/define/lion-field.js +0 -1
  841. package/exports/define/lion-fieldset.js +0 -1
  842. package/exports/define/lion-form.js +0 -1
  843. package/exports/define/lion-icon.js +0 -1
  844. package/exports/define/lion-input-amount-dropdown.js +0 -1
  845. package/exports/define/lion-input-amount.js +0 -1
  846. package/exports/define/lion-input-date.js +0 -1
  847. package/exports/define/lion-input-datepicker.js +0 -1
  848. package/exports/define/lion-input-email.js +0 -1
  849. package/exports/define/lion-input-file.js +0 -1
  850. package/exports/define/lion-input-iban.js +0 -1
  851. package/exports/define/lion-input-range.js +0 -1
  852. package/exports/define/lion-input-stepper.js +0 -1
  853. package/exports/define/lion-input-tel-dropdown.js +0 -1
  854. package/exports/define/lion-input-tel.js +0 -1
  855. package/exports/define/lion-input.js +0 -1
  856. package/exports/define/lion-item.js +2 -0
  857. package/exports/define/lion-listbox.js +0 -1
  858. package/exports/define/lion-menu.js +2 -0
  859. package/exports/define/lion-menuitem.js +2 -0
  860. package/exports/define/lion-option.js +0 -1
  861. package/exports/define/lion-options.js +0 -1
  862. package/exports/define/lion-pagination.js +0 -1
  863. package/exports/define/lion-progress-indicator.js +0 -1
  864. package/exports/define/lion-radio-group.js +0 -1
  865. package/exports/define/lion-radio.js +0 -1
  866. package/exports/define/lion-select-invoker.js +0 -1
  867. package/exports/define/lion-select-rich.js +0 -1
  868. package/exports/define/lion-select.js +0 -1
  869. package/exports/define/lion-selected-file-list.js +0 -1
  870. package/exports/define/lion-step.js +0 -1
  871. package/exports/define/lion-steps.js +0 -1
  872. package/exports/define/lion-switch-button.js +0 -1
  873. package/exports/define/lion-switch.js +0 -1
  874. package/exports/define/lion-tabs.js +0 -1
  875. package/exports/define/lion-textarea.js +0 -1
  876. package/exports/define/lion-tooltip.js +0 -1
  877. package/exports/define/lion-validation-feedback.js +0 -1
  878. package/exports/define-helpers/sb-action-logger.js +0 -1
  879. package/exports/define-helpers/sb-locale-switcher.js +0 -1
  880. package/exports/form-core.js +0 -8
  881. package/exports/localize-no-side-effects.js +0 -1
  882. package/exports/localize.js +0 -2
  883. package/exports/menu-test-suites.js +4 -0
  884. package/exports/menu.js +3 -0
  885. package/exports/overlays.js +6 -4
  886. package/generated/awesome-phonenumber/LICENSE +22 -0
  887. package/generated/awesome-phonenumber/LICENSE.closure-library +176 -0
  888. package/generated/awesome-phonenumber/LICENSE.libphonenumber +176 -0
  889. package/generated/awesome-phonenumber/checksums.json +6 -0
  890. package/generated/awesome-phonenumber/index-esm.mjs +817 -0
  891. package/generated/awesome-phonenumber/index.d.ts +227 -0
  892. package/generated/awesome-phonenumber/index.js +45 -0
  893. package/generated/awesome-phonenumber/lib/index.js +710 -0
  894. package/generated/awesome-phonenumber/package.json +9 -0
  895. package/generated/awesome-phonenumber/provenance.json +13 -0
  896. package/menu-test-suites.js +4 -0
  897. package/menu.js +3 -0
  898. package/overlays.js +6 -0
  899. package/package.json +35 -6
  900. package/vscode.html-custom-data.json +76 -8
  901. package/web-types.json +202 -17
@@ -1,6 +1,5 @@
1
1
  import { dedupeMixin } from '@open-wc/dedupe-mixin';
2
2
  import { OverlayController } from './OverlayController.js';
3
- import { isEqualConfig } from './utils/is-equal-config.js';
4
3
 
5
4
  /**
6
5
  * @typedef {<T>(ingOverlayHost:T) => void} PostProcessor
@@ -28,7 +27,8 @@ export function _addOverlayMixinPostProcessor(postProcessor) {
28
27
  * @type {OverlayMixin}
29
28
  * @param {import('@open-wc/dedupe-mixin').Constructor<import('lit').LitElement>} superclass
30
29
  */
31
- export const OverlayMixinImplementation = superclass => {
30
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/36821#issuecomment-588375051
31
+ export const OverlayMixinImplementation = (superclass) => {
32
32
  class OverlayMixin extends superclass {
33
33
  static get properties() {
34
34
  return {
@@ -38,9 +38,7 @@ export const OverlayMixinImplementation = superclass => {
38
38
  },
39
39
  };
40
40
  }
41
-
42
41
  #hasSetup = false;
43
-
44
42
  constructor() {
45
43
  super();
46
44
  /**
@@ -62,20 +60,19 @@ export const OverlayMixinImplementation = superclass => {
62
60
  /** @type {EventListener} */
63
61
  this.close = this.close.bind(this);
64
62
  }
65
-
66
63
  get config() {
67
- return /** @type {OverlayConfig} */ (this.__config);
64
+ return /** @type {OverlayConfig} */ this.__config;
68
65
  }
69
66
 
70
67
  /** @param {OverlayConfig} value */
71
68
  set config(value) {
72
- const shouldUpdate = !isEqualConfig(this.config, value);
73
-
74
- if (this._overlayCtrl && shouldUpdate) {
69
+ // The OverlayController already guards against redundant updates
70
+ // (see OverlayController#updateConfig), so we delegate unconditionally here.
71
+ if (this._overlayCtrl) {
75
72
  this._overlayCtrl.updateConfig(value);
76
73
  }
77
74
  this.__config = value;
78
- if (this._overlayCtrl && shouldUpdate) {
75
+ if (this._overlayCtrl) {
79
76
  this.__syncToOverlayController();
80
77
  }
81
78
  }
@@ -91,7 +88,9 @@ export const OverlayMixinImplementation = superclass => {
91
88
  if (name === 'opened' && this.opened !== oldValue) {
92
89
  this.dispatchEvent(
93
90
  new CustomEvent('opened-changed', {
94
- detail: { opened: this.opened },
91
+ detail: {
92
+ opened: this.opened,
93
+ },
95
94
  }),
96
95
  );
97
96
  }
@@ -114,8 +113,10 @@ export const OverlayMixinImplementation = superclass => {
114
113
  referenceNode,
115
114
  backdropNode,
116
115
  contentWrapperNode,
117
- ...overlayConfig, // wc provided in the class as defaults
118
- ...this.config, // user provided (e.g. in template)
116
+ ...overlayConfig,
117
+ // wc provided in the class as defaults
118
+ ...this.config,
119
+ // user provided (e.g. in template)
119
120
  popperConfig: {
120
121
  ...(overlayConfig.popperConfig || {}),
121
122
  ...(this.config?.popperConfig || {}),
@@ -146,7 +147,6 @@ export const OverlayMixinImplementation = superclass => {
146
147
  */
147
148
  updated(changedProperties) {
148
149
  super.updated(changedProperties);
149
-
150
150
  if (changedProperties.has('opened') && this._overlayCtrl && !this.__blockSyncToOverlayCtrl) {
151
151
  this.__syncToOverlayController();
152
152
  }
@@ -160,12 +160,15 @@ export const OverlayMixinImplementation = superclass => {
160
160
  */
161
161
  // eslint-disable-next-line class-methods-use-this
162
162
  _setupOpenCloseListeners() {
163
+ // Keeps the close-overlay event private for the controller.
164
+ // (we already have )
163
165
  /**
164
166
  * @param {{ stopPropagation: () => void; }} ev
165
167
  */
166
- this.__closeEventInContentNodeHandler = ev => {
168
+ this.__closeEventInContentNodeHandler = (ev) => {
167
169
  ev.stopPropagation();
168
- /** @type {OverlayController} */ (this._overlayCtrl).hide();
170
+ /** @type {OverlayController} */
171
+ this._overlayCtrl.hide();
169
172
  };
170
173
  if (this._overlayContentNode) {
171
174
  this._overlayContentNode.addEventListener(
@@ -185,14 +188,12 @@ export const OverlayMixinImplementation = superclass => {
185
188
  if (this._overlayContentNode) {
186
189
  this._overlayContentNode.removeEventListener(
187
190
  'close-overlay',
188
- /** @type {EventListener} */ (this.__closeEventInContentNodeHandler),
191
+ /** @type {EventListener} */ this.__closeEventInContentNodeHandler,
189
192
  );
190
193
  }
191
194
  }
192
-
193
195
  connectedCallback() {
194
196
  super.connectedCallback();
195
-
196
197
  this.updateComplete.then(() => {
197
198
  if (!this.isConnected) return;
198
199
  if (this.#hasSetup) return;
@@ -200,10 +201,8 @@ export const OverlayMixinImplementation = superclass => {
200
201
  this.#hasSetup = true;
201
202
  });
202
203
  }
203
-
204
204
  async disconnectedCallback() {
205
205
  super.disconnectedCallback();
206
-
207
206
  if (await this._isPermanentlyDisconnected()) {
208
207
  this._teardownOverlayCtrl();
209
208
  this.#hasSetup = false;
@@ -215,13 +214,7 @@ export const OverlayMixinImplementation = superclass => {
215
214
  * @configure ReactiveElement
216
215
  */
217
216
  // @ts-expect-error
218
- static enabledWarnings = super.enabledWarnings?.filter(w => w !== 'change-in-update') || [];
219
-
220
- get _overlayInvokerNode() {
221
- return /** @type {HTMLElement | undefined} */ (
222
- Array.from(this.children).find(child => child.slot === 'invoker')
223
- );
224
- }
217
+ static enabledWarnings = super.enabledWarnings?.filter((w) => w !== 'change-in-update') || [];
225
218
 
226
219
  /**
227
220
  * @overridable
@@ -230,38 +223,99 @@ export const OverlayMixinImplementation = superclass => {
230
223
  get _overlayReferenceNode() {
231
224
  return undefined;
232
225
  }
233
-
234
226
  get _overlayBackdropNode() {
235
227
  if (!this.__cachedOverlayBackdropNode) {
236
- this.__cachedOverlayBackdropNode = /** @type {HTMLElement | undefined} */ (
237
- Array.from(this.children).find(child => child.slot === 'backdrop')
238
- );
228
+ this.__cachedOverlayBackdropNode =
229
+ /** @type {HTMLElement | undefined} */
230
+ Array.from(this.children).find((child) => child.slot === 'backdrop');
239
231
  }
240
232
  return this.__cachedOverlayBackdropNode;
241
233
  }
242
-
243
234
  get _overlayContentNode() {
244
235
  if (!this._cachedOverlayContentNode) {
245
236
  this._cachedOverlayContentNode =
246
- Array.from(this.children).find(child => child.slot === 'content') ||
237
+ Array.from(this.children).find((child) => child.slot === 'content') ||
247
238
  this.config.contentNode;
248
239
  }
249
- return /** @type {HTMLElement} */ (this._cachedOverlayContentNode);
240
+ return /** @type {HTMLElement} */ this._cachedOverlayContentNode;
250
241
  }
251
-
252
242
  get _overlayContentWrapperNode() {
253
- return /** @type {HTMLElement | undefined} */ (
254
- this.shadowRoot?.querySelector('#overlay-content-node-wrapper')
243
+ return /** @type {HTMLElement | undefined} */ this.shadowRoot?.querySelector(
244
+ '#overlay-content-node-wrapper',
255
245
  );
256
246
  }
257
247
 
248
+ /**
249
+ * Returns the element that can actually receive focus inside the passed
250
+ * invoker (wrapper) element: the element itself when it is focusable,
251
+ * otherwise the first focusable descendant.
252
+ * @param {Element|null|undefined} focusableElOrWrapper
253
+ * @returns {Element|null}
254
+ */
255
+ /**
256
+ * @param {Element | null | undefined} focusableElOrWrapper
257
+ * @returns {Element | null}
258
+ */
259
+ static _getFocusableInvokerEl(focusableElOrWrapper) {
260
+ if (!focusableElOrWrapper) return null;
261
+ const focusableSelector = '[tabindex], button, a[href], [role=button]';
262
+ return focusableElOrWrapper.matches(focusableSelector)
263
+ ? focusableElOrWrapper
264
+ : focusableElOrWrapper.querySelector(focusableSelector);
265
+ }
266
+
267
+ /**
268
+ * The node that opens/closes this overlay.
269
+ *
270
+ * Resolved in a stable, declarative way (independent of the exact DOM order)
271
+ * by looking, in order, for:
272
+ * 1. a child with `[slot="invoker"]`
273
+ * 2. any element in the same root that opts in via `[data-invoker]` and
274
+ * references this host by id (`for="<id>"`)
275
+ * 3. a preceding sibling that opts in via `[data-invoker]`
276
+ * @protected
277
+ */
278
+ get _overlayInvokerNode() {
279
+ if (!this.__invokerNode) {
280
+ this.__invokerNode = this._getInvokerNode();
281
+ }
282
+ return this.__invokerNode;
283
+ }
284
+
285
+ /**
286
+ * @protected
287
+ * @returns {Element|null}
288
+ */
289
+ _getInvokerNode() {
290
+ const ctor = /** @type {typeof OverlayMixin} */ this.constructor;
291
+ const slottedNode = Array.from(this.children).find((child) => child.slot === 'invoker');
292
+ if (slottedNode) {
293
+ return ctor._getFocusableInvokerEl(slottedNode);
294
+ }
295
+ if (this.id) {
296
+ // Reference the invoker declaratively: `<button data-invoker for="my-menu">`
297
+ const root = /** @type {Document|ShadowRoot} */ this.getRootNode();
298
+ const explicitInvoker = root.querySelector?.(`[data-invoker][for="${this.id}"]`);
299
+ if (explicitInvoker) {
300
+ return ctor._getFocusableInvokerEl(explicitInvoker);
301
+ }
302
+ }
303
+
304
+ // Fall back to a preceding sibling that opted in via [data-invoker]
305
+ const { previousElementSibling } = this;
306
+ return previousElementSibling && previousElementSibling.hasAttribute('data-invoker')
307
+ ? ctor._getFocusableInvokerEl(previousElementSibling)
308
+ : null;
309
+ }
310
+
258
311
  /** @protected */
259
312
  _setupOverlayCtrl() {
260
313
  if (this.#hasSetup) return;
314
+ const invokerNode = this._overlayInvokerNode;
261
315
  const config = {
262
316
  contentNode: this._overlayContentNode,
263
317
  contentWrapperNode: this._overlayContentWrapperNode,
264
- invokerNode: this._overlayInvokerNode,
318
+ invokerNode: invokerNode && invokerNode instanceof HTMLElement ? invokerNode : undefined,
265
319
  referenceNode: this._overlayReferenceNode,
266
320
  backdropNode: this._overlayBackdropNode,
267
321
  };
@@ -274,7 +328,6 @@ export const OverlayMixinImplementation = superclass => {
274
328
  /** @type {OverlayController} */
275
329
  this._overlayCtrl = this._defineOverlay(config);
276
330
  }
277
-
278
331
  this.__syncToOverlayController();
279
332
  this.__setupSyncFromOverlayController();
280
333
  this._setupOpenCloseListeners();
@@ -282,12 +335,14 @@ export const OverlayMixinImplementation = superclass => {
282
335
 
283
336
  /** @protected */
284
337
  _teardownOverlayCtrl() {
338
+ // Make sure that dynamic behavior (e.g. responsive) is possible by allowing multiple setups and teardowns of the overlay controller.
339
+ this.#hasSetup = false;
285
340
  if (!this._overlayCtrl) return;
286
-
287
341
  this._teardownOpenCloseListeners();
288
342
  this.__teardownSyncFromOverlayController();
289
343
 
290
- /** @type {OverlayController} */ (this._overlayCtrl).teardown();
344
+ /** @type {OverlayController} */
345
+ this._overlayCtrl.teardown();
291
346
  }
292
347
 
293
348
  /**
@@ -310,7 +365,6 @@ export const OverlayMixinImplementation = superclass => {
310
365
  this.__onOverlayCtrlShow = () => {
311
366
  this.opened = true;
312
367
  };
313
-
314
368
  this.__onOverlayCtrlHide = () => {
315
369
  this.opened = false;
316
370
  };
@@ -318,13 +372,15 @@ export const OverlayMixinImplementation = superclass => {
318
372
  /**
319
373
  * @param {{ preventDefault: () => void; }} beforeShowEvent
320
374
  */
321
- this.__onBeforeShow = beforeShowEvent => {
322
- const event = new CustomEvent('before-opened', { cancelable: true });
375
+ this.__onBeforeShow = (beforeShowEvent) => {
376
+ const event = new CustomEvent('before-opened', {
377
+ cancelable: true,
378
+ });
323
379
  this.dispatchEvent(event);
324
380
  if (event.defaultPrevented) {
325
381
  // Check whether our current `.opened` state is not out of sync with overlayCtrl
326
382
  this._setOpenedWithoutPropertyEffects(
327
- /** @type {OverlayController} */ (this._overlayCtrl).isShown,
383
+ /** @type {OverlayController} */ this._overlayCtrl.isShown,
328
384
  );
329
385
  beforeShowEvent.preventDefault();
330
386
  }
@@ -333,47 +389,52 @@ export const OverlayMixinImplementation = superclass => {
333
389
  /**
334
390
  * @param {{ preventDefault: () => void; }} beforeHideEvent
335
391
  */
336
- this.__onBeforeHide = beforeHideEvent => {
337
- const event = new CustomEvent('before-closed', { cancelable: true });
392
+ this.__onBeforeHide = (beforeHideEvent) => {
393
+ const event = new CustomEvent('before-closed', {
394
+ cancelable: true,
395
+ });
338
396
  this.dispatchEvent(event);
339
397
  if (event.defaultPrevented) {
340
398
  // Check whether our current `.opened` state is not out of sync with overlayCtrl
341
399
  this._setOpenedWithoutPropertyEffects(
342
400
  /** @type {OverlayController} */
343
- (this._overlayCtrl).isShown,
401
+ this._overlayCtrl.isShown,
344
402
  );
345
403
  beforeHideEvent.preventDefault();
346
404
  }
347
405
  };
348
406
 
349
407
  /** @type {OverlayController} */
350
- (this._overlayCtrl).addEventListener('show', this.__onOverlayCtrlShow);
408
+ this._overlayCtrl.addEventListener('show', this.__onOverlayCtrlShow);
351
409
  /** @type {OverlayController} */
352
- (this._overlayCtrl).addEventListener('hide', this.__onOverlayCtrlHide);
410
+ this._overlayCtrl.addEventListener('hide', this.__onOverlayCtrlHide);
353
411
  /** @type {OverlayController} */
354
- (this._overlayCtrl).addEventListener('before-show', this.__onBeforeShow);
412
+ this._overlayCtrl.addEventListener('before-show', this.__onBeforeShow);
355
413
  /** @type {OverlayController} */
356
- (this._overlayCtrl).addEventListener('before-hide', this.__onBeforeHide);
414
+ this._overlayCtrl.addEventListener('before-hide', this.__onBeforeHide);
357
415
  }
358
416
 
359
417
  /** @private */
360
418
  __teardownSyncFromOverlayController() {
361
419
  /** @type {OverlayController} */
362
- (this._overlayCtrl).removeEventListener(
420
+ this._overlayCtrl.removeEventListener(
363
421
  'show',
364
- /** @type {EventListener} */ (this.__onOverlayCtrlShow),
422
+ /** @type {EventListener} */ this.__onOverlayCtrlShow,
365
423
  );
366
- /** @type {OverlayController} */ (this._overlayCtrl).removeEventListener(
424
+ /** @type {OverlayController} */
425
+ this._overlayCtrl.removeEventListener(
367
426
  'hide',
368
- /** @type {EventListener} */ (this.__onOverlayCtrlHide),
427
+ /** @type {EventListener} */ this.__onOverlayCtrlHide,
369
428
  );
370
- /** @type {OverlayController} */ (this._overlayCtrl).removeEventListener(
429
+ /** @type {OverlayController} */
430
+ this._overlayCtrl.removeEventListener(
371
431
  'before-show',
372
- /** @type {EventListener} */ (this.__onBeforeShow),
432
+ /** @type {EventListener} */ this.__onBeforeShow,
373
433
  );
374
- /** @type {OverlayController} */ (this._overlayCtrl).removeEventListener(
434
+ /** @type {OverlayController} */
435
+ this._overlayCtrl.removeEventListener(
375
436
  'before-hide',
376
- /** @type {EventListener} */ (this.__onBeforeHide),
437
+ /** @type {EventListener} */ this.__onBeforeHide,
377
438
  );
378
439
  }
379
440
 
@@ -381,10 +442,10 @@ export const OverlayMixinImplementation = superclass => {
381
442
  __syncToOverlayController() {
382
443
  if (this.opened) {
383
444
  /** @type {OverlayController} */
384
- (this._overlayCtrl).show();
445
+ this._overlayCtrl.show();
385
446
  } else {
386
447
  /** @type {OverlayController} */
387
- (this._overlayCtrl).hide();
448
+ this._overlayCtrl.hide();
388
449
  }
389
450
  }
390
451
 
@@ -392,21 +453,21 @@ export const OverlayMixinImplementation = superclass => {
392
453
  * Toggles the overlay
393
454
  */
394
455
  async toggle() {
395
- await /** @type {OverlayController} */ (this._overlayCtrl).toggle();
456
+ await /** @type {OverlayController} */ this._overlayCtrl.toggle();
396
457
  }
397
458
 
398
459
  /**
399
460
  * Shows the overlay
400
461
  */
401
462
  async open() {
402
- await /** @type {OverlayController} */ (this._overlayCtrl).show();
463
+ await /** @type {OverlayController} */ this._overlayCtrl.show();
403
464
  }
404
465
 
405
466
  /**
406
467
  * Hides the overlay
407
468
  */
408
469
  async close() {
409
- await /** @type {OverlayController} */ (this._overlayCtrl).hide();
470
+ await /** @type {OverlayController} */ this._overlayCtrl.hide();
410
471
  }
411
472
 
412
473
  /**
@@ -415,7 +476,7 @@ export const OverlayMixinImplementation = superclass => {
415
476
  * increases vertically)
416
477
  */
417
478
  repositionOverlay() {
418
- const ctrl = /** @type {OverlayController} */ (this._overlayCtrl);
479
+ const ctrl = /** @type {OverlayController} */ this._overlayCtrl;
419
480
  if (ctrl.placementMode === 'local' && ctrl._popper) {
420
481
  ctrl._popper.update();
421
482
  }
@@ -434,6 +495,7 @@ export const OverlayMixinImplementation = superclass => {
434
495
  for (const postProcessor of overlayMixinPostProcessors) {
435
496
  postProcessor(OverlayMixin);
436
497
  }
437
- return /** @type {* & OverlayMixin} */ (OverlayMixin);
498
+ // @ts-ignore https://github.com/microsoft/TypeScript/issues/36821#issuecomment-588375051
499
+ return OverlayMixin;
438
500
  };
439
501
  export const OverlayMixin = dedupeMixin(OverlayMixinImplementation);
@@ -14,11 +14,10 @@ import { overlayDocumentStyle } from './overlayDocumentStyle.js';
14
14
  export class OverlaysManager {
15
15
  /** @type {HTMLStyleElement | undefined} */
16
16
  static __globalStyleNode = undefined;
17
-
18
17
  static __createGlobalStyleNode() {
19
18
  const styleTag = document.createElement('style');
20
19
  styleTag.setAttribute('data-overlays', '');
21
- styleTag.textContent = /** @type {CSSResult} */ (overlayDocumentStyle).cssText;
20
+ styleTag.textContent = /** @type {CSSResult} */ overlayDocumentStyle.cssText;
22
21
  document.head.appendChild(styleTag);
23
22
  return styleTag;
24
23
  }
@@ -73,7 +72,6 @@ export class OverlaysManager {
73
72
  * }}
74
73
  */
75
74
  __bodySizeVars;
76
-
77
75
  constructor() {
78
76
  this.__list = [];
79
77
  this.__shownList = [];
@@ -88,11 +86,9 @@ export class OverlaysManager {
88
86
  marginRight: undefined,
89
87
  marginBottom: undefined,
90
88
  };
91
-
92
89
  this.__forTesting = {
93
90
  bodySizeVars: this.__bodySizeVars,
94
91
  };
95
-
96
92
  if (!OverlaysManager.__globalStyleNode) {
97
93
  OverlaysManager.__globalStyleNode = OverlaysManager.__createGlobalStyleNode();
98
94
  }
@@ -104,7 +100,7 @@ export class OverlaysManager {
104
100
  * @returns {OverlayController} same controller after adding to the manager
105
101
  */
106
102
  add(ctrlToAdd) {
107
- if (this.list.find(ctrl => ctrlToAdd === ctrl)) {
103
+ if (this.list.find((ctrl) => ctrlToAdd === ctrl)) {
108
104
  throw new Error('controller instance is already added');
109
105
  }
110
106
  this.list.push(ctrlToAdd);
@@ -115,18 +111,18 @@ export class OverlaysManager {
115
111
  * @param {OverlayController} ctrlToRemove
116
112
  */
117
113
  remove(ctrlToRemove) {
118
- if (!this.list.find(ctrl => ctrlToRemove === ctrl)) {
114
+ if (!this.list.find((ctrl) => ctrlToRemove === ctrl)) {
119
115
  throw new Error('could not find controller to remove');
120
116
  }
121
- this.__list = this.list.filter(ctrl => ctrl !== ctrlToRemove);
122
- this.__shownList = this.shownList.filter(ctrl => ctrl !== ctrlToRemove);
117
+ this.__list = this.list.filter((ctrl) => ctrl !== ctrlToRemove);
118
+ this.__shownList = this.shownList.filter((ctrl) => ctrl !== ctrlToRemove);
123
119
  }
124
120
 
125
121
  /**
126
122
  * @param {OverlayController} ctrlToShow
127
123
  */
128
124
  show(ctrlToShow) {
129
- if (this.list.find(ctrl => ctrlToShow === ctrl)) {
125
+ if (this.list.find((ctrl) => ctrlToShow === ctrl)) {
130
126
  this.hide(ctrlToShow);
131
127
  }
132
128
  this.__shownList.unshift(ctrlToShow);
@@ -144,17 +140,15 @@ export class OverlaysManager {
144
140
  * @param {any} ctrlToHide
145
141
  */
146
142
  hide(ctrlToHide) {
147
- if (!this.list.find(ctrl => ctrlToHide === ctrl)) {
143
+ if (!this.list.find((ctrl) => ctrlToHide === ctrl)) {
148
144
  throw new Error('could not find controller to hide');
149
145
  }
150
- this.__shownList = this.shownList.filter(ctrl => ctrl !== ctrlToHide);
146
+ this.__shownList = this.shownList.filter((ctrl) => ctrl !== ctrlToHide);
151
147
  }
152
-
153
148
  teardown() {
154
- this.list.forEach(ctrl => {
149
+ this.list.forEach((ctrl) => {
155
150
  ctrl.teardown();
156
151
  });
157
-
158
152
  this.__list = [];
159
153
  this.__shownList = [];
160
154
  this._siblingsInert = false;
@@ -165,11 +159,8 @@ export class OverlaysManager {
165
159
  this.__bodySizeVars.marginBottomInline = undefined;
166
160
  this.__bodySizeVars.marginRight = undefined;
167
161
  this.__bodySizeVars.marginBottom = undefined;
168
-
169
162
  if (OverlaysManager.__globalStyleNode) {
170
- document.head.removeChild(
171
- /** @type {HTMLStyleElement} */ (OverlaysManager.__globalStyleNode),
172
- );
163
+ document.head.removeChild(/** @type {HTMLStyleElement} */ OverlaysManager.__globalStyleNode);
173
164
  OverlaysManager.__globalStyleNode = undefined;
174
165
  }
175
166
  }
@@ -215,9 +206,9 @@ export class OverlaysManager {
215
206
  this.__bodySizeVars.marginBottom = 0;
216
207
  }
217
208
  const scrollbarWidth =
218
- document.body.clientWidth - /** @type {number} */ (this.__bodySizeVars.clientWidth);
209
+ document.body.clientWidth - /** @type {number} */ this.__bodySizeVars.clientWidth;
219
210
  const scrollbarHeight =
220
- document.body.clientHeight - /** @type {number} */ (this.__bodySizeVars.clientHeight);
211
+ document.body.clientHeight - /** @type {number} */ this.__bodySizeVars.clientHeight;
221
212
  const newMarginRight = this.__bodySizeVars.marginRight + scrollbarWidth;
222
213
  const newMarginBottom = this.__bodySizeVars.marginBottom + scrollbarHeight;
223
214
  // @ts-expect-error [external]: CSS not yet typed
@@ -254,7 +245,10 @@ export class OverlaysManager {
254
245
  document.body.classList.add('overlays-scroll-lock');
255
246
  if (isIOS || isMacSafari) {
256
247
  // iOS and safar for mac have issues with overlays with input fields. This is fixed by applying
257
- // position: fixed to the body. As a side effect, this will scroll the body to the top.
248
+ // position: fixed to the body. As a side effect, this will scroll the body to the top,
249
+ // so we compensate by applying negative top value via a CSS variable, and scroll back to
250
+ // the original position when enabling scroll again.
251
+ document.body.style.setProperty('--scroll-y-compensation', `-${window.scrollY}px`);
258
252
  document.body.classList.add('overlays-scroll-lock-ios-fix');
259
253
  }
260
254
  if (isIOS) {
@@ -267,20 +261,24 @@ export class OverlaysManager {
267
261
  */
268
262
  requestToEnableScroll(currentController) {
269
263
  const openedSiblings = currentController
270
- ? this.shownList.filter(ctrl => ctrl !== currentController)
264
+ ? this.shownList.filter((ctrl) => ctrl !== currentController)
271
265
  : this.shownList;
272
-
273
266
  const hasOpenSiblingThatPreventsScroll = openedSiblings.some(
274
- ctrl => ctrl.preventsScroll === true,
267
+ (ctrl) => ctrl.preventsScroll === true,
275
268
  );
276
269
  if (hasOpenSiblingThatPreventsScroll) {
277
270
  return;
278
271
  }
279
-
280
272
  const { isIOS, isMacSafari } = browserDetection;
281
273
  document.body.classList.remove('overlays-scroll-lock');
282
274
  if (isIOS || isMacSafari) {
283
275
  document.body.classList.remove('overlays-scroll-lock-ios-fix');
276
+ window.scrollTo({
277
+ top:
278
+ parseInt(document.body.style.getPropertyValue('--scroll-y-compensation') || '0', 10) * -1,
279
+ behavior: 'instant',
280
+ });
281
+ document.body.style.removeProperty('--scroll-y-compensation');
284
282
  }
285
283
  if (isIOS) {
286
284
  document.documentElement.classList.remove('overlays-scroll-lock-ios-fix');
@@ -292,8 +290,8 @@ export class OverlaysManager {
292
290
  * @param {OverlayController} blockingCtrl
293
291
  */
294
292
  requestToShowOnly(blockingCtrl) {
295
- const controllersToHide = this.shownList.filter(ctrl => ctrl !== blockingCtrl);
296
- controllersToHide.forEach(ctrl => ctrl.hide());
293
+ const controllersToHide = this.shownList.filter((ctrl) => ctrl !== blockingCtrl);
294
+ controllersToHide.forEach((ctrl) => ctrl.hide());
297
295
  this.__blockingMap.set(blockingCtrl, controllersToHide);
298
296
  }
299
297
 
@@ -302,10 +300,10 @@ export class OverlaysManager {
302
300
  */
303
301
  retractRequestToShowOnly(blockingCtrl) {
304
302
  if (this.__blockingMap.has(blockingCtrl)) {
305
- const controllersWhichGotHidden = /** @type {OverlayController[]} */ (
306
- this.__blockingMap.get(blockingCtrl)
307
- );
308
- controllersWhichGotHidden.forEach(ctrl => ctrl.show());
303
+ const controllersWhichGotHidden =
304
+ /** @type {OverlayController[]} */
305
+ this.__blockingMap.get(blockingCtrl);
306
+ controllersWhichGotHidden.forEach((ctrl) => ctrl.show());
309
307
  }
310
308
  }
311
309
  }
@@ -18,7 +18,6 @@ export function withClickInteraction() {
18
18
  }
19
19
  controller.toggle();
20
20
  }
21
-
22
21
  return {
23
22
  init: () => {
24
23
  controller.invokerNode?.addEventListener('click', handleOpenClosed);
@@ -49,7 +49,6 @@ export function withHoverInteraction({
49
49
  // completion to intercept it, as capture runs before bubble so we stop it regardless of registration order.
50
50
  /** @type {((e: Event) => void) | null} */
51
51
  let pendingClickSuppressor = null;
52
-
53
52
  function resetActive() {
54
53
  isFocused = false;
55
54
  isHovered = false;
@@ -89,7 +88,11 @@ export function withHoverInteraction({
89
88
  if (!controller.invokerNode?.matches(':focus-visible')) return;
90
89
  }
91
90
  const shouldOpen = isFocused || isHovered;
92
- openClose({ shouldOpen, openTimeout: delayIn, closeTimeout: delayOut });
91
+ openClose({
92
+ shouldOpen,
93
+ openTimeout: delayIn,
94
+ closeTimeout: delayOut,
95
+ });
93
96
  }
94
97
 
95
98
  /** @param {Event} e */
@@ -102,7 +105,6 @@ export function withHoverInteraction({
102
105
  clearTimeout(pendingLongpressTimeout);
103
106
  if (event.pointerType !== 'touch') return;
104
107
  const { type } = event;
105
-
106
108
  if (type === 'pointerdown') {
107
109
  longpressCompleted = false;
108
110
  isLastPointerTouch = true;
@@ -110,12 +112,15 @@ export function withHoverInteraction({
110
112
  longpressCompleted = true;
111
113
  // Intercept the compatibility click the browser generates at the end of the touch sequence.
112
114
  // Capture phase ensures we run before any bubble-phase handler (e.g. a dialog opener).
113
- pendingClickSuppressor = e => e.stopImmediatePropagation();
115
+ pendingClickSuppressor = (e) => e.stopImmediatePropagation();
114
116
  controller.invokerNode?.addEventListener('click', pendingClickSuppressor, {
115
- once: true, // auto-removes after first click
117
+ once: true,
118
+ // auto-removes after first click
116
119
  capture: true,
117
120
  });
118
- openClose({ shouldOpen: true });
121
+ openClose({
122
+ shouldOpen: true,
123
+ });
119
124
  }, longpressDuration);
120
125
  } else {
121
126
  openClose({
@@ -124,14 +129,11 @@ export function withHoverInteraction({
124
129
  });
125
130
  }
126
131
  }
127
-
128
132
  return {
129
133
  init: () => {
130
134
  controller.addEventListener('hide', resetActive);
131
-
132
135
  controller.invokerNode?.addEventListener('focusin', handleHoverAndFocus);
133
136
  controller.invokerNode?.addEventListener('focusout', handleHoverAndFocus);
134
-
135
137
  if (isHoverSupported) {
136
138
  controller.contentNode?.addEventListener('mouseenter', handleHoverAndFocus);
137
139
  controller.contentNode?.addEventListener('mouseleave', handleHoverAndFocus);
@@ -149,10 +151,8 @@ export function withHoverInteraction({
149
151
  },
150
152
  teardown: () => {
151
153
  controller.removeEventListener('hide', resetActive);
152
-
153
154
  controller.invokerNode?.removeEventListener('focusin', handleHoverAndFocus);
154
155
  controller.invokerNode?.removeEventListener('focusout', handleHoverAndFocus);
155
-
156
156
  if (isHoverSupported) {
157
157
  controller.contentNode?.removeEventListener('mouseenter', handleHoverAndFocus);
158
158
  controller.contentNode?.removeEventListener('mouseleave', handleHoverAndFocus);